加ant+相关代码。
This commit is contained in:
parent
f45711f39f
commit
3c2bb10f07
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 3317df3565c7a5243b3fb5d0225e0018
|
guid: bbca202329b5220488e71e1c46608a17
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
21
Assets/Editor/MyBuildPostprocessor.cs
Normal file
21
Assets/Editor/MyBuildPostprocessor.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.Callbacks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class MyBuildPostprocessor
|
||||||
|
{
|
||||||
|
[PostProcessBuild]
|
||||||
|
public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
|
||||||
|
{
|
||||||
|
//Debug.Log(pathToBuiltProject);
|
||||||
|
//System.IO.File.AppendAllText("D:\\test.txt",pathToBuiltProject);
|
||||||
|
var dir = Path.GetDirectoryName(pathToBuiltProject);
|
||||||
|
|
||||||
|
File.Copy(dir + "\\PowerFun-Unity_Data\\Plugins\\x86_64\\ANT_WrappedLib.dll", dir + "\\PowerFun-Unity_Data\\Managed\\ANT_WrappedLib.dll");
|
||||||
|
File.Copy(dir + "\\PowerFun-Unity_Data\\Plugins\\x86_64\\DSI_CP210xManufacturing_3_1.dll", dir + "\\PowerFun-Unity_Data\\Managed\\DSI_CP210xManufacturing_3_1.dll");
|
||||||
|
File.Copy(dir + "\\PowerFun-Unity_Data\\Plugins\\x86_64\\DSI_SiUSBXp_3_1.dll", dir + "\\PowerFun-Unity_Data\\Managed\\DSI_SiUSBXp_3_1.dll");
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Editor/MyBuildPostprocessor.cs.meta
Normal file
11
Assets/Editor/MyBuildPostprocessor.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c69c286f97edb5d408caa387050a40c9
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Plugins/ANT_NET.dll
Normal file
BIN
Assets/Plugins/ANT_NET.dll
Normal file
Binary file not shown.
33
Assets/Plugins/ANT_NET.dll.meta
Normal file
33
Assets/Plugins/ANT_NET.dll.meta
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2d11902796c439e4cb71dd57cee77265
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Plugins/DSI_CP210xManufacturing_3_1.dll
Normal file
BIN
Assets/Plugins/DSI_CP210xManufacturing_3_1.dll
Normal file
Binary file not shown.
27
Assets/Plugins/DSI_CP210xManufacturing_3_1.dll.meta
Normal file
27
Assets/Plugins/DSI_CP210xManufacturing_3_1.dll.meta
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 09aa52256a5b022408fef711972f12ea
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Plugins/DSI_SiUSBXp_3_1.dll
Normal file
BIN
Assets/Plugins/DSI_SiUSBXp_3_1.dll
Normal file
Binary file not shown.
27
Assets/Plugins/DSI_SiUSBXp_3_1.dll.meta
Normal file
27
Assets/Plugins/DSI_SiUSBXp_3_1.dll.meta
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0aa7b01dfef68764797710a52872bfce
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Resources/Images/Edit.png
Normal file
BIN
Assets/Resources/Images/Edit.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
104
Assets/Resources/Images/Edit.png.meta
Normal file
104
Assets/Resources/Images/Edit.png.meta
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e93953b41ee51474da95c9ae68a42031
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: -1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Resources/Images/bg-1.png
Normal file
BIN
Assets/Resources/Images/bg-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
104
Assets/Resources/Images/bg-1.png.meta
Normal file
104
Assets/Resources/Images/bg-1.png.meta
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 970fa7b2c5134aa4689616c9085aa237
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: -1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 40, y: 40, z: 40, w: 40}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Resources/Images/input-bg1.png
Normal file
BIN
Assets/Resources/Images/input-bg1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
104
Assets/Resources/Images/input-bg1.png.meta
Normal file
104
Assets/Resources/Images/input-bg1.png.meta
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f2d10f317f5256348a088ada3f2df5be
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: -1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 20, y: 0, z: 20, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Resources/Images/input-bg2.png
Normal file
BIN
Assets/Resources/Images/input-bg2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
104
Assets/Resources/Images/input-bg2.png.meta
Normal file
104
Assets/Resources/Images/input-bg2.png.meta
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3c20273bf2791f3438fc1bb99864280b
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: -1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 20, y: 0, z: 20, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
1081
Assets/Resources/UI/Control/PFUIDropdown.prefab
Normal file
1081
Assets/Resources/UI/Control/PFUIDropdown.prefab
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Resources/UI/Control/PFUIDropdown.prefab.meta
Normal file
7
Assets/Resources/UI/Control/PFUIDropdown.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5ee52e0b78bd38244a2b473e2236800c
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
313
Assets/Resources/UI/Control/PFUIInputField.prefab
Normal file
313
Assets/Resources/UI/Control/PFUIInputField.prefab
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &92744388873403988
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8306171861788952873}
|
||||||
|
- component: {fileID: 3566600873913421943}
|
||||||
|
- component: {fileID: 7204820797918493515}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Placeholder
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8306171861788952873
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 92744388873403988}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 3608523562535466787}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 20, y: 9}
|
||||||
|
m_SizeDelta: {x: 148, y: 18}
|
||||||
|
m_Pivot: {x: 0, y: 1}
|
||||||
|
--- !u!222 &3566600873913421943
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 92744388873403988}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &7204820797918493515
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 92744388873403988}
|
||||||
|
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: 0.5}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 14
|
||||||
|
m_FontStyle: 2
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 10
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 0
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: Enter text...
|
||||||
|
--- !u!1 &1827088261433348456
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8098460543711191387}
|
||||||
|
- component: {fileID: 2612167359391694885}
|
||||||
|
- component: {fileID: 7511924356665468489}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8098460543711191387
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1827088261433348456}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 3608523562535466787}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 20, y: 9}
|
||||||
|
m_SizeDelta: {x: 148, y: 18}
|
||||||
|
m_Pivot: {x: 0, y: 1}
|
||||||
|
--- !u!222 &2612167359391694885
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1827088261433348456}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &7511924356665468489
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1827088261433348456}
|
||||||
|
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_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: 3
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 0
|
||||||
|
m_HorizontalOverflow: 1
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text:
|
||||||
|
--- !u!1 &4589186191166513557
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3608523562535466787}
|
||||||
|
- component: {fileID: 1281493229868357731}
|
||||||
|
- component: {fileID: 360132714125572691}
|
||||||
|
- component: {fileID: 7789118244628022189}
|
||||||
|
- component: {fileID: 2937291032793235606}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: PFUIInputField
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3608523562535466787
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4589186191166513557}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 8306171861788952873}
|
||||||
|
- {fileID: 8098460543711191387}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 160, y: 30}
|
||||||
|
m_Pivot: {x: 0, y: 1}
|
||||||
|
--- !u!222 &1281493229868357731
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4589186191166513557}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &360132714125572691
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4589186191166513557}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: f2d10f317f5256348a088ada3f2df5be, type: 3}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 1
|
||||||
|
m_FillAmount: 0.635
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &7789118244628022189
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4589186191166513557}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Navigation:
|
||||||
|
m_Mode: 3
|
||||||
|
m_SelectOnUp: {fileID: 0}
|
||||||
|
m_SelectOnDown: {fileID: 0}
|
||||||
|
m_SelectOnLeft: {fileID: 0}
|
||||||
|
m_SelectOnRight: {fileID: 0}
|
||||||
|
m_Transition: 1
|
||||||
|
m_Colors:
|
||||||
|
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||||
|
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||||
|
m_ColorMultiplier: 1
|
||||||
|
m_FadeDuration: 0.1
|
||||||
|
m_SpriteState:
|
||||||
|
m_HighlightedSprite: {fileID: 0}
|
||||||
|
m_PressedSprite: {fileID: 0}
|
||||||
|
m_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 360132714125572691}
|
||||||
|
m_TextComponent: {fileID: 7511924356665468489}
|
||||||
|
m_Placeholder: {fileID: 7204820797918493515}
|
||||||
|
m_ContentType: 0
|
||||||
|
m_InputType: 0
|
||||||
|
m_AsteriskChar: 42
|
||||||
|
m_KeyboardType: 0
|
||||||
|
m_LineType: 0
|
||||||
|
m_HideMobileInput: 0
|
||||||
|
m_CharacterValidation: 0
|
||||||
|
m_CharacterLimit: 0
|
||||||
|
m_OnEndEdit:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_OnValueChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
|
||||||
|
m_CustomCaretColor: 0
|
||||||
|
m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
|
||||||
|
m_Text:
|
||||||
|
m_CaretBlinkRate: 0.85
|
||||||
|
m_CaretWidth: 1
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_ShouldActivateOnSelect: 1
|
||||||
|
--- !u!114 &2937291032793235606
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4589186191166513557}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: cfae8ac78fe0be741802fcc046f0a716, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
mInnerInputField: {fileID: 7789118244628022189}
|
||||||
7
Assets/Resources/UI/Control/PFUIInputField.prefab.meta
Normal file
7
Assets/Resources/UI/Control/PFUIInputField.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 07e45aecba1a2d542b043157aa2e9322
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -11,6 +11,8 @@ GameObject:
|
|||||||
- component: {fileID: 3150550772099312288}
|
- component: {fileID: 3150550772099312288}
|
||||||
- component: {fileID: 3150550772099312290}
|
- component: {fileID: 3150550772099312290}
|
||||||
- component: {fileID: 3150550772099312291}
|
- component: {fileID: 3150550772099312291}
|
||||||
|
- component: {fileID: 53319763305559075}
|
||||||
|
- component: {fileID: 2665063159965378333}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: PfPrimaryButton
|
m_Name: PfPrimaryButton
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -30,6 +32,7 @@ RectTransform:
|
|||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 3150550772916003704}
|
- {fileID: 3150550772916003704}
|
||||||
|
- {fileID: 895587482951790974}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -71,7 +74,7 @@ MonoBehaviour:
|
|||||||
m_Transition: 1
|
m_Transition: 1
|
||||||
m_Colors:
|
m_Colors:
|
||||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
m_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_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||||
@ -89,10 +92,47 @@ MonoBehaviour:
|
|||||||
m_SelectedTrigger: Selected
|
m_SelectedTrigger: Selected
|
||||||
m_DisabledTrigger: Disabled
|
m_DisabledTrigger: Disabled
|
||||||
m_Interactable: 1
|
m_Interactable: 1
|
||||||
m_TargetGraphic: {fileID: 0}
|
m_TargetGraphic: {fileID: 2665063159965378333}
|
||||||
m_OnClick:
|
m_OnClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
|
--- !u!222 &53319763305559075
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3150550772099312289}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &2665063159965378333
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3150550772099312289}
|
||||||
|
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.9764706, g: 0.1882353, b: 0.5254902, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
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!1 &3150550772916003705
|
--- !u!1 &3150550772916003705
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -151,7 +191,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Material: {fileID: 0}
|
m_Material: {fileID: 0}
|
||||||
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_RaycastTarget: 1
|
m_RaycastTarget: 1
|
||||||
m_Maskable: 1
|
m_Maskable: 1
|
||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
@ -164,10 +204,45 @@ MonoBehaviour:
|
|||||||
m_BestFit: 0
|
m_BestFit: 0
|
||||||
m_MinSize: 10
|
m_MinSize: 10
|
||||||
m_MaxSize: 40
|
m_MaxSize: 40
|
||||||
m_Alignment: 0
|
m_Alignment: 4
|
||||||
m_AlignByGeometry: 0
|
m_AlignByGeometry: 0
|
||||||
m_RichText: 1
|
m_RichText: 1
|
||||||
m_HorizontalOverflow: 0
|
m_HorizontalOverflow: 0
|
||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: New Text
|
m_Text: New Text
|
||||||
|
--- !u!1 &7886299565102693514
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 895587482951790974}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: GameObject
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &895587482951790974
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7886299565102693514}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 3150550772099312288}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 100, y: 100}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: a5eed52ed925c904ba7c55084b662377
|
guid: 4ceae50b407364d498d6637cca15c5ea
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@ -1,5 +1,83 @@
|
|||||||
%YAML 1.1
|
%YAML 1.1
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &3524002185457438423
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6422878617585070171}
|
||||||
|
- component: {fileID: 3053340305404106238}
|
||||||
|
- component: {fileID: 6170110596361178850}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Label
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6422878617585070171
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3524002185457438423}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 4352111203238917507}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 9, y: -0.5}
|
||||||
|
m_SizeDelta: {x: -28, y: -3}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3053340305404106238
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3524002185457438423}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &6170110596361178850
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3524002185457438423}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 14
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 10
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 0
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: Toggle
|
||||||
--- !u!1 &4032660314221060955
|
--- !u!1 &4032660314221060955
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -32,7 +110,7 @@ RectTransform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 4032660314916082216}
|
- {fileID: 4032660314916082216}
|
||||||
- {fileID: 3696076471654850758}
|
- {fileID: 3696076471654850758}
|
||||||
- {fileID: 7091593533811487295}
|
- {fileID: 4352111203238917507}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -53,6 +131,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 3a8eec0d4bf3f4841982794180df6e10, type: 3}
|
m_Script: {fileID: 11500000, guid: 3a8eec0d4bf3f4841982794180df6e10, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
|
toggle: {fileID: 0}
|
||||||
--- !u!222 &454099902603697846
|
--- !u!222 &454099902603697846
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -365,7 +444,7 @@ MonoBehaviour:
|
|||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: "\u8FD4\u56DE"
|
m_Text: "\u8FD4\u56DE"
|
||||||
--- !u!1 &6527979503734561621
|
--- !u!1 &6663518444873877240
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@ -373,162 +452,46 @@ GameObject:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 2963372265575180079}
|
- component: {fileID: 4352111203238917507}
|
||||||
- component: {fileID: 6957661837540249700}
|
- component: {fileID: 2625912941697732824}
|
||||||
- component: {fileID: 6697714100194633938}
|
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: Text
|
m_Name: Toggle
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
--- !u!224 &2963372265575180079
|
--- !u!224 &4352111203238917507
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 6527979503734561621}
|
m_GameObject: {fileID: 6663518444873877240}
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 7091593533811487295}
|
|
||||||
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!222 &6957661837540249700
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6527979503734561621}
|
|
||||||
m_CullTransparentMesh: 0
|
|
||||||
--- !u!114 &6697714100194633938
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6527979503734561621}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_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: Button
|
|
||||||
--- !u!1 &8050823462087538729
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 7091593533811487295}
|
|
||||||
- component: {fileID: 4568874591841147406}
|
|
||||||
- component: {fileID: 5481167238505127079}
|
|
||||||
- component: {fileID: 2109160241591068700}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Button (1)
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &7091593533811487295
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8050823462087538729}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 2963372265575180079}
|
- {fileID: 266613468920748919}
|
||||||
|
- {fileID: 6422878617585070171}
|
||||||
m_Father: {fileID: 4032660314221060952}
|
m_Father: {fileID: 4032660314221060952}
|
||||||
m_RootOrder: 2
|
m_RootOrder: 2
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 1300, y: -61}
|
m_AnchoredPosition: {x: 1333, y: -31}
|
||||||
m_SizeDelta: {x: 160, y: 30}
|
m_SizeDelta: {x: 160, y: 20}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &4568874591841147406
|
--- !u!114 &2625912941697732824
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8050823462087538729}
|
|
||||||
m_CullTransparentMesh: 0
|
|
||||||
--- !u!114 &5481167238505127079
|
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 8050823462087538729}
|
m_GameObject: {fileID: 6663518444873877240}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_Type: 1
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
m_PixelsPerUnitMultiplier: 1
|
|
||||||
--- !u!114 &2109160241591068700
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8050823462087538729}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Navigation:
|
m_Navigation:
|
||||||
@ -558,7 +521,160 @@ MonoBehaviour:
|
|||||||
m_SelectedTrigger: Selected
|
m_SelectedTrigger: Selected
|
||||||
m_DisabledTrigger: Disabled
|
m_DisabledTrigger: Disabled
|
||||||
m_Interactable: 1
|
m_Interactable: 1
|
||||||
m_TargetGraphic: {fileID: 5481167238505127079}
|
m_TargetGraphic: {fileID: 1195895454254206291}
|
||||||
m_OnClick:
|
toggleTransition: 1
|
||||||
|
graphic: {fileID: 898712901474731699}
|
||||||
|
m_Group: {fileID: 0}
|
||||||
|
onValueChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
|
m_IsOn: 1
|
||||||
|
--- !u!1 &7456874259613072028
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6328782725669616871}
|
||||||
|
- component: {fileID: 1643009470194472311}
|
||||||
|
- component: {fileID: 898712901474731699}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Checkmark
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6328782725669616871
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7456874259613072028}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 266613468920748919}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 20, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1643009470194472311
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7456874259613072028}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &898712901474731699
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7456874259613072028}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &8573137617799996876
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 266613468920748919}
|
||||||
|
- component: {fileID: 3036207001990195491}
|
||||||
|
- component: {fileID: 1195895454254206291}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Background
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &266613468920748919
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8573137617799996876}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 6328782725669616871}
|
||||||
|
m_Father: {fileID: 4352111203238917507}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 10, y: -10}
|
||||||
|
m_SizeDelta: {x: 20, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3036207001990195491
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8573137617799996876}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &1195895454254206291
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8573137617799996876}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
|||||||
3139
Assets/Resources/UI/Prefab/Panel/EditUserPanel.prefab
Normal file
3139
Assets/Resources/UI/Prefab/Panel/EditUserPanel.prefab
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 68d1b5c08aaebad449b1492a3e0cd4dd
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
791
Assets/Resources/UI/Prefab/Panel/RoutesPanel.prefab
Normal file
791
Assets/Resources/UI/Prefab/Panel/RoutesPanel.prefab
Normal file
@ -0,0 +1,791 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &7231323172044815467
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323172044815460}
|
||||||
|
- component: {fileID: 7231323172044815463}
|
||||||
|
- component: {fileID: 7231323172044815462}
|
||||||
|
- component: {fileID: 7231323172044815461}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Scrollbar Vertical
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323172044815460
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172044815467}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7231323172912787145}
|
||||||
|
m_Father: {fileID: 7231323172999770387}
|
||||||
|
m_RootOrder: 2
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 1, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 20, y: -17}
|
||||||
|
m_Pivot: {x: 1, y: 1}
|
||||||
|
--- !u!222 &7231323172044815463
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172044815467}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &7231323172044815462
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172044815467}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &7231323172044815461
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172044815467}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Navigation:
|
||||||
|
m_Mode: 3
|
||||||
|
m_SelectOnUp: {fileID: 0}
|
||||||
|
m_SelectOnDown: {fileID: 0}
|
||||||
|
m_SelectOnLeft: {fileID: 0}
|
||||||
|
m_SelectOnRight: {fileID: 0}
|
||||||
|
m_Transition: 1
|
||||||
|
m_Colors:
|
||||||
|
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||||
|
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||||
|
m_ColorMultiplier: 1
|
||||||
|
m_FadeDuration: 0.1
|
||||||
|
m_SpriteState:
|
||||||
|
m_HighlightedSprite: {fileID: 0}
|
||||||
|
m_PressedSprite: {fileID: 0}
|
||||||
|
m_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 7231323173490805216}
|
||||||
|
m_HandleRect: {fileID: 7231323173490805223}
|
||||||
|
m_Direction: 2
|
||||||
|
m_Value: 0
|
||||||
|
m_Size: 1
|
||||||
|
m_NumberOfSteps: 0
|
||||||
|
m_OnValueChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
--- !u!1 &7231323172272943822
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323172272943823}
|
||||||
|
- component: {fileID: 7231323172272943818}
|
||||||
|
- component: {fileID: 7231323172272943817}
|
||||||
|
- component: {fileID: 7231323172272943816}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Scrollbar Horizontal
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!224 &7231323172272943823
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172272943822}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7231323172943298380}
|
||||||
|
m_Father: {fileID: 7231323172999770387}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 20}
|
||||||
|
m_Pivot: {x: 0, y: 0}
|
||||||
|
--- !u!222 &7231323172272943818
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172272943822}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &7231323172272943817
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172272943822}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &7231323172272943816
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172272943822}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Navigation:
|
||||||
|
m_Mode: 3
|
||||||
|
m_SelectOnUp: {fileID: 0}
|
||||||
|
m_SelectOnDown: {fileID: 0}
|
||||||
|
m_SelectOnLeft: {fileID: 0}
|
||||||
|
m_SelectOnRight: {fileID: 0}
|
||||||
|
m_Transition: 1
|
||||||
|
m_Colors:
|
||||||
|
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||||
|
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||||
|
m_ColorMultiplier: 1
|
||||||
|
m_FadeDuration: 0.1
|
||||||
|
m_SpriteState:
|
||||||
|
m_HighlightedSprite: {fileID: 0}
|
||||||
|
m_PressedSprite: {fileID: 0}
|
||||||
|
m_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 7231323173021629610}
|
||||||
|
m_HandleRect: {fileID: 7231323173021629609}
|
||||||
|
m_Direction: 0
|
||||||
|
m_Value: 0
|
||||||
|
m_Size: 1
|
||||||
|
m_NumberOfSteps: 0
|
||||||
|
m_OnValueChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
--- !u!1 &7231323172358050408
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323172358050409}
|
||||||
|
- component: {fileID: 7231323172358050404}
|
||||||
|
- component: {fileID: 7231323172358050411}
|
||||||
|
- component: {fileID: 7231323172358050410}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Viewport
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323172358050409
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172358050408}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7231323172636347047}
|
||||||
|
m_Father: {fileID: 7231323172999770387}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0, y: 1}
|
||||||
|
--- !u!222 &7231323172358050404
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172358050408}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &7231323172358050411
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172358050408}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &7231323172358050410
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172358050408}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_ShowMaskGraphic: 0
|
||||||
|
--- !u!1 &7231323172636347046
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323172636347047}
|
||||||
|
- component: {fileID: 7231323172636347040}
|
||||||
|
- component: {fileID: 7231323172636347041}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Content
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323172636347047
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172636347046}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 7231323172358050409}
|
||||||
|
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, y: 1}
|
||||||
|
--- !u!114 &7231323172636347040
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172636347046}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 0
|
||||||
|
m_Right: 0
|
||||||
|
m_Top: 0
|
||||||
|
m_Bottom: 0
|
||||||
|
m_ChildAlignment: 0
|
||||||
|
m_StartCorner: 0
|
||||||
|
m_StartAxis: 0
|
||||||
|
m_CellSize: {x: 400, y: 400}
|
||||||
|
m_Spacing: {x: 5, y: 5}
|
||||||
|
m_Constraint: 0
|
||||||
|
m_ConstraintCount: 2
|
||||||
|
--- !u!114 &7231323172636347041
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172636347046}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_HorizontalFit: 0
|
||||||
|
m_VerticalFit: 2
|
||||||
|
--- !u!1 &7231323172912787144
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323172912787145}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Sliding Area
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323172912787145
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172912787144}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7231323173490805223}
|
||||||
|
m_Father: {fileID: 7231323172044815460}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: -20, y: -20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &7231323172943298419
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323172943298380}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Sliding Area
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323172943298380
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172943298419}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7231323173021629609}
|
||||||
|
m_Father: {fileID: 7231323172272943823}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: -20, y: -20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &7231323172977132763
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323172977132756}
|
||||||
|
- component: {fileID: 7231323172977132757}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: RoutesPanel
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323172977132756
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172977132763}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7231323172999770387}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
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 &7231323172977132757
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172977132763}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e35064f57ffd7ab438d09039a2572edf, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!1 &7231323172999770386
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323172999770387}
|
||||||
|
- component: {fileID: 7231323172999770478}
|
||||||
|
- component: {fileID: 7231323172999770477}
|
||||||
|
- component: {fileID: 7231323172999770476}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Scroll View
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323172999770387
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172999770386}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7231323172358050409}
|
||||||
|
- {fileID: 7231323172272943823}
|
||||||
|
- {fileID: 7231323172044815460}
|
||||||
|
m_Father: {fileID: 7231323172977132756}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 400}
|
||||||
|
m_SizeDelta: {x: 0, y: 800}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &7231323172999770478
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172999770386}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &7231323172999770477
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172999770386}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &7231323172999770476
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323172999770386}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Content: {fileID: 7231323172636347047}
|
||||||
|
m_Horizontal: 0
|
||||||
|
m_Vertical: 1
|
||||||
|
m_MovementType: 1
|
||||||
|
m_Elasticity: 0.1
|
||||||
|
m_Inertia: 1
|
||||||
|
m_DecelerationRate: 0.135
|
||||||
|
m_ScrollSensitivity: 15
|
||||||
|
m_Viewport: {fileID: 7231323172358050409}
|
||||||
|
m_HorizontalScrollbar: {fileID: 7231323172272943816}
|
||||||
|
m_VerticalScrollbar: {fileID: 7231323172044815461}
|
||||||
|
m_HorizontalScrollbarVisibility: 0
|
||||||
|
m_VerticalScrollbarVisibility: 2
|
||||||
|
m_HorizontalScrollbarSpacing: -3
|
||||||
|
m_VerticalScrollbarSpacing: -3
|
||||||
|
m_OnValueChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
--- !u!1 &7231323173021629608
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323173021629609}
|
||||||
|
- component: {fileID: 7231323173021629611}
|
||||||
|
- component: {fileID: 7231323173021629610}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Handle
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323173021629609
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323173021629608}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 7231323172943298380}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 20, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &7231323173021629611
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323173021629608}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &7231323173021629610
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323173021629608}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &7231323173490805222
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7231323173490805223}
|
||||||
|
- component: {fileID: 7231323173490805217}
|
||||||
|
- component: {fileID: 7231323173490805216}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Handle
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7231323173490805223
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323173490805222}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 7231323172912787145}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 20, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &7231323173490805217
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323173490805222}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &7231323173490805216
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7231323173490805222}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
7
Assets/Resources/UI/Prefab/Panel/RoutesPanel.prefab.meta
Normal file
7
Assets/Resources/UI/Prefab/Panel/RoutesPanel.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d9ba1acddf48c06498426ddf04d3e90a
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,5 +1,123 @@
|
|||||||
%YAML 1.1
|
%YAML 1.1
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &1813940879
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1813940880}
|
||||||
|
- component: {fileID: 1813940883}
|
||||||
|
- component: {fileID: 1813940882}
|
||||||
|
- component: {fileID: 1813940881}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: EditButton
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1813940880
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1813940879}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 5404217439901075764}
|
||||||
|
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: 86, y: 159}
|
||||||
|
m_SizeDelta: {x: 17, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1813940883
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1813940879}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &1813940882
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1813940879}
|
||||||
|
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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: e93953b41ee51474da95c9ae68a42031, 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!114 &1813940881
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1813940879}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Navigation:
|
||||||
|
m_Mode: 3
|
||||||
|
m_SelectOnUp: {fileID: 0}
|
||||||
|
m_SelectOnDown: {fileID: 0}
|
||||||
|
m_SelectOnLeft: {fileID: 0}
|
||||||
|
m_SelectOnRight: {fileID: 0}
|
||||||
|
m_Transition: 1
|
||||||
|
m_Colors:
|
||||||
|
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||||
|
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||||
|
m_ColorMultiplier: 1
|
||||||
|
m_FadeDuration: 0.1
|
||||||
|
m_SpriteState:
|
||||||
|
m_HighlightedSprite: {fileID: 0}
|
||||||
|
m_PressedSprite: {fileID: 0}
|
||||||
|
m_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 1813940882}
|
||||||
|
m_OnClick:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
--- !u!1 &268610031460185737
|
--- !u!1 &268610031460185737
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1548,7 +1666,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 174, y: -341}
|
m_AnchoredPosition: {x: 164.5, y: -341}
|
||||||
m_SizeDelta: {x: 75, y: 30}
|
m_SizeDelta: {x: 75, y: 30}
|
||||||
m_Pivot: {x: 0, y: 1}
|
m_Pivot: {x: 0, y: 1}
|
||||||
--- !u!222 &5404217439475192492
|
--- !u!222 &5404217439475192492
|
||||||
@ -1585,7 +1703,7 @@ MonoBehaviour:
|
|||||||
m_BestFit: 0
|
m_BestFit: 0
|
||||||
m_MinSize: 10
|
m_MinSize: 10
|
||||||
m_MaxSize: 40
|
m_MaxSize: 40
|
||||||
m_Alignment: 0
|
m_Alignment: 4
|
||||||
m_AlignByGeometry: 0
|
m_AlignByGeometry: 0
|
||||||
m_RichText: 1
|
m_RichText: 1
|
||||||
m_HorizontalOverflow: 0
|
m_HorizontalOverflow: 0
|
||||||
@ -1746,6 +1864,7 @@ RectTransform:
|
|||||||
- {fileID: 5404217437987161134}
|
- {fileID: 5404217437987161134}
|
||||||
- {fileID: 5404217438189736394}
|
- {fileID: 5404217438189736394}
|
||||||
- {fileID: 2772237898578650081}
|
- {fileID: 2772237898578650081}
|
||||||
|
- {fileID: 1813940880}
|
||||||
m_Father: {fileID: 5404217438093112801}
|
m_Father: {fileID: 5404217438093112801}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
|||||||
@ -233,12 +233,6 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 400780dc6cb8d0344ae80c327ba2dbba, type: 3}
|
m_Script: {fileID: 11500000, guid: 400780dc6cb8d0344ae80c327ba2dbba, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
--- !u!224 &384153153 stripped
|
|
||||||
RectTransform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 3150550772457561313}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!1 &724627085
|
--- !u!1 &724627085
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -416,9 +410,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children:
|
m_Children: []
|
||||||
- {fileID: 384153153}
|
|
||||||
- {fileID: 2067412787}
|
|
||||||
m_Father: {fileID: 273807004}
|
m_Father: {fileID: 273807004}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -599,247 +591,3 @@ Transform:
|
|||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 2
|
m_RootOrder: 2
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!224 &2067412787 stripped
|
|
||||||
RectTransform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 2018962971270641419}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!1001 &2018962971270641419
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
m_TransformParent: {fileID: 730655536}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_Pivot.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_Pivot.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_RootOrder
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchorMax.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchorMin.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 160
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 30
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165240, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2018962972499165241, guid: d1deda2310a3a7241a8e0d559585b30d,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: PfText
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: d1deda2310a3a7241a8e0d559585b30d, type: 3}
|
|
||||||
--- !u!1001 &3150550772457561313
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
m_TransformParent: {fileID: 730655536}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_Pivot.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_Pivot.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_RootOrder
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchorMax.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchorMin.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 160
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 30
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312288, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 3150550772099312289, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: PfPrimaryButton
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 6b94e789d6585a04dbdc04c8a7cf97b2, type: 3}
|
|
||||||
|
|||||||
@ -40,6 +40,7 @@ namespace Assets.Scripts.Apis
|
|||||||
|
|
||||||
httpClientHandler.CookieContainer = _cookieCollection;
|
httpClientHandler.CookieContainer = _cookieCollection;
|
||||||
httpClientHandler.UseCookies = true;
|
httpClientHandler.UseCookies = true;
|
||||||
|
httpClientHandler.CookieContainer.Add(new Uri(ConfigHelper.Host), new Cookie("PowerFun.AUTH", "E1F130A03C0C2F01DF465A17AAA4740E9C44FC5F7C5077AF5A09B5ED29F0CF4FABE44329111C0BDBC6D97A28E7C7C188250265B37D2E6A849D7F0CAC606490648F17DC7FB9C8778BE7217991EBB6304BD543CFEE55084E54CCD634B49F26A751","/"));
|
||||||
|
|
||||||
httpClient = new System.Net.Http.HttpClient(httpClientHandler);
|
httpClient = new System.Net.Http.HttpClient(httpClientHandler);
|
||||||
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 87b6a8c3122e3244c8f9460033906876
|
guid: b74c94f36166c474fad63939fb9b8fd7
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
8
Assets/Scripts/Devices/Ant.meta
Normal file
8
Assets/Scripts/Devices/Ant.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4dc6124d7b036b14d9d24076df7dbc5c
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
17
Assets/Scripts/Devices/Ant/ANTMessage.cs
Normal file
17
Assets/Scripts/Devices/Ant/ANTMessage.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public class ANTMessage
|
||||||
|
{
|
||||||
|
public byte Id { get; set; }
|
||||||
|
|
||||||
|
public byte Size { get; set; }
|
||||||
|
|
||||||
|
public byte[] Data { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/ANTMessage.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/ANTMessage.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4cf593b457ef83e4ba833481a93184c4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
252
Assets/Scripts/Devices/Ant/AbstractAntDevice.cs
Normal file
252
Assets/Scripts/Devices/Ant/AbstractAntDevice.cs
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
using ANT_Managed_Library;
|
||||||
|
using Assets.Scripts.Devices.Ant.Messages;
|
||||||
|
using Assets.Scripts.Devices.Ant.Pages;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public abstract class AbstractAntDevice : DataSourceBase
|
||||||
|
{
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
protected set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AntChannelProfile searchProfile;
|
||||||
|
public bool isInitialized = false;
|
||||||
|
private DeviceState state;
|
||||||
|
public DeviceState State
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
state = value;
|
||||||
|
if (state == DeviceState.Connected)
|
||||||
|
{
|
||||||
|
this.GetManufacturingInformation();
|
||||||
|
}
|
||||||
|
StateChange?.Invoke(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public SensorType Sensor { get; private set; }
|
||||||
|
|
||||||
|
private int _ManufacturerId;
|
||||||
|
/// <summary>
|
||||||
|
/// 设备生产商
|
||||||
|
/// </summary>
|
||||||
|
public int ManufacturerId
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _ManufacturerId;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_ManufacturerId = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ushort _DeviceNumber;
|
||||||
|
public ushort DeviceNumber
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _DeviceNumber;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
this._DeviceNumber = value;
|
||||||
|
searchProfile.deviceNumber = value;
|
||||||
|
this.InitManufacturer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte DeviceType
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return getDefaultSearchProfile().deviceType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? AntModelId { get; private set; }
|
||||||
|
|
||||||
|
public Action<DeviceState> StateChange = null;
|
||||||
|
|
||||||
|
public class AntChannelProfile
|
||||||
|
{
|
||||||
|
public byte rfOffset;
|
||||||
|
public byte transType;
|
||||||
|
public byte deviceType;
|
||||||
|
public ushort deviceNumber;
|
||||||
|
public ushort messagePeriod;
|
||||||
|
public bool pairingEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
//private readonly Rhino.PowerFun.Services.DeviceService deviceService;
|
||||||
|
//private readonly DeviceDetailService _deviceDetailService;
|
||||||
|
//private readonly AntManufacturerService antManufacturerService;
|
||||||
|
protected List<IPageHandler> pageHandlers = new List<IPageHandler>();
|
||||||
|
public AbstractAntDevice(String defaultSourceName, racerSportType sportType, SensorType sensor)
|
||||||
|
: base(sportType, true)
|
||||||
|
{
|
||||||
|
State = DeviceState.Disconnected;
|
||||||
|
this.Name = defaultSourceName;
|
||||||
|
this.searchProfile = getDefaultSearchProfile();
|
||||||
|
this.Sensor = sensor;
|
||||||
|
|
||||||
|
//deviceService = new DeviceService();
|
||||||
|
// _deviceDetailService = new DeviceDetailService();
|
||||||
|
//antManufacturerService = new AntManufacturerService();
|
||||||
|
|
||||||
|
|
||||||
|
//this.InitManufacturer();
|
||||||
|
|
||||||
|
pageHandlers.Add(new ManufacturerDataPageHandler(md => {
|
||||||
|
this.ManufacturerId = md.ManufacturerId;
|
||||||
|
this.AntModelId = md.ModelNumber;
|
||||||
|
|
||||||
|
//var deviceId = $"{ this.searchProfile.deviceNumber }:{ this.searchProfile.deviceType }";
|
||||||
|
//var device = deviceService.Get(PubCommData.CurrentUser.Id, deviceId);
|
||||||
|
//if (device != null)
|
||||||
|
//{
|
||||||
|
// device.AntManufacturerId = _ManufacturerId;
|
||||||
|
// device.AntModelId = this.AntModelId;
|
||||||
|
|
||||||
|
// device.ReportedName = antManufacturerService.GetName(device.AntManufacturerId) + " " + Sensor.ToString();
|
||||||
|
|
||||||
|
// if (device.AntModelId.HasValue)
|
||||||
|
// {
|
||||||
|
// var deviceDetail = _deviceDetailService.Get(device.AntManufacturerId, device.AntModelId.Value);
|
||||||
|
// if (deviceDetail != null)
|
||||||
|
// {
|
||||||
|
// device.ReportedName = deviceDetail.Name;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// this.Name = device.ReportedName;
|
||||||
|
// deviceService.Update(device);
|
||||||
|
//}
|
||||||
|
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 从数据库里还原厂商信息
|
||||||
|
/// </summary>
|
||||||
|
private void InitManufacturer()
|
||||||
|
{
|
||||||
|
//var deviceId = $"{ this.searchProfile.deviceNumber }:{ this.searchProfile.deviceType }";
|
||||||
|
//Device device = PubCommData.CurrentUser != null ? deviceService.Get(PubCommData.CurrentUser.Id, deviceId) : null;
|
||||||
|
//if (device != null && device.AntManufacturerId > 0)
|
||||||
|
//{
|
||||||
|
// this._ManufacturerId = device.AntManufacturerId;
|
||||||
|
// this.Name = device.ReportedName;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract AntChannelProfile getDefaultSearchProfile();
|
||||||
|
|
||||||
|
public abstract void handleChannelResponse(ANT_Response response);
|
||||||
|
|
||||||
|
public override string getDefaultSourceName()
|
||||||
|
{
|
||||||
|
//return sourceName;
|
||||||
|
return String.Format("{0,-14}", Name); //HACK qc to try and even out some of the dynamic sizing issues
|
||||||
|
}
|
||||||
|
|
||||||
|
//public override void reset()
|
||||||
|
//{
|
||||||
|
// base.reset();
|
||||||
|
//}
|
||||||
|
|
||||||
|
public void Connect()
|
||||||
|
{
|
||||||
|
if (State == DeviceState.Connected || State == DeviceState.Connecting)
|
||||||
|
return;
|
||||||
|
AntConnector.Instance().ConnectDevice(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Disconnect(bool save = true)
|
||||||
|
{
|
||||||
|
if (State == DeviceState.Disconnected || State == DeviceState.Disconnecting)
|
||||||
|
return;
|
||||||
|
AntConnector.Instance().DisconnectDevice(this, save);
|
||||||
|
}
|
||||||
|
|
||||||
|
//public override bool Equals(Object obj)
|
||||||
|
//{
|
||||||
|
// //return base.Equals(obj);
|
||||||
|
|
||||||
|
// var target = obj as AbstractAntDevice;
|
||||||
|
// return this.searchProfile.deviceNumber == target.searchProfile.deviceNumber &&
|
||||||
|
// this.searchProfile.deviceType == target.searchProfile.deviceType;
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
public bool GetManufacturingInformation()
|
||||||
|
{
|
||||||
|
var channel = AntConnector.Instance().usedChannels.SingleOrDefault(u => u.DeviceNumber == this.searchProfile.deviceNumber.ToString() && u.DeviceTypeId == this.searchProfile.deviceType.ToString());
|
||||||
|
if (channel == null) { return false; }
|
||||||
|
var channelId = channel.Index;
|
||||||
|
|
||||||
|
//byte[] Data = new byte[9]
|
||||||
|
//{
|
||||||
|
// channelId,
|
||||||
|
// (byte)70,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// (byte)4,
|
||||||
|
// (byte)80,
|
||||||
|
// (byte)1
|
||||||
|
//};
|
||||||
|
//var id = (byte)79;
|
||||||
|
|
||||||
|
var msg = new GetManufacturersInformation(channelId);
|
||||||
|
var result = SendMessage(msg);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetProductionInformation()
|
||||||
|
{
|
||||||
|
var channelId = AntConnector.Instance().usedChannels.SingleOrDefault(u => u.DeviceNumber == this.searchProfile.deviceNumber.ToString() && u.DeviceTypeId == this.searchProfile.deviceType.ToString()).Index;
|
||||||
|
|
||||||
|
//byte[] Data = new byte[9]
|
||||||
|
//{
|
||||||
|
// channelId,
|
||||||
|
// (byte)70,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// (byte)4,
|
||||||
|
// (byte)81,
|
||||||
|
// (byte)1
|
||||||
|
//};
|
||||||
|
//var id = (byte)79;
|
||||||
|
var msg = new GetProductionInformation(channelId);
|
||||||
|
var result = SendMessage(msg);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected bool SendMessage(BaseMessage message)
|
||||||
|
{
|
||||||
|
return AntConnector.Instance().SendMessage(message.GetMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected byte GetChannelId()
|
||||||
|
{
|
||||||
|
return AntConnector.Instance().usedChannels.SingleOrDefault(u => u.DeviceNumber == this.searchProfile.deviceNumber.ToString() && u.DeviceTypeId == this.searchProfile.deviceType.ToString()).Index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/AbstractAntDevice.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/AbstractAntDevice.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5e3231e9ae6a9704b9ece49d9ad21a30
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
103
Assets/Scripts/Devices/Ant/AirDensity.cs
Normal file
103
Assets/Scripts/Devices/Ant/AirDensity.cs
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
internal static class AirDensity
|
||||||
|
{
|
||||||
|
static double pi = 3.141592653589793;
|
||||||
|
static double radPerDeg = 0;
|
||||||
|
|
||||||
|
static double ae = 6378140.0;
|
||||||
|
//static double alphae = 1 / 298.257;
|
||||||
|
static double be = 0;
|
||||||
|
static double phi0 = 0;
|
||||||
|
static double R0 = 0;
|
||||||
|
|
||||||
|
|
||||||
|
static double meanRadius = 6371004.0; //all use SI units
|
||||||
|
//static double semiMajorAxis = 6378140.0;
|
||||||
|
static double gravityConst = 3.98600445e14;
|
||||||
|
//static double J2 = 1.08263e-3;
|
||||||
|
|
||||||
|
static AirDensity()
|
||||||
|
{
|
||||||
|
radPerDeg = pi / 180.0;
|
||||||
|
be = 297.257 / 298.257 * ae;
|
||||||
|
phi0 = 29.8336 * radPerDeg;
|
||||||
|
R0 = ae * be / Math.Sqrt(ae * ae * Math.Sin(phi0) * Math.Sin(phi0) + be * be * Math.Cos(phi0) * Math.Cos(phi0));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计算空气密度
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="geoHeight"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static double GetAirDensity(double geoHeight)
|
||||||
|
{
|
||||||
|
//tested
|
||||||
|
var H = geoHeightToPotentialH(geoHeight);
|
||||||
|
var z = H / (1 - H / 6356766);
|
||||||
|
var w = 0D;
|
||||||
|
if (z < 11019.1)
|
||||||
|
{
|
||||||
|
w = 1.0 - H / 44330.8;
|
||||||
|
return 1.225 * Math.Pow(w, 4.2559);
|
||||||
|
}
|
||||||
|
if (z < 20063.1)
|
||||||
|
{
|
||||||
|
w = Math.Exp((14964.7 - H) / 6341.6);
|
||||||
|
return 1.225 * .15898 * w;
|
||||||
|
}
|
||||||
|
if (z < 32161.9)
|
||||||
|
{
|
||||||
|
w = 1.0 + (H - 24902.1) / 221552;
|
||||||
|
return 1.225 * 3.2722e-2 * Math.Pow(w, -35.1629);
|
||||||
|
}
|
||||||
|
if (z < 47350.1)
|
||||||
|
{
|
||||||
|
w = 1.0 + (H - 39749.9) / 89410.7;
|
||||||
|
return 1.225 * 3.2618e-3 * Math.Pow(w, -13.2011);
|
||||||
|
}
|
||||||
|
if (z < 51412.5)
|
||||||
|
{
|
||||||
|
w = Math.Exp((48625.2 - H) / 7922.3);
|
||||||
|
return 1.225 * 9.4920e-4 * w;
|
||||||
|
}
|
||||||
|
if (z < 71802.0)
|
||||||
|
{
|
||||||
|
w = 1.0 - (H - 59439.0) / 88221.8;
|
||||||
|
return 1.225 * 2.5280e-4 * Math.Pow(w, 11.2011);
|
||||||
|
}
|
||||||
|
if (z < 86000.0)
|
||||||
|
{
|
||||||
|
w = 1.0 - (H - 78030.3) / 100295.0;
|
||||||
|
return 1.225 * 1.7632e-5 * Math.Pow(w, 16.0816);
|
||||||
|
}
|
||||||
|
if (z < 91000.0)
|
||||||
|
{
|
||||||
|
w = Math.Exp((87284.8 - H) / 5470.0);
|
||||||
|
return 1.225 * 3.6411e-6 * w;
|
||||||
|
}
|
||||||
|
return .0;//linearInter(90000.0,13000.0,3.416e-6,8.152e-9,z);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static double getRadiusFromLatitude(double latitude)
|
||||||
|
{
|
||||||
|
var s = Math.Sin(latitude);
|
||||||
|
var c = Math.Cos(latitude);
|
||||||
|
return (ae * be / Math.Pow((ae * ae * s * s + be * be * c * c), .5));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double geoHeightToPotentialH(double h)
|
||||||
|
{
|
||||||
|
return gravityConst * h / meanRadius / (meanRadius + h) / 9.8066;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/AirDensity.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/AirDensity.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c99e2df823299b44fb62490c70712b1f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
523
Assets/Scripts/Devices/Ant/AntConnector.cs
Normal file
523
Assets/Scripts/Devices/Ant/AntConnector.cs
Normal file
@ -0,0 +1,523 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using ANT_Managed_Library;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public class AntConnector : IDisposable
|
||||||
|
{
|
||||||
|
private readonly byte[] ANTPLUS_NETWORK_KEY = new byte[]
|
||||||
|
{
|
||||||
|
//Insert the ANT+ network key here:
|
||||||
|
0xB9, 0xA5, 0x21, 0xFB, 0xBD, 0x72, 0xC3, 0x45
|
||||||
|
//Distribution of source code containing the ANT+ Network Key is prohibited.
|
||||||
|
//You may not add the ANT+ Network Key to this source code and republish it.
|
||||||
|
//The ANT+ Network Key is available to ANT+ Adopters.
|
||||||
|
//Please refer to http://thisisant.com to become an ANT+ Adopter and access the key.
|
||||||
|
};
|
||||||
|
private readonly static object _lock = new object();
|
||||||
|
private static ANT_Device _antDevice = null;
|
||||||
|
private ANT_Channel searchChannel;
|
||||||
|
private readonly List<ANT_Channel> _channels = new List<ANT_Channel>();
|
||||||
|
private int ChannelCount
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
//if (_antDevice == null) return 0;
|
||||||
|
//return _antDevice.getNumChannels();
|
||||||
|
return _channels.Count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private bool IsBackgroundScanning { get; set; }
|
||||||
|
//int searchingDeviceIndex = -1;
|
||||||
|
|
||||||
|
private List<AbstractAntDevice> deviceList = new List<AbstractAntDevice>();
|
||||||
|
|
||||||
|
public bool IsAvailable = false;
|
||||||
|
/// <summary>
|
||||||
|
/// 设备号,频道编号
|
||||||
|
/// </summary>
|
||||||
|
public readonly List<UserdChannel> usedChannels = new List<UserdChannel>();
|
||||||
|
|
||||||
|
public readonly List<AbstractAntDevice> discoveredDevices = new List<AbstractAntDevice>();
|
||||||
|
|
||||||
|
|
||||||
|
private static AntConnector _antConnector;
|
||||||
|
public static AntConnector Instance()
|
||||||
|
{
|
||||||
|
if (_antConnector == null)
|
||||||
|
{
|
||||||
|
_antConnector = new AntConnector();
|
||||||
|
}
|
||||||
|
|
||||||
|
return _antConnector;
|
||||||
|
}
|
||||||
|
|
||||||
|
//private DeviceService deviceService = new DeviceService();
|
||||||
|
private AntConnector()
|
||||||
|
{
|
||||||
|
if (_antDevice == null)
|
||||||
|
{
|
||||||
|
//ANT_Common.enableDebugLogs();
|
||||||
|
//findUsableAntDevice();
|
||||||
|
}
|
||||||
|
//CheckStatus();
|
||||||
|
|
||||||
|
deviceList.Add(new FitDevice());
|
||||||
|
//deviceList.Add(new ds_AntPlus_Power());
|
||||||
|
//deviceList.Add(new ds_AntPlus_Cadence());
|
||||||
|
//deviceList.Add(new ds_AntPlus_HeartRate());
|
||||||
|
//deviceList.Add(new ds_AntPlus_BikeSpdCad());
|
||||||
|
|
||||||
|
var timer = new System.Timers.Timer(1000);
|
||||||
|
timer.AutoReset = true;
|
||||||
|
timer.Elapsed += Timer_Elapsed;
|
||||||
|
timer.Enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
CheckStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CheckStatus()
|
||||||
|
{
|
||||||
|
if (_antDevice != null)
|
||||||
|
return;
|
||||||
|
//discoveredDevices.Add(new VirtualPowerDevice());
|
||||||
|
this.CreateAntDevice();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateAntDevice()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if ((int)ANT_Common.getNumDetectedUSBDevices() == 0)
|
||||||
|
return;
|
||||||
|
_antDevice = new ANT_Device();
|
||||||
|
if (_antDevice.getNumChannels() <= 4)
|
||||||
|
{
|
||||||
|
_antDevice = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!_antDevice.setNetworkKey(0, ANTPLUS_NETWORK_KEY, 500))
|
||||||
|
throw new ApplicationException("Failed to set network key");
|
||||||
|
IsAvailable = true;
|
||||||
|
//_antDevice.configureAdvancedBurstSplitting(true);
|
||||||
|
|
||||||
|
_antDevice.deviceResponse += DeviceResponse;
|
||||||
|
_antDevice.serialError += new ANT_Device.dSerialErrorHandler(antDevice_serialError);
|
||||||
|
for (int i = 1; i < _antDevice.getNumChannels(); i++)
|
||||||
|
{
|
||||||
|
var channel = _antDevice.getChannel(i);
|
||||||
|
_channels.Add(channel);
|
||||||
|
channel.channelResponse += new dChannelResponseHandler(DeviceResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsAvailable)
|
||||||
|
{
|
||||||
|
usedChannels.Add(new UserdChannel
|
||||||
|
{
|
||||||
|
DeviceNumber = "scan",
|
||||||
|
DeviceTypeId = "",
|
||||||
|
Index = 0
|
||||||
|
});
|
||||||
|
StartNextSearch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//ANT_Device.shutdownDeviceInstance(ref _antDevice); //Don't leave here with an invalid device ref
|
||||||
|
//throw new Exception("Could not connect to valid USB2: " + ex.Message); //forward the exception
|
||||||
|
//Log.ErrorLog(ex);
|
||||||
|
//Debug.LogError(ex);
|
||||||
|
//throw ex;
|
||||||
|
Log(ex.Message);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Log(string str)
|
||||||
|
{
|
||||||
|
//System.IO.File.AppendAllText(@"D:\work\PowerFun\PowerFun-Unity\Build\log.txt", str+"\r\n");
|
||||||
|
Debug.LogError(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void antDevice_serialError(ANT_Device sender, ANT_Device.serialErrorCode error, bool isCritical)
|
||||||
|
{
|
||||||
|
//throw new NotImplementedException();
|
||||||
|
Log("出错了");
|
||||||
|
if (error != ANT_Device.serialErrorCode.DeviceConnectionLost)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_antDevice != null)
|
||||||
|
{
|
||||||
|
_antDevice.deviceResponse -= DeviceResponse;
|
||||||
|
_antDevice.serialError -= antDevice_serialError;
|
||||||
|
}
|
||||||
|
_antDevice = null;
|
||||||
|
IsAvailable = false;
|
||||||
|
foreach (var item in _channels)
|
||||||
|
{
|
||||||
|
item.channelResponse -= DeviceResponse;
|
||||||
|
}
|
||||||
|
searchChannel.channelResponse -= antChannel_channelResponse_FeSearch;
|
||||||
|
searchChannel = null;
|
||||||
|
discoveredDevices.Clear();
|
||||||
|
usedChannels.Clear();
|
||||||
|
IsBackgroundScanning = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartNextSearch()
|
||||||
|
{
|
||||||
|
//Console.WriteLine("startNextSearch");
|
||||||
|
if (searchChannel != null)
|
||||||
|
{
|
||||||
|
//searchChannel.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get new search channel if neccesary
|
||||||
|
if (searchChannel == null)
|
||||||
|
{
|
||||||
|
//if (usedChannels.Count >= ChannelCount)
|
||||||
|
// return; //no free channels
|
||||||
|
|
||||||
|
//Find the first free channel and start the search
|
||||||
|
//for (int i = 0; i < ChannelCount; ++i)
|
||||||
|
//{
|
||||||
|
// if (!usedChannels.Values.Contains((byte)i))
|
||||||
|
// {
|
||||||
|
// searchChannel = _antDevice.getChannel(i);
|
||||||
|
// searchChannel.channelResponse += new dChannelResponseHandler(antChannel_channelResponse_FeSearch);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
searchChannel = _antDevice.getChannel(0); // _antDevice.getChannel(usedChannels["scan"]);
|
||||||
|
searchChannel.channelResponse += new dChannelResponseHandler(antChannel_channelResponse_FeSearch);
|
||||||
|
}
|
||||||
|
IsBackgroundScanning = true;
|
||||||
|
ReSearch();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceResponse(ANT_Response response)
|
||||||
|
{
|
||||||
|
//Debug.Log(response.responseID);
|
||||||
|
var channelIndex = response.messageContents[0];
|
||||||
|
|
||||||
|
var antMessageId = (ANT_ReferenceLibrary.ANTMessageID)response.responseID;
|
||||||
|
if (antMessageId == ANT_Managed_Library.ANT_ReferenceLibrary.ANTMessageID.RESPONSE_EVENT_0x40)
|
||||||
|
{
|
||||||
|
//Trace.WriteLine(string.Join(",", response.messageContents));
|
||||||
|
var antEventId = (ANT_ReferenceLibrary.ANTEventID)response.messageContents[2];
|
||||||
|
//Trace.WriteLine(antEventId.ToString() +", " + string.Join(",",response.messageContents));
|
||||||
|
if (antEventId == ANT_ReferenceLibrary.ANTEventID.EVENT_CHANNEL_CLOSED_0x07)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
//设备断开连接
|
||||||
|
else if (antEventId == ANT_ReferenceLibrary.ANTEventID.EVENT_RX_FAIL_GO_TO_SEARCH_0x08)
|
||||||
|
{
|
||||||
|
Debug.Log(antEventId.ToString() + ", " + string.Join(",", response.messageContents));
|
||||||
|
|
||||||
|
var cc1 = usedChannels.Where(d => d.Index == channelIndex).FirstOrDefault();
|
||||||
|
var dd1 = discoveredDevices.SingleOrDefault(d => d.searchProfile.deviceNumber.ToString() == cc1.DeviceNumber && d.searchProfile.deviceType.ToString() == cc1.DeviceTypeId);
|
||||||
|
if (dd1 != null)
|
||||||
|
{
|
||||||
|
dd1.Disconnect(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Trace.WriteLine(antMessageId + ", " + string.Join(",", response.messageContents));//EVENT_RX_FAIL_GO_TO_SEARCH_0x08
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (antMessageId == ANT_ReferenceLibrary.ANTMessageID.BURST_DATA_0x50)
|
||||||
|
|
||||||
|
if (response.messageContents.Length == 3) return;
|
||||||
|
var str = string.Join(",", response.messageContents);
|
||||||
|
|
||||||
|
var cc = usedChannels.Where(d => d.Index == channelIndex).FirstOrDefault();
|
||||||
|
var dd = discoveredDevices.SingleOrDefault(d => d.searchProfile.deviceNumber.ToString() == cc.DeviceNumber && d.searchProfile.deviceType.ToString() == cc.DeviceTypeId);
|
||||||
|
if (dd != null)
|
||||||
|
{
|
||||||
|
if (dd.State == DeviceState.Connecting)
|
||||||
|
{
|
||||||
|
dd.State = DeviceState.Connected;
|
||||||
|
//IsBackgroundScanning = true;
|
||||||
|
//ReSearch();
|
||||||
|
//StartNextSearch();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dd.handleChannelResponse(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SendMessage(byte msgID, byte[] msgData)
|
||||||
|
{
|
||||||
|
return _antDevice.writeRawMessageToDevice(msgID, msgData);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SendMessage(ANTMessage data)
|
||||||
|
{
|
||||||
|
return SendMessage(data.Id, data.Data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void antChannel_channelResponse_FeSearch(ANT_Response response)
|
||||||
|
{
|
||||||
|
if (IsBackgroundScanning == false)
|
||||||
|
{
|
||||||
|
searchChannel.closeChannel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (response.messageContents.Length == 3) return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var message = response.messageContents;
|
||||||
|
if (response.messageContents.Length >= 14)
|
||||||
|
{
|
||||||
|
message = response.messageContents.Skip(10).Take(4).ToArray();
|
||||||
|
|
||||||
|
var deviceNumber = message[0] + (message[1] << 8);
|
||||||
|
var deviceTypeId = message[2] & 127;
|
||||||
|
var transmissionTypeId = message[3];
|
||||||
|
|
||||||
|
//Console.WriteLine($" {deviceNumber}, {deviceTypeId}");
|
||||||
|
|
||||||
|
var device2 = discoveredDevices.FirstOrDefault(d => d.searchProfile.deviceNumber == deviceNumber && d.searchProfile.deviceType == deviceTypeId);
|
||||||
|
if (device2 != null)
|
||||||
|
{
|
||||||
|
//ReSearch();
|
||||||
|
if (device2.State == DeviceState.Connected)
|
||||||
|
{
|
||||||
|
device2.handleChannelResponse(response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (device2.State == DeviceState.Disconnected)
|
||||||
|
{
|
||||||
|
//var deviceInfo = deviceService.Get(PubCommData.CurrentUser.Id, $"{ device2.searchProfile.deviceNumber }:{ device2.searchProfile.deviceType }");
|
||||||
|
//if (deviceInfo != null && deviceInfo.Paired)
|
||||||
|
//{
|
||||||
|
// device2.Connect();
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var device1 = deviceList.SingleOrDefault(d => d.searchProfile.deviceType == deviceTypeId);
|
||||||
|
if (device1 != null)
|
||||||
|
{
|
||||||
|
AbstractAntDevice device = null;
|
||||||
|
switch (device1.Sensor)
|
||||||
|
{
|
||||||
|
case SensorType.None:
|
||||||
|
break;
|
||||||
|
case SensorType.Cadence:
|
||||||
|
//device = new ds_AntPlus_Cadence();
|
||||||
|
break;
|
||||||
|
case SensorType.HeartRate:
|
||||||
|
//device = new ds_AntPlus_HeartRate();
|
||||||
|
break;
|
||||||
|
case SensorType.Power:
|
||||||
|
//device = new ds_AntPlus_Power();
|
||||||
|
break;
|
||||||
|
case SensorType.Speed:
|
||||||
|
break;
|
||||||
|
case SensorType.SpeedCadence:
|
||||||
|
//device = new ds_AntPlus_BikeSpdCad();
|
||||||
|
break;
|
||||||
|
case SensorType.Trainer:
|
||||||
|
device = new FitDevice();
|
||||||
|
break;
|
||||||
|
case SensorType.VirtualPower:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (device != null)
|
||||||
|
{
|
||||||
|
//device.searchProfile.deviceNumber = (ushort)deviceNumber;
|
||||||
|
device.DeviceNumber = (ushort)deviceNumber;
|
||||||
|
discoveredDevices.Add(device);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
//ReSearch();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ReSearch()
|
||||||
|
{
|
||||||
|
if (IsBackgroundScanning == false) return;
|
||||||
|
//Console.WriteLine($"research,{ DateTime.Now }");
|
||||||
|
if (searchChannel != null)
|
||||||
|
{
|
||||||
|
//searchChannel.closeChannel(500);
|
||||||
|
//searchChannel.unassignChannel();
|
||||||
|
//searchChannel.openChannel();
|
||||||
|
//return;
|
||||||
|
}
|
||||||
|
var channelIndex = (byte)0; //searchChannel.getChannelNum();
|
||||||
|
//Handle setting the search timeout
|
||||||
|
byte timeout = 4; //default 4*2.5=10 seconds for each device
|
||||||
|
//if (deviceList.Count - usedChannels.Count == 1)
|
||||||
|
timeout = 255; //search forever if we only have one device to find; If one of the other devices resets it will startNextSearch again so we won't get stuck
|
||||||
|
|
||||||
|
searchChannel.assignChannelExt(ANT_ReferenceLibrary.ChannelType.ADV_TxRx_Only_or_RxAlwaysWildCard_0x40, 0, ANT_ReferenceLibrary.ChannelTypeExtended.ADV_AlwaysSearch_0x01);
|
||||||
|
//SendMessage((int)ANT_ReferenceLibrary.ANTMessageID.ASSIGN_CHANNEL_0x42, new byte[] {
|
||||||
|
// channelIndex,
|
||||||
|
// (int)ANT_ReferenceLibrary.ChannelType.ADV_TxRx_Only_or_RxAlwaysWildCard_0x40,
|
||||||
|
// 0
|
||||||
|
// });
|
||||||
|
searchChannel.setChannelID(0, false, 0, 0);
|
||||||
|
searchChannel.setChannelFreq(57);
|
||||||
|
SendMessage(102, new byte[] { channelIndex, Convert.ToByte(true) });
|
||||||
|
searchChannel.setLowPrioritySearchTimeout(timeout);
|
||||||
|
searchChannel.setChannelSearchTimeout(0);
|
||||||
|
searchChannel.openChannel(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ConnectDevice(AbstractAntDevice device)
|
||||||
|
{
|
||||||
|
if (usedChannels.Any(u => u.DeviceNumber == device.searchProfile.deviceNumber.ToString() &&
|
||||||
|
u.DeviceTypeId == device.searchProfile.deviceType.ToString()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (device.Sensor == SensorType.Trainer || device.Sensor == SensorType.Power)
|
||||||
|
{
|
||||||
|
if (discoveredDevices.Any(s => s.Sensor == device.Sensor && (s.State == DeviceState.Connected || s.State == DeviceState.Connecting)))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (device.Sensor == SensorType.Cadence)
|
||||||
|
{
|
||||||
|
if (discoveredDevices.Any(s => s.Sensor == device.Sensor && (s.State == DeviceState.Connected || s.State == DeviceState.Connecting)))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (device.Sensor == SensorType.HeartRate)
|
||||||
|
{
|
||||||
|
if (discoveredDevices.Any(s => s.Sensor == device.Sensor && (s.State == DeviceState.Connected || s.State == DeviceState.Connecting)))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < ChannelCount; i++)
|
||||||
|
{
|
||||||
|
if (!usedChannels.Any(u => u.Index == (byte)i))
|
||||||
|
{
|
||||||
|
usedChannels.Add(new UserdChannel
|
||||||
|
{
|
||||||
|
DeviceNumber = device.searchProfile.deviceNumber.ToString(),
|
||||||
|
DeviceTypeId = device.searchProfile.deviceType.ToString(),
|
||||||
|
Index = (byte)i
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//var deviceService = new DeviceService();
|
||||||
|
//var info = deviceService.Get(PubCommData.CurrentUser.Id, device.searchProfile.deviceNumber.ToString() + ":" + device.searchProfile.deviceType);
|
||||||
|
//if (info != null && info.Paired == false)
|
||||||
|
//{
|
||||||
|
// info.Paired = true;
|
||||||
|
// deviceService.Update(info);
|
||||||
|
//}
|
||||||
|
|
||||||
|
#region 配对
|
||||||
|
device.State = DeviceState.Connecting;
|
||||||
|
|
||||||
|
//var r = searchChannel.closeChannel(500);
|
||||||
|
//if (!r)
|
||||||
|
//{
|
||||||
|
// throw new Exception("关闭搜索频道出错");
|
||||||
|
//}
|
||||||
|
|
||||||
|
//CloseChannel(searchChannel);
|
||||||
|
//IsBackgroundScanning = false;
|
||||||
|
|
||||||
|
var channelIndex = usedChannels.Single(c => c.DeviceNumber == device.searchProfile.deviceNumber.ToString() && c.DeviceTypeId == device.searchProfile.deviceType.ToString()).Index;
|
||||||
|
|
||||||
|
var channel = _antDevice.getChannel(channelIndex);
|
||||||
|
//channel.channelResponse += DeviceResponse;
|
||||||
|
channel.assignChannel(ANT_ReferenceLibrary.ChannelType.BASE_Slave_Receive_0x00, 0);
|
||||||
|
channel.setChannelID(device.searchProfile.deviceNumber, false, (byte)device.searchProfile.deviceType, device.searchProfile.transType);
|
||||||
|
channel.setChannelPeriod(device.searchProfile.messagePeriod);
|
||||||
|
channel.setChannelFreq(device.searchProfile.rfOffset);
|
||||||
|
channel.openChannel();
|
||||||
|
|
||||||
|
//if (!r1)
|
||||||
|
//{
|
||||||
|
// throw new Exception($"打开配对频道出错{ channelIndex }");
|
||||||
|
//}
|
||||||
|
//Console.WriteLine($" 连接设备{ device.searchProfile.deviceNumber }, 频道{ channelIndex },{ DateTime.Now }");
|
||||||
|
|
||||||
|
|
||||||
|
//Task.Delay(2000).ContinueWith((t) =>
|
||||||
|
//{
|
||||||
|
// IsBackgroundScanning = true;
|
||||||
|
// ReSearch();
|
||||||
|
//});
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisconnectDevice(AbstractAntDevice device, bool save)
|
||||||
|
{
|
||||||
|
var deviceNumber = device.searchProfile.deviceNumber.ToString();
|
||||||
|
var deviceType = device.searchProfile.deviceType.ToString();
|
||||||
|
var item = usedChannels.SingleOrDefault(u => u.DeviceNumber == deviceNumber && u.DeviceTypeId == deviceType);
|
||||||
|
if (item == null)
|
||||||
|
return;
|
||||||
|
device.State = DeviceState.Disconnecting;
|
||||||
|
var channelIndex = item.Index;
|
||||||
|
var channel = _antDevice.getChannel(channelIndex);
|
||||||
|
CloseChannel(channel);
|
||||||
|
usedChannels.Remove(item);
|
||||||
|
device.State = DeviceState.Disconnected;
|
||||||
|
|
||||||
|
if (save)
|
||||||
|
{
|
||||||
|
//var deviceService = new DeviceService();
|
||||||
|
//var info = deviceService.Get(PubCommData.CurrentUser.Id, device.searchProfile.deviceNumber.ToString() + ":" + device.searchProfile.deviceType);
|
||||||
|
//if (info != null && info.Paired)
|
||||||
|
//{
|
||||||
|
// info.Paired = false;
|
||||||
|
// deviceService.Update(info);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
discoveredDevices.Clear();
|
||||||
|
deviceList.Clear();
|
||||||
|
|
||||||
|
_channels.Clear();
|
||||||
|
|
||||||
|
if (_antDevice != null)
|
||||||
|
{
|
||||||
|
_antDevice.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CloseChannel(ANT_Channel channel)
|
||||||
|
{
|
||||||
|
channel.closeChannel(500);
|
||||||
|
channel.unassignChannel(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/AntConnector.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/AntConnector.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a9367d67beb5a1e49b5ecfb438961331
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
145
Assets/Scripts/Devices/Ant/DataSourceBase.cs
Normal file
145
Assets/Scripts/Devices/Ant/DataSourceBase.cs
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public abstract class DataSourceBase
|
||||||
|
{
|
||||||
|
//double distanceTravelled = 0;
|
||||||
|
//DataSourcePacket lastPacketRcvd = null;
|
||||||
|
protected racerSportType sportType;
|
||||||
|
|
||||||
|
//const double defaultRunStrideLength = 2.5;
|
||||||
|
//const double defaultRowStrideLength = 5;
|
||||||
|
//const double defaultBikeStrideLength = 8;
|
||||||
|
//const double defaultSkiStrideLength = 4.5;
|
||||||
|
|
||||||
|
public string customSourceName;
|
||||||
|
|
||||||
|
public bool isInUse = false;
|
||||||
|
public bool isHuman;
|
||||||
|
|
||||||
|
static byte uidCount = 0;
|
||||||
|
public readonly byte uid;
|
||||||
|
|
||||||
|
|
||||||
|
public DataSourceBase(racerSportType sportType, bool isHuman)
|
||||||
|
{
|
||||||
|
this.sportType = sportType;
|
||||||
|
this.isHuman = isHuman;
|
||||||
|
uid = ++uidCount;
|
||||||
|
if (uidCount == byte.MaxValue)
|
||||||
|
uidCount = byte.MaxValue - 1; //If we overflow just stay at max instead of colliding with earlier values
|
||||||
|
}
|
||||||
|
|
||||||
|
Action<DataSourcePacket> distanceUpdate;
|
||||||
|
//bool running = false;
|
||||||
|
|
||||||
|
public racerSportType getSportType()
|
||||||
|
{
|
||||||
|
return sportType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public double getCurrentDistance()
|
||||||
|
//{
|
||||||
|
// return distanceTravelled;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public void incrementDistanceAndUpdate(double distToAdd, double speedMs = 0xFFFF, double cadence = -1, byte heartRate = 0xFF, ushort powerW = 0xFFFF)
|
||||||
|
//{
|
||||||
|
// if (running)
|
||||||
|
// {
|
||||||
|
// if (cadence == -1)
|
||||||
|
// cadence = calculateCadence(speedMs);
|
||||||
|
|
||||||
|
// distanceTravelled += distToAdd;
|
||||||
|
// lastPacketRcvd = new DataSourcePacket(distanceTravelled, speedMs, cadence, heartRate, powerW);
|
||||||
|
// distanceUpdate(lastPacketRcvd);
|
||||||
|
// }
|
||||||
|
// else //Just save the last packet for monitoring purposes
|
||||||
|
// {
|
||||||
|
// if(lastPacketRcvd == null)
|
||||||
|
// lastPacketRcvd = new DataSourcePacket(distToAdd, speedMs, cadence, heartRate, powerW);
|
||||||
|
// else
|
||||||
|
// lastPacketRcvd = new DataSourcePacket(lastPacketRcvd.distance + distToAdd, speedMs, cadence, heartRate, powerW);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public virtual void reset()
|
||||||
|
//{
|
||||||
|
// stop();
|
||||||
|
// distanceTravelled = 0;
|
||||||
|
// lastPacketRcvd = null;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public virtual void start(Action<DataSourcePacket> distanceUpdateHandler)
|
||||||
|
//{
|
||||||
|
// distanceUpdate = distanceUpdateHandler;
|
||||||
|
// running = true;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public virtual void stop()
|
||||||
|
//{
|
||||||
|
// running = false;
|
||||||
|
// distanceUpdate = null;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public bool isRunning()
|
||||||
|
//{
|
||||||
|
// return running;
|
||||||
|
//}
|
||||||
|
|
||||||
|
public abstract string getDefaultSourceName();
|
||||||
|
|
||||||
|
public string getSourceName()
|
||||||
|
{
|
||||||
|
if (String.IsNullOrWhiteSpace(customSourceName))
|
||||||
|
return getDefaultSourceName();
|
||||||
|
else
|
||||||
|
return customSourceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public DataSourcePacket getLastDataRcvd()
|
||||||
|
//{
|
||||||
|
// return lastPacketRcvd;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//protected double calculateCadence(double speed_Ms)
|
||||||
|
//{
|
||||||
|
// switch (sportType)
|
||||||
|
// {
|
||||||
|
// case racerSportType.Running:
|
||||||
|
// return (speed_Ms * 60) / DataSourceBase.defaultRunStrideLength; //[m/min] / [m/str] = str/min
|
||||||
|
// case racerSportType.Rowing:
|
||||||
|
// return (speed_Ms * 60) / DataSourceBase.defaultRowStrideLength;
|
||||||
|
// case racerSportType.Biking:
|
||||||
|
// return (speed_Ms * 60) / DataSourceBase.defaultBikeStrideLength;
|
||||||
|
// case racerSportType.Skiing:
|
||||||
|
// return (speed_Ms * 60) / DataSourceBase.defaultSkiStrideLength;
|
||||||
|
// default:
|
||||||
|
// return 0;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DataSourcePacket
|
||||||
|
{
|
||||||
|
public readonly double distance; //m
|
||||||
|
public readonly double cadence; //rpm
|
||||||
|
public readonly double speed_ms; //m/s
|
||||||
|
public readonly byte heartRate; //bpm
|
||||||
|
public readonly ushort power; //W
|
||||||
|
|
||||||
|
public DataSourcePacket(double dist, double spdMs, double cad, byte hr, ushort pwr)
|
||||||
|
{
|
||||||
|
distance = dist;
|
||||||
|
cadence = cad;
|
||||||
|
speed_ms = spdMs;
|
||||||
|
heartRate = hr;
|
||||||
|
power = pwr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/DataSourceBase.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/DataSourceBase.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d26362003c1b21f419a01b150b02f110
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
17
Assets/Scripts/Devices/Ant/DeviceState.cs
Normal file
17
Assets/Scripts/Devices/Ant/DeviceState.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public enum DeviceState
|
||||||
|
{
|
||||||
|
Connecting,
|
||||||
|
Connected,
|
||||||
|
Interrupted,
|
||||||
|
Disconnecting,
|
||||||
|
Disconnected,
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/DeviceState.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/DeviceState.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: da476d42626b4894c80f0fc0b46709ad
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
471
Assets/Scripts/Devices/Ant/FitDevice.cs
Normal file
471
Assets/Scripts/Devices/Ant/FitDevice.cs
Normal file
@ -0,0 +1,471 @@
|
|||||||
|
using Assets.Scripts.Devices.Ant.Interfaces;
|
||||||
|
using Assets.Scripts.Devices.Ant.Messages;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public class FitDevice : AbstractAntDevice, ISpeedDevice, IPowerDevice, ICadenceDevice, IRequiresRiderWeight
|
||||||
|
{
|
||||||
|
public const int MAX_NO_EVENT_STOP_COUNT = 12;
|
||||||
|
|
||||||
|
//byte lastElapsedTimeAcc;
|
||||||
|
//byte lastDistAcc;
|
||||||
|
//double calcSpeed = 0; //Averaged Speed over several msgs in case instSpeed is not available
|
||||||
|
|
||||||
|
int lastInstCadence = -1;
|
||||||
|
ushort lastInstPower = 0xFFFF;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 当前坡度,当切换到其他模式的时候,需要把坡度设置为0
|
||||||
|
/// </summary>
|
||||||
|
private double _grade = 0;
|
||||||
|
private bool IsCalibrating { get; set; }
|
||||||
|
public FitDevice()
|
||||||
|
: base("Ant+ Trainer", racerSportType.Unknown, SensorType.Trainer)
|
||||||
|
{
|
||||||
|
this.StateChange = (state) =>
|
||||||
|
{
|
||||||
|
if (state == DeviceState.Connected)
|
||||||
|
{
|
||||||
|
Calibrate();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 发送校准命令
|
||||||
|
/// </summary>
|
||||||
|
private void Calibrate()
|
||||||
|
{
|
||||||
|
if (this.IsCalibrating)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.IsCalibrating = true;
|
||||||
|
|
||||||
|
base.SendMessage(new FecCalibrate(GetChannelId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override AntChannelProfile getDefaultSearchProfile()
|
||||||
|
{
|
||||||
|
return new AntChannelProfile()
|
||||||
|
{
|
||||||
|
rfOffset = 57,
|
||||||
|
transType = 0,
|
||||||
|
deviceType = 17,
|
||||||
|
deviceNumber = 0,
|
||||||
|
messagePeriod = 8192,
|
||||||
|
pairingEnabled = false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
//private byte _previousEventCount;
|
||||||
|
|
||||||
|
// Token: 0x0400054F RID: 1359
|
||||||
|
//private ushort _previousPeriod;
|
||||||
|
|
||||||
|
// Token: 0x04000550 RID: 1360
|
||||||
|
//private ushort _previousAccumulatedTorque;
|
||||||
|
|
||||||
|
private DateTime _lastEventChange = DateTime.UtcNow;
|
||||||
|
|
||||||
|
public double Speed { get; set; }
|
||||||
|
|
||||||
|
private int _Power;
|
||||||
|
public int Power
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _Power;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_Power = DeviceValueFilter.Power(value);
|
||||||
|
Debug.Log(_Power);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int _Cadence;
|
||||||
|
public int Cadence
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _Cadence;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_Cadence = DeviceValueFilter.Cadence(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private double _riderWeight = 75.0;
|
||||||
|
|
||||||
|
public double RiderWeight
|
||||||
|
{
|
||||||
|
get => _riderWeight;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value <= 0) return;
|
||||||
|
this._riderWeight = value;
|
||||||
|
this.UpdateUserConfiguration();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime LastCalibration { get; protected set; }
|
||||||
|
public int? Offset { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public override void handleChannelResponse(ANT_Managed_Library.ANT_Response response)
|
||||||
|
{
|
||||||
|
//Console.WriteLine(string.Join(",", response.messageContents));
|
||||||
|
//Log.LogInfo(string.Join(",", response.messageContents));
|
||||||
|
if (response.responseID == (byte)ANT_Managed_Library.ANT_ReferenceLibrary.ANTMessageID.BROADCAST_DATA_0x4E)
|
||||||
|
{
|
||||||
|
var pageNumber = response.messageContents[1];
|
||||||
|
switch (pageNumber)
|
||||||
|
{
|
||||||
|
case 16: //Page 16 - General Page
|
||||||
|
{
|
||||||
|
HandleGeneralDataPage(response.messageContents.Skip(1).ToArray());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//case 17: //general settings Page, not on bike, shows on rower, but not very useful
|
||||||
|
// {
|
||||||
|
// System.Console.Out.WriteLine("Cycle Length:" + response.messageContents[4] + ",Incline:" + (response.messageContents[5] + (response.messageContents[5] << 8)) + ",Resist:" + response.messageContents[7]);
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
//case 18: //metabolic data, doesn't show on rower or bike
|
||||||
|
// {
|
||||||
|
// System.Console.Out.WriteLine("BurnRate:" + (response.messageContents[5] + (response.messageContents[6] << 8)) + ",Cal:" + response.messageContents[7]);
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
case 19: //treadmill data
|
||||||
|
{
|
||||||
|
lastInstCadence = response.messageContents[5];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 21: //bike data
|
||||||
|
case 22: //Row data, same format as bike for cad and power
|
||||||
|
case 20: //Elliptical, same format as bike for cad and power
|
||||||
|
case 24: //Nordic Skier, same format as bike for cad and power
|
||||||
|
{
|
||||||
|
lastInstCadence = response.messageContents[5];
|
||||||
|
lastInstPower = (ushort)(response.messageContents[6] + (response.messageContents[7] << 8));
|
||||||
|
//System.Console.Out.WriteLine("Cadence:" + response.messageContents[5] + ",Power:" + (response.messageContents[6] + (response.messageContents[7] << 8)));
|
||||||
|
//System.Console.Out.WriteLine("SPM:"+response.messageContents[5]+"Power:"+(response.messageContents[6] + (response.messageContents[7] << 8)));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 25:
|
||||||
|
|
||||||
|
HandleTrainerDataPage(response.messageContents.Skip(1).ToArray());
|
||||||
|
break;
|
||||||
|
//case 80:
|
||||||
|
// new ManufacturerDataPageHandler().Handle(response.messageContents.Skip(1).ToArray(), this);
|
||||||
|
// break;
|
||||||
|
case 122:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
foreach (var handler in pageHandlers)
|
||||||
|
{
|
||||||
|
if (handler.CanHandle(pageNumber))
|
||||||
|
{
|
||||||
|
handler.Handle(response.messageContents.Skip(1).ToArray(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleGeneralDataPage(byte[] dataPayload)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte equipmentType = dataPayload[1];
|
||||||
|
byte elapsedTime = dataPayload[2];
|
||||||
|
byte distanceTraveled = dataPayload[3];
|
||||||
|
|
||||||
|
//byte heartRate = dataPayload[6];
|
||||||
|
//FecPageHandler.HeartRateDataSource heartRateDataSource = (FecPageHandler.HeartRateDataSource)(dataPayload[7] & 3);
|
||||||
|
//bool traveledEnabled = (dataPayload[7] & 4) == 1;
|
||||||
|
//bool distanceTraveledEnabled = (dataPayload[7] & 8) == 1;
|
||||||
|
//FecPageHandler.FeState feState = (FecPageHandler.FeState)(dataPayload[7] & 128);
|
||||||
|
//bool lapToggle = (dataPayload[7] & 128) == 1;
|
||||||
|
//this._fecGeneralData = new FecGeneralData(equipmentType, elapsedTime, distanceTraveled, (short)num, feState, lapToggle, heartRate, heartRateDataSource, traveledEnabled, distanceTraveledEnabled);
|
||||||
|
bool traveledEnabled = ((int)dataPayload[7] & 4) == 1;
|
||||||
|
bool distanceTraveledEnabled = ((int)dataPayload[7] & 8) == 1;
|
||||||
|
|
||||||
|
int num1 = (int)dataPayload[4] | (int)dataPayload[5] << 8; // Instantaneous speed, m/s
|
||||||
|
Speed = (double)num1 / 1000.0 * 60.0 * 60.0 / 1000.0; //转换成公里/小时
|
||||||
|
//Console.WriteLine(num1 +"-----"+Speed);
|
||||||
|
//fecDevice.UpdateSpeed(new double?(value));
|
||||||
|
//PubCommData.Speed = num2;
|
||||||
|
|
||||||
|
//byte? b2 = (heartRate == 255) ? null : new byte?(heartRate);
|
||||||
|
//int? xl = b2.HasValue ? new int?((int)b2.GetValueOrDefault()) : 0;
|
||||||
|
//Console.WriteLine("最新速度" + Speed);
|
||||||
|
//Console.WriteLine("最新心率" + xl);
|
||||||
|
|
||||||
|
//string str = "";
|
||||||
|
//for (int i = 0; i < response.messageContents.Length; i++)
|
||||||
|
//{
|
||||||
|
// str += "," + response.messageContents[i];
|
||||||
|
//}
|
||||||
|
//PubCommData.sp = "速度:" + str;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleTrainerDataPage(byte[] dataPayload)
|
||||||
|
{
|
||||||
|
//if (response.messageContents.Length < 11) break;
|
||||||
|
//double value = 0;
|
||||||
|
//for (int i = 0; i < response.messageContents.Length; i++)
|
||||||
|
//{
|
||||||
|
// if (i < 8)
|
||||||
|
// {
|
||||||
|
// value += response.messageContents[i];
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//double value1 = response.messageContents[10] * 256 + response.messageContents[9];
|
||||||
|
|
||||||
|
|
||||||
|
//double power = response.messageContents[7] * 256 + response.messageContents[6];
|
||||||
|
//Console.WriteLine("power:" + power);
|
||||||
|
//PubCommData.power = power;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (dataPayload[5] > 0)
|
||||||
|
{
|
||||||
|
//Console.WriteLine(dataPayload[5] + "," + dataPayload[6]);//瞬时功率
|
||||||
|
}
|
||||||
|
byte num1 = dataPayload[1];
|
||||||
|
byte num2 = dataPayload[2];
|
||||||
|
int accumulatedPower = (int)dataPayload[3] | (int)dataPayload[4] << 8;
|
||||||
|
int instantaneousPower = (int)dataPayload[5] | ((int)dataPayload[6] & 15) << 8; //Watts
|
||||||
|
bool bikePowerCalibrationRequired = ((int)dataPayload[6] >> 4 & 1) == 1;
|
||||||
|
bool resistanceCalibrationRequired = ((int)dataPayload[6] >> 5 & 1) == 1;
|
||||||
|
bool userConfigurationRequired = ((int)dataPayload[6] >> 6 & 1) == 1;
|
||||||
|
bool speedIsTooLow = ((int)dataPayload[7] & 1) == 1;
|
||||||
|
bool speedIsTooHigh = ((int)dataPayload[7] & 2) == 1;
|
||||||
|
|
||||||
|
//PubCommData.power = instantaneousPower;
|
||||||
|
Power = instantaneousPower;
|
||||||
|
|
||||||
|
//bool bikePowerCalibrationRequired = (response.messageContents[6] >> 4 & 1) == 1;
|
||||||
|
//bool resistanceCalibrationRequired = (response.messageContents[6] >> 5 & 1) == 1;
|
||||||
|
//bool flag = (response.messageContents[6] >> 6 & 1) == 1;
|
||||||
|
//bool speedIsTooLow = (response.messageContents[7] & 1) == 1;
|
||||||
|
//bool speedIsTooHigh = (response.messageContents[7] & 2) == 1;
|
||||||
|
//FecPageHandler.FeState feState = (FecPageHandler.FeState)(dataPayload[7] & 112);
|
||||||
|
//bool lapToggle = (dataPayload[7] & 128) == 1;
|
||||||
|
//this._fecTrainerData = new FecTrainerData((int)eventCount, (int)b, accumulatedPower, num, bikePowerCalibrationRequired, resistanceCalibrationRequired, flag, speedIsTooLow, speedIsTooHigh, feState, lapToggle);
|
||||||
|
//device.UpdatePower(new int?(num));
|
||||||
|
byte? nullable = (int)num2 == (int)byte.MaxValue ? new byte?() : new byte?(num2);
|
||||||
|
int? cadence = nullable.HasValue ? new int?((int)nullable.GetValueOrDefault()) : new int?();
|
||||||
|
this.Cadence = cadence.GetValueOrDefault();
|
||||||
|
|
||||||
|
//Console.WriteLine($"power:{ instantaneousPower },Cadence:{ cadence }, data:{ string.Join(",", dataPayload) }");
|
||||||
|
|
||||||
|
if (!userConfigurationRequired)
|
||||||
|
return;
|
||||||
|
UpdateUserConfiguration();
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void SetErgMode(int targetPower)
|
||||||
|
{
|
||||||
|
if (this.State != DeviceState.Connected)
|
||||||
|
return;
|
||||||
|
if (_grade > 0)
|
||||||
|
{
|
||||||
|
SetTrackResistance(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
var channelId = GetChannelId();
|
||||||
|
|
||||||
|
//byte id = (byte)79;
|
||||||
|
//byte[] Data = new byte[9]
|
||||||
|
// {
|
||||||
|
// channelId,
|
||||||
|
// (byte) 49,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// byte.MaxValue,
|
||||||
|
// (byte)(targetPower & (int) byte.MaxValue),
|
||||||
|
// (byte)(targetPower >> 8 & (int) byte.MaxValue)
|
||||||
|
// };
|
||||||
|
AntConnector.Instance().SendMessage(new FecErgMode(channelId, targetPower).GetMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetResistanceMode(double value)
|
||||||
|
{
|
||||||
|
if (this.State != DeviceState.Connected)
|
||||||
|
return;
|
||||||
|
if (_grade > 0)
|
||||||
|
{
|
||||||
|
SetTrackResistance(0);
|
||||||
|
}
|
||||||
|
Console.WriteLine($"阻力模式{ value }");
|
||||||
|
var channelId = GetChannelId();
|
||||||
|
|
||||||
|
double resistance = value / 100 * 200;
|
||||||
|
byte id = (byte)79;
|
||||||
|
byte[] Data = new byte[9]
|
||||||
|
{
|
||||||
|
channelId,
|
||||||
|
(byte) 48,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
(byte)resistance
|
||||||
|
};
|
||||||
|
AntConnector.Instance().SendMessage(id, Data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 风阻
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="height">海拔高度,单位米</param>
|
||||||
|
public void SetWindResistance(double? height = null)
|
||||||
|
{
|
||||||
|
if (this.State != DeviceState.Connected)
|
||||||
|
return;
|
||||||
|
if (_grade > 0)
|
||||||
|
{
|
||||||
|
SetTrackResistance(0);
|
||||||
|
}
|
||||||
|
Console.WriteLine($"自由骑{ height }");
|
||||||
|
var channelId = GetChannelId();
|
||||||
|
//double resistance = value / 100 * 200;
|
||||||
|
|
||||||
|
byte windResistance = 0; //Product of Frontal Surface Area, Drag Coefficient and Air Density. Use default value: 0xFF, range: 0.00 – 1.86 kg/m
|
||||||
|
|
||||||
|
if (height.HasValue)
|
||||||
|
{
|
||||||
|
//Wind Resistance Coefficient [kg/m] = Frontal Surface Area [m2] x Drag Coefficient x Air Density[kg / m3]
|
||||||
|
var wr = 0.40 * 1.0 * AirDensity.GetAirDensity(height.Value);
|
||||||
|
if (wr > 1.86)
|
||||||
|
{
|
||||||
|
wr = 1.86;
|
||||||
|
}
|
||||||
|
windResistance = (byte)(Convert.ToInt32(Math.Round(wr, 2) / 0.01));
|
||||||
|
|
||||||
|
Console.WriteLine($"风阻系数:{ windResistance }");
|
||||||
|
}
|
||||||
|
|
||||||
|
byte id = (byte)79;
|
||||||
|
byte[] Data = new byte[9]
|
||||||
|
{
|
||||||
|
channelId,
|
||||||
|
(byte) 50,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
//Wind Resistance Coefficient 0.00 – 1.86kg/m Product of Frontal Surface Area, Drag Coefficient and Air Density.Use default value: 0xFF
|
||||||
|
windResistance,
|
||||||
|
//Wind Speed -127 – +127km/h
|
||||||
|
0xFF,
|
||||||
|
0xFF
|
||||||
|
};
|
||||||
|
AntConnector.Instance().SendMessage(id, Data);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 轨道阻力
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="grade">坡度百分比的值,单位是%</param>
|
||||||
|
public void SetTrackResistance(double grade)
|
||||||
|
{
|
||||||
|
if (this.State != DeviceState.Connected)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_grade = grade;
|
||||||
|
if (_grade > 15)
|
||||||
|
{
|
||||||
|
_grade = 15;
|
||||||
|
}
|
||||||
|
else if (_grade < -5)
|
||||||
|
{
|
||||||
|
_grade = -5;
|
||||||
|
}
|
||||||
|
//Console.WriteLine($"轨道阻力{ grade }");
|
||||||
|
var channelId = GetChannelId();
|
||||||
|
//double resistance = value / 100 * 200;
|
||||||
|
|
||||||
|
//var windResistance = 0.00; //Product of Frontal Surface Area, Drag Coefficient and Air Density. Use default value: 0xFF, range: 0.00 – 1.86kg/m
|
||||||
|
|
||||||
|
byte id = (byte)79;
|
||||||
|
|
||||||
|
// zwift started
|
||||||
|
// 0000 a4 09 4e 00 10 19 18 19 1a 41 00 30 80 00 00
|
||||||
|
// reply a4 09 4f 00 33 ff ff ff ff 45 4e ff 25 # p.74 [33] track resistance, ff ff ff ff reserved, [45] slope lsb, [4e] slope msb in 1/100%, [ff] coefficient rolling resistance
|
||||||
|
// Simulated Grade(%) = (Raw Grade Value x 0.01%) – 200.00% , 454e = 20037 x 0.01 -200 = 0.37%
|
||||||
|
//var gradeBytes = BitConverter.GetBytes(0x4E20);
|
||||||
|
|
||||||
|
var gradeValue = Convert.ToInt32((grade + 200) * 100);
|
||||||
|
var gradeBytes = BitConverter.GetBytes(gradeValue);
|
||||||
|
//var gradeBytes = BitConverter.GetBytes(20004);
|
||||||
|
byte[] Data = new byte[9]
|
||||||
|
{
|
||||||
|
channelId,
|
||||||
|
(byte) 51,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
gradeBytes[0],
|
||||||
|
gradeBytes[1],
|
||||||
|
byte.MaxValue
|
||||||
|
};
|
||||||
|
AntConnector.Instance().SendMessage(id, Data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateUserConfiguration()
|
||||||
|
{
|
||||||
|
if (this.State != DeviceState.Connected)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var channelId = GetChannelId();
|
||||||
|
//var _weight = (int)(this._riderWeight * 100.0);
|
||||||
|
//byte id = (byte)79;
|
||||||
|
//byte[] Data = new byte[9]
|
||||||
|
// {
|
||||||
|
// channelId,
|
||||||
|
// (byte) 55,
|
||||||
|
// (byte)(_weight & (int) byte.MaxValue),
|
||||||
|
// (byte)(_weight >> 8 & (int) byte.MaxValue),
|
||||||
|
// byte.MaxValue,
|
||||||
|
// (byte) 143,
|
||||||
|
// (byte) 12,
|
||||||
|
// (byte) 70,
|
||||||
|
// (byte) 0
|
||||||
|
// };
|
||||||
|
//AntConnector.Instance().SendMessage(id, Data);
|
||||||
|
AntConnector.Instance().SendMessage(new FecUserConfiguration(channelId, this._riderWeight).GetMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void DoCalibrationSuccess(int? offset)
|
||||||
|
{
|
||||||
|
this.LastCalibration = DateTime.UtcNow;
|
||||||
|
this.Offset = offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/FitDevice.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/FitDevice.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b7cdd6c7cf126c44b931a62300bb6486
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
18
Assets/Scripts/Devices/Ant/ICalibrationPage.cs
Normal file
18
Assets/Scripts/Devices/Ant/ICalibrationPage.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 校准接口
|
||||||
|
/// </summary>
|
||||||
|
interface ICalibrationPage
|
||||||
|
{
|
||||||
|
bool CanHandle(byte calibrationId);
|
||||||
|
|
||||||
|
void Handle(byte[] dataPayload, AbstractAntDevice device);
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/ICalibrationPage.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/ICalibrationPage.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 136a39036e705ed4b8ef9253254d836a
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Devices/Ant/Interfaces.meta
Normal file
8
Assets/Scripts/Devices/Ant/Interfaces.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 47189d348e47acc4b8a453cca1b2fe63
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
13
Assets/Scripts/Devices/Ant/Interfaces/ICadenceDevice.cs
Normal file
13
Assets/Scripts/Devices/Ant/Interfaces/ICadenceDevice.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Interfaces
|
||||||
|
{
|
||||||
|
public interface ICadenceDevice
|
||||||
|
{
|
||||||
|
int Cadence { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/Interfaces/ICadenceDevice.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/Interfaces/ICadenceDevice.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bbe1ee0aebb20d84096d93ba512531da
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
13
Assets/Scripts/Devices/Ant/Interfaces/IHeartRateDevice.cs
Normal file
13
Assets/Scripts/Devices/Ant/Interfaces/IHeartRateDevice.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Interfaces
|
||||||
|
{
|
||||||
|
public interface IHeartRateDevice
|
||||||
|
{
|
||||||
|
int HeartRate { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ef25441eb7ec60c47b6e85836c30a62d
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
13
Assets/Scripts/Devices/Ant/Interfaces/IPowerDevice.cs
Normal file
13
Assets/Scripts/Devices/Ant/Interfaces/IPowerDevice.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Interfaces
|
||||||
|
{
|
||||||
|
public interface IPowerDevice
|
||||||
|
{
|
||||||
|
int Power { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/Interfaces/IPowerDevice.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/Interfaces/IPowerDevice.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 71445caab189dc14ea3e5f293e495dbf
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Interfaces
|
||||||
|
{
|
||||||
|
public interface IRequiresRiderWeight
|
||||||
|
{
|
||||||
|
double RiderWeight { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 11743b109c228f4409238e5bab3df5f7
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
16
Assets/Scripts/Devices/Ant/Interfaces/ISpeedDevice.cs
Normal file
16
Assets/Scripts/Devices/Ant/Interfaces/ISpeedDevice.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Interfaces
|
||||||
|
{
|
||||||
|
public interface ISpeedDevice
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 公里/小时
|
||||||
|
/// </summary>
|
||||||
|
double Speed { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/Interfaces/ISpeedDevice.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/Interfaces/ISpeedDevice.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3850cb59e257d534cb09d66e62c526da
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
24
Assets/Scripts/Devices/Ant/ManufacturerDataPageContent.cs
Normal file
24
Assets/Scripts/Devices/Ant/ManufacturerDataPageContent.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public class ManufacturerDataPageContent
|
||||||
|
{
|
||||||
|
public int HardwareRevision { get; }
|
||||||
|
|
||||||
|
public int ManufacturerId { get; }
|
||||||
|
|
||||||
|
public int ModelNumber { get; }
|
||||||
|
|
||||||
|
public ManufacturerDataPageContent(int hwRevision, int mfgId, int modelNumber)
|
||||||
|
{
|
||||||
|
this.HardwareRevision = hwRevision;
|
||||||
|
this.ManufacturerId = mfgId;
|
||||||
|
this.ModelNumber = modelNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 44b81b22dea61054392b3df125113d37
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Devices/Ant/Messages.meta
Normal file
8
Assets/Scripts/Devices/Ant/Messages.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3a0e9980bdeaa124bb4f34c29d4cfb6d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
19
Assets/Scripts/Devices/Ant/Messages/BaseMessage.cs
Normal file
19
Assets/Scripts/Devices/Ant/Messages/BaseMessage.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Messages
|
||||||
|
{
|
||||||
|
public abstract class BaseMessage
|
||||||
|
{
|
||||||
|
protected byte Channel;
|
||||||
|
public BaseMessage(byte channel)
|
||||||
|
{
|
||||||
|
Channel = channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract ANTMessage GetMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/Messages/BaseMessage.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/Messages/BaseMessage.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 929d7cdce470dec4d973c5a714fba697
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
30
Assets/Scripts/Devices/Ant/Messages/FecCalibrate.cs
Normal file
30
Assets/Scripts/Devices/Ant/Messages/FecCalibrate.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Messages
|
||||||
|
{
|
||||||
|
public class FecCalibrate : BaseMessage
|
||||||
|
{
|
||||||
|
public FecCalibrate(byte channel) : base(channel)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ANTMessage GetMessage()
|
||||||
|
{
|
||||||
|
return new ANTMessage()
|
||||||
|
{
|
||||||
|
Id = (byte)79,
|
||||||
|
Size = (byte)3,
|
||||||
|
Data = new byte[3]
|
||||||
|
{
|
||||||
|
this.Channel,
|
||||||
|
(byte) 1,
|
||||||
|
(byte) 192
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/Messages/FecCalibrate.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/Messages/FecCalibrate.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ec7724b4dc1d247428ceab28a8258c6b
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
40
Assets/Scripts/Devices/Ant/Messages/FecErgMode.cs
Normal file
40
Assets/Scripts/Devices/Ant/Messages/FecErgMode.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Messages
|
||||||
|
{
|
||||||
|
public class FecErgMode : BaseMessage
|
||||||
|
{
|
||||||
|
private readonly int _targetPower;
|
||||||
|
|
||||||
|
public FecErgMode(byte channel, int targetPower)
|
||||||
|
: base(channel)
|
||||||
|
{
|
||||||
|
this._targetPower = targetPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ANTMessage GetMessage()
|
||||||
|
{
|
||||||
|
return new ANTMessage()
|
||||||
|
{
|
||||||
|
Id = (byte)79,
|
||||||
|
Size = (byte)9,
|
||||||
|
Data = new byte[9]
|
||||||
|
{
|
||||||
|
this.Channel,
|
||||||
|
(byte) 49,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
(byte) (this._targetPower & (int) byte.MaxValue),
|
||||||
|
(byte) (this._targetPower >> 8 & (int) byte.MaxValue)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/Messages/FecErgMode.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/Messages/FecErgMode.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2d38d163148cfd84faf99c5a2bb04010
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
40
Assets/Scripts/Devices/Ant/Messages/FecUserConfiguration.cs
Normal file
40
Assets/Scripts/Devices/Ant/Messages/FecUserConfiguration.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Messages
|
||||||
|
{
|
||||||
|
public class FecUserConfiguration : BaseMessage
|
||||||
|
{
|
||||||
|
private readonly int _weight;
|
||||||
|
|
||||||
|
public FecUserConfiguration(byte channel, double weight)
|
||||||
|
: base(channel)
|
||||||
|
{
|
||||||
|
this._weight = (int)(weight * 100.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ANTMessage GetMessage()
|
||||||
|
{
|
||||||
|
return new ANTMessage()
|
||||||
|
{
|
||||||
|
Id = (byte)79,
|
||||||
|
Size = (byte)4,
|
||||||
|
Data = new byte[9]
|
||||||
|
{
|
||||||
|
this.Channel,
|
||||||
|
(byte) 55,
|
||||||
|
(byte) (this._weight & (int) byte.MaxValue),
|
||||||
|
(byte) (this._weight >> 8 & (int) byte.MaxValue),
|
||||||
|
byte.MaxValue,
|
||||||
|
(byte) 143,
|
||||||
|
(byte) 12,
|
||||||
|
(byte) 70,
|
||||||
|
(byte) 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9b2e6e85130827343b3cd09fbae19376
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Messages
|
||||||
|
{
|
||||||
|
public class GetManufacturersInformation : RequestDataPage
|
||||||
|
{
|
||||||
|
public GetManufacturersInformation(byte channel)
|
||||||
|
: base(channel, (byte)80, new byte?(), new byte?(), (byte)4)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c125f730d91490941a69906b4a589f4a
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Messages
|
||||||
|
{
|
||||||
|
public class GetProductionInformation : RequestDataPage
|
||||||
|
{
|
||||||
|
public GetProductionInformation(byte channel)
|
||||||
|
: base(channel, (byte)81, new byte?(), new byte?(), (byte)4)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8bb48d2b993bd7e4b941f8c75135dad5
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
52
Assets/Scripts/Devices/Ant/Messages/RequestDataPage.cs
Normal file
52
Assets/Scripts/Devices/Ant/Messages/RequestDataPage.cs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Messages
|
||||||
|
{
|
||||||
|
public class RequestDataPage: BaseMessage
|
||||||
|
{
|
||||||
|
private readonly byte _channel;
|
||||||
|
private byte _page;
|
||||||
|
private byte _descriptorByte1;
|
||||||
|
private byte _descriptorByte2;
|
||||||
|
private readonly byte _requestedTransmissionResponse;
|
||||||
|
|
||||||
|
public RequestDataPage(byte channel, byte page, byte? descriptorByte1 = null, byte? descriptorByte2 = null, byte requestedTransmissionResponse = (byte)4)
|
||||||
|
: base(channel)
|
||||||
|
{
|
||||||
|
this._channel = channel;
|
||||||
|
this._page = page;//81
|
||||||
|
byte? nullable = descriptorByte1;
|
||||||
|
this._descriptorByte1 = nullable.HasValue ? nullable.GetValueOrDefault() : byte.MaxValue;
|
||||||
|
nullable = descriptorByte2;
|
||||||
|
this._descriptorByte2 = nullable.HasValue ? nullable.GetValueOrDefault() : byte.MaxValue;
|
||||||
|
this._requestedTransmissionResponse = requestedTransmissionResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ANTMessage GetMessage()
|
||||||
|
{
|
||||||
|
byte[] numArray1 = new byte[9]
|
||||||
|
{
|
||||||
|
this._channel,
|
||||||
|
(byte) 70,
|
||||||
|
byte.MaxValue,
|
||||||
|
byte.MaxValue,
|
||||||
|
this._descriptorByte1,//byte.MaxValue
|
||||||
|
this._descriptorByte2,//byte.MaxValue
|
||||||
|
this._requestedTransmissionResponse,//4
|
||||||
|
this._page,//81
|
||||||
|
(byte) 1
|
||||||
|
};
|
||||||
|
ANTMessage antMessage = new ANTMessage();
|
||||||
|
antMessage.Id = (byte)79;
|
||||||
|
int num = (int)(byte)numArray1.Length;
|
||||||
|
antMessage.Size = (byte)num;
|
||||||
|
byte[] numArray2 = numArray1;
|
||||||
|
antMessage.Data = numArray2;
|
||||||
|
return antMessage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/Messages/RequestDataPage.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/Messages/RequestDataPage.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 15e2a257350cfc24b90dadd3a2d33e60
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Devices/Ant/Pages.meta
Normal file
8
Assets/Scripts/Devices/Ant/Pages.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 725781b502595ff44b581d48d7e20f1b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Devices/Ant/Pages/CalibrationPages.meta
Normal file
8
Assets/Scripts/Devices/Ant/Pages/CalibrationPages.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 099c6c049781ec04fa6d891162fa2971
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Pages.CalibrationPages
|
||||||
|
{
|
||||||
|
internal class FecCalibrationPage : ICalibrationPage
|
||||||
|
{
|
||||||
|
public bool CanHandle(byte calibrationId)
|
||||||
|
{
|
||||||
|
return (int)calibrationId == 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Handle(byte[] dataPayload, AbstractAntDevice device)
|
||||||
|
{
|
||||||
|
var fecDevice = device as FitDevice;
|
||||||
|
if (fecDevice == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var offset = (int)(short)((int)dataPayload[7] | (int)dataPayload[6] << 8);
|
||||||
|
|
||||||
|
fecDevice.DoCalibrationSuccess(offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5af3ac698660b3e4b82e1c6e3b597e19
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
15
Assets/Scripts/Devices/Ant/Pages/IPageHandler.cs
Normal file
15
Assets/Scripts/Devices/Ant/Pages/IPageHandler.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Pages
|
||||||
|
{
|
||||||
|
public interface IPageHandler
|
||||||
|
{
|
||||||
|
bool CanHandle(byte pageNumber);
|
||||||
|
|
||||||
|
void Handle(byte[] dataPayload, AbstractAntDevice device);
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/Pages/IPageHandler.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/Pages/IPageHandler.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3041b61cfb7f39844a5b465f7d67f48c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant.Pages
|
||||||
|
{
|
||||||
|
public class ManufacturerDataPageHandler : IPageHandler
|
||||||
|
{
|
||||||
|
private readonly Action<ManufacturerDataPageContent> _callback;
|
||||||
|
public ManufacturerDataPageHandler(Action<ManufacturerDataPageContent> callback)
|
||||||
|
{
|
||||||
|
_callback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public bool CanHandle(byte pageNumber)
|
||||||
|
{
|
||||||
|
return pageNumber == 80;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Handle(byte[] dataPayload, AbstractAntDevice device)
|
||||||
|
{
|
||||||
|
int hwRevision = dataPayload[3];
|
||||||
|
int mfgId = (int)dataPayload[4] | (int)dataPayload[5] << 8;
|
||||||
|
int modelNumber = (int)((int)dataPayload[6] | (int)dataPayload[7] << 8);
|
||||||
|
|
||||||
|
//device.ManufacturerId = mfgId;
|
||||||
|
_callback(new ManufacturerDataPageContent(hwRevision, mfgId, modelNumber));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1e295cfb6fd138343888b4aefe868f2a
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
42
Assets/Scripts/Devices/Ant/SensorType.cs
Normal file
42
Assets/Scripts/Devices/Ant/SensorType.cs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public enum racerSportType : byte
|
||||||
|
{
|
||||||
|
Biking = 0x00,
|
||||||
|
Running = 0x01,
|
||||||
|
Rowing = 0x02,
|
||||||
|
Skiing = 0x03,
|
||||||
|
Unknown = 0xFF,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum racerSourceType
|
||||||
|
{
|
||||||
|
TrackRecord,
|
||||||
|
WorldRecordPace,
|
||||||
|
FitEquip,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum targetType
|
||||||
|
{
|
||||||
|
Seconds,
|
||||||
|
Meters,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SensorType
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Cadence,
|
||||||
|
HeartRate,
|
||||||
|
Power,
|
||||||
|
Speed,
|
||||||
|
SpeedCadence,
|
||||||
|
Trainer,
|
||||||
|
VirtualPower,
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/SensorType.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/SensorType.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b075797e7a977fd4e8ab4dbea18719fa
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
15
Assets/Scripts/Devices/Ant/UserdChannel.cs
Normal file
15
Assets/Scripts/Devices/Ant/UserdChannel.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public class UserdChannel
|
||||||
|
{
|
||||||
|
public string DeviceNumber { get; set; }
|
||||||
|
public string DeviceTypeId { get; set; }
|
||||||
|
public byte Index { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/Ant/UserdChannel.cs.meta
Normal file
11
Assets/Scripts/Devices/Ant/UserdChannel.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ab9369d05dedaa44eb00a63d47ac95fc
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
52
Assets/Scripts/Devices/DeviceValueFilter.cs
Normal file
52
Assets/Scripts/Devices/DeviceValueFilter.cs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices
|
||||||
|
{
|
||||||
|
static class DeviceValueFilter
|
||||||
|
{
|
||||||
|
public const int MaxCadence = 255;
|
||||||
|
public const int MaxHeartRate = 254;
|
||||||
|
public const int MaxPower = 2000;
|
||||||
|
public const double MaxSpeed = 150.0;
|
||||||
|
|
||||||
|
public static int Cadence(int? value)
|
||||||
|
{
|
||||||
|
if (value.HasValue)
|
||||||
|
{
|
||||||
|
if (value.GetValueOrDefault(0) < MaxCadence)
|
||||||
|
{
|
||||||
|
return value.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int HeartRate(int? value)
|
||||||
|
{
|
||||||
|
if (value.HasValue)
|
||||||
|
{
|
||||||
|
if (value.GetValueOrDefault(0) < MaxHeartRate && value.GetValueOrDefault(0) >= 0)
|
||||||
|
{
|
||||||
|
return value.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int Power(int? value)
|
||||||
|
{
|
||||||
|
if (value.HasValue)
|
||||||
|
{
|
||||||
|
if (value.GetValueOrDefault(0) < MaxPower && value.GetValueOrDefault(0) >= 0)
|
||||||
|
{
|
||||||
|
return value.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Devices/DeviceValueFilter.cs.meta
Normal file
11
Assets/Scripts/Devices/DeviceValueFilter.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3aaa2f30cd6bf484b80a372b5f2bcb49
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -8,6 +8,8 @@ public class MainController : MonoBehaviour
|
|||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
UIManager.Instance.MainPanel = (GameObject)this.transform.Find("Panel").gameObject;
|
UIManager.Instance.MainPanel = (GameObject)this.transform.Find("Panel").gameObject;
|
||||||
|
UIManager.Instance.ModalsPanel = this.transform.Find("PanelModals").gameObject;
|
||||||
|
|
||||||
|
|
||||||
//MainMenu.transform.Find("Home").GetComponent<Button>().onClick.AddListener(() =>
|
//MainMenu.transform.Find("Home").GetComponent<Button>().onClick.AddListener(() =>
|
||||||
//{
|
//{
|
||||||
@ -16,6 +18,7 @@ public class MainController : MonoBehaviour
|
|||||||
|
|
||||||
UIManager.ShowHomePanel();
|
UIManager.ShowHomePanel();
|
||||||
//UIManager.ShowUserInfoPanel();
|
//UIManager.ShowUserInfoPanel();
|
||||||
|
//UIManager.ShowEditUserPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
// Update is called once per frame
|
||||||
|
|||||||
14
Assets/Scripts/UI/Control/PFUIComponentBase.cs
Normal file
14
Assets/Scripts/UI/Control/PFUIComponentBase.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.UI.Control
|
||||||
|
{
|
||||||
|
public abstract class PFUIComponentBase : MonoBehaviour
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/UI/Control/PFUIComponentBase.cs.meta
Normal file
11
Assets/Scripts/UI/Control/PFUIComponentBase.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a1a49a106321aaf48b65347644f43168
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
65
Assets/Scripts/UI/Control/PFUIDropdown.cs
Normal file
65
Assets/Scripts/UI/Control/PFUIDropdown.cs
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.UI.Control
|
||||||
|
{
|
||||||
|
public class PFUIDropdown : PFUIComponentBase
|
||||||
|
{
|
||||||
|
private int mSelectedIndex = -1;
|
||||||
|
|
||||||
|
private object mSelectedValue;
|
||||||
|
|
||||||
|
public int SelectedIndex
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.mSelectedIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Value
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.GetComponent<Dropdown>().value;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
this.GetComponent<Dropdown>().value = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Awake()
|
||||||
|
{
|
||||||
|
//this.mSelectedIndex =
|
||||||
|
//UIManager.AddEvent(this.transform.GetComponent<Image>().gameObject, EventTriggerType.Select, new UnityEngine.Events.UnityAction<BaseEventData>(OnSelect));
|
||||||
|
//UIManager.AddEvent(this.transform.GetComponent<Image>().gameObject, EventTriggerType.Deselect, new UnityEngine.Events.UnityAction<BaseEventData>(OnDeselect));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnSelect(BaseEventData eventData)
|
||||||
|
{
|
||||||
|
var image = this.transform.GetComponent<Image>();
|
||||||
|
var png = Resources.Load<Sprite>("Images/input-bg2");
|
||||||
|
image.sprite = png;
|
||||||
|
}
|
||||||
|
public void OnDeselect(BaseEventData eventData)
|
||||||
|
{
|
||||||
|
var image = this.transform.GetComponent<Image>();
|
||||||
|
var png1 = Resources.Load<Sprite>("Images/input-bg1");
|
||||||
|
image.sprite = png1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void AddOptions(List<Dropdown.OptionData> options)
|
||||||
|
{
|
||||||
|
this.GetComponent<Dropdown>().AddOptions(options);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/UI/Control/PFUIDropdown.cs.meta
Normal file
11
Assets/Scripts/UI/Control/PFUIDropdown.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 81cc4b54765fb63428ca4b88ee884d22
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
54
Assets/Scripts/UI/Control/PFUIInputField.cs
Normal file
54
Assets/Scripts/UI/Control/PFUIInputField.cs
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Events;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.UI.Control
|
||||||
|
{
|
||||||
|
public class PFUIInputField: PFUIComponentBase
|
||||||
|
{
|
||||||
|
[SerializeField]
|
||||||
|
private InputField mInnerInputField;
|
||||||
|
|
||||||
|
public string Text
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.mInnerInputField.text;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
this.mInnerInputField.text = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnSelect(BaseEventData eventData)
|
||||||
|
{
|
||||||
|
//throw new NotImplementedException();
|
||||||
|
this.mInnerInputField.OnSelect(eventData);
|
||||||
|
var image = this.transform.GetComponent<Image>();
|
||||||
|
var png = Resources.Load<Sprite>("Images/input-bg2");
|
||||||
|
image.sprite = png;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnDeselect(BaseEventData eventData)
|
||||||
|
{
|
||||||
|
this.mInnerInputField.OnDeselect(eventData);
|
||||||
|
var image = this.transform.GetComponent<Image>();
|
||||||
|
var png1 = Resources.Load<Sprite>("Images/input-bg1");
|
||||||
|
image.sprite = png1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Awake()
|
||||||
|
{
|
||||||
|
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.PointerClick, new UnityAction<BaseEventData>(this.OnSelect));
|
||||||
|
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.Select, new UnityAction<BaseEventData>(this.OnSelect));
|
||||||
|
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.Deselect, new UnityAction<BaseEventData>(this.OnDeselect));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/UI/Control/PFUIInputField.cs.meta
Normal file
11
Assets/Scripts/UI/Control/PFUIInputField.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cfae8ac78fe0be741802fcc046f0a716
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user