Browse Source

import kinect unity package and skeleton avatar

Kenkart 2 years ago
parent
commit
8ac95804f7
100 changed files with 8788 additions and 5 deletions
  1. 8 0
      Assets/KinectView.meta
  2. 1136 0
      Assets/KinectView/MainScene.unity
  3. 7 0
      Assets/KinectView/MainScene.unity.meta
  4. 63 0
      Assets/KinectView/MainSceneSettings.lighting
  5. 8 0
      Assets/KinectView/MainSceneSettings.lighting.meta
  6. 8 0
      Assets/KinectView/Materials.meta
  7. 31 0
      Assets/KinectView/Materials/BoneMaterial.mat
  8. 4 0
      Assets/KinectView/Materials/BoneMaterial.mat.meta
  9. 8 0
      Assets/KinectView/Scripts.meta
  10. 70 0
      Assets/KinectView/Scripts/BodySourceManager.cs
  11. 8 0
      Assets/KinectView/Scripts/BodySourceManager.cs.meta
  12. 221 0
      Assets/KinectView/Scripts/BodySourceView.cs
  13. 8 0
      Assets/KinectView/Scripts/BodySourceView.cs.meta
  14. 78 0
      Assets/KinectView/Scripts/ColorSourceManager.cs
  15. 8 0
      Assets/KinectView/Scripts/ColorSourceManager.cs.meta
  16. 30 0
      Assets/KinectView/Scripts/ColorSourceView.cs
  17. 8 0
      Assets/KinectView/Scripts/ColorSourceView.cs.meta
  18. 59 0
      Assets/KinectView/Scripts/DepthSourceManager.cs
  19. 8 0
      Assets/KinectView/Scripts/DepthSourceManager.cs.meta
  20. 252 0
      Assets/KinectView/Scripts/DepthSourceView.cs
  21. 8 0
      Assets/KinectView/Scripts/DepthSourceView.cs.meta
  22. 11 0
      Assets/KinectView/Scripts/DisableOnStart.cs
  23. 8 0
      Assets/KinectView/Scripts/DisableOnStart.cs.meta
  24. 85 0
      Assets/KinectView/Scripts/InfraredSourceManager.cs
  25. 8 0
      Assets/KinectView/Scripts/InfraredSourceManager.cs.meta
  26. 29 0
      Assets/KinectView/Scripts/InfraredSourceView.cs
  27. 8 0
      Assets/KinectView/Scripts/InfraredSourceView.cs.meta
  28. 100 0
      Assets/KinectView/Scripts/MultiSourceManager.cs
  29. 8 0
      Assets/KinectView/Scripts/MultiSourceManager.cs.meta
  30. 8 0
      Assets/Plugins.meta
  31. 8 0
      Assets/Plugins/Metro.meta
  32. BIN
      Assets/Plugins/Metro/KinectUnityAddin.dll
  33. 7 0
      Assets/Plugins/Metro/KinectUnityAddin.dll.meta
  34. 8 0
      Assets/Plugins/x86.meta
  35. BIN
      Assets/Plugins/x86/KinectUnityAddin.dll
  36. 7 0
      Assets/Plugins/x86/KinectUnityAddin.dll.meta
  37. 8 0
      Assets/Plugins/x86_64.meta
  38. BIN
      Assets/Plugins/x86_64/KinectUnityAddin.dll
  39. 7 0
      Assets/Plugins/x86_64/KinectUnityAddin.dll.meta
  40. 257 5
      Assets/Scenes/Main.unity
  41. 8 0
      Assets/Skeleton-Low Poly.meta
  42. 8 0
      Assets/Skeleton-Low Poly/Material.meta
  43. 77 0
      Assets/Skeleton-Low Poly/Material/Skeleton-Albedo.mat
  44. 8 0
      Assets/Skeleton-Low Poly/Material/Skeleton-Albedo.mat.meta
  45. 8 0
      Assets/Skeleton-Low Poly/Model.meta
  46. BIN
      Assets/Skeleton-Low Poly/Model/Skeleton-Low Poly.fbx
  47. 862 0
      Assets/Skeleton-Low Poly/Model/Skeleton-Low Poly.fbx.meta
  48. 8 0
      Assets/Skeleton-Low Poly/Prefab.meta
  49. 2265 0
      Assets/Skeleton-Low Poly/Prefab/Skeleton-Low Poly.prefab
  50. 7 0
      Assets/Skeleton-Low Poly/Prefab/Skeleton-Low Poly.prefab.meta
  51. 8 0
      Assets/Skeleton-Low Poly/Scene.meta
  52. 367 0
      Assets/Skeleton-Low Poly/Scene/Example.unity
  53. 7 0
      Assets/Skeleton-Low Poly/Scene/Example.unity.meta
  54. 8 0
      Assets/Skeleton-Low Poly/Texture.meta
  55. BIN
      Assets/Skeleton-Low Poly/Texture/Skeleton-Albedo.png
  56. 92 0
      Assets/Skeleton-Low Poly/Texture/Skeleton-Albedo.png.meta
  57. 8 0
      Assets/Standard Assets.meta
  58. 58 0
      Assets/Standard Assets/CameraIntrinsics.cs
  59. 11 0
      Assets/Standard Assets/CameraIntrinsics.cs.meta
  60. 26 0
      Assets/Standard Assets/CollectionMap.cs
  61. 11 0
      Assets/Standard Assets/CollectionMap.cs.meta
  62. 8 0
      Assets/Standard Assets/Editor.meta
  63. 70 0
      Assets/Standard Assets/Editor/KinectCopyPluginDataHelper.cs
  64. 11 0
      Assets/Standard Assets/Editor/KinectCopyPluginDataHelper.cs.meta
  65. 78 0
      Assets/Standard Assets/EventPump.cs
  66. 11 0
      Assets/Standard Assets/EventPump.cs.meta
  67. 50 0
      Assets/Standard Assets/ExceptionHelper.cs
  68. 11 0
      Assets/Standard Assets/ExceptionHelper.cs.meta
  69. 12 0
      Assets/Standard Assets/INativeWrapper.cs
  70. 11 0
      Assets/Standard Assets/INativeWrapper.cs.meta
  71. 129 0
      Assets/Standard Assets/KinectBuffer.cs
  72. 11 0
      Assets/Standard Assets/KinectBuffer.cs.meta
  73. 604 0
      Assets/Standard Assets/KinectSpecialCases.cs
  74. 11 0
      Assets/Standard Assets/KinectSpecialCases.cs.meta
  75. 136 0
      Assets/Standard Assets/NativeObjectCache.cs
  76. 11 0
      Assets/Standard Assets/NativeObjectCache.cs.meta
  77. 28 0
      Assets/Standard Assets/NativeWrapper.cs
  78. 11 0
      Assets/Standard Assets/NativeWrapper.cs.meta
  79. 42 0
      Assets/Standard Assets/SmartGCHandle.cs
  80. 11 0
      Assets/Standard Assets/SmartGCHandle.cs.meta
  81. 61 0
      Assets/Standard Assets/ThreadSafeDictionary.cs
  82. 11 0
      Assets/Standard Assets/ThreadSafeDictionary.cs.meta
  83. 8 0
      Assets/Standard Assets/Windows.meta
  84. 8 0
      Assets/Standard Assets/Windows/Data.meta
  85. 73 0
      Assets/Standard Assets/Windows/Data/PropertyChangedEventArgs.cs
  86. 11 0
      Assets/Standard Assets/Windows/Data/PropertyChangedEventArgs.cs.meta
  87. 8 0
      Assets/Standard Assets/Windows/Kinect.meta
  88. 18 0
      Assets/Standard Assets/Windows/Kinect/Activity.cs
  89. 11 0
      Assets/Standard Assets/Windows/Kinect/Activity.cs.meta
  90. 14 0
      Assets/Standard Assets/Windows/Kinect/Appearance.cs
  91. 11 0
      Assets/Standard Assets/Windows/Kinect/Appearance.cs.meta
  92. 240 0
      Assets/Standard Assets/Windows/Kinect/AudioBeam.cs
  93. 11 0
      Assets/Standard Assets/Windows/Kinect/AudioBeam.cs.meta
  94. 114 0
      Assets/Standard Assets/Windows/Kinect/AudioBeamFrame.cs
  95. 11 0
      Assets/Standard Assets/Windows/Kinect/AudioBeamFrame.cs.meta
  96. 75 0
      Assets/Standard Assets/Windows/Kinect/AudioBeamFrameArrivedEventArgs.cs
  97. 11 0
      Assets/Standard Assets/Windows/Kinect/AudioBeamFrameArrivedEventArgs.cs.meta
  98. 71 0
      Assets/Standard Assets/Windows/Kinect/AudioBeamFrameList.cs
  99. 11 0
      Assets/Standard Assets/Windows/Kinect/AudioBeamFrameList.cs.meta
  100. 309 0
      Assets/Standard Assets/Windows/Kinect/AudioBeamFrameReader.cs

+ 8 - 0
Assets/KinectView.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ee47e320defe0704681ba607e1e21292
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1136 - 0
Assets/KinectView/MainScene.unity

@@ -0,0 +1,1136 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 9
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+  m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+  m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 3
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 0}
+  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &4
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 12
+  m_GIWorkflowMode: 1
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 1
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 1
+    m_BakeResolution: 50
+    m_AtlasSize: 1024
+    m_AO: 1
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    m_LightmapParameters: {fileID: 0}
+    m_LightmapsBakeMode: 1
+    m_TextureCompression: 0
+    m_FinalGather: 0
+    m_FinalGatherFiltering: 1
+    m_FinalGatherRayCount: 256
+    m_ReflectionCompression: 2
+    m_MixedBakeMode: 1
+    m_BakeBackend: 0
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 512
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 512
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 0
+    m_PVRDenoiserTypeDirect: 0
+    m_PVRDenoiserTypeIndirect: 0
+    m_PVRDenoiserTypeAO: 0
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 0
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ExportTrainingData: 0
+    m_TrainingDataDestination: TrainingData
+    m_LightProbeSampleCountMultiplier: 4
+  m_LightingDataAsset: {fileID: 0}
+  m_LightingSettings: {fileID: 4890085278179872738, guid: f77f5d074e643e84a818b4e9235b99bf, type: 2}
+--- !u!196 &5
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 2
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666666
+    manualTileSize: 0
+    tileSize: 256
+    accuratePlacement: 0
+    maxJobWorkers: 0
+    preserveTilesOutsideBounds: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &112136118
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 112136119}
+  - component: {fileID: 112136120}
+  m_Layer: 0
+  m_Name: BodyView
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &112136119
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 112136118}
+  m_LocalRotation: {x: 0, 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: 716011534}
+  m_Father: {fileID: 0}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &112136120
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 112136118}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8821130411451d343a1488e2a9db134e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  BoneMaterial: {fileID: 2100000, guid: f2ea145c63353784985576f08398a815, type: 2}
+  BodySourceManager: {fileID: 1698423884}
+--- !u!1 &252019523
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 252019524}
+  - component: {fileID: 252019527}
+  - component: {fileID: 252019526}
+  - component: {fileID: 252019525}
+  - component: {fileID: 252019528}
+  m_Layer: 0
+  m_Name: DesignerOnlyView
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &252019524
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 252019523}
+  m_LocalRotation: {x: -0.7071069, y: 0, z: 0, w: 0.70710677}
+  m_LocalPosition: {x: 60, y: -45, z: 50}
+  m_LocalScale: {x: 13, y: 1, z: 10}
+  m_Children: []
+  m_Father: {fileID: 1988608401}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &252019525
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 252019523}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &252019526
+MeshCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 252019523}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 4
+  m_Convex: 0
+  m_CookingOptions: 30
+  m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!33 &252019527
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 252019523}
+  m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!114 &252019528
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 252019523}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 61e5c93f5da1e324aa7fd9671db875bc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!1 &257076396
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 257076398}
+  - component: {fileID: 257076397}
+  - component: {fileID: 257076399}
+  - component: {fileID: 257076400}
+  m_Layer: 0
+  m_Name: DepthView
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &257076397
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 257076396}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 383e102cbe3bfb34d94c98ea3c2479b4, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  ViewMode: 1
+  ColorSourceManager: {fileID: 679549941}
+  DepthSourceManager: {fileID: 1022827879}
+  MultiSourceManager: {fileID: 1736670513}
+--- !u!4 &257076398
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 257076396}
+  m_LocalRotation: {x: 0, 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: 1988608401}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &257076399
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 257076396}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &257076400
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 257076396}
+  m_Mesh: {fileID: 0}
+--- !u!1 &660022884
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 660022886}
+  - component: {fileID: 660022885}
+  m_Layer: 0
+  m_Name: Directional light
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!108 &660022885
+Light:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 660022884}
+  m_Enabled: 1
+  serializedVersion: 10
+  m_Type: 1
+  m_Shape: 0
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Intensity: 1
+  m_Range: 10
+  m_SpotAngle: 30
+  m_InnerSpotAngle: 21.80208
+  m_CookieSize: 10
+  m_Shadows:
+    m_Type: 0
+    m_Resolution: -1
+    m_CustomResolution: -1
+    m_Strength: 1
+    m_Bias: 0.05
+    m_NormalBias: 0.4
+    m_NearPlane: 0.2
+    m_CullingMatrixOverride:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+    m_UseCullingMatrixOverride: 0
+  m_Cookie: {fileID: 0}
+  m_DrawHalo: 0
+  m_Flare: {fileID: 0}
+  m_RenderMode: 0
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingLayerMask: 1
+  m_Lightmapping: 1
+  m_LightShadowCasterMode: 0
+  m_AreaSize: {x: 1, y: 1}
+  m_BounceIntensity: 1
+  m_ColorTemperature: 6570
+  m_UseColorTemperature: 0
+  m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+  m_UseBoundingSphereOverride: 0
+  m_UseViewFrustumForShadowCasterCull: 1
+  m_ShadowRadius: 0
+  m_ShadowAngle: 0
+--- !u!4 &660022886
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 660022884}
+  m_LocalRotation: {x: 0.30909714, y: -0.24520965, z: 0.08282233, w: 0.9151348}
+  m_LocalPosition: {x: -13.278711, y: 5.633033, z: 4.732221}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 6
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &679549941
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 679549942}
+  - component: {fileID: 679549943}
+  m_Layer: 0
+  m_Name: ColorManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &679549942
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 679549941}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -208.42621, y: 330.08652, z: 342.24237}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &679549943
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 679549941}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 92ab5bea6110edb4081e490c0982748d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!1 &716011529
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 716011534}
+  - component: {fileID: 716011533}
+  - component: {fileID: 716011532}
+  - component: {fileID: 716011531}
+  - component: {fileID: 716011530}
+  m_Layer: 0
+  m_Name: Cube
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &716011530
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 716011529}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 61e5c93f5da1e324aa7fd9671db875bc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!23 &716011531
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 716011529}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &716011532
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 716011529}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 1, y: 1, z: 1}
+  m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &716011533
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 716011529}
+  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &716011534
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 716011529}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 3, y: 8, z: 0.01}
+  m_Children: []
+  m_Father: {fileID: 112136119}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &934010673
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 934010678}
+  - component: {fileID: 934010677}
+  - component: {fileID: 934010676}
+  - component: {fileID: 934010675}
+  - component: {fileID: 934010674}
+  m_Layer: 0
+  m_Name: ColorView
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &934010674
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 934010673}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ee5302fdf7d10e74fbbbe1a2f7503f46, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  ColorSourceManager: {fileID: 679549941}
+--- !u!23 &934010675
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 934010673}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &934010676
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 934010673}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 1, y: 1, z: 1}
+  m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &934010677
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 934010673}
+  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &934010678
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 934010673}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -118, y: 64.30853, z: 150.01746}
+  m_LocalScale: {x: 96, y: 54, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1022827879
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1022827881}
+  - component: {fileID: 1022827880}
+  m_Layer: 0
+  m_Name: DepthManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1022827880
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1022827879}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1cd019cdd7a54604b9ae8091d242d8a4, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!4 &1022827881
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1022827879}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 5.873085, y: 0, z: 182.0674}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1464340100
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1464340102}
+  - component: {fileID: 1464340101}
+  m_Layer: 0
+  m_Name: InfraredManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1464340101
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1464340100}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 63eff7f54e54aa049a2331755f3cb99c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!4 &1464340102
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1464340100}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 1, z: -17}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 7
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1608503454
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1608503459}
+  - component: {fileID: 1608503458}
+  - component: {fileID: 1608503457}
+  - component: {fileID: 1608503456}
+  - component: {fileID: 1608503455}
+  m_Layer: 0
+  m_Name: InfraredView
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1608503455
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1608503454}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 98f8736f9d8c8e44592c96e57d57c5d4, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  InfraredSourceManager: {fileID: 1464340100}
+--- !u!23 &1608503456
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1608503454}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &1608503457
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1608503454}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 1, y: 1, z: 1}
+  m_Center: {x: 0, y: 0, z: 0}
+--- !u!33 &1608503458
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1608503454}
+  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1608503459
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1608503454}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -118, y: -6.0306396, z: 150.01746}
+  m_LocalScale: {x: 96, y: 79.5, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 8
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1698423884
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1698423886}
+  - component: {fileID: 1698423885}
+  m_Layer: 0
+  m_Name: BodyManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1698423885
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1698423884}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 2e74aed0503c9d24290a1ae5438fddc3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!4 &1698423886
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1698423884}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 5.873085, y: 0, z: 182.0674}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1736670513
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1736670515}
+  - component: {fileID: 1736670514}
+  m_Layer: 0
+  m_Name: MultiFrameManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1736670514
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1736670513}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f752c4e07617d8d4eb21d4975a2d7c61, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!4 &1736670515
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1736670513}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -208.42621, y: 330.08652, z: 342.24237}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 10
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1747301860
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1747301865}
+  - component: {fileID: 1747301864}
+  - component: {fileID: 1747301862}
+  - component: {fileID: 1747301861}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &1747301861
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1747301860}
+  m_Enabled: 1
+--- !u!124 &1747301862
+Behaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1747301860}
+  m_Enabled: 1
+--- !u!20 &1747301864
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1747301860}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 1
+  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_FocalLength: 50
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 400
+  field of view: 60
+  orthographic: 0
+  orthographic size: 5
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 3
+  m_HDR: 0
+  m_AllowMSAA: 1
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 1
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &1747301865
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1747301860}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 1, z: -17}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 9
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1988608400
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1988608401}
+  m_Layer: 0
+  m_Name: DepthBase
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1988608401
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1988608400}
+  m_LocalRotation: {x: 0.16042967, y: -0.37686968, z: -0.06645215, w: -0.9098438}
+  m_LocalPosition: {x: 5.873085, y: 0, z: 182.0674}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 257076398}
+  - {fileID: 252019524}
+  m_Father: {fileID: 0}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 7 - 0
Assets/KinectView/MainScene.unity.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cbe012dc71dc158419e9ce15b3c32eda
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 63 - 0
Assets/KinectView/MainSceneSettings.lighting

@@ -0,0 +1,63 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!850595691 &4890085278179872738
+LightingSettings:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: MainSceneSettings
+  serializedVersion: 3
+  m_GIWorkflowMode: 1
+  m_EnableBakedLightmaps: 1
+  m_EnableRealtimeLightmaps: 0
+  m_RealtimeEnvironmentLighting: 1
+  m_BounceScale: 1
+  m_AlbedoBoost: 1
+  m_IndirectOutputScale: 1
+  m_UsingShadowmask: 0
+  m_BakeBackend: 0
+  m_LightmapMaxSize: 1024
+  m_BakeResolution: 50
+  m_Padding: 2
+  m_TextureCompression: 0
+  m_AO: 1
+  m_AOMaxDistance: 1
+  m_CompAOExponent: 1
+  m_CompAOExponentDirect: 0
+  m_ExtractAO: 0
+  m_MixedBakeMode: 1
+  m_LightmapsBakeMode: 1
+  m_FilterMode: 1
+  m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+  m_ExportTrainingData: 0
+  m_TrainingDataDestination: TrainingData
+  m_RealtimeResolution: 1
+  m_ForceWhiteAlbedo: 0
+  m_ForceUpdates: 0
+  m_FinalGather: 0
+  m_FinalGatherRayCount: 256
+  m_FinalGatherFiltering: 1
+  m_PVRCulling: 1
+  m_PVRSampling: 1
+  m_PVRDirectSampleCount: 32
+  m_PVRSampleCount: 512
+  m_PVREnvironmentSampleCount: 512
+  m_PVREnvironmentReferencePointCount: 2048
+  m_LightProbeSampleCountMultiplier: 4
+  m_PVRBounces: 2
+  m_PVRMinBounces: 2
+  m_PVREnvironmentMIS: 0
+  m_PVRFilteringMode: 0
+  m_PVRDenoiserTypeDirect: 0
+  m_PVRDenoiserTypeIndirect: 0
+  m_PVRDenoiserTypeAO: 0
+  m_PVRFilterTypeDirect: 0
+  m_PVRFilterTypeIndirect: 0
+  m_PVRFilterTypeAO: 0
+  m_PVRFilteringGaussRadiusDirect: 1
+  m_PVRFilteringGaussRadiusIndirect: 5
+  m_PVRFilteringGaussRadiusAO: 2
+  m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+  m_PVRFilteringAtrousPositionSigmaIndirect: 2
+  m_PVRFilteringAtrousPositionSigmaAO: 1

+ 8 - 0
Assets/KinectView/MainSceneSettings.lighting.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f77f5d074e643e84a818b4e9235b99bf
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 4890085278179872738
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/KinectView/Materials.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1dbb78211923c1440863f3c7892ae4f4
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 31 - 0
Assets/KinectView/Materials/BoneMaterial.mat

@@ -0,0 +1,31 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: BoneMaterial
+  m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: 
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _InvFade: 1
+    m_Colors:
+    - _Color: {r: 1, g: 1, b: 1, a: 1}
+    - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
+  m_BuildTextureStacks: []

+ 4 - 0
Assets/KinectView/Materials/BoneMaterial.mat.meta

@@ -0,0 +1,4 @@
+fileFormatVersion: 2
+guid: f2ea145c63353784985576f08398a815
+NativeFormatImporter:
+  userData: 

+ 8 - 0
Assets/KinectView/Scripts.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a8fe23a2f0c194044abaf4bd2256cf38
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 70 - 0
Assets/KinectView/Scripts/BodySourceManager.cs

@@ -0,0 +1,70 @@
+using UnityEngine;
+using System.Collections;
+using Windows.Kinect;
+
+public class BodySourceManager : MonoBehaviour 
+{
+    private KinectSensor _Sensor;
+    private BodyFrameReader _Reader;
+    private Body[] _Data = null;
+    
+    public Body[] GetData()
+    {
+        return _Data;
+    }
+    
+
+    void Start () 
+    {
+        _Sensor = KinectSensor.GetDefault();
+
+        if (_Sensor != null)
+        {
+            _Reader = _Sensor.BodyFrameSource.OpenReader();
+            
+            if (!_Sensor.IsOpen)
+            {
+                _Sensor.Open();
+            }
+        }   
+    }
+    
+    void Update () 
+    {
+        if (_Reader != null)
+        {
+            var frame = _Reader.AcquireLatestFrame();
+            if (frame != null)
+            {
+                if (_Data == null)
+                {
+                    _Data = new Body[_Sensor.BodyFrameSource.BodyCount];
+                }
+                
+                frame.GetAndRefreshBodyData(_Data);
+                
+                frame.Dispose();
+                frame = null;
+            }
+        }    
+    }
+    
+    void OnApplicationQuit()
+    {
+        if (_Reader != null)
+        {
+            _Reader.Dispose();
+            _Reader = null;
+        }
+        
+        if (_Sensor != null)
+        {
+            if (_Sensor.IsOpen)
+            {
+                _Sensor.Close();
+            }
+            
+            _Sensor = null;
+        }
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/BodySourceManager.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2e74aed0503c9d24290a1ae5438fddc3
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 221 - 0
Assets/KinectView/Scripts/BodySourceView.cs

@@ -0,0 +1,221 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+using Kinect = Windows.Kinect;
+
+public class BodySourceView : MonoBehaviour 
+{
+    public Transform[] joints;
+    public Material BoneMaterial;
+    public GameObject BodySourceManager;
+    
+    private Dictionary<ulong, GameObject> _Bodies = new Dictionary<ulong, GameObject>();
+    private BodySourceManager _BodyManager;
+    
+    private Dictionary<Kinect.JointType, Kinect.JointType> _BoneMap = new Dictionary<Kinect.JointType, Kinect.JointType>()
+    {
+        { Kinect.JointType.FootLeft, Kinect.JointType.AnkleLeft },
+        { Kinect.JointType.AnkleLeft, Kinect.JointType.KneeLeft },
+        { Kinect.JointType.KneeLeft, Kinect.JointType.HipLeft },
+        { Kinect.JointType.HipLeft, Kinect.JointType.SpineBase },
+        
+        { Kinect.JointType.FootRight, Kinect.JointType.AnkleRight },
+        { Kinect.JointType.AnkleRight, Kinect.JointType.KneeRight },
+        { Kinect.JointType.KneeRight, Kinect.JointType.HipRight },
+        { Kinect.JointType.HipRight, Kinect.JointType.SpineBase },
+        
+        { Kinect.JointType.HandTipLeft, Kinect.JointType.HandLeft },
+        { Kinect.JointType.ThumbLeft, Kinect.JointType.HandLeft },
+        { Kinect.JointType.HandLeft, Kinect.JointType.WristLeft },
+        { Kinect.JointType.WristLeft, Kinect.JointType.ElbowLeft },
+        { Kinect.JointType.ElbowLeft, Kinect.JointType.ShoulderLeft },
+        { Kinect.JointType.ShoulderLeft, Kinect.JointType.SpineShoulder },
+        
+        { Kinect.JointType.HandTipRight, Kinect.JointType.HandRight },
+        { Kinect.JointType.ThumbRight, Kinect.JointType.HandRight },
+        { Kinect.JointType.HandRight, Kinect.JointType.WristRight },
+        { Kinect.JointType.WristRight, Kinect.JointType.ElbowRight },
+        { Kinect.JointType.ElbowRight, Kinect.JointType.ShoulderRight },
+        { Kinect.JointType.ShoulderRight, Kinect.JointType.SpineShoulder },
+        
+        { Kinect.JointType.SpineBase, Kinect.JointType.SpineMid },
+        { Kinect.JointType.SpineMid, Kinect.JointType.SpineShoulder },
+        { Kinect.JointType.SpineShoulder, Kinect.JointType.Neck },
+        { Kinect.JointType.Neck, Kinect.JointType.Head },
+    };
+
+    void Update () 
+    {
+        if (BodySourceManager == null)
+        {
+            return;
+        }
+        
+        _BodyManager = BodySourceManager.GetComponent<BodySourceManager>();
+        if (_BodyManager == null)
+        {
+            return;
+        }
+        
+        Kinect.Body[] data = _BodyManager.GetData();
+        if (data == null)
+        {
+            return;
+        }
+        
+        List<ulong> trackedIds = new List<ulong>();
+        foreach(var body in data)
+        {
+            if (body == null)
+            {
+                continue;
+              }
+                
+            if(body.IsTracked)
+            {
+                trackedIds.Add (body.TrackingId);
+            }
+        }
+        
+        List<ulong> knownIds = new List<ulong>(_Bodies.Keys);
+        
+        // First delete untracked bodies
+        foreach(ulong trackingId in knownIds)
+        {
+            if(!trackedIds.Contains(trackingId))
+            {
+                Destroy(_Bodies[trackingId]);
+                _Bodies.Remove(trackingId);
+            }
+        }
+
+        foreach(var body in data)
+        {
+            if (body == null)
+            {
+                continue;
+            }
+            
+            if(body.IsTracked)
+            {
+                if(!_Bodies.ContainsKey(body.TrackingId))
+                {
+                    _Bodies[body.TrackingId] = CreateBodyObject(body.TrackingId);
+                }
+                
+                RefreshBodyObject(body, _Bodies[body.TrackingId]);
+            }
+        }
+
+        // Joint orientations
+        Kinect.Vector4[] orientation = new Kinect.Vector4[22];
+        orientation[0] = data[0].JointOrientations[Kinect.JointType.Head].Orientation;
+        orientation[1] = data[0].JointOrientations[Kinect.JointType.Neck].Orientation;
+        orientation[2] = data[0].JointOrientations[Kinect.JointType.SpineMid].Orientation;
+        orientation[3] = data[0].JointOrientations[Kinect.JointType.ShoulderLeft].Orientation;
+        orientation[4] = data[0].JointOrientations[Kinect.JointType.ShoulderRight].Orientation;
+        orientation[5] = data[0].JointOrientations[Kinect.JointType.ElbowLeft].Orientation;
+        orientation[6] = data[0].JointOrientations[Kinect.JointType.ElbowRight].Orientation;
+        orientation[7] = data[0].JointOrientations[Kinect.JointType.WristLeft].Orientation;
+        orientation[8] = data[0].JointOrientations[Kinect.JointType.WristRight].Orientation;
+        orientation[9] = data[0].JointOrientations[Kinect.JointType.HipLeft].Orientation;
+        orientation[10] = data[0].JointOrientations[Kinect.JointType.HipRight].Orientation;
+        orientation[11] = data[0].JointOrientations[Kinect.JointType.KneeLeft].Orientation;
+        orientation[12] = data[0].JointOrientations[Kinect.JointType.KneeRight].Orientation;
+        orientation[13] = data[0].JointOrientations[Kinect.JointType.SpineBase].Orientation;
+        orientation[14] = data[0].JointOrientations[Kinect.JointType.AnkleLeft].Orientation;
+        orientation[15] = data[0].JointOrientations[Kinect.JointType.AnkleRight].Orientation;
+        orientation[16] = data[0].JointOrientations[Kinect.JointType.FootLeft].Orientation;
+        orientation[17] = data[0].JointOrientations[Kinect.JointType.FootRight].Orientation;
+        orientation[18] = data[0].JointOrientations[Kinect.JointType.HandLeft].Orientation;
+        orientation[19] = data[0].JointOrientations[Kinect.JointType.HandRight].Orientation;
+        orientation[20] = data[0].JointOrientations[Kinect.JointType.ThumbLeft].Orientation;
+        orientation[21] = data[0].JointOrientations[Kinect.JointType.ThumbRight].Orientation;
+
+        for(int i = 0; i < 22; i++)
+        {
+            joints[i].rotation = ConvertKinectOrientationToUnity(orientation[i]);
+        }
+        
+    }
+    
+    private GameObject CreateBodyObject(ulong id)
+    {
+        GameObject body = new GameObject("Body:" + id);
+        
+        for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
+        {
+            GameObject jointObj = GameObject.CreatePrimitive(PrimitiveType.Cube);
+            
+            LineRenderer lr = jointObj.AddComponent<LineRenderer>();
+            lr.SetVertexCount(2);
+            lr.material = BoneMaterial;
+            lr.SetWidth(0.05f, 0.05f);
+            
+            jointObj.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
+            jointObj.name = jt.ToString();
+            jointObj.transform.parent = body.transform;
+        }
+        
+        return body;
+    }
+    
+    private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject)
+    {
+        for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
+        {
+            Kinect.Joint sourceJoint = body.Joints[jt];
+            Kinect.Joint? targetJoint = null;
+            
+            if(_BoneMap.ContainsKey(jt))
+            {
+                targetJoint = body.Joints[_BoneMap[jt]];
+            }
+            
+            Transform jointObj = bodyObject.transform.Find(jt.ToString());
+            jointObj.localPosition = GetVector3FromJoint(sourceJoint);
+            
+            LineRenderer lr = jointObj.GetComponent<LineRenderer>();
+            if(targetJoint.HasValue)
+            {
+                lr.SetPosition(0, jointObj.localPosition);
+                lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value));
+                lr.SetColors(GetColorForState (sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState));
+            }
+            else
+            {
+                lr.enabled = false;
+            }
+        }
+    }
+    
+    private static Color GetColorForState(Kinect.TrackingState state)
+    {
+        switch (state)
+        {
+        case Kinect.TrackingState.Tracked:
+            return Color.green;
+
+        case Kinect.TrackingState.Inferred:
+            return Color.red;
+
+        default:
+            return Color.black;
+        }
+    }
+    
+    private static Vector3 GetVector3FromJoint(Kinect.Joint joint)
+    {
+        return new Vector3(joint.Position.X * 10, joint.Position.Y * 10, joint.Position.Z * 10);
+    }
+
+    private Quaternion ConvertKinectOrientationToUnity(Kinect.Vector4 orientation)
+    {
+        Quaternion orientationUnity;
+        orientationUnity.x = orientation.X;
+        orientationUnity.y = orientation.Y;
+        orientationUnity.z = orientation.Z;
+        orientationUnity.w = orientation.W;
+        return orientationUnity;
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/BodySourceView.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8821130411451d343a1488e2a9db134e
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 78 - 0
Assets/KinectView/Scripts/ColorSourceManager.cs

@@ -0,0 +1,78 @@
+using UnityEngine;
+using System.Collections;
+using Windows.Kinect;
+
+public class ColorSourceManager : MonoBehaviour 
+{
+    public int ColorWidth { get; private set; }
+    public int ColorHeight { get; private set; }
+
+    private KinectSensor _Sensor;
+    private ColorFrameReader _Reader;
+    private Texture2D _Texture;
+    private byte[] _Data;
+    
+    public Texture2D GetColorTexture()
+    {
+        return _Texture;
+    }
+    
+    void Start()
+    {
+        _Sensor = KinectSensor.GetDefault();
+        
+        if (_Sensor != null) 
+        {
+            _Reader = _Sensor.ColorFrameSource.OpenReader();
+            
+            var frameDesc = _Sensor.ColorFrameSource.CreateFrameDescription(ColorImageFormat.Rgba);
+            ColorWidth = frameDesc.Width;
+            ColorHeight = frameDesc.Height;
+            
+            _Texture = new Texture2D(frameDesc.Width, frameDesc.Height, TextureFormat.RGBA32, false);
+            _Data = new byte[frameDesc.BytesPerPixel * frameDesc.LengthInPixels];
+            
+            if (!_Sensor.IsOpen)
+            {
+                _Sensor.Open();
+            }
+        }
+    }
+    
+    void Update () 
+    {
+        if (_Reader != null) 
+        {
+            var frame = _Reader.AcquireLatestFrame();
+            
+            if (frame != null)
+            {
+                frame.CopyConvertedFrameDataToArray(_Data, ColorImageFormat.Rgba);
+                _Texture.LoadRawTextureData(_Data);
+                _Texture.Apply();
+                
+                frame.Dispose();
+                frame = null;
+            }
+        }
+    }
+
+    void OnApplicationQuit()
+    {
+        if (_Reader != null) 
+        {
+            _Reader.Dispose();
+            _Reader = null;
+        }
+        
+        if (_Sensor != null) 
+        {
+            if (_Sensor.IsOpen)
+            {
+                _Sensor.Close();
+            }
+            
+            _Sensor = null;
+        }
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/ColorSourceManager.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 92ab5bea6110edb4081e490c0982748d
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 30 - 0
Assets/KinectView/Scripts/ColorSourceView.cs

@@ -0,0 +1,30 @@
+using UnityEngine;
+using System.Collections;
+using Windows.Kinect;
+
+public class ColorSourceView : MonoBehaviour
+{
+    public GameObject ColorSourceManager;
+    private ColorSourceManager _ColorManager;
+    
+    void Start ()
+    {
+        gameObject.GetComponent<Renderer>().material.SetTextureScale("_MainTex", new Vector2(-1, 1));
+    }
+    
+    void Update()
+    {
+        if (ColorSourceManager == null)
+        {
+            return;
+        }
+        
+        _ColorManager = ColorSourceManager.GetComponent<ColorSourceManager>();
+        if (_ColorManager == null)
+        {
+            return;
+        }
+        
+        gameObject.GetComponent<Renderer>().material.mainTexture = _ColorManager.GetColorTexture();
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/ColorSourceView.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ee5302fdf7d10e74fbbbe1a2f7503f46
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 59 - 0
Assets/KinectView/Scripts/DepthSourceManager.cs

@@ -0,0 +1,59 @@
+using UnityEngine;
+using System.Collections;
+using Windows.Kinect;
+
+public class DepthSourceManager : MonoBehaviour
+{   
+    private KinectSensor _Sensor;
+    private DepthFrameReader _Reader;
+    private ushort[] _Data;
+
+    public ushort[] GetData()
+    {
+        return _Data;
+    }
+
+    void Start () 
+    {
+        _Sensor = KinectSensor.GetDefault();
+        
+        if (_Sensor != null) 
+        {
+            _Reader = _Sensor.DepthFrameSource.OpenReader();
+            _Data = new ushort[_Sensor.DepthFrameSource.FrameDescription.LengthInPixels];
+        }
+    }
+    
+    void Update () 
+    {
+        if (_Reader != null)
+        {
+            var frame = _Reader.AcquireLatestFrame();
+            if (frame != null)
+            {
+                frame.CopyFrameDataToArray(_Data);
+                frame.Dispose();
+                frame = null;
+            }
+        }
+    }
+    
+    void OnApplicationQuit()
+    {
+        if (_Reader != null)
+        {
+            _Reader.Dispose();
+            _Reader = null;
+        }
+        
+        if (_Sensor != null)
+        {
+            if (_Sensor.IsOpen)
+            {
+                _Sensor.Close();
+            }
+            
+            _Sensor = null;
+        }
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/DepthSourceManager.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1cd019cdd7a54604b9ae8091d242d8a4
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 252 - 0
Assets/KinectView/Scripts/DepthSourceView.cs

@@ -0,0 +1,252 @@
+using UnityEngine;
+using System.Collections;
+using Windows.Kinect;
+
+public enum DepthViewMode
+{
+    SeparateSourceReaders,
+    MultiSourceReader,
+}
+
+public class DepthSourceView : MonoBehaviour
+{
+    public DepthViewMode ViewMode = DepthViewMode.SeparateSourceReaders;
+    
+    public GameObject ColorSourceManager;
+    public GameObject DepthSourceManager;
+    public GameObject MultiSourceManager;
+    
+    private KinectSensor _Sensor;
+    private CoordinateMapper _Mapper;
+    private Mesh _Mesh;
+    private Vector3[] _Vertices;
+    private Vector2[] _UV;
+    private int[] _Triangles;
+    
+    // Only works at 4 right now
+    private const int _DownsampleSize = 4;
+    private const double _DepthScale = 0.1f;
+    private const int _Speed = 50;
+    
+    private MultiSourceManager _MultiManager;
+    private ColorSourceManager _ColorManager;
+    private DepthSourceManager _DepthManager;
+
+    void Start()
+    {
+        _Sensor = KinectSensor.GetDefault();
+        if (_Sensor != null)
+        {
+            _Mapper = _Sensor.CoordinateMapper;
+            var frameDesc = _Sensor.DepthFrameSource.FrameDescription;
+
+            // Downsample to lower resolution
+            CreateMesh(frameDesc.Width / _DownsampleSize, frameDesc.Height / _DownsampleSize);
+
+            if (!_Sensor.IsOpen)
+            {
+                _Sensor.Open();
+            }
+        }
+    }
+
+    void CreateMesh(int width, int height)
+    {
+        _Mesh = new Mesh();
+        GetComponent<MeshFilter>().mesh = _Mesh;
+
+        _Vertices = new Vector3[width * height];
+        _UV = new Vector2[width * height];
+        _Triangles = new int[6 * ((width - 1) * (height - 1))];
+
+        int triangleIndex = 0;
+        for (int y = 0; y < height; y++)
+        {
+            for (int x = 0; x < width; x++)
+            {
+                int index = (y * width) + x;
+
+                _Vertices[index] = new Vector3(x, -y, 0);
+                _UV[index] = new Vector2(((float)x / (float)width), ((float)y / (float)height));
+
+                // Skip the last row/col
+                if (x != (width - 1) && y != (height - 1))
+                {
+                    int topLeft = index;
+                    int topRight = topLeft + 1;
+                    int bottomLeft = topLeft + width;
+                    int bottomRight = bottomLeft + 1;
+
+                    _Triangles[triangleIndex++] = topLeft;
+                    _Triangles[triangleIndex++] = topRight;
+                    _Triangles[triangleIndex++] = bottomLeft;
+                    _Triangles[triangleIndex++] = bottomLeft;
+                    _Triangles[triangleIndex++] = topRight;
+                    _Triangles[triangleIndex++] = bottomRight;
+                }
+            }
+        }
+
+        _Mesh.vertices = _Vertices;
+        _Mesh.uv = _UV;
+        _Mesh.triangles = _Triangles;
+        _Mesh.RecalculateNormals();
+    }
+    
+    void OnGUI()
+    {
+        GUI.BeginGroup(new Rect(0, 0, Screen.width, Screen.height));
+        GUI.TextField(new Rect(Screen.width - 250 , 10, 250, 20), "DepthMode: " + ViewMode.ToString());
+        GUI.EndGroup();
+    }
+
+    void Update()
+    {
+        if (_Sensor == null)
+        {
+            return;
+        }
+        
+        if (Input.GetButtonDown("Fire1"))
+        {
+            if(ViewMode == DepthViewMode.MultiSourceReader)
+            {
+                ViewMode = DepthViewMode.SeparateSourceReaders;
+            }
+            else
+            {
+                ViewMode = DepthViewMode.MultiSourceReader;
+            }
+        }
+        
+        float yVal = Input.GetAxis("Horizontal");
+        float xVal = -Input.GetAxis("Vertical");
+
+        transform.Rotate(
+            (xVal * Time.deltaTime * _Speed), 
+            (yVal * Time.deltaTime * _Speed), 
+            0, 
+            Space.Self);
+            
+        if (ViewMode == DepthViewMode.SeparateSourceReaders)
+        {
+            if (ColorSourceManager == null)
+            {
+                return;
+            }
+            
+            _ColorManager = ColorSourceManager.GetComponent<ColorSourceManager>();
+            if (_ColorManager == null)
+            {
+                return;
+            }
+            
+            if (DepthSourceManager == null)
+            {
+                return;
+            }
+            
+            _DepthManager = DepthSourceManager.GetComponent<DepthSourceManager>();
+            if (_DepthManager == null)
+            {
+                return;
+            }
+            
+            gameObject.GetComponent<Renderer>().material.mainTexture = _ColorManager.GetColorTexture();
+            RefreshData(_DepthManager.GetData(),
+                _ColorManager.ColorWidth,
+                _ColorManager.ColorHeight);
+        }
+        else
+        {
+            if (MultiSourceManager == null)
+            {
+                return;
+            }
+            
+            _MultiManager = MultiSourceManager.GetComponent<MultiSourceManager>();
+            if (_MultiManager == null)
+            {
+                return;
+            }
+            
+            gameObject.GetComponent<Renderer>().material.mainTexture = _MultiManager.GetColorTexture();
+            
+            RefreshData(_MultiManager.GetDepthData(),
+                        _MultiManager.ColorWidth,
+                        _MultiManager.ColorHeight);
+        }
+    }
+    
+    private void RefreshData(ushort[] depthData, int colorWidth, int colorHeight)
+    {
+        var frameDesc = _Sensor.DepthFrameSource.FrameDescription;
+        
+        ColorSpacePoint[] colorSpace = new ColorSpacePoint[depthData.Length];
+        _Mapper.MapDepthFrameToColorSpace(depthData, colorSpace);
+        
+        for (int y = 0; y < frameDesc.Height; y += _DownsampleSize)
+        {
+            for (int x = 0; x < frameDesc.Width; x += _DownsampleSize)
+            {
+                int indexX = x / _DownsampleSize;
+                int indexY = y / _DownsampleSize;
+                int smallIndex = (indexY * (frameDesc.Width / _DownsampleSize)) + indexX;
+                
+                double avg = GetAvg(depthData, x, y, frameDesc.Width, frameDesc.Height);
+                
+                avg = avg * _DepthScale;
+                
+                _Vertices[smallIndex].z = (float)avg;
+                
+                // Update UV mapping with CDRP
+                var colorSpacePoint = colorSpace[(y * frameDesc.Width) + x];
+                _UV[smallIndex] = new Vector2(colorSpacePoint.X / colorWidth, colorSpacePoint.Y / colorHeight);
+            }
+        }
+        
+        _Mesh.vertices = _Vertices;
+        _Mesh.uv = _UV;
+        _Mesh.triangles = _Triangles;
+        _Mesh.RecalculateNormals();
+    }
+    
+    private double GetAvg(ushort[] depthData, int x, int y, int width, int height)
+    {
+        double sum = 0.0;
+        
+        for (int y1 = y; y1 < y + 4; y1++)
+        {
+            for (int x1 = x; x1 < x + 4; x1++)
+            {
+                int fullIndex = (y1 * width) + x1;
+                
+                if (depthData[fullIndex] == 0)
+                    sum += 4500;
+                else
+                    sum += depthData[fullIndex];
+                
+            }
+        }
+
+        return sum / 16;
+    }
+
+    void OnApplicationQuit()
+    {
+        if (_Mapper != null)
+        {
+            _Mapper = null;
+        }
+        
+        if (_Sensor != null)
+        {
+            if (_Sensor.IsOpen)
+            {
+                _Sensor.Close();
+            }
+
+            _Sensor = null;
+        }
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/DepthSourceView.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 383e102cbe3bfb34d94c98ea3c2479b4
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 11 - 0
Assets/KinectView/Scripts/DisableOnStart.cs

@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+public class DisableOnStart : MonoBehaviour {
+
+    // Use this for initialization
+    void Start () 
+    {
+        gameObject.SetActive (false);
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/DisableOnStart.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 61e5c93f5da1e324aa7fd9671db875bc
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 85 - 0
Assets/KinectView/Scripts/InfraredSourceManager.cs

@@ -0,0 +1,85 @@
+using UnityEngine;
+using System.Collections;
+using Windows.Kinect;
+
+public class InfraredSourceManager : MonoBehaviour 
+{
+    private KinectSensor _Sensor;
+    private InfraredFrameReader _Reader;
+    private ushort[] _Data;
+    private byte[] _RawData;
+    
+    // I'm not sure this makes sense for the Kinect APIs
+    // Instead, this logic should be in the VIEW
+    private Texture2D _Texture;
+
+    public Texture2D GetInfraredTexture()
+    {
+        return _Texture;
+    }
+    
+    void Start()
+    {
+        _Sensor = KinectSensor.GetDefault();
+        if (_Sensor != null) 
+        {
+            _Reader = _Sensor.InfraredFrameSource.OpenReader();
+            var frameDesc = _Sensor.InfraredFrameSource.FrameDescription;
+            _Data = new ushort[frameDesc.LengthInPixels];
+            _RawData = new byte[frameDesc.LengthInPixels * 4];
+            _Texture = new Texture2D(frameDesc.Width, frameDesc.Height, TextureFormat.BGRA32, false);
+            
+            if (!_Sensor.IsOpen)
+            {
+                _Sensor.Open();
+            }
+        }
+    }
+
+    void Update () 
+    {
+        if (_Reader != null) 
+        {
+            var frame = _Reader.AcquireLatestFrame();
+            if (frame != null)
+            {
+                frame.CopyFrameDataToArray(_Data);
+                
+                int index = 0;
+                foreach(var ir in _Data)
+                {
+                    byte intensity = (byte)(ir >> 8);
+                    _RawData[index++] = intensity;
+                    _RawData[index++] = intensity;
+                    _RawData[index++] = intensity;
+                    _RawData[index++] = 255; // Alpha
+                }
+                
+                _Texture.LoadRawTextureData(_RawData);
+                _Texture.Apply();
+                
+                frame.Dispose();
+                frame = null;
+            }
+        }
+    }
+    
+    void OnApplicationQuit()
+    {
+        if (_Reader != null) 
+        {
+            _Reader.Dispose();
+            _Reader = null;
+        }
+        
+        if (_Sensor != null) 
+        {
+            if (_Sensor.IsOpen)
+            {
+                _Sensor.Close();
+            }
+            
+            _Sensor = null;
+        }
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/InfraredSourceManager.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 63eff7f54e54aa049a2331755f3cb99c
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 29 - 0
Assets/KinectView/Scripts/InfraredSourceView.cs

@@ -0,0 +1,29 @@
+using UnityEngine;
+using System.Collections;
+
+public class InfraredSourceView : MonoBehaviour 
+{
+    public GameObject InfraredSourceManager;
+    private InfraredSourceManager _InfraredManager;
+    
+    void Start () 
+    {
+        gameObject.GetComponent<Renderer>().material.SetTextureScale("_MainTex", new Vector2(-1, 1));
+    }
+    
+    void Update()
+    {
+        if (InfraredSourceManager == null)
+        {
+            return;
+        }
+        
+        _InfraredManager = InfraredSourceManager.GetComponent<InfraredSourceManager>();
+        if (_InfraredManager == null)
+        {
+            return;
+        }
+    
+        gameObject.GetComponent<Renderer>().material.mainTexture = _InfraredManager.GetInfraredTexture();
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/InfraredSourceView.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 98f8736f9d8c8e44592c96e57d57c5d4
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 100 - 0
Assets/KinectView/Scripts/MultiSourceManager.cs

@@ -0,0 +1,100 @@
+using UnityEngine;
+using System.Collections;
+using Windows.Kinect;
+
+public class MultiSourceManager : MonoBehaviour {
+    public int ColorWidth { get; private set; }
+    public int ColorHeight { get; private set; }
+    
+    private KinectSensor _Sensor;
+    private MultiSourceFrameReader _Reader;
+    private Texture2D _ColorTexture;
+    private ushort[] _DepthData;
+    private byte[] _ColorData;
+
+    public Texture2D GetColorTexture()
+    {
+        return _ColorTexture;
+    }
+    
+    public ushort[] GetDepthData()
+    {
+        return _DepthData;
+    }
+
+    void Start () 
+    {
+        _Sensor = KinectSensor.GetDefault();
+        
+        if (_Sensor != null) 
+        {
+            _Reader = _Sensor.OpenMultiSourceFrameReader(FrameSourceTypes.Color | FrameSourceTypes.Depth);
+            
+            var colorFrameDesc = _Sensor.ColorFrameSource.CreateFrameDescription(ColorImageFormat.Rgba);
+            ColorWidth = colorFrameDesc.Width;
+            ColorHeight = colorFrameDesc.Height;
+            
+            _ColorTexture = new Texture2D(colorFrameDesc.Width, colorFrameDesc.Height, TextureFormat.RGBA32, false);
+            _ColorData = new byte[colorFrameDesc.BytesPerPixel * colorFrameDesc.LengthInPixels];
+            
+            var depthFrameDesc = _Sensor.DepthFrameSource.FrameDescription;
+            _DepthData = new ushort[depthFrameDesc.LengthInPixels];
+            
+            if (!_Sensor.IsOpen)
+            {
+                _Sensor.Open();
+            }
+        }
+    }
+    
+    void Update () 
+    {
+        if (_Reader != null) 
+        {
+            var frame = _Reader.AcquireLatestFrame();
+            if (frame != null)
+            {
+                var colorFrame = frame.ColorFrameReference.AcquireFrame();
+                if (colorFrame != null)
+                {
+                    var depthFrame = frame.DepthFrameReference.AcquireFrame();
+                    if (depthFrame != null)
+                    {
+                        colorFrame.CopyConvertedFrameDataToArray(_ColorData, ColorImageFormat.Rgba);
+                        _ColorTexture.LoadRawTextureData(_ColorData);
+                        _ColorTexture.Apply();
+                        
+                        depthFrame.CopyFrameDataToArray(_DepthData);
+                        
+                        depthFrame.Dispose();
+                        depthFrame = null;
+                    }
+                
+                    colorFrame.Dispose();
+                    colorFrame = null;
+                }
+                
+                frame = null;
+            }
+        }
+    }
+    
+    void OnApplicationQuit()
+    {
+        if (_Reader != null)
+        {
+            _Reader.Dispose();
+            _Reader = null;
+        }
+        
+        if (_Sensor != null)
+        {
+            if (_Sensor.IsOpen)
+            {
+                _Sensor.Close();
+            }
+            
+            _Sensor = null;
+        }
+    }
+}

+ 8 - 0
Assets/KinectView/Scripts/MultiSourceManager.cs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f752c4e07617d8d4eb21d4975a2d7c61
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 

+ 8 - 0
Assets/Plugins.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1f76fe23614109d45a435bf8fef8e03e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Plugins/Metro.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 851d38a562c21e2429dfd86148de4350
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Plugins/Metro/KinectUnityAddin.dll


+ 7 - 0
Assets/Plugins/Metro/KinectUnityAddin.dll.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 85bafbe9b14b18b45b445b304b1f3efc
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Plugins/x86.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 12fa118e1a1e24b4e8bb1b851f91e93f
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Plugins/x86/KinectUnityAddin.dll


+ 7 - 0
Assets/Plugins/x86/KinectUnityAddin.dll.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b65facb0c9c68b647b8ca7435b5f35c4
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Plugins/x86_64.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9c863b0ecfc700b4190504031a3d7838
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Plugins/x86_64/KinectUnityAddin.dll


+ 7 - 0
Assets/Plugins/x86_64/KinectUnityAddin.dll.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 82e143d16729051459ae6a54b37e9eab
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 257 - 5
Assets/Scenes/Main.unity

@@ -181,13 +181,222 @@ PrefabInstance:
     - target: {fileID: 2348914, guid: 4d293c8e162f3874b982baadd71153d2, type: 3}
       propertyPath: m_Materials.Array.data[0]
       value: 
-      objectReference: {fileID: 1831802279}
+      objectReference: {fileID: 1862429770}
     - target: {fileID: 3380982, guid: 4d293c8e162f3874b982baadd71153d2, type: 3}
       propertyPath: m_Mesh
       value: 
-      objectReference: {fileID: 1668663980}
+      objectReference: {fileID: 1442618065}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 4d293c8e162f3874b982baadd71153d2, type: 3}
+--- !u!1001 &833043381
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications:
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_RootOrder
+      value: 4
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3312791736747859071, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+      propertyPath: m_Name
+      value: Skeleton-Low Poly
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+--- !u!1 &833043382 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 3312791736747859071, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043383 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 4500074494190686554, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043384 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 3890369101537349476, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043385 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 2597394641745502320, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043386 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 2769126442181095839, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043387 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 5384307842313901854, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043388 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 6187807814907632838, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043389 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 5580296537604435804, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043390 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 5319934331291331794, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043391 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 5383303221642536330, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043392 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 8419618432774799, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043393 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 3632776448504300216, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043394 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 6849271689534393566, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043395 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 685882352492651730, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043396 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 6305421884977745370, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043397 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 6356184877508230158, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043398 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 2154427428850178807, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043399 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 4823269440029851066, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043400 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 9217326542452473186, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043401 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 6920941542428056730, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043402 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 883044869511115127, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043403 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 4650290273812723765, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!4 &833043404 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 8449541380403244997, guid: c0967da9816be5042b63b01436b57a82, type: 3}
+  m_PrefabInstance: {fileID: 833043381}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &833043405
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 833043382}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8821130411451d343a1488e2a9db134e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  joints:
+  - {fileID: 833043404}
+  - {fileID: 833043403}
+  - {fileID: 833043402}
+  - {fileID: 833043401}
+  - {fileID: 833043400}
+  - {fileID: 833043399}
+  - {fileID: 833043398}
+  - {fileID: 833043397}
+  - {fileID: 833043396}
+  - {fileID: 833043395}
+  - {fileID: 833043394}
+  - {fileID: 833043393}
+  - {fileID: 833043392}
+  - {fileID: 833043391}
+  - {fileID: 833043390}
+  - {fileID: 833043389}
+  - {fileID: 833043388}
+  - {fileID: 833043387}
+  - {fileID: 833043386}
+  - {fileID: 833043385}
+  - {fileID: 833043384}
+  - {fileID: 833043383}
+  BoneMaterial: {fileID: 0}
+  BodySourceManager: {fileID: 0}
 --- !u!1001 &841858134
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -245,7 +454,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 4f35fa249b5008c44ac2998be6f82d4d, type: 3}
---- !u!43 &1668663980
+--- !u!43 &1442618065
 Mesh:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -502,7 +711,7 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
---- !u!21 &1831802279
+--- !u!21 &1862429770
 Material:
   serializedVersion: 6
   m_ObjectHideFlags: 0
@@ -628,8 +837,51 @@ Transform:
   m_GameObject: {fileID: 1897776646}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_LocalScale: {x: 5, y: 5, z: 5}
   m_Children: []
   m_Father: {fileID: 0}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2078274386
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2078274388}
+  - component: {fileID: 2078274387}
+  m_Layer: 0
+  m_Name: BodyManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &2078274387
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2078274386}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 2e74aed0503c9d24290a1ae5438fddc3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!4 &2078274388
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2078274386}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 5.873085, y: 0, z: 182.0674}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 8 - 0
Assets/Skeleton-Low Poly.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3f43c9649e5dd284bb4683c72c0bbaf4
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Skeleton-Low Poly/Material.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 000e496787cb08b4392bd3585aa00ae2
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 77 - 0
Assets/Skeleton-Low Poly/Material/Skeleton-Albedo.mat

@@ -0,0 +1,77 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Skeleton-Albedo
+  m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: 
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 2800000, guid: ba9c659d7dd9a9d4aa8ad3855e266d43, type: 3}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _GlossMapScale: 1
+    - _Glossiness: 0
+    - _GlossyReflections: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _UVSec: 0
+    - _ZWrite: 1
+    m_Colors:
+    - _Color: {r: 0.9811321, g: 0.9763823, b: 0.96724814, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

+ 8 - 0
Assets/Skeleton-Low Poly/Material/Skeleton-Albedo.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7637b464f0a83d44ebfd8b655be7fe79
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Skeleton-Low Poly/Model.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2f900b22ca6a9da478bbba4d8af6da4d
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Skeleton-Low Poly/Model/Skeleton-Low Poly.fbx


+ 862 - 0
Assets/Skeleton-Low Poly/Model/Skeleton-Low Poly.fbx.meta

@@ -0,0 +1,862 @@
+fileFormatVersion: 2
+guid: 4d1b1786413326041bb908536099bae1
+ModelImporter:
+  serializedVersion: 19300
+  internalIDToNameTable: []
+  externalObjects:
+  - first:
+      type: UnityEngine:Material
+      assembly: UnityEngine.CoreModule
+      name: culeverita
+    second: {fileID: 2100000, guid: 7637b464f0a83d44ebfd8b655be7fe79, type: 2}
+  materials:
+    materialImportMode: 1
+    materialName: 0
+    materialSearch: 1
+    materialLocation: 1
+  animations:
+    legacyGenerateAnimations: 4
+    bakeSimulation: 0
+    resampleCurves: 1
+    optimizeGameObjects: 0
+    motionNodeName: 
+    rigImportErrors: 
+    rigImportWarnings: 
+    animationImportErrors: 
+    animationImportWarnings: 
+    animationRetargetingWarnings: 
+    animationDoRetargetingWarnings: 0
+    importAnimatedCustomProperties: 0
+    importConstraints: 0
+    animationCompression: 3
+    animationRotationError: 0.5
+    animationPositionError: 0.5
+    animationScaleError: 0.5
+    animationWrapMode: 0
+    extraExposedTransformPaths: []
+    extraUserProperties: []
+    clipAnimations: []
+    isReadable: 0
+  meshes:
+    lODScreenPercentages: []
+    globalScale: 1
+    meshCompression: 0
+    addColliders: 0
+    useSRGBMaterialColor: 1
+    sortHierarchyByName: 1
+    importVisibility: 1
+    importBlendShapes: 1
+    importCameras: 1
+    importLights: 1
+    swapUVChannels: 0
+    generateSecondaryUV: 0
+    useFileUnits: 1
+    keepQuads: 0
+    weldVertices: 1
+    preserveHierarchy: 0
+    skinWeightsMode: 0
+    maxBonesPerVertex: 4
+    minBoneWeight: 0.001
+    meshOptimizationFlags: -1
+    indexFormat: 0
+    secondaryUVAngleDistortion: 8
+    secondaryUVAreaDistortion: 15.000001
+    secondaryUVHardAngle: 88
+    secondaryUVPackMargin: 4
+    useFileScale: 1
+  tangentSpace:
+    normalSmoothAngle: 60
+    normalImportMode: 0
+    tangentImportMode: 3
+    normalCalculationMode: 4
+    legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+    blendShapeNormalImportMode: 1
+    normalSmoothingSource: 0
+  referencedClips: []
+  importAnimation: 1
+  humanDescription:
+    serializedVersion: 3
+    human:
+    - boneName: pelvis
+      humanName: Hips
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: thigh_l
+      humanName: LeftUpperLeg
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: thigh_r
+      humanName: RightUpperLeg
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: calf_l
+      humanName: LeftLowerLeg
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: calf_r
+      humanName: RightLowerLeg
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: foot_l
+      humanName: LeftFoot
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: foot_r
+      humanName: RightFoot
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: spine_01
+      humanName: Spine
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: spine_02
+      humanName: Chest
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: neck_01
+      humanName: Neck
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: head
+      humanName: Head
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: clavicle_l
+      humanName: LeftShoulder
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: clavicle_r
+      humanName: RightShoulder
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: upperarm_l
+      humanName: LeftUpperArm
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: upperarm_r
+      humanName: RightUpperArm
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: lowerarm_l
+      humanName: LeftLowerArm
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: lowerarm_r
+      humanName: RightLowerArm
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: hand_l
+      humanName: LeftHand
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: hand_r
+      humanName: RightHand
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: ball_l
+      humanName: LeftToes
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: ball_r
+      humanName: RightToes
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: thumb_01_l
+      humanName: Left Thumb Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: thumb_02_l
+      humanName: Left Thumb Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: thumb_03_l
+      humanName: Left Thumb Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: index_01_l
+      humanName: Left Index Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: index_02_l
+      humanName: Left Index Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: index_03_l
+      humanName: Left Index Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: middle_01_l
+      humanName: Left Middle Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: middle_02_l
+      humanName: Left Middle Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: middle_03_l
+      humanName: Left Middle Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: ring_01_l
+      humanName: Left Ring Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: ring_02_l
+      humanName: Left Ring Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: ring_03_l
+      humanName: Left Ring Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: pinky_01_l
+      humanName: Left Little Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: pinky_02_l
+      humanName: Left Little Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: pinky_03_l
+      humanName: Left Little Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: thumb_01_r
+      humanName: Right Thumb Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: thumb_02_r
+      humanName: Right Thumb Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: thumb_03_r
+      humanName: Right Thumb Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: index_01_r
+      humanName: Right Index Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: index_02_r
+      humanName: Right Index Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: index_03_r
+      humanName: Right Index Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: middle_01_r
+      humanName: Right Middle Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: middle_02_r
+      humanName: Right Middle Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: middle_03_r
+      humanName: Right Middle Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: ring_01_r
+      humanName: Right Ring Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: ring_02_r
+      humanName: Right Ring Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: ring_03_r
+      humanName: Right Ring Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: pinky_01_r
+      humanName: Right Little Proximal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: pinky_02_r
+      humanName: Right Little Intermediate
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: pinky_03_r
+      humanName: Right Little Distal
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    - boneName: spine_03
+      humanName: UpperChest
+      limit:
+        min: {x: 0, y: 0, z: 0}
+        max: {x: 0, y: 0, z: 0}
+        value: {x: 0, y: 0, z: 0}
+        length: 0
+        modified: 0
+    skeleton:
+    - name: Skeleton-Low Poly(Clone)
+      parentName: 
+      position: {x: 0, y: 0, z: 0}
+      rotation: {x: 0, y: 0, z: 0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: Game_engine
+      parentName: Skeleton-Low Poly(Clone)
+      position: {x: -0, y: 0, z: 0}
+      rotation: {x: 0.00000008146034, y: 0, z: -0, w: 1}
+      scale: {x: 10, y: 10, z: 10}
+    - name: Root
+      parentName: Game_engine
+      position: {x: -0, y: 0.00000015258789, z: -0.026311219}
+      rotation: {x: 0.49999997, y: -0.50000006, z: -0.50000006, w: 0.50000006}
+      scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001}
+    - name: pelvis
+      parentName: Root
+      position: {x: -0.79533285, y: 0.031310983, z: -0.000000037321925}
+      rotation: {x: 0.57643324, y: -0.40954214, z: -0.5764332, w: -0.40954217}
+      scale: {x: 1, y: 1, z: 1}
+    - name: spine_01
+      parentName: pelvis
+      position: {x: 5.7519853e-12, y: 0.08714078, z: -0.00000006437303}
+      rotation: {x: 0.22448893, y: 0.000000004108418, z: -0.0000000010871984, w: 0.97447664}
+      scale: {x: 1, y: 0.9999999, z: 0.99999994}
+    - name: spine_02
+      parentName: spine_01
+      position: {x: 1.2789769e-15, y: 0.066171095, z: 0.000000007152534}
+      rotation: {x: -0.14467882, y: -3.4523023e-11, z: 6.537063e-10, w: 0.9894787}
+      scale: {x: 1, y: 1, z: 0.99999994}
+    - name: spine_03
+      parentName: spine_02
+      position: {x: -1.4210854e-15, y: 0.055173542, z: -0.000000004768394}
+      rotation: {x: -0.015685467, y: -2.4224894e-10, z: -0.000000002144938, w: 0.999877}
+      scale: {x: 1, y: 0.99999994, z: 0.99999994}
+    - name: clavicle_l
+      parentName: spine_03
+      position: {x: -0.020752013, y: 0.2197088, z: 0.0921225}
+      rotation: {x: -0.0071758283, y: -0.020216156, z: 0.76707816, w: 0.64119494}
+      scale: {x: 0.9999999, y: 0.99999994, z: 1.0000001}
+    - name: upperarm_l
+      parentName: clavicle_l
+      position: {x: 0.00000011116266, y: 0.15849176, z: -0.000000019073486}
+      rotation: {x: 0.011300656, y: -0.04168044, z: -0.067984655, w: 0.99675125}
+      scale: {x: 0.9999999, y: 0.99999994, z: 0.9999999}
+    - name: lowerarm_l
+      parentName: upperarm_l
+      position: {x: -0.000000072866676, y: 0.22539857, z: 0}
+      rotation: {x: 0.026373094, y: 0.0019661891, z: -0.021582805, w: 0.9994173}
+      scale: {x: 0.99999994, y: 0.9999999, z: 0.9999999}
+    - name: hand_l
+      parentName: lowerarm_l
+      position: {x: -0.000000094175334, y: 0.2059682, z: 0.000000047683713}
+      rotation: {x: 0.11200059, y: -0.4210099, z: 0.01338769, w: 0.9000152}
+      scale: {x: 1.0000001, y: 0.99999994, z: 0.9999999}
+    - name: index_01_l
+      parentName: hand_l
+      position: {x: 0.01159213, y: 0.10904782, z: 0.011149029}
+      rotation: {x: 0.042634983, y: -0.47917086, z: 0.029697128, w: 0.8761824}
+      scale: {x: 1, y: 0.99999976, z: 0.9999999}
+    - name: index_02_l
+      parentName: index_01_l
+      position: {x: -0, y: 0.026856331, z: 0.0000000667572}
+      rotation: {x: 0.0385203, y: -0.0026036792, z: -0.002732578, w: 0.99925077}
+      scale: {x: 0.99999994, y: 1, z: 0.99999976}
+    - name: index_03_l
+      parentName: index_02_l
+      position: {x: -0.000000019073486, y: 0.024315605, z: 0.000000038146972}
+      rotation: {x: 0.038830914, y: -0.000072730894, z: -0.010895679, w: 0.9991864}
+      scale: {x: 1.0000001, y: 1, z: 1.0000001}
+    - name: index_03_l_end
+      parentName: index_03_l
+      position: {x: -0, y: 0.024315625, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: middle_01_l
+      parentName: hand_l
+      position: {x: -0.004411521, y: 0.10559674, z: -0.010860547}
+      rotation: {x: 0.023305934, y: -0.41946512, z: 0.08731817, w: 0.90326154}
+      scale: {x: 1, y: 1, z: 0.9999999}
+    - name: middle_02_l
+      parentName: middle_01_l
+      position: {x: 0.000000057220458, y: 0.03557577, z: -0.000000095367426}
+      rotation: {x: 0.02968376, y: -0.0012617701, z: -0.02812435, w: 0.99916285}
+      scale: {x: 1, y: 1, z: 1}
+    - name: middle_03_l
+      parentName: middle_02_l
+      position: {x: -0, y: 0.028137116, z: -0.000000047683713}
+      rotation: {x: 0.040053748, y: 0.000000056344977, z: 0.0035446219, w: 0.9991913}
+      scale: {x: 0.9999998, y: 1, z: 1.0000001}
+    - name: middle_03_l_end
+      parentName: middle_03_l
+      position: {x: -0, y: 0.028137056, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: pinky_01_l
+      parentName: hand_l
+      position: {x: -0.036498986, y: 0.085817285, z: -0.031238666}
+      rotation: {x: -0.016995156, y: -0.31725034, z: 0.1034284, w: 0.9425317}
+      scale: {x: 0.99999994, y: 0.9999999, z: 0.99999994}
+    - name: pinky_02_l
+      parentName: pinky_01_l
+      position: {x: -0, y: 0.02181281, z: -0.000000069141386}
+      rotation: {x: 0.037204005, y: -0.00072666985, z: -0.013937404, w: 0.99921024}
+      scale: {x: 1.0000001, y: 1, z: 0.99999994}
+    - name: pinky_03_l
+      parentName: pinky_02_l
+      position: {x: -0, y: 0.016252551, z: -0.000000009536743}
+      rotation: {x: 0.014371683, y: 0.000036709902, z: 0.015667465, w: 0.999774}
+      scale: {x: 1.0000001, y: 1.0000001, z: 1.0000002}
+    - name: pinky_03_l_end
+      parentName: pinky_03_l
+      position: {x: -0, y: 0.016252628, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: ring_01_l
+      parentName: hand_l
+      position: {x: -0.01868152, y: 0.09729857, z: -0.023870887}
+      rotation: {x: -0.00017350158, y: -0.40091926, z: 0.10404525, w: 0.91018593}
+      scale: {x: 0.9999998, y: 0.9999997, z: 0.99999964}
+    - name: ring_02_l
+      parentName: ring_01_l
+      position: {x: -0, y: 0.031186618, z: -0.000000052452087}
+      rotation: {x: 0.023380967, y: -0.00055566395, z: -0.033466075, w: 0.99916613}
+      scale: {x: 0.9999999, y: 0.9999999, z: 0.99999994}
+    - name: ring_03_l
+      parentName: ring_02_l
+      position: {x: 0.000000076293944, y: 0.025662135, z: 0.000000009536743}
+      rotation: {x: 0.03720882, y: 0.00008261437, z: 0.013297295, w: 0.9992191}
+      scale: {x: 1.0000001, y: 1, z: 1}
+    - name: ring_03_l_end
+      parentName: ring_03_l
+      position: {x: -0, y: 0.025662193, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: thumb_01_l
+      parentName: hand_l
+      position: {x: 0.014734658, y: 0.0416082, z: 0.015280747}
+      rotation: {x: -0.017728882, y: 0.7301949, z: 0.35710767, w: -0.5822157}
+      scale: {x: 0.99999994, y: 0.9999999, z: 0.9999999}
+    - name: thumb_02_l
+      parentName: thumb_01_l
+      position: {x: -0.0000000047683715, y: 0.03215417, z: 0.0000000047683715}
+      rotation: {x: 0.009267715, y: 0.015591437, z: 0.032111805, w: 0.9993197}
+      scale: {x: 1.0000002, y: 1.0000001, z: 0.9999998}
+    - name: thumb_03_l
+      parentName: thumb_02_l
+      position: {x: 0.000000038146972, y: 0.037885018, z: 0.00000009059906}
+      rotation: {x: 0.033560544, y: 0.0068603465, z: 0.0068095312, w: 0.99939}
+      scale: {x: 1, y: 1.0000001, z: 1.0000001}
+    - name: thumb_03_l_end
+      parentName: thumb_03_l
+      position: {x: -0, y: 0.037885077, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: clavicle_r
+      parentName: spine_03
+      position: {x: 0.020752003, y: 0.21970882, z: 0.092122495}
+      rotation: {x: -0.0071760006, y: 0.020216053, z: -0.7670784, w: 0.64119464}
+      scale: {x: 1, y: 1, z: 1}
+    - name: upperarm_r
+      parentName: clavicle_r
+      position: {x: -8.9406965e-10, y: 0.15849188, z: 0.000000012516975}
+      rotation: {x: 0.0113008665, y: 0.041680045, z: 0.06798515, w: 0.9967513}
+      scale: {x: 1, y: 1, z: 1}
+    - name: lowerarm_r
+      parentName: upperarm_r
+      position: {x: 0.000000039190052, y: 0.22539842, z: 0.000000014305114}
+      rotation: {x: 0.026373727, y: -0.0019650974, z: 0.021582467, w: 0.99941725}
+      scale: {x: 0.9999998, y: 1, z: 1.0000001}
+    - name: hand_r
+      parentName: lowerarm_r
+      position: {x: -0.000000051259992, y: 0.20596832, z: -0.000000009536743}
+      rotation: {x: 0.11199804, y: 0.42100772, z: -0.013387954, w: 0.90001655}
+      scale: {x: 0.99999994, y: 0.99999994, z: 1}
+    - name: index_01_r
+      parentName: hand_r
+      position: {x: -0.011592231, y: 0.10904777, z: 0.011149587}
+      rotation: {x: 0.042642657, y: 0.4791718, z: -0.029696018, w: 0.8761816}
+      scale: {x: 1, y: 0.99999976, z: 1}
+    - name: index_02_r
+      parentName: index_01_r
+      position: {x: -0.000000009536743, y: 0.026856326, z: -0.000000057220458}
+      rotation: {x: 0.03851612, y: 0.0025995662, z: 0.0027352762, w: 0.99925095}
+      scale: {x: 0.9999998, y: 1, z: 0.9999998}
+    - name: index_03_r
+      parentName: index_02_r
+      position: {x: 0.000000038146972, y: 0.024315605, z: 0.0000000667572}
+      rotation: {x: 0.03883496, y: 0.00007522474, z: 0.010892677, w: 0.9991863}
+      scale: {x: 0.9999999, y: 0.99999976, z: 0.9999999}
+    - name: index_03_r_end
+      parentName: index_03_r
+      position: {x: -0, y: 0.024315648, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: middle_01_r
+      parentName: hand_r
+      position: {x: 0.004411359, y: 0.10559679, z: -0.010859947}
+      rotation: {x: 0.023305947, y: 0.41946742, z: -0.08731423, w: 0.9032609}
+      scale: {x: 1.0000001, y: 1, z: 1.0000001}
+    - name: middle_02_r
+      parentName: middle_01_r
+      position: {x: 0.000000019073486, y: 0.035575893, z: -0.000000019073486}
+      rotation: {x: 0.029676968, y: 0.0012607863, z: 0.02812136, w: 0.99916315}
+      scale: {x: 0.99999994, y: 0.9999997, z: 0.99999976}
+    - name: middle_03_r
+      parentName: middle_02_r
+      position: {x: -0.000000038146972, y: 0.028137045, z: 0.000000057220458}
+      rotation: {x: 0.04005613, y: 0.0000044475278, z: -0.0035481933, w: 0.99919116}
+      scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001}
+    - name: middle_03_r_end
+      parentName: middle_03_r
+      position: {x: -0, y: 0.028137088, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: pinky_01_r
+      parentName: hand_r
+      position: {x: 0.03649882, y: 0.08581762, z: -0.031238455}
+      rotation: {x: -0.016991518, y: 0.3172502, z: -0.103430465, w: 0.9425315}
+      scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001}
+    - name: pinky_02_r
+      parentName: pinky_01_r
+      position: {x: -0, y: 0.021812944, z: -0.0000000333786}
+      rotation: {x: 0.037202027, y: 0.0007212754, z: 0.0139368875, w: 0.9992103}
+      scale: {x: 0.99999994, y: 1, z: 1.0000001}
+    - name: pinky_03_r
+      parentName: pinky_02_r
+      position: {x: -0, y: 0.016252283, z: 0.000000042915342}
+      rotation: {x: 0.014366742, y: -0.000024666984, z: -0.015668526, w: 0.99977404}
+      scale: {x: 0.99999994, y: 0.9999998, z: 0.9999999}
+    - name: pinky_03_r_end
+      parentName: pinky_03_r
+      position: {x: -0, y: 0.016252244, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: ring_01_r
+      parentName: hand_r
+      position: {x: 0.018681312, y: 0.09729872, z: -0.023870438}
+      rotation: {x: -0.00016897167, y: 0.40092045, z: -0.104044296, w: 0.91018546}
+      scale: {x: 0.99999994, y: 0.9999999, z: 1.0000001}
+    - name: ring_02_r
+      parentName: ring_01_r
+      position: {x: -0, y: 0.031186657, z: 0.000000019073486}
+      rotation: {x: 0.023380337, y: 0.00055420364, z: 0.03346916, w: 0.99916613}
+      scale: {x: 0.99999994, y: 1, z: 1.0000001}
+    - name: ring_03_r
+      parentName: ring_02_r
+      position: {x: -0.000000019073486, y: 0.025662163, z: 0.000000009536743}
+      rotation: {x: 0.03720929, y: -0.00007709694, z: -0.013299733, w: 0.999219}
+      scale: {x: 0.99999994, y: 1.0000001, z: 1.0000001}
+    - name: ring_03_r_end
+      parentName: ring_03_r
+      position: {x: -0, y: 0.0256621, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: thumb_01_r
+      parentName: hand_r
+      position: {x: -0.014734606, y: 0.041608077, z: 0.015280909}
+      rotation: {x: 0.017731737, y: 0.73019344, z: 0.3571128, w: 0.5822145}
+      scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001}
+    - name: thumb_02_r
+      parentName: thumb_01_r
+      position: {x: -0.000000042915342, y: 0.032154217, z: 0.000000069141386}
+      rotation: {x: 0.009272693, y: -0.015581803, z: -0.032111146, w: 0.9993198}
+      scale: {x: 0.99999976, y: 1, z: 0.9999999}
+    - name: thumb_03_r
+      parentName: thumb_02_r
+      position: {x: 0.000000019073486, y: 0.03788519, z: -0.000000019073486}
+      rotation: {x: 0.03355938, y: -0.006875063, z: -0.0068079573, w: 0.9993899}
+      scale: {x: 0.99999994, y: 1.0000001, z: 1}
+    - name: thumb_03_r_end
+      parentName: thumb_03_r
+      position: {x: -0, y: 0.037885044, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: neck_01
+      parentName: spine_03
+      position: {x: -0.0000000010211202, y: 0.28924316, z: 0.10123047}
+      rotation: {x: 0.26859114, y: 0.0000000035105647, z: 0.0000000025791997, w: 0.96325433}
+      scale: {x: 1, y: 1, z: 1.0000001}
+    - name: head
+      parentName: neck_01
+      position: {x: -1.8189894e-14, y: 0.09286378, z: 0.0000000047683346}
+      rotation: {x: -0.16713375, y: -0.00000000324607, z: -2.2920836e-10, w: 0.98593426}
+      scale: {x: 1, y: 1, z: 1}
+    - name: head_end
+      parentName: head
+      position: {x: -0, y: 0.092863664, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: thigh_l
+      parentName: pelvis
+      position: {x: -0.102667995, y: -0.0013605894, z: -0.011183599}
+      rotation: {x: 0.97047764, y: -0.08507343, z: 0.20182395, w: -0.101008676}
+      scale: {x: 0.99999905, y: 0.9999999, z: 0.999997}
+    - name: calf_l
+      parentName: thigh_l
+      position: {x: -0.000000007152557, y: 0.3219854, z: 0}
+      rotation: {x: 0.06445254, y: -0.230987, z: 0.0005248843, w: 0.97081953}
+      scale: {x: 1.0000001, y: 1.0000002, z: 0.9999999}
+    - name: foot_l
+      parentName: calf_l
+      position: {x: 0.0000000074878335, y: 0.40737715, z: -0.0000000017881393}
+      rotation: {x: -0.53775436, y: 0.000000030308527, z: -0.00000034038408, w: 0.84310156}
+      scale: {x: 0.9999998, y: 1, z: 0.99999994}
+    - name: ball_l
+      parentName: foot_l
+      position: {x: -0.000000010356307, y: 0.13355868, z: -0.000000016093253}
+      rotation: {x: -0.2723202, y: -0.017004946, z: -0.0042746305, w: 0.9620469}
+      scale: {x: 1, y: 1.0000001, z: 1.0000001}
+    - name: ball_l_end
+      parentName: ball_l
+      position: {x: -0, y: 0.1335586, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: thigh_r
+      parentName: pelvis
+      position: {x: 0.102667995, y: -0.0013605766, z: -0.011183599}
+      rotation: {x: 0.97047794, y: 0.08507339, z: -0.20182283, w: -0.10100808}
+      scale: {x: 1.0000002, y: 1, z: 1.0000008}
+    - name: calf_r
+      parentName: thigh_r
+      position: {x: -0.000000015497207, y: 0.32198545, z: 0}
+      rotation: {x: 0.064452395, y: 0.23098698, z: -0.0005249559, w: 0.9708196}
+      scale: {x: 0.99999994, y: 1, z: 1.0000001}
+    - name: foot_r
+      parentName: calf_r
+      position: {x: -0.000000013262033, y: 0.40737697, z: -0.0000000031292438}
+      rotation: {x: -0.5377534, y: 0.00000021878732, z: 0.000000019831692, w: 0.84310216}
+      scale: {x: 1, y: 1.0000001, z: 0.9999999}
+    - name: ball_r
+      parentName: foot_r
+      position: {x: 0.000000010356307, y: 0.13355854, z: -0.000000002980232}
+      rotation: {x: -0.2723211, y: 0.016998978, z: 0.0042764302, w: 0.96204674}
+      scale: {x: 1.0000001, y: 1, z: 1.0000001}
+    - name: ball_r_end
+      parentName: ball_r
+      position: {x: -0, y: 0.13355854, z: 0}
+      rotation: {x: 0, y: -0, z: -0, w: 1}
+      scale: {x: 1, y: 1, z: 1}
+    - name: culeveritaMesh
+      parentName: Skeleton-Low Poly(Clone)
+      position: {x: -0.00000014305115, y: -1.5537329e-14, z: 0.000000095367426}
+      rotation: {x: 0.7071068, y: -0.000000002634177, z: -0.0000000079025355, w: 0.7071067}
+      scale: {x: 10, y: 10, z: 10}
+    armTwist: 0.5
+    foreArmTwist: 0.5
+    upperLegTwist: 0.5
+    legTwist: 0.5
+    armStretch: 0.05
+    legStretch: 0.05
+    feetSpacing: 0
+    globalScale: 1
+    rootMotionBoneName: 
+    hasTranslationDoF: 0
+    hasExtraRoot: 1
+    skeletonHasParents: 1
+  lastHumanDescriptionAvatarSource: {instanceID: 0}
+  autoGenerateAvatarMappingIfUnspecified: 1
+  animationType: 3
+  humanoidOversampling: 1
+  avatarSetup: 1
+  additionalBone: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Skeleton-Low Poly/Prefab.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 501ae08d439a8b7439b137e3ca7bdf54
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2265 - 0
Assets/Skeleton-Low Poly/Prefab/Skeleton-Low Poly.prefab

@@ -0,0 +1,2265 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &75646680257130787
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6271059991630340520}
+  m_Layer: 0
+  m_Name: pinky_03_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6271059991630340520
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 75646680257130787}
+  m_LocalRotation: {x: 0.014371683, y: 0.000036709902, z: 0.015667465, w: 0.999774}
+  m_LocalPosition: {x: -0, y: 0.016252551, z: -0.000000009536743}
+  m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1.0000002}
+  m_Children:
+  - {fileID: 3940555082136571814}
+  m_Father: {fileID: 3579446377640126487}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &298870144403851735
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5319934331291331794}
+  m_Layer: 0
+  m_Name: foot_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5319934331291331794
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 298870144403851735}
+  m_LocalRotation: {x: -0.53775436, y: 0.000000030308527, z: -0.00000034038408, w: 0.84310156}
+  m_LocalPosition: {x: 0.0000000074878335, y: 0.40737715, z: -0.0000000017881393}
+  m_LocalScale: {x: 0.9999998, y: 1, z: 0.99999994}
+  m_Children:
+  - {fileID: 6187807814907632838}
+  m_Father: {fileID: 3632776448504300216}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &324066859098891941
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6933412268036067728}
+  m_Layer: 0
+  m_Name: ball_r_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6933412268036067728
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 324066859098891941}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.13355854, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 5384307842313901854}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &361114083954435998
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5363261243405356149}
+  m_Layer: 0
+  m_Name: ring_01_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5363261243405356149
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 361114083954435998}
+  m_LocalRotation: {x: 0.08505987, y: 0.3810685, z: -0.24547814, w: 0.8872948}
+  m_LocalPosition: {x: 0.018681312, y: 0.09729872, z: -0.023870438}
+  m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 1.0000001}
+  m_Children:
+  - {fileID: 5154521639410445499}
+  m_Father: {fileID: 6305421884977745370}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &576629151692129664
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6305421884977745370}
+  m_Layer: 0
+  m_Name: hand_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6305421884977745370
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 576629151692129664}
+  m_LocalRotation: {x: 0.11199804, y: 0.42100772, z: -0.013387954, w: 0.90001655}
+  m_LocalPosition: {x: -0.000000051259992, y: 0.20596832, z: -0.000000009536743}
+  m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 1}
+  m_Children:
+  - {fileID: 5402988907581849295}
+  - {fileID: 2597394641745502320}
+  - {fileID: 1899761435643356747}
+  - {fileID: 5363261243405356149}
+  - {fileID: 6106844484828138}
+  m_Father: {fileID: 2154427428850178807}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &795307522451467967
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3940555082136571814}
+  m_Layer: 0
+  m_Name: pinky_03_l_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3940555082136571814
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 795307522451467967}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.016252628, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6271059991630340520}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1076021295482690901
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8029665561562395701}
+  m_Layer: 0
+  m_Name: index_02_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8029665561562395701
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1076021295482690901}
+  m_LocalRotation: {x: 0.0996285, y: -0.0025924945, z: -0.0070702964, w: 0.99499625}
+  m_LocalPosition: {x: -0, y: 0.026856331, z: 0.0000000667572}
+  m_LocalScale: {x: 0.99999994, y: 1, z: 0.99999976}
+  m_Children:
+  - {fileID: 82276662822376356}
+  m_Father: {fileID: 3753598883267876095}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1263497218429092209
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2617791060239888692}
+  m_Layer: 0
+  m_Name: pinky_03_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2617791060239888692
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1263497218429092209}
+  m_LocalRotation: {x: 0.014366742, y: -0.000024666984, z: -0.015668526, w: 0.99977404}
+  m_LocalPosition: {x: -0, y: 0.016252283, z: 0.000000042915342}
+  m_LocalScale: {x: 0.99999994, y: 0.9999998, z: 0.9999999}
+  m_Children:
+  - {fileID: 6089618663746692083}
+  m_Father: {fileID: 2468826789179199260}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1280155418437217039
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7873184720479320372}
+  m_Layer: 0
+  m_Name: middle_03_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7873184720479320372
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1280155418437217039}
+  m_LocalRotation: {x: 0.0679729, y: 0.00000014183303, z: 0.0060157194, w: 0.99766904}
+  m_LocalPosition: {x: -0, y: 0.028137116, z: -0.000000047683713}
+  m_LocalScale: {x: 0.9999998, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 8621798275765520708}
+  m_Father: {fileID: 7412200458782873404}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1486824960951775381
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 825620777141213711}
+  m_Layer: 0
+  m_Name: ring_03_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &825620777141213711
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1486824960951775381}
+  m_LocalRotation: {x: 0.07734675, y: -0.00007681987, z: -0.027646706, w: 0.99662083}
+  m_LocalPosition: {x: -0.000000019073486, y: 0.025662163, z: 0.000000009536743}
+  m_LocalScale: {x: 0.99999994, y: 1.0000001, z: 1.0000001}
+  m_Children:
+  - {fileID: 2668133980441170883}
+  m_Father: {fileID: 5154521639410445499}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1510028284504913021
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5139953720450132312}
+  m_Layer: 0
+  m_Name: ball_l_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5139953720450132312
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1510028284504913021}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.1335586, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6187807814907632838}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1570683812249420849
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2154427428850178807}
+  m_Layer: 0
+  m_Name: lowerarm_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2154427428850178807
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1570683812249420849}
+  m_LocalRotation: {x: 0.3896955, y: 0.0062836474, z: 0.01217708, w: 0.9208419}
+  m_LocalPosition: {x: 0.000000039190052, y: 0.22539842, z: 0.000000014305114}
+  m_LocalScale: {x: 0.9999998, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 6305421884977745370}
+  m_Father: {fileID: 9217326542452473186}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1848486444077568229
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5402988907581849295}
+  m_Layer: 0
+  m_Name: index_01_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5402988907581849295
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1848486444077568229}
+  m_LocalRotation: {x: 0.13441026, y: 0.47242618, z: -0.013749556, w: 0.8709526}
+  m_LocalPosition: {x: -0.011592231, y: 0.10904777, z: 0.011149587}
+  m_LocalScale: {x: 1, y: 0.99999976, z: 1}
+  m_Children:
+  - {fileID: 8325154018291544099}
+  m_Father: {fileID: 6305421884977745370}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2022931018263432965
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6483169658008810491}
+  m_Layer: 0
+  m_Name: clavicle_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6483169658008810491
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2022931018263432965}
+  m_LocalRotation: {x: -0.0071758283, y: -0.020216156, z: 0.76707816, w: 0.64119494}
+  m_LocalPosition: {x: -0.020752013, y: 0.2197088, z: 0.0921225}
+  m_LocalScale: {x: 0.9999999, y: 0.99999994, z: 1.0000001}
+  m_Children:
+  - {fileID: 6920941542428056730}
+  m_Father: {fileID: 883044869511115127}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2383941444352131986
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5383303221642536330}
+  m_Layer: 0
+  m_Name: spine_01
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5383303221642536330
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2383941444352131986}
+  m_LocalRotation: {x: 0.22448893, y: 0.000000004108418, z: -0.0000000010871984, w: 0.97447664}
+  m_LocalPosition: {x: 5.7519853e-12, y: 0.08714078, z: -0.00000006437303}
+  m_LocalScale: {x: 1, y: 0.9999999, z: 0.99999994}
+  m_Children:
+  - {fileID: 5345749210286662682}
+  m_Father: {fileID: 2056479723310233399}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2514449109452617559
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5073384296154338655}
+  - component: {fileID: 3328479242754083297}
+  m_Layer: 0
+  m_Name: Mesh
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5073384296154338655
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2514449109452617559}
+  m_LocalRotation: {x: 0.7071068, y: -0.000000002634177, z: -0.0000000079025355, w: 0.7071067}
+  m_LocalPosition: {x: -0.00000014305115, y: -1.5537329e-14, z: 0.000000095367426}
+  m_LocalScale: {x: 10, y: 10, z: 10}
+  m_Children: []
+  m_Father: {fileID: 1991223601103269484}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!137 &3328479242754083297
+SkinnedMeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2514449109452617559}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: 7637b464f0a83d44ebfd8b655be7fe79, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  serializedVersion: 2
+  m_Quality: 0
+  m_UpdateWhenOffscreen: 0
+  m_SkinnedMotionVectors: 1
+  m_Mesh: {fileID: 8371279407200142946, guid: 4d1b1786413326041bb908536099bae1, type: 3}
+  m_Bones:
+  - {fileID: 3633927752357243660}
+  - {fileID: 2056479723310233399}
+  - {fileID: 5383303221642536330}
+  - {fileID: 5345749210286662682}
+  - {fileID: 883044869511115127}
+  - {fileID: 6483169658008810491}
+  - {fileID: 6920941542428056730}
+  - {fileID: 4823269440029851066}
+  - {fileID: 6356184877508230158}
+  - {fileID: 3753598883267876095}
+  - {fileID: 8029665561562395701}
+  - {fileID: 82276662822376356}
+  - {fileID: 2769126442181095839}
+  - {fileID: 7412200458782873404}
+  - {fileID: 7873184720479320372}
+  - {fileID: 344849169733922766}
+  - {fileID: 3579446377640126487}
+  - {fileID: 6271059991630340520}
+  - {fileID: 8899191760836533126}
+  - {fileID: 6025156113017838883}
+  - {fileID: 134582091907483294}
+  - {fileID: 3744895862654381441}
+  - {fileID: 6272101465752375233}
+  - {fileID: 3890369101537349476}
+  - {fileID: 3577991448146013591}
+  - {fileID: 9217326542452473186}
+  - {fileID: 2154427428850178807}
+  - {fileID: 6305421884977745370}
+  - {fileID: 5402988907581849295}
+  - {fileID: 8325154018291544099}
+  - {fileID: 2636900877587214391}
+  - {fileID: 2597394641745502320}
+  - {fileID: 8452515554205125222}
+  - {fileID: 5356400321349016091}
+  - {fileID: 1899761435643356747}
+  - {fileID: 2468826789179199260}
+  - {fileID: 2617791060239888692}
+  - {fileID: 5363261243405356149}
+  - {fileID: 5154521639410445499}
+  - {fileID: 825620777141213711}
+  - {fileID: 6106844484828138}
+  - {fileID: 3741417400632634809}
+  - {fileID: 4500074494190686554}
+  - {fileID: 4650290273812723765}
+  - {fileID: 8449541380403244997}
+  - {fileID: 685882352492651730}
+  - {fileID: 3632776448504300216}
+  - {fileID: 5319934331291331794}
+  - {fileID: 6187807814907632838}
+  - {fileID: 6849271689534393566}
+  - {fileID: 8419618432774799}
+  - {fileID: 5580296537604435804}
+  - {fileID: 5384307842313901854}
+  m_BlendShapeWeights: []
+  m_RootBone: {fileID: 3633927752357243660}
+  m_AABB:
+    m_Center: {x: -0.7286724, y: 0.10361156, z: 0.000069618225}
+    m_Extent: {x: 0.79768157, y: 0.25247198, z: 0.51246613}
+  m_DirtyAABB: 0
+--- !u!1 &2545267926358264498
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4873214098612573116}
+  m_Layer: 0
+  m_Name: thumb_03_r_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4873214098612573116
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2545267926358264498}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.037885044, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 4500074494190686554}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2549219033771201988
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8881942406699977015}
+  m_Layer: 0
+  m_Name: thumb_03_l_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8881942406699977015
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2549219033771201988}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.037885077, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 3890369101537349476}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2594863192951777831
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2597394641745502320}
+  m_Layer: 0
+  m_Name: middle_01_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2597394641745502320
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2594863192951777831}
+  m_LocalRotation: {x: 0.12515947, y: 0.4056137, z: -0.16468668, w: 0.8903319}
+  m_LocalPosition: {x: 0.004411359, y: 0.10559679, z: -0.010859947}
+  m_LocalScale: {x: 1.0000001, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 8452515554205125222}
+  m_Father: {fileID: 6305421884977745370}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2667528373560798060
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6920941542428056730}
+  m_Layer: 0
+  m_Name: upperarm_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6920941542428056730
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2667528373560798060}
+  m_LocalRotation: {x: -0.051736794, y: -0.039605003, z: 0.32604274, w: 0.943107}
+  m_LocalPosition: {x: 0.00000011116266, y: 0.15849176, z: -0.000000019073486}
+  m_LocalScale: {x: 0.9999999, y: 0.99999994, z: 0.9999999}
+  m_Children:
+  - {fileID: 4823269440029851066}
+  m_Father: {fileID: 6483169658008810491}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2741496133443370829
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4500074494190686554}
+  m_Layer: 0
+  m_Name: thumb_03_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4500074494190686554
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2741496133443370829}
+  m_LocalRotation: {x: 0.18083917, y: -0.006760949, z: -0.03669612, w: 0.9828046}
+  m_LocalPosition: {x: 0.000000019073486, y: 0.03788519, z: -0.000000019073486}
+  m_LocalScale: {x: 0.99999994, y: 1.0000001, z: 1}
+  m_Children:
+  - {fileID: 4873214098612573116}
+  m_Father: {fileID: 3741417400632634809}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2788809118231188505
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6849271689534393566}
+  m_Layer: 0
+  m_Name: thigh_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6849271689534393566
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2788809118231188505}
+  m_LocalRotation: {x: 0.97047794, y: 0.08507339, z: -0.20182283, w: -0.10100808}
+  m_LocalPosition: {x: 0.102667995, y: -0.0013605766, z: -0.011183599}
+  m_LocalScale: {x: 1.0000002, y: 1, z: 1.0000008}
+  m_Children:
+  - {fileID: 8419618432774799}
+  m_Father: {fileID: 2056479723310233399}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2828580787261992182
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 9217326542452473186}
+  m_Layer: 0
+  m_Name: upperarm_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &9217326542452473186
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2828580787261992182}
+  m_LocalRotation: {x: -0.051737033, y: 0.039604675, z: -0.3260432, w: 0.9431069}
+  m_LocalPosition: {x: -8.9406965e-10, y: 0.15849188, z: 0.000000012516975}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2154427428850178807}
+  m_Father: {fileID: 3577991448146013591}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2932671169265450309
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3632776448504300216}
+  m_Layer: 0
+  m_Name: calf_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3632776448504300216
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2932671169265450309}
+  m_LocalRotation: {x: 0.06445254, y: -0.230987, z: 0.0005248843, w: 0.97081953}
+  m_LocalPosition: {x: -0.000000007152557, y: 0.3219854, z: 0}
+  m_LocalScale: {x: 1.0000001, y: 1.0000002, z: 0.9999999}
+  m_Children:
+  - {fileID: 5319934331291331794}
+  m_Father: {fileID: 685882352492651730}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3144149121965064768
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7493215390905149080}
+  m_Layer: 0
+  m_Name: middle_03_r_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7493215390905149080
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3144149121965064768}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.028137088, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 5356400321349016091}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3312791736747859071
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1991223601103269484}
+  - component: {fileID: 8442064095413715734}
+  m_Layer: 0
+  m_Name: Skeleton-Low Poly
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1991223601103269484
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3312791736747859071}
+  m_LocalRotation: {x: 0, 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: 5073384296154338655}
+  - {fileID: 1749438799305010385}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!95 &8442064095413715734
+Animator:
+  serializedVersion: 3
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3312791736747859071}
+  m_Enabled: 1
+  m_Avatar: {fileID: 9000000, guid: 4d1b1786413326041bb908536099bae1, type: 3}
+  m_Controller: {fileID: 0}
+  m_CullingMode: 1
+  m_UpdateMode: 0
+  m_ApplyRootMotion: 1
+  m_LinearVelocityBlending: 0
+  m_WarningMessage: 
+  m_HasTransformHierarchy: 1
+  m_AllowConstantClipSamplingOptimization: 1
+  m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!1 &3626469254100951161
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1899761435643356747}
+  m_Layer: 0
+  m_Name: pinky_01_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1899761435643356747
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3626469254100951161}
+  m_LocalRotation: {x: 0.06133226, y: 0.291438, z: -0.31111696, w: 0.9025013}
+  m_LocalPosition: {x: 0.03649882, y: 0.08581762, z: -0.031238455}
+  m_LocalScale: {x: 1.0000001, y: 1.0000002, z: 1.0000001}
+  m_Children:
+  - {fileID: 2468826789179199260}
+  m_Father: {fileID: 6305421884977745370}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3658317597607378347
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2668133980441170883}
+  m_Layer: 0
+  m_Name: ring_03_r_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2668133980441170883
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3658317597607378347}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.0256621, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 825620777141213711}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3707353486655316207
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3741417400632634809}
+  m_Layer: 0
+  m_Name: thumb_02_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3741417400632634809
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3707353486655316207}
+  m_LocalRotation: {x: 0.0555277, y: -0.015274597, z: -0.19236568, w: 0.979632}
+  m_LocalPosition: {x: -0.000000042915342, y: 0.032154217, z: 0.000000069141386}
+  m_LocalScale: {x: 0.99999976, y: 1, z: 0.9999999}
+  m_Children:
+  - {fileID: 4500074494190686554}
+  m_Father: {fileID: 6106844484828138}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3722376388593032933
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6025156113017838883}
+  m_Layer: 0
+  m_Name: ring_02_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6025156113017838883
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3722376388593032933}
+  m_LocalRotation: {x: 0.03204742, y: -0.0005553872, z: -0.0458714, w: 0.99843305}
+  m_LocalPosition: {x: -0, y: 0.031186618, z: -0.000000052452087}
+  m_LocalScale: {x: 0.9999999, y: 0.9999999, z: 0.99999994}
+  m_Children:
+  - {fileID: 134582091907483294}
+  m_Father: {fileID: 8899191760836533126}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3801861919290072879
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2769126442181095839}
+  m_Layer: 0
+  m_Name: middle_01_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2769126442181095839
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3801861919290072879}
+  m_LocalRotation: {x: 0.12515825, y: -0.4056114, z: 0.16468857, w: 0.8903328}
+  m_LocalPosition: {x: -0.004411521, y: 0.10559674, z: -0.010860547}
+  m_LocalScale: {x: 1, y: 1, z: 0.9999999}
+  m_Children:
+  - {fileID: 7412200458782873404}
+  m_Father: {fileID: 6356184877508230158}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4121971504328383542
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3753598883267876095}
+  m_Layer: 0
+  m_Name: index_01_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3753598883267876095
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4121971504328383542}
+  m_LocalRotation: {x: 0.13440816, y: -0.4724244, z: 0.013751188, w: 0.8709538}
+  m_LocalPosition: {x: 0.01159213, y: 0.10904782, z: 0.011149029}
+  m_LocalScale: {x: 1, y: 0.99999976, z: 0.9999999}
+  m_Children:
+  - {fileID: 8029665561562395701}
+  m_Father: {fileID: 6356184877508230158}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4338376264050458442
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8621798275765520708}
+  m_Layer: 0
+  m_Name: middle_03_l_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8621798275765520708
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4338376264050458442}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.028137056, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7873184720479320372}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4400133330425022565
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5345749210286662682}
+  m_Layer: 0
+  m_Name: spine_02
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5345749210286662682
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4400133330425022565}
+  m_LocalRotation: {x: -0.14467882, y: -3.4523023e-11, z: 6.537063e-10, w: 0.9894787}
+  m_LocalPosition: {x: 1.2789769e-15, y: 0.066171095, z: 0.000000007152534}
+  m_LocalScale: {x: 1, y: 1, z: 0.99999994}
+  m_Children:
+  - {fileID: 883044869511115127}
+  m_Father: {fileID: 5383303221642536330}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4410073626389743251
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8449541380403244997}
+  m_Layer: 0
+  m_Name: head
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8449541380403244997
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4410073626389743251}
+  m_LocalRotation: {x: -0.16713375, y: -0.00000000324607, z: -2.2920836e-10, w: 0.98593426}
+  m_LocalPosition: {x: -1.8189894e-14, y: 0.09286378, z: 0.0000000047683346}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 40209428825868242}
+  m_Father: {fileID: 4650290273812723765}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4438493900960780374
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5356400321349016091}
+  m_Layer: 0
+  m_Name: middle_03_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5356400321349016091
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4438493900960780374}
+  m_LocalRotation: {x: 0.067970216, y: 0.0000045143584, z: -0.006020839, w: 0.9976692}
+  m_LocalPosition: {x: -0.000000038146972, y: 0.028137045, z: 0.000000057220458}
+  m_LocalScale: {x: 1.0000002, y: 1.0000002, z: 1.0000001}
+  m_Children:
+  - {fileID: 7493215390905149080}
+  m_Father: {fileID: 8452515554205125222}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4445323534218263287
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6092348041825257910}
+  m_Layer: 0
+  m_Name: index_03_r_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6092348041825257910
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4445323534218263287}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.024315648, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2636900877587214391}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4525056851776279305
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6089618663746692083}
+  m_Layer: 0
+  m_Name: pinky_03_r_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6089618663746692083
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4525056851776279305}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.016252244, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2617791060239888692}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4838056852309920906
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5154521639410445499}
+  m_Layer: 0
+  m_Name: ring_02_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5154521639410445499
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4838056852309920906}
+  m_LocalRotation: {x: 0.032044202, y: 0.0005538871, z: 0.04587137, w: 0.9984332}
+  m_LocalPosition: {x: -0, y: 0.031186657, z: 0.000000019073486}
+  m_LocalScale: {x: 0.99999994, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 825620777141213711}
+  m_Father: {fileID: 5363261243405356149}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4947882766614476109
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6187807814907632838}
+  m_Layer: 0
+  m_Name: ball_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6187807814907632838
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4947882766614476109}
+  m_LocalRotation: {x: -0.2723202, y: -0.017004946, z: -0.0042746305, w: 0.9620469}
+  m_LocalPosition: {x: -0.000000010356307, y: 0.13355868, z: -0.000000016093253}
+  m_LocalScale: {x: 1, y: 1.0000001, z: 1.0000001}
+  m_Children:
+  - {fileID: 5139953720450132312}
+  m_Father: {fileID: 5319934331291331794}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &5436934669304886924
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8452515554205125222}
+  m_Layer: 0
+  m_Name: middle_02_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8452515554205125222
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5436934669304886924}
+  m_LocalRotation: {x: 0.03972432, y: 0.0012599087, z: 0.037641183, w: 0.99850065}
+  m_LocalPosition: {x: 0.000000019073486, y: 0.035575893, z: -0.000000019073486}
+  m_LocalScale: {x: 0.99999994, y: 0.9999997, z: 0.99999976}
+  m_Children:
+  - {fileID: 5356400321349016091}
+  m_Father: {fileID: 2597394641745502320}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &5668957126558075189
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3579446377640126487}
+  m_Layer: 0
+  m_Name: pinky_02_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3579446377640126487
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5668957126558075189}
+  m_LocalRotation: {x: 0.07293044, y: -0.0007249607, z: -0.027323542, w: 0.9969624}
+  m_LocalPosition: {x: -0, y: 0.02181281, z: -0.000000069141386}
+  m_LocalScale: {x: 1.0000001, y: 1, z: 0.99999994}
+  m_Children:
+  - {fileID: 6271059991630340520}
+  m_Father: {fileID: 344849169733922766}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &5711391377118304755
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4650290273812723765}
+  m_Layer: 0
+  m_Name: neck_01
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4650290273812723765
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5711391377118304755}
+  m_LocalRotation: {x: 0.26859114, y: 0.0000000035105647, z: 0.0000000025791997, w: 0.96325433}
+  m_LocalPosition: {x: -0.0000000010211202, y: 0.28924316, z: 0.10123047}
+  m_LocalScale: {x: 1, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 8449541380403244997}
+  m_Father: {fileID: 883044869511115127}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &5841151262962716056
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5580296537604435804}
+  m_Layer: 0
+  m_Name: foot_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5580296537604435804
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5841151262962716056}
+  m_LocalRotation: {x: -0.5377534, y: 0.00000021878732, z: 0.000000019831692, w: 0.84310216}
+  m_LocalPosition: {x: -0.000000013262033, y: 0.40737697, z: -0.0000000031292438}
+  m_LocalScale: {x: 1, y: 1.0000001, z: 0.9999999}
+  m_Children:
+  - {fileID: 5384307842313901854}
+  m_Father: {fileID: 8419618432774799}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &5860971010202789313
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3633927752357243660}
+  m_Layer: 0
+  m_Name: Root
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3633927752357243660
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5860971010202789313}
+  m_LocalRotation: {x: 0.49999997, y: -0.50000006, z: -0.50000006, w: 0.50000006}
+  m_LocalPosition: {x: -0, y: 0.00000015258789, z: -0.026311219}
+  m_LocalScale: {x: 1.0000002, y: 1.0000001, z: 1.0000001}
+  m_Children:
+  - {fileID: 2056479723310233399}
+  m_Father: {fileID: 1749438799305010385}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &5948447667614025311
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3744895862654381441}
+  m_Layer: 0
+  m_Name: thumb_01_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3744895862654381441
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5948447667614025311}
+  m_LocalRotation: {x: -0.29206058, y: 0.7197301, z: 0.44875926, w: -0.44193268}
+  m_LocalPosition: {x: 0.014734658, y: 0.0416082, z: 0.015280747}
+  m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 0.9999999}
+  m_Children:
+  - {fileID: 6272101465752375233}
+  m_Father: {fileID: 6356184877508230158}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6440154619269323237
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 344849169733922766}
+  m_Layer: 0
+  m_Name: pinky_01_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &344849169733922766
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6440154619269323237}
+  m_LocalRotation: {x: 0.06132783, y: -0.29143685, z: 0.31111902, w: 0.9025012}
+  m_LocalPosition: {x: -0.036498986, y: 0.085817285, z: -0.031238666}
+  m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 0.99999994}
+  m_Children:
+  - {fileID: 3579446377640126487}
+  m_Father: {fileID: 6356184877508230158}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6490919895226898014
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3577991448146013591}
+  m_Layer: 0
+  m_Name: clavicle_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3577991448146013591
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6490919895226898014}
+  m_LocalRotation: {x: -0.0071760006, y: 0.020216053, z: -0.7670784, w: 0.64119464}
+  m_LocalPosition: {x: 0.020752003, y: 0.21970882, z: 0.092122495}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 9217326542452473186}
+  m_Father: {fileID: 883044869511115127}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6523295194131917934
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4823269440029851066}
+  m_Layer: 0
+  m_Name: lowerarm_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4823269440029851066
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6523295194131917934}
+  m_LocalRotation: {x: 0.38969517, y: -0.0062825717, z: -0.0121762585, w: 0.920842}
+  m_LocalPosition: {x: -0.000000072866676, y: 0.22539857, z: 0}
+  m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 0.9999999}
+  m_Children:
+  - {fileID: 6356184877508230158}
+  m_Father: {fileID: 6920941542428056730}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6525816633038663567
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6106844484828138}
+  m_Layer: 0
+  m_Name: thumb_01_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6106844484828138
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6525816633038663567}
+  m_LocalRotation: {x: 0.29206318, y: 0.71972823, z: 0.44876158, w: 0.4419315}
+  m_LocalPosition: {x: -0.014734606, y: 0.041608077, z: 0.015280909}
+  m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1.0000001}
+  m_Children:
+  - {fileID: 3741417400632634809}
+  m_Father: {fileID: 6305421884977745370}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6558167159145664116
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 134582091907483294}
+  m_Layer: 0
+  m_Name: ring_03_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &134582091907483294
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6558167159145664116}
+  m_LocalRotation: {x: 0.07734561, y: 0.000082174476, z: 0.027644753, w: 0.996621}
+  m_LocalPosition: {x: 0.000000076293944, y: 0.025662135, z: 0.000000009536743}
+  m_LocalScale: {x: 1.0000001, y: 1, z: 1}
+  m_Children:
+  - {fileID: 7478072516872745194}
+  m_Father: {fileID: 6025156113017838883}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6589199812930502281
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2056479723310233399}
+  m_Layer: 0
+  m_Name: pelvis
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2056479723310233399
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6589199812930502281}
+  m_LocalRotation: {x: 0.57643324, y: -0.40954214, z: -0.5764332, w: -0.40954217}
+  m_LocalPosition: {x: -0.79533285, y: 0.031310983, z: -0.000000037321925}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 5383303221642536330}
+  - {fileID: 685882352492651730}
+  - {fileID: 6849271689534393566}
+  m_Father: {fileID: 3633927752357243660}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6626529877568900156
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8419618432774799}
+  m_Layer: 0
+  m_Name: calf_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8419618432774799
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6626529877568900156}
+  m_LocalRotation: {x: 0.064452395, y: 0.23098698, z: -0.0005249559, w: 0.9708196}
+  m_LocalPosition: {x: -0.000000015497207, y: 0.32198545, z: 0}
+  m_LocalScale: {x: 0.99999994, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 5580296537604435804}
+  m_Father: {fileID: 6849271689534393566}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6678061500551442929
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7478072516872745194}
+  m_Layer: 0
+  m_Name: ring_03_l_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7478072516872745194
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6678061500551442929}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.025662193, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 134582091907483294}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6764281300767276370
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 82276662822376356}
+  m_Layer: 0
+  m_Name: index_03_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &82276662822376356
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6764281300767276370}
+  m_LocalRotation: {x: 0.06336743, y: -0.000072614515, z: -0.01778062, w: 0.9978319}
+  m_LocalPosition: {x: -0.000000019073486, y: 0.024315605, z: 0.000000038146972}
+  m_LocalScale: {x: 1.0000001, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 3550059535414449035}
+  m_Father: {fileID: 8029665561562395701}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7034215870435972386
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3550059535414449035}
+  m_Layer: 0
+  m_Name: index_03_l_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3550059535414449035
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7034215870435972386}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.024315625, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 82276662822376356}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7055286077832488176
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2468826789179199260}
+  m_Layer: 0
+  m_Name: pinky_02_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2468826789179199260
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7055286077832488176}
+  m_LocalRotation: {x: 0.072929464, y: 0.00071969215, z: 0.0273232, w: 0.9969625}
+  m_LocalPosition: {x: -0, y: 0.021812944, z: -0.0000000333786}
+  m_LocalScale: {x: 0.99999994, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 2617791060239888692}
+  m_Father: {fileID: 1899761435643356747}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7353670662715070517
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 685882352492651730}
+  m_Layer: 0
+  m_Name: thigh_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &685882352492651730
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7353670662715070517}
+  m_LocalRotation: {x: 0.97047764, y: -0.08507343, z: 0.20182395, w: -0.101008676}
+  m_LocalPosition: {x: -0.102667995, y: -0.0013605894, z: -0.011183599}
+  m_LocalScale: {x: 0.99999905, y: 0.9999999, z: 0.999997}
+  m_Children:
+  - {fileID: 3632776448504300216}
+  m_Father: {fileID: 2056479723310233399}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7494747928558948200
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2636900877587214391}
+  m_Layer: 0
+  m_Name: index_03_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2636900877587214391
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7494747928558948200}
+  m_LocalRotation: {x: 0.06337065, y: 0.00007512705, z: 0.017776487, w: 0.99783176}
+  m_LocalPosition: {x: 0.000000038146972, y: 0.024315605, z: 0.0000000667572}
+  m_LocalScale: {x: 0.9999999, y: 0.99999976, z: 0.9999999}
+  m_Children:
+  - {fileID: 6092348041825257910}
+  m_Father: {fileID: 8325154018291544099}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7539721728247537180
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 883044869511115127}
+  m_Layer: 0
+  m_Name: spine_03
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &883044869511115127
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7539721728247537180}
+  m_LocalRotation: {x: -0.015685467, y: -2.4224894e-10, z: -0.000000002144938, w: 0.999877}
+  m_LocalPosition: {x: -1.4210854e-15, y: 0.055173542, z: -0.000000004768394}
+  m_LocalScale: {x: 1, y: 0.99999994, z: 0.99999994}
+  m_Children:
+  - {fileID: 6483169658008810491}
+  - {fileID: 3577991448146013591}
+  - {fileID: 4650290273812723765}
+  m_Father: {fileID: 5345749210286662682}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7680951518310687006
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3890369101537349476}
+  m_Layer: 0
+  m_Name: thumb_03_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3890369101537349476
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7680951518310687006}
+  m_LocalRotation: {x: 0.18084334, y: 0.0067462926, z: 0.03669819, w: 0.9828039}
+  m_LocalPosition: {x: 0.000000038146972, y: 0.037885018, z: 0.00000009059906}
+  m_LocalScale: {x: 1, y: 1.0000001, z: 1.0000001}
+  m_Children:
+  - {fileID: 8881942406699977015}
+  m_Father: {fileID: 6272101465752375233}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7937685074606659122
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6272101465752375233}
+  m_Layer: 0
+  m_Name: thumb_02_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6272101465752375233
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7937685074606659122}
+  m_LocalRotation: {x: 0.055524476, y: 0.015284299, z: 0.19236293, w: 0.97963256}
+  m_LocalPosition: {x: -0.0000000047683715, y: 0.03215417, z: 0.0000000047683715}
+  m_LocalScale: {x: 1.0000002, y: 1.0000001, z: 0.9999998}
+  m_Children:
+  - {fileID: 3890369101537349476}
+  m_Father: {fileID: 3744895862654381441}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8136597998356451670
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8325154018291544099}
+  m_Layer: 0
+  m_Name: index_02_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8325154018291544099
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8136597998356451670}
+  m_LocalRotation: {x: 0.09962686, y: 0.002588469, z: 0.007072474, w: 0.99499637}
+  m_LocalPosition: {x: -0.000000009536743, y: 0.026856326, z: -0.000000057220458}
+  m_LocalScale: {x: 0.9999998, y: 1, z: 0.9999998}
+  m_Children:
+  - {fileID: 2636900877587214391}
+  m_Father: {fileID: 5402988907581849295}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8325398560710291496
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8899191760836533126}
+  m_Layer: 0
+  m_Name: ring_01_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8899191760836533126
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8325398560710291496}
+  m_LocalRotation: {x: 0.08505623, y: -0.38106704, z: 0.24548021, w: 0.88729525}
+  m_LocalPosition: {x: -0.01868152, y: 0.09729857, z: -0.023870887}
+  m_LocalScale: {x: 0.9999998, y: 0.9999997, z: 0.99999964}
+  m_Children:
+  - {fileID: 6025156113017838883}
+  m_Father: {fileID: 6356184877508230158}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8345223418857490635
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 40209428825868242}
+  m_Layer: 0
+  m_Name: head_end
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &40209428825868242
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8345223418857490635}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.092863664, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 8449541380403244997}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8510025706487157994
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7412200458782873404}
+  m_Layer: 0
+  m_Name: middle_02_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7412200458782873404
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8510025706487157994}
+  m_LocalRotation: {x: 0.0397234, y: -0.0012610572, z: -0.037636917, w: 0.9985008}
+  m_LocalPosition: {x: 0.000000057220458, y: 0.03557577, z: -0.000000095367426}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 7873184720479320372}
+  m_Father: {fileID: 2769126442181095839}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8523462091788385456
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1749438799305010385}
+  m_Layer: 0
+  m_Name: Rig
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1749438799305010385
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8523462091788385456}
+  m_LocalRotation: {x: 0.00000008146034, y: 0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 10, y: 10, z: 10}
+  m_Children:
+  - {fileID: 3633927752357243660}
+  m_Father: {fileID: 1991223601103269484}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8628250266713682854
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6356184877508230158}
+  m_Layer: 0
+  m_Name: hand_l
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6356184877508230158
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8628250266713682854}
+  m_LocalRotation: {x: 0.11200059, y: -0.4210099, z: 0.01338769, w: 0.9000152}
+  m_LocalPosition: {x: -0.000000094175334, y: 0.2059682, z: 0.000000047683713}
+  m_LocalScale: {x: 1.0000001, y: 0.99999994, z: 0.9999999}
+  m_Children:
+  - {fileID: 3753598883267876095}
+  - {fileID: 2769126442181095839}
+  - {fileID: 344849169733922766}
+  - {fileID: 8899191760836533126}
+  - {fileID: 3744895862654381441}
+  m_Father: {fileID: 4823269440029851066}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &9049700418975316522
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5384307842313901854}
+  m_Layer: 0
+  m_Name: ball_r
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5384307842313901854
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 9049700418975316522}
+  m_LocalRotation: {x: -0.2723211, y: 0.016998978, z: 0.0042764302, w: 0.96204674}
+  m_LocalPosition: {x: 0.000000010356307, y: 0.13355854, z: -0.000000002980232}
+  m_LocalScale: {x: 1.0000001, y: 1, z: 1.0000001}
+  m_Children:
+  - {fileID: 6933412268036067728}
+  m_Father: {fileID: 5580296537604435804}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 7 - 0
Assets/Skeleton-Low Poly/Prefab/Skeleton-Low Poly.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: c0967da9816be5042b63b01436b57a82
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Skeleton-Low Poly/Scene.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 01f397b14723c4b47aaabd62b2d34857
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 367 - 0
Assets/Skeleton-Low Poly/Scene/Example.unity

@@ -0,0 +1,367 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 9
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 0
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 705507994}
+  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 11
+  m_GIWorkflowMode: 1
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 1
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 2
+    m_BakeResolution: 40
+    m_AtlasSize: 1024
+    m_AO: 0
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    m_LightmapParameters: {fileID: 0}
+    m_LightmapsBakeMode: 1
+    m_TextureCompression: 1
+    m_FinalGather: 0
+    m_FinalGatherFiltering: 1
+    m_FinalGatherRayCount: 256
+    m_ReflectionCompression: 2
+    m_MixedBakeMode: 2
+    m_BakeBackend: 1
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 500
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 500
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 2
+    m_PVRDenoiserTypeDirect: 0
+    m_PVRDenoiserTypeIndirect: 0
+    m_PVRDenoiserTypeAO: 0
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 0
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ExportTrainingData: 0
+    m_TrainingDataDestination: TrainingData
+    m_LightProbeSampleCountMultiplier: 4
+  m_LightingDataAsset: {fileID: 0}
+  m_UseShadowmask: 1
+--- !u!196 &4
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 2
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666667
+    manualTileSize: 0
+    tileSize: 256
+    accuratePlacement: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &705507993
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 705507995}
+  - component: {fileID: 705507994}
+  m_Layer: 0
+  m_Name: Directional Light
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!108 &705507994
+Light:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 705507993}
+  m_Enabled: 1
+  serializedVersion: 10
+  m_Type: 1
+  m_Shape: 0
+  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+  m_Intensity: 1
+  m_Range: 10
+  m_SpotAngle: 30
+  m_InnerSpotAngle: 21.80208
+  m_CookieSize: 10
+  m_Shadows:
+    m_Type: 2
+    m_Resolution: -1
+    m_CustomResolution: -1
+    m_Strength: 1
+    m_Bias: 0.05
+    m_NormalBias: 0.4
+    m_NearPlane: 0.2
+    m_CullingMatrixOverride:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+    m_UseCullingMatrixOverride: 0
+  m_Cookie: {fileID: 0}
+  m_DrawHalo: 0
+  m_Flare: {fileID: 0}
+  m_RenderMode: 0
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingLayerMask: 1
+  m_Lightmapping: 1
+  m_LightShadowCasterMode: 0
+  m_AreaSize: {x: 1, y: 1}
+  m_BounceIntensity: 1
+  m_ColorTemperature: 6570
+  m_UseColorTemperature: 0
+  m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+  m_UseBoundingSphereOverride: 0
+  m_ShadowRadius: 0
+  m_ShadowAngle: 0
+--- !u!4 &705507995
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 705507993}
+  m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
+  m_LocalPosition: {x: 0, y: 8.3, z: -20.7}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
+--- !u!1 &963194225
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 963194228}
+  - component: {fileID: 963194227}
+  - component: {fileID: 963194226}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &963194226
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_Enabled: 1
+--- !u!20 &963194227
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 2
+  m_BackGroundColor: {r: 0.36845854, g: 0.37191963, b: 0.3773585, a: 0}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_FocalLength: 50
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 60
+  orthographic: 0
+  orthographic size: 5
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 3
+  m_HDR: 1
+  m_AllowMSAA: 1
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 1
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &963194228
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_LocalRotation: {x: 0.047132816, y: 0.94311213, z: -0.15237918, w: 0.29171658}
+  m_LocalPosition: {x: -6.03, y: 13.21, z: 11.25}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 18.356, y: 145.625, z: 0}
+--- !u!1001 &1341811759
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications:
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_RootOrder
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1991223601103269484, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3312791736747859071, guid: c0967da9816be5042b63b01436b57a82,
+        type: 3}
+      propertyPath: m_Name
+      value: Skeleton-Low Poly
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: c0967da9816be5042b63b01436b57a82, type: 3}

+ 7 - 0
Assets/Skeleton-Low Poly/Scene/Example.unity.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1d103ecbe904c8c44a36fc622d5978e1
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Skeleton-Low Poly/Texture.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1aa3963751c0b9c49a369d61c836c89c
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Skeleton-Low Poly/Texture/Skeleton-Albedo.png


+ 92 - 0
Assets/Skeleton-Low Poly/Texture/Skeleton-Albedo.png.meta

@@ -0,0 +1,92 @@
+fileFormatVersion: 2
+guid: ba9c659d7dd9a9d4aa8ad3855e266d43
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -100
+    wrapU: -1
+    wrapV: -1
+    wrapW: -1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Standard Assets.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bf464b21f1cf46d46996f9d576c91b01
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 58 - 0
Assets/Standard Assets/CameraIntrinsics.cs

@@ -0,0 +1,58 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Kinect
+{
+    //
+    // Windows.Kinect.CameraIntrinsics
+    //
+    [RootSystem.Runtime.InteropServices.StructLayout(RootSystem.Runtime.InteropServices.LayoutKind.Sequential)]
+    public struct CameraIntrinsics
+    {
+        public float FocalLengthX { get; set; }
+        public float FocalLengthY { get; set; }
+        public float PrincipalPointX { get; set; }
+        public float PrincipalPointY { get; set; }
+        public float RadialDistortionSecondOrder { get; set; }
+        public float RadialDistortionFourthOrder { get; set; }
+        public float RadialDistortionSixthOrder { get; set; }
+
+        public override int GetHashCode()
+        {
+            return FocalLengthX.GetHashCode() ^ FocalLengthY.GetHashCode() ^
+                PrincipalPointX.GetHashCode() ^ PrincipalPointY.GetHashCode() ^
+                RadialDistortionSecondOrder.GetHashCode() ^ RadialDistortionFourthOrder.GetHashCode() ^
+                RadialDistortionSixthOrder.GetHashCode();
+        }
+
+        public override bool Equals(object obj)
+        {
+            if (!(obj is CameraIntrinsics))
+            {
+                return false;
+            }
+
+            return this.Equals((CameraIntrinsics)obj);
+        }
+
+        public bool Equals(CameraIntrinsics obj)
+        {
+            return FocalLengthX.Equals(obj.FocalLengthX) && FocalLengthY.Equals(obj.FocalLengthY) &&
+                PrincipalPointX.Equals(obj.PrincipalPointX) && PrincipalPointY.Equals(obj.PrincipalPointY) &&
+                RadialDistortionSecondOrder.Equals(obj.RadialDistortionSecondOrder) &&
+                RadialDistortionFourthOrder.Equals(obj.RadialDistortionFourthOrder) &&
+                RadialDistortionSixthOrder.Equals(obj.RadialDistortionSixthOrder);
+        }
+
+        public static bool operator ==(CameraIntrinsics a, CameraIntrinsics b)
+        {
+            return a.Equals(b);
+        }
+
+        public static bool operator !=(CameraIntrinsics a, CameraIntrinsics b)
+        {
+            return !(a.Equals(b));
+        }
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/CameraIntrinsics.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bc11ab9581163ba44b721acb44ce8763
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 26 - 0
Assets/Standard Assets/CollectionMap.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Helper
+{
+    class CollectionMap<TKey, TValue> : Helper.ThreadSafeDictionary<TKey, TValue> where TValue : new()
+    {
+        public bool TryAddDefault(TKey key)
+        {
+            lock (_impl)
+            {
+                if (!_impl.ContainsKey(key))
+                {
+                    _impl.Add(key, new TValue());
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/CollectionMap.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b404867256ddca245871a9152fd54294
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Standard Assets/Editor.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3e9f729cf36854b48b2bc05b18c4aa9e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 70 - 0
Assets/Standard Assets/Editor/KinectCopyPluginDataHelper.cs

@@ -0,0 +1,70 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections.Generic;
+using System.IO;
+
+public static class KinectCopyPluginDataHelper
+{
+    private const string DataDirSuffix = "_Data";
+    private const string PluginsDirName = "Plugins";
+
+    private static Dictionary<BuildTarget, string> TargetToDirName = new Dictionary<BuildTarget, string>()
+        {
+            {BuildTarget.StandaloneWindows, "x86"},
+            {BuildTarget.StandaloneWindows64, "x86_64"}
+        };
+
+    public static void CopyPluginData(BuildTarget target, string buildTargetPath, string subDirToCopy)
+    {
+        string subDirName;
+        if (!TargetToDirName.TryGetValue (target, out subDirName))
+        {
+            // No work to do
+            return;
+        }
+
+        // Get Required Paths
+        var buildName = Path.GetFileNameWithoutExtension(buildTargetPath);
+        var targetDir = Directory.GetParent(buildTargetPath);
+        var separator = Path.DirectorySeparatorChar;
+
+        var buildDataDir = targetDir.FullName + separator + buildName + DataDirSuffix + separator;
+        var tgtPluginsDir = buildDataDir + separator + PluginsDirName + separator + subDirToCopy + separator;
+        var srcPluginsDir = Application.dataPath + separator + PluginsDirName + separator + subDirName + separator + subDirToCopy + separator;
+
+        CopyAll (new DirectoryInfo (srcPluginsDir), new DirectoryInfo(tgtPluginsDir));
+    }
+
+    /// <summary>
+    /// Recursive Copy Directory Method
+    /// </summary>
+    private static void CopyAll(DirectoryInfo source, DirectoryInfo target)
+    {
+        // Check if the source directory exists, if not, don't do any work.
+        if (!Directory.Exists(source.FullName))
+        {
+            return;
+        }
+
+        // Check if the target directory exists, if not, create it.
+        if (!Directory.Exists(target.FullName))
+        {
+            Directory.CreateDirectory(target.FullName);
+        }
+
+        // Copy each file into it’s new directory.
+        foreach (var fileInfo in source.GetFiles())
+        {
+            fileInfo.CopyTo (Path.Combine (target.ToString (), fileInfo.Name), true);
+        }
+        
+        // Copy each subdirectory using recursion.
+        foreach (var subDirInfo in source.GetDirectories())
+        {
+            DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(subDirInfo.Name);
+            CopyAll(subDirInfo, nextTargetSubDir);
+        }
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/Editor/KinectCopyPluginDataHelper.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a103df75c03c9c54096627354fdb1398
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 78 - 0
Assets/Standard Assets/EventPump.cs

@@ -0,0 +1,78 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Linq;
+
+namespace Helper
+{
+    internal class EventPump : UnityEngine.MonoBehaviour
+    {
+        private static object s_Lock = new object();
+        private Queue<Action> m_Queue = new Queue<Action>();
+
+        public static EventPump Instance
+        {
+            get;
+            private set;
+        }
+
+        public static void EnsureInitialized()
+        {
+            try
+            {
+                if (EventPump.Instance == null)
+                {
+                    lock (s_Lock)
+                    {
+                        if (EventPump.Instance == null)
+                        {
+                            UnityEngine.GameObject parent = new UnityEngine.GameObject("Kinect Desktop Event Pump");
+                            EventPump.Instance = parent.AddComponent<Helper.EventPump>();
+                            DontDestroyOnLoad(parent);
+                        }
+                    }
+                }
+            }
+            catch
+            {
+                UnityEngine.Debug.LogError("Events must be registered on the main thread.");
+                return;
+            }
+        }
+
+        private void Update()
+        {
+            lock (m_Queue)
+            {
+                while (m_Queue.Count > 0)
+                {
+                    var action = m_Queue.Dequeue();
+                    try
+                    {
+                        action.Invoke();
+                    }
+                    catch { }
+                }
+            }
+        }
+
+        private void OnApplicationQuit()
+        {
+            var sensor = Windows.Kinect.KinectSensor.GetDefault();
+            if (sensor != null && sensor.IsOpen)
+            {
+                sensor.Close();
+            }
+
+            NativeObjectCache.Flush();
+        }
+
+        public void Enqueue(Action action)
+        {
+            lock (m_Queue)
+            {
+                m_Queue.Enqueue(action);
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/EventPump.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: debd3e6b79ccfa7439ef3bc59b8d30e6
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 50 - 0
Assets/Standard Assets/ExceptionHelper.cs

@@ -0,0 +1,50 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Helper
+{
+    public static class ExceptionHelper
+    {
+        private const int E_NOTIMPL = unchecked((int)0x80004001);
+        private const int E_OUTOFMEMORY = unchecked((int)0x8007000E);
+        private const int E_INVALIDARG = unchecked((int)0x80070057);
+        private const int E_POINTER = unchecked((int) 0x80004003);
+        private const int E_PENDING = unchecked((int)0x8000000A);
+        private const int E_FAIL = unchecked((int)0x80004005);
+
+        public static void CheckLastError()
+        {
+            int hr = Marshal.GetLastWin32Error();
+
+            if ((hr == E_PENDING) || (hr == E_FAIL))
+            {
+                // Ignore E_PENDING/E_FAIL - We use this to indicate no pending or missed frames
+                return;
+            }
+
+            if (hr < 0)
+            {
+                Exception exception = Marshal.GetExceptionForHR(hr);
+                string message = string.Format("This API has returned an exception from an HRESULT: 0x{0:X}", hr);
+
+                switch (hr)
+                {
+                    case E_NOTIMPL:
+                        throw new NotImplementedException(message, exception);
+
+                    case E_OUTOFMEMORY:
+                        throw new OutOfMemoryException(message, exception);
+
+                    case E_INVALIDARG:
+                        throw new ArgumentException(message, exception);
+
+                    case E_POINTER:
+                        throw new ArgumentNullException(message, exception);
+
+                    default:
+                        throw new InvalidOperationException(message, exception);
+                }
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/ExceptionHelper.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 86085617855511d45b0648e6b62e1584
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 12 - 0
Assets/Standard Assets/INativeWrapper.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Linq;
+
+namespace Helper
+{
+    internal interface INativeWrapper
+    {
+        System.IntPtr nativePtr { get; }
+    }
+}

+ 11 - 0
Assets/Standard Assets/INativeWrapper.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 010db25b57d940546a60549c96171b70
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 129 - 0
Assets/Standard Assets/KinectBuffer.cs

@@ -0,0 +1,129 @@
+using RootSystem = System;
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace Windows.Kinect
+{
+    // NOTE: This uses an IBuffer under the covers, it is renamed here to give parity to our managed APIs.
+    public class KinectBuffer : Helper.INativeWrapper, IDisposable
+    {
+        internal RootSystem.IntPtr _pNative;
+
+        RootSystem.IntPtr Helper.INativeWrapper.nativePtr { get { return _pNative; } }
+
+        // Constructors and Finalizers
+        internal KinectBuffer(RootSystem.IntPtr pNative)
+        {
+            _pNative = pNative;
+            Windows_Storage_Streams_IBuffer_AddRefObject(ref _pNative);
+        }
+
+        ~KinectBuffer()
+        {
+            Dispose(false);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
+        private static extern void Windows_Storage_Streams_IBuffer_ReleaseObject(ref RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
+        private static extern void Windows_Storage_Streams_IBuffer_AddRefObject(ref RootSystem.IntPtr pNative);
+        private void Dispose(bool disposing)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            Helper.NativeObjectCache.RemoveObject<KinectBuffer>(_pNative);
+
+            if (disposing)
+            {
+                Windows_Storage_Streams_IBuffer_Dispose(_pNative);
+            }
+
+            Windows_Storage_Streams_IBuffer_ReleaseObject(ref _pNative);
+
+            _pNative = RootSystem.IntPtr.Zero;
+        }
+
+
+        // Public Properties
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern uint Windows_Storage_Streams_IBuffer_get_Capacity(RootSystem.IntPtr pNative);
+        public uint Capacity
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("KinectBuffer");
+                }
+
+                uint capacity = Windows_Storage_Streams_IBuffer_get_Capacity(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+                return capacity;
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern uint Windows_Storage_Streams_IBuffer_get_Length(RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern void Windows_Storage_Streams_IBuffer_put_Length(RootSystem.IntPtr pNative, uint value);
+        public uint Length
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("KinectBuffer");
+                }
+
+                uint length = Windows_Storage_Streams_IBuffer_get_Length(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+                return length;
+            }
+            set
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("KinectBuffer");
+                }
+
+                Windows_Storage_Streams_IBuffer_put_Length(_pNative, value);
+                Helper.ExceptionHelper.CheckLastError();
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
+        private static extern void Windows_Storage_Streams_IBuffer_Dispose(RootSystem.IntPtr pNative);
+        // Constructors and Finalizers
+        public void Dispose()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("KinectBuffer");
+            }
+
+            Dispose(true);
+            RootSystem.GC.SuppressFinalize(this);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Storage_Streams_IBuffer_get_UnderlyingBuffer(RootSystem.IntPtr pNative);
+        public IntPtr UnderlyingBuffer
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("KinectBuffer");
+                }
+
+                RootSystem.IntPtr value = Windows_Storage_Streams_IBuffer_get_UnderlyingBuffer(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+                return value;
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/KinectBuffer.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a27f97f1b27134f4bbee290cf18c791c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 604 - 0
Assets/Standard Assets/KinectSpecialCases.cs

@@ -0,0 +1,604 @@
+using RootSystem = System;
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace Windows.Kinect
+{
+    [RootSystem.Runtime.InteropServices.StructLayout(RootSystem.Runtime.InteropServices.LayoutKind.Sequential)]
+    public struct PointF
+    {
+        public float X { get; set; }
+        public float Y { get; set; }
+
+        public override int GetHashCode()
+        {
+            return X.GetHashCode() ^ Y.GetHashCode();
+        }
+
+        public override bool Equals(object obj)
+        {
+            if (!(obj is PointF))
+            {
+                return false;
+            }
+
+            return this.Equals((ColorSpacePoint)obj);
+        }
+
+        public bool Equals(ColorSpacePoint obj)
+        {
+            return (X == obj.X) && (Y == obj.Y);
+        }
+
+        public static bool operator ==(PointF a, PointF b)
+        {
+            return a.Equals(b);
+        }
+
+        public static bool operator !=(PointF a, PointF b)
+        {
+            return !(a.Equals(b));
+        }
+    }
+
+    public sealed partial class AudioBeamSubFrame
+    {
+        [RootSystem.Runtime.InteropServices.DllImport(
+            "KinectUnityAddin",
+            EntryPoint = "Windows_Kinect_AudioBeamSubFrame_CopyFrameDataToArray",
+            CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl,
+            SetLastError = true)]
+        private static extern void Windows_Kinect_AudioBeamSubFrame_CopyFrameDataToIntPtr(RootSystem.IntPtr pNative, RootSystem.IntPtr frameData, uint frameDataSize);
+        public void CopyFrameDataToIntPtr(RootSystem.IntPtr frameData, uint size)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("AudioBeamSubFrame");
+            }
+
+            Windows_Kinect_AudioBeamSubFrame_CopyFrameDataToIntPtr(_pNative, frameData, size);
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_AudioBeamSubFrame_LockAudioBuffer(RootSystem.IntPtr pNative);
+        public Windows.Kinect.KinectBuffer LockAudioBuffer()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("AudioBeamSubFrame");
+            }
+
+            RootSystem.IntPtr objectPointer = Windows_Kinect_AudioBeamSubFrame_LockAudioBuffer(_pNative);
+            Helper.ExceptionHelper.CheckLastError();
+
+            if (objectPointer == RootSystem.IntPtr.Zero)
+            {
+                return null;
+            }
+
+            return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.KinectBuffer>(objectPointer, n => new Windows.Kinect.KinectBuffer(n));
+        }
+    }
+
+    public sealed partial class AudioBeamFrame
+    {
+        private Windows.Kinect.AudioBeamSubFrame[] _subFrames = null;
+
+        private void Dispose(bool disposing)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            if (_subFrames != null)
+            {
+                foreach (var subFrame in _subFrames)
+                {
+                    subFrame.Dispose();
+                }
+
+                _subFrames = null;
+            }
+
+            __EventCleanup();
+
+            Helper.NativeObjectCache.RemoveObject<AudioBeamFrame>(_pNative);
+            Windows_Kinect_AudioBeamFrame_ReleaseObject(ref _pNative);
+
+            if (disposing)
+            {
+                Windows_Kinect_AudioBeamFrame_Dispose(_pNative);
+            }
+
+            _pNative = RootSystem.IntPtr.Zero;
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
+        private static extern void Windows_Kinect_AudioBeamFrame_Dispose(RootSystem.IntPtr pNative);
+        public void Dispose()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            Dispose(true);
+            RootSystem.GC.SuppressFinalize(this);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern int Windows_Kinect_AudioBeamFrame_get_SubFrames(RootSystem.IntPtr pNative, [RootSystem.Runtime.InteropServices.Out] RootSystem.IntPtr[] outCollection, int outCollectionSize);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
+        private static extern int Windows_Kinect_AudioBeamFrame_get_SubFrames_Length(RootSystem.IntPtr pNative);
+        public RootSystem.Collections.Generic.IList<Windows.Kinect.AudioBeamSubFrame> SubFrames
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrame");
+                }
+
+                if (_subFrames == null)
+                {
+                    int collectionSize = Windows_Kinect_AudioBeamFrame_get_SubFrames_Length(_pNative);
+                    var outCollection = new RootSystem.IntPtr[collectionSize];
+                    _subFrames = new Windows.Kinect.AudioBeamSubFrame[collectionSize];
+
+                    collectionSize = Windows_Kinect_AudioBeamFrame_get_SubFrames(_pNative, outCollection, collectionSize);
+                    Helper.ExceptionHelper.CheckLastError();
+
+                    for (int i = 0; i < collectionSize; i++)
+                    {
+                        if (outCollection[i] == RootSystem.IntPtr.Zero)
+                        {
+                            continue;
+                        }
+
+                        var obj = Helper.NativeObjectCache.GetObject<Windows.Kinect.AudioBeamSubFrame>(outCollection[i]);
+                        if (obj == null)
+                        {
+                            obj = new Windows.Kinect.AudioBeamSubFrame(outCollection[i]);
+                            Helper.NativeObjectCache.AddObject<Windows.Kinect.AudioBeamSubFrame>(outCollection[i], obj);
+                        }
+
+                        _subFrames[i] = obj;
+                    }
+                }
+
+                return _subFrames;
+            }
+        }
+    }
+
+    public sealed partial class BodyFrame
+    {
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern void Windows_Kinect_BodyFrame_GetAndRefreshBodyData(RootSystem.IntPtr pNative, [RootSystem.Runtime.InteropServices.Out] RootSystem.IntPtr[] bodies, int bodiesSize);
+        public void GetAndRefreshBodyData(RootSystem.Collections.Generic.IList<Windows.Kinect.Body> bodies)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("BodyFrame");
+            }
+
+            int _bodies_idx = 0;
+            var _bodies = new RootSystem.IntPtr[bodies.Count];
+            for (int i = 0; i < bodies.Count; i++)
+            {
+                if (bodies[i] == null)
+                {
+                    bodies[i] = new Body();
+                }
+
+                _bodies[_bodies_idx] = bodies[i].GetIntPtr();
+                _bodies_idx++;
+            }
+
+            Windows_Kinect_BodyFrame_GetAndRefreshBodyData(_pNative, _bodies, bodies.Count);
+            Helper.ExceptionHelper.CheckLastError();
+
+            for (int i = 0; i < bodies.Count; i++)
+            {
+                bodies[i].SetIntPtr(_bodies[i]);
+            }
+        }
+    }
+
+    public sealed partial class Body
+    {
+        internal void SetIntPtr(RootSystem.IntPtr value) { _pNative = value; }
+        internal RootSystem.IntPtr GetIntPtr() { return _pNative; }
+
+        internal Body() { }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_Body_get_Lean(RootSystem.IntPtr pNative);
+        public Windows.Kinect.PointF Lean
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("Body");
+                }
+
+                var objectPointer = Windows_Kinect_Body_get_Lean(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+
+                var obj = (Windows.Kinect.PointF)RootSystem.Runtime.InteropServices.Marshal.PtrToStructure(objectPointer, typeof(Windows.Kinect.PointF));
+                RootSystem.Runtime.InteropServices.Marshal.FreeHGlobal(objectPointer);
+                return obj;
+            }
+        }
+    }
+
+    public sealed partial class ColorFrame
+    {
+        [RootSystem.Runtime.InteropServices.DllImport(
+            "KinectUnityAddin",
+            EntryPoint = "Windows_Kinect_ColorFrame_CopyRawFrameDataToArray",
+            CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl,
+            SetLastError = true)]
+        private static extern void Windows_Kinect_ColorFrame_CopyRawFrameDataToIntPtr(RootSystem.IntPtr pNative, IntPtr frameData, uint frameDataSize);
+        public void CopyRawFrameDataToIntPtr(RootSystem.IntPtr frameData, uint size)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("ColorFrame");
+            }
+
+            Windows_Kinect_ColorFrame_CopyRawFrameDataToIntPtr(_pNative, frameData, size);
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport(
+            "KinectUnityAddin",
+            EntryPoint = "Windows_Kinect_ColorFrame_CopyConvertedFrameDataToArray",
+            CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl,
+            SetLastError = true)]
+        private static extern void Windows_Kinect_ColorFrame_CopyConvertedFrameDataToIntPtr(RootSystem.IntPtr pNative, IntPtr frameData, uint frameDataSize, Windows.Kinect.ColorImageFormat colorFormat);
+        public void CopyConvertedFrameDataToIntPtr(RootSystem.IntPtr frameData, uint size, Windows.Kinect.ColorImageFormat colorFormat)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("ColorFrame");
+            }
+
+            Windows_Kinect_ColorFrame_CopyConvertedFrameDataToIntPtr(_pNative, frameData, size, colorFormat);
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_ColorFrame_LockRawImageBuffer(RootSystem.IntPtr pNative);
+        public Windows.Kinect.KinectBuffer LockRawImageBuffer()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("ColorFrame");
+            }
+
+            RootSystem.IntPtr objectPointer = Windows_Kinect_ColorFrame_LockRawImageBuffer(_pNative);
+            Helper.ExceptionHelper.CheckLastError();
+
+            if (objectPointer == RootSystem.IntPtr.Zero)
+            {
+                return null;
+            }
+
+            return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.KinectBuffer>(objectPointer, n => new Windows.Kinect.KinectBuffer(n));
+        }
+
+    }
+
+    public sealed partial class DepthFrame
+    {
+        [RootSystem.Runtime.InteropServices.DllImport(
+            "KinectUnityAddin",
+            EntryPoint = "Windows_Kinect_DepthFrame_CopyFrameDataToArray",
+            CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl,
+            SetLastError = true)]
+        private static extern void Windows_Kinect_DepthFrame_CopyFrameDataToIntPtr(RootSystem.IntPtr pNative, IntPtr frameData, uint frameDataSize);
+        public void CopyFrameDataToIntPtr(RootSystem.IntPtr frameData, uint size)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("DepthFrame");
+            }
+
+            Windows_Kinect_DepthFrame_CopyFrameDataToIntPtr(_pNative, frameData, size / sizeof(ushort));
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_DepthFrame_LockImageBuffer(RootSystem.IntPtr pNative);
+        public Windows.Kinect.KinectBuffer LockImageBuffer()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("DepthFrame");
+            }
+
+            RootSystem.IntPtr objectPointer = Windows_Kinect_DepthFrame_LockImageBuffer(_pNative);
+            Helper.ExceptionHelper.CheckLastError();
+
+            if (objectPointer == RootSystem.IntPtr.Zero)
+            {
+                return null;
+            }
+
+            return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.KinectBuffer>(objectPointer, n => new Windows.Kinect.KinectBuffer(n));
+        }
+    }
+
+    public sealed partial class BodyIndexFrame
+    {
+        [RootSystem.Runtime.InteropServices.DllImport(
+            "KinectUnityAddin",
+            EntryPoint = "Windows_Kinect_BodyIndexFrame_CopyFrameDataToArray",
+            CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl,
+            SetLastError = true)]
+        private static extern void Windows_Kinect_BodyIndexFrame_CopyFrameDataToIntPtr(RootSystem.IntPtr pNative, IntPtr frameData, uint frameDataSize);
+        public void CopyFrameDataToIntPtr(RootSystem.IntPtr frameData, uint size)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("BodyIndexFrame");
+            }
+
+            Windows_Kinect_BodyIndexFrame_CopyFrameDataToIntPtr(_pNative, frameData, size);
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_BodyIndexFrame_LockImageBuffer(RootSystem.IntPtr pNative);
+        public Windows.Kinect.KinectBuffer LockImageBuffer()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("BodyIndexFrame");
+            }
+
+            RootSystem.IntPtr objectPointer = Windows_Kinect_BodyIndexFrame_LockImageBuffer(_pNative);
+            Helper.ExceptionHelper.CheckLastError();
+
+            if (objectPointer == RootSystem.IntPtr.Zero)
+            {
+                return null;
+            }
+
+            return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.KinectBuffer>(objectPointer, n => new Windows.Kinect.KinectBuffer(n));
+        }
+
+    }
+
+    public sealed partial class InfraredFrame
+    {
+        [RootSystem.Runtime.InteropServices.DllImport(
+            "KinectUnityAddin",
+            EntryPoint = "Windows_Kinect_InfraredFrame_CopyFrameDataToArray",
+            CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl,
+            SetLastError = true)]
+        private static extern void Windows_Kinect_InfraredFrame_CopyFrameDataToIntPtr(RootSystem.IntPtr pNative, IntPtr frameData, uint frameDataSize);
+        public void CopyFrameDataToIntPtr(RootSystem.IntPtr frameData, uint size)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("InfraredFrame");
+            }
+
+            Windows_Kinect_InfraredFrame_CopyFrameDataToIntPtr(_pNative, frameData, size / sizeof(ushort));
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_InfraredFrame_LockImageBuffer(RootSystem.IntPtr pNative);
+        public Windows.Kinect.KinectBuffer LockImageBuffer()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("InfraredFrame");
+            }
+
+            RootSystem.IntPtr objectPointer = Windows_Kinect_InfraredFrame_LockImageBuffer(_pNative);
+            Helper.ExceptionHelper.CheckLastError();
+
+            if (objectPointer == RootSystem.IntPtr.Zero)
+            {
+                return null;
+            }
+
+            return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.KinectBuffer>(objectPointer, n => new Windows.Kinect.KinectBuffer(n));
+        }
+
+    }
+
+    public sealed partial class KinectSensor
+    {
+        private void Dispose(bool disposing)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            if (IsOpen)
+            {
+                Close();
+            }
+
+            __EventCleanup();
+
+            Helper.NativeObjectCache.RemoveObject<KinectSensor>(_pNative);
+            Windows_Kinect_KinectSensor_ReleaseObject(ref _pNative);
+
+            _pNative = RootSystem.IntPtr.Zero;
+        }
+    }
+
+    public sealed partial class LongExposureInfraredFrame
+    {
+        [RootSystem.Runtime.InteropServices.DllImport(
+            "KinectUnityAddin",
+            EntryPoint = "Windows_Kinect_LongExposureInfraredFrame_CopyFrameDataToArray",
+            CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl,
+            SetLastError = true)]
+        private static extern void Windows_Kinect_LongExposureInfraredFrame_CopyFrameDataToIntPtr(RootSystem.IntPtr pNative, IntPtr frameData, uint frameDataSize);
+        public void CopyFrameDataToIntPtr(RootSystem.IntPtr frameData, uint size)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("LongExposureInfraredFrame");
+            }
+
+            Windows_Kinect_LongExposureInfraredFrame_CopyFrameDataToIntPtr(_pNative, frameData, size / sizeof(ushort));
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_LongExposureInfraredFrame_LockImageBuffer(RootSystem.IntPtr pNative);
+        public Windows.Kinect.KinectBuffer LockImageBuffer()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("LongExposureInfraredFrame");
+            }
+
+            RootSystem.IntPtr objectPointer = Windows_Kinect_LongExposureInfraredFrame_LockImageBuffer(_pNative);
+            Helper.ExceptionHelper.CheckLastError();
+
+            if (objectPointer == RootSystem.IntPtr.Zero)
+            {
+                return null;
+            }
+
+            return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.KinectBuffer>(objectPointer, n => new Windows.Kinect.KinectBuffer(n));
+        }
+
+    }
+
+    public sealed partial class CoordinateMapper
+    {
+        private PointF[] _DepthFrameToCameraSpaceTable = null;
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_CoordinateMapper_GetDepthCameraIntrinsics(RootSystem.IntPtr pNative);
+        public Windows.Kinect.CameraIntrinsics GetDepthCameraIntrinsics()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("CoordinateMapper");
+            }
+
+            var objectPointer = Windows_Kinect_CoordinateMapper_GetDepthCameraIntrinsics(_pNative);
+            Helper.ExceptionHelper.CheckLastError();
+
+            var obj = (Windows.Kinect.CameraIntrinsics)RootSystem.Runtime.InteropServices.Marshal.PtrToStructure(objectPointer, typeof(Windows.Kinect.CameraIntrinsics));
+            RootSystem.Runtime.InteropServices.Marshal.FreeHGlobal(objectPointer);
+            return obj;
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern int Windows_Kinect_CoordinateMapper_GetDepthFrameToCameraSpaceTable(RootSystem.IntPtr pNative, RootSystem.IntPtr outCollection, uint outCollectionSize);
+        public Windows.Kinect.PointF[] GetDepthFrameToCameraSpaceTable()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("CoordinateMapper");
+            }
+
+            if (_DepthFrameToCameraSpaceTable == null)
+            {
+                var desc = KinectSensor.GetDefault().DepthFrameSource.FrameDescription;
+                _DepthFrameToCameraSpaceTable = new PointF[desc.Width * desc.Height];
+
+                var pointsSmartGCHandle = new Helper.SmartGCHandle(RootSystem.Runtime.InteropServices.GCHandle.Alloc(_DepthFrameToCameraSpaceTable, RootSystem.Runtime.InteropServices.GCHandleType.Pinned));
+                var _points = pointsSmartGCHandle.AddrOfPinnedObject();
+                Windows_Kinect_CoordinateMapper_GetDepthFrameToCameraSpaceTable(_pNative, _points, (uint)_DepthFrameToCameraSpaceTable.Length);
+                Helper.ExceptionHelper.CheckLastError();
+            }
+
+            return _DepthFrameToCameraSpaceTable;
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern void Windows_Kinect_CoordinateMapper_MapColorFrameToDepthSpace(
+            RootSystem.IntPtr pNative,
+            RootSystem.IntPtr depthFrameData,
+            uint depthFrameDataSize,
+            RootSystem.IntPtr depthSpacePoints,
+            uint depthSpacePointsSize);
+        public void MapColorFrameToDepthSpaceUsingIntPtr(RootSystem.IntPtr depthFrameData, uint depthFrameSize, RootSystem.IntPtr depthSpacePoints, uint depthSpacePointsSize)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("CoordinateMapper");
+            }
+
+            uint length = depthFrameSize / sizeof(UInt16);
+            Windows_Kinect_CoordinateMapper_MapColorFrameToDepthSpace(_pNative, depthFrameData, length, depthSpacePoints, depthSpacePointsSize);
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern void Windows_Kinect_CoordinateMapper_MapColorFrameToCameraSpace(
+            RootSystem.IntPtr pNative,
+            RootSystem.IntPtr depthFrameData,
+            uint depthFrameDataSize,
+            RootSystem.IntPtr cameraSpacePoints,
+            uint cameraSpacePointsSize);
+        public void MapColorFrameToCameraSpaceUsingIntPtr(RootSystem.IntPtr depthFrameData, int depthFrameSize, RootSystem.IntPtr cameraSpacePoints, uint cameraSpacePointsSize)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("CoordinateMapper");
+            }
+
+            uint length = (uint)depthFrameSize / sizeof(UInt16);
+            Windows_Kinect_CoordinateMapper_MapColorFrameToCameraSpace(_pNative, depthFrameData, length, cameraSpacePoints, cameraSpacePointsSize);
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern void Windows_Kinect_CoordinateMapper_MapDepthFrameToColorSpace(
+            RootSystem.IntPtr pNative,
+            RootSystem.IntPtr depthFrameData,
+            uint depthFrameDataSize,
+            RootSystem.IntPtr colorSpacePoints,
+            uint colorSpacePointsSize);
+        public void MapDepthFrameToColorSpaceUsingIntPtr(RootSystem.IntPtr depthFrameData, int depthFrameSize, RootSystem.IntPtr colorSpacePoints, uint colorSpacePointsSize)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("CoordinateMapper");
+            }
+
+            uint length = (uint)depthFrameSize / sizeof(UInt16);
+            Windows_Kinect_CoordinateMapper_MapDepthFrameToColorSpace(_pNative, depthFrameData, length, colorSpacePoints, colorSpacePointsSize);
+            Helper.ExceptionHelper.CheckLastError();
+        }
+
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention = RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError = true)]
+        private static extern void Windows_Kinect_CoordinateMapper_MapDepthFrameToCameraSpace(
+            RootSystem.IntPtr pNative,
+            IntPtr depthFrameData,
+            uint depthFrameDataSize,
+            RootSystem.IntPtr cameraSpacePoints,
+            uint cameraSpacePointsSize);
+        public void MapDepthFrameToCameraSpaceUsingIntPtr(RootSystem.IntPtr depthFrameData, int depthFrameSize, RootSystem.IntPtr cameraSpacePoints, uint cameraSpacePointsSize)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("CoordinateMapper");
+            }
+
+            uint length = (uint)depthFrameSize / sizeof(UInt16);
+            Windows_Kinect_CoordinateMapper_MapDepthFrameToCameraSpace(_pNative, depthFrameData, length, cameraSpacePoints, cameraSpacePointsSize);
+            Helper.ExceptionHelper.CheckLastError();
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/KinectSpecialCases.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c59b79770236fae42a76e291570f2447
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 136 - 0
Assets/Standard Assets/NativeObjectCache.cs

@@ -0,0 +1,136 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Linq;
+
+namespace Helper
+{
+    public static class NativeObjectCache
+    {
+        private static object _lock = new object();
+        private static Dictionary<Type, Dictionary<IntPtr, WeakReference>> _objectCache = new Dictionary<Type, Dictionary<IntPtr, WeakReference>>();
+        public static void AddObject<T>(IntPtr nativePtr, T obj) where T : class
+        {
+            lock (_lock)
+            {
+                Dictionary<IntPtr, WeakReference> objCache = null;
+
+                if (!_objectCache.TryGetValue(typeof(T), out objCache) || objCache == null)
+                {
+                    objCache = new Dictionary<IntPtr, WeakReference>();
+                    _objectCache[typeof(T)] = objCache;
+                }
+
+                objCache[nativePtr] = new WeakReference(obj);
+            }
+        }
+
+        public static void Flush()
+        {
+            lock(_lock)
+            {
+                foreach (var byType in _objectCache.ToArray())
+                {
+                    foreach(var kvp in byType.Value.ToArray())
+                    {
+                        IDisposable disp = kvp.Value.Target as IDisposable;
+                        if(disp != null)
+                        {
+                            disp.Dispose();
+                        }
+
+                    }
+                }
+            }
+        }
+
+        public static void RemoveObject<T>(IntPtr nativePtr)
+        {
+            lock (_lock)
+            {
+                Dictionary<IntPtr, WeakReference> objCache = null;
+
+                if (!_objectCache.TryGetValue(typeof(T), out objCache) || objCache == null)
+                {
+                    objCache = new Dictionary<IntPtr, WeakReference>();
+                    _objectCache[typeof(T)] = objCache;
+                }
+
+                if (objCache.ContainsKey(nativePtr))
+                {
+                    objCache.Remove(nativePtr);
+                }
+            }
+        }
+
+        public static T GetObject<T>(IntPtr nativePtr) where T : class
+        {
+            lock (_lock)
+            {
+                Dictionary<IntPtr, WeakReference> objCache = null;
+
+                if (!_objectCache.TryGetValue(typeof(T), out objCache) || objCache == null)
+                {
+                    objCache = new Dictionary<IntPtr, WeakReference>();
+                    _objectCache[typeof(T)] = objCache;
+                }
+
+                WeakReference reference = null;
+                if (objCache.TryGetValue(nativePtr, out reference))
+                {
+                    if (reference != null)
+                    {
+                        T obj = reference.Target as T;
+                        if (obj != null)
+                        {
+                            return (T)obj;
+                        }
+                    }
+                }
+
+                return null;
+            }
+        }
+
+        public static T CreateOrGetObject<T>(IntPtr nativePtr, Func<System.IntPtr,T> create) where T : class
+        {
+            T outputValue = null;
+
+            lock (_lock)
+            {
+                Dictionary<IntPtr, WeakReference> objCache = null;
+
+                if (!_objectCache.TryGetValue(typeof(T), out objCache) || objCache == null)
+                {
+                    objCache = new Dictionary<IntPtr, WeakReference>();
+                    _objectCache[typeof(T)] = objCache;
+                }
+
+                WeakReference reference = null;
+                if (objCache.TryGetValue(nativePtr, out reference))
+                {
+                    if ((reference != null) && reference.IsAlive)
+                    {
+                        outputValue = reference.Target as T;
+                    }
+                }
+
+                if (outputValue == null)
+                { 
+                    if (create != null)
+                    {
+                        outputValue = create(nativePtr);
+                        objCache[nativePtr] = new WeakReference(outputValue);
+                    }
+                    else if(typeof(T) == typeof(System.Object)) 
+                    {
+                        //T is an object, so lets just pass back our IntPtr, which is an object.
+                        outputValue = (T)(System.Object)nativePtr;
+                    }
+                }
+            }
+
+            return outputValue;
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/NativeObjectCache.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 96cf7d466b0b0bb4d92fb09d817ad613
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 28 - 0
Assets/Standard Assets/NativeWrapper.cs

@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Linq;
+
+namespace Helper
+{
+    public static class NativeWrapper
+    {
+        public static System.IntPtr GetNativePtr(Object obj)
+        {
+        	if(obj == null)
+        	{
+        		return System.IntPtr.Zero;
+        	}
+
+            var nativeWrapperIface = obj as INativeWrapper;
+            if(nativeWrapperIface != null)
+            {
+                return nativeWrapperIface.nativePtr;
+            }
+            else
+            {
+                throw new ArgumentException("Object must wrap native type");
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/NativeWrapper.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0eb32acf7ae62044194131ae0f7e4516
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 42 - 0
Assets/Standard Assets/SmartGCHandle.cs

@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Linq;
+
+namespace Helper
+{
+    public class SmartGCHandle : IDisposable
+    {
+        private GCHandle handle;
+        public SmartGCHandle(GCHandle handle)
+        {
+            this.handle = handle;
+        }
+
+        ~SmartGCHandle()
+        {
+            Dispose(false);
+        }
+
+        public System.IntPtr AddrOfPinnedObject()
+        {
+            return handle.AddrOfPinnedObject();
+        }
+
+        public virtual void Dispose()
+        {
+            Dispose(true);
+        }
+
+        protected virtual void Dispose(bool disposing)
+        {
+            this.handle.Free();
+        }
+
+        public static implicit operator GCHandle(SmartGCHandle other)
+        {
+
+            return other.handle;
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/SmartGCHandle.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: adc912eeb5de2014f9ca670eca6ac808
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 61 - 0
Assets/Standard Assets/ThreadSafeDictionary.cs

@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Linq;
+
+namespace Helper
+{
+    public class ThreadSafeDictionary<TKey, TValue>
+    {
+        protected readonly Dictionary<TKey, TValue> _impl = new Dictionary<TKey, TValue>();
+        public TValue this[TKey key]
+        {
+            get
+            {
+                lock (_impl)
+                {
+                    return _impl[key];
+                }
+            }
+            set
+            {
+                lock (_impl)
+                {
+                    _impl[key] = value;
+                }
+            }
+        }
+
+        public void Add(TKey key, TValue value)
+        {
+            lock (_impl)
+            {
+                _impl.Add(key, value);
+            }
+        }
+
+        public bool TryGetValue(TKey key, out TValue value)
+        {
+            lock (_impl)
+            {
+                return _impl.TryGetValue(key, out value);
+            }
+        }
+
+        public bool Remove(TKey key)
+        {
+            lock (_impl)
+            {
+                return _impl.Remove(key);
+            }
+        }
+
+        public void Clear()
+        {
+            lock (_impl)
+            {
+                _impl.Clear();
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Standard Assets/ThreadSafeDictionary.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b31ad795626855f41842734c10d2a41f
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Standard Assets/Windows.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8b83269ad16775f468bd366023e6d2de
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Standard Assets/Windows/Data.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c409172cb808d8147afdcef9869bf5e2
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 73 - 0
Assets/Standard Assets/Windows/Data/PropertyChangedEventArgs.cs

@@ -0,0 +1,73 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Data
+{
+    //
+    // Windows.Data.PropertyChangedEventArgs
+    //
+    public sealed partial class PropertyChangedEventArgs : RootSystem.EventArgs, Helper.INativeWrapper
+
+    {
+        internal RootSystem.IntPtr _pNative;
+        RootSystem.IntPtr Helper.INativeWrapper.nativePtr { get { return _pNative; } }
+
+        // Constructors and Finalizers
+        internal PropertyChangedEventArgs(RootSystem.IntPtr pNative)
+        {
+            _pNative = pNative;
+            Windows_Data_PropertyChangedEventArgs_AddRefObject(ref _pNative);
+        }
+
+        ~PropertyChangedEventArgs()
+        {
+            Dispose(false);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Data_PropertyChangedEventArgs_ReleaseObject(ref RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Data_PropertyChangedEventArgs_AddRefObject(ref RootSystem.IntPtr pNative);
+        private void Dispose(bool disposing)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            __EventCleanup();
+
+            Helper.NativeObjectCache.RemoveObject<PropertyChangedEventArgs>(_pNative);
+                Windows_Data_PropertyChangedEventArgs_ReleaseObject(ref _pNative);
+
+            _pNative = RootSystem.IntPtr.Zero;
+        }
+
+
+        // Public Properties
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern RootSystem.IntPtr Windows_Data_PropertyChangedEventArgs_get_PropertyName(RootSystem.IntPtr pNative);
+        public  string PropertyName
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("PropertyChangedEventArgs");
+                }
+
+                RootSystem.IntPtr objectPointer = Windows_Data_PropertyChangedEventArgs_get_PropertyName(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+
+                var managedString = RootSystem.Runtime.InteropServices.Marshal.PtrToStringUni(objectPointer);
+                RootSystem.Runtime.InteropServices.Marshal.FreeCoTaskMem(objectPointer);
+                return managedString;
+            }
+        }
+
+        private void __EventCleanup()
+        {
+        }
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/Windows/Data/PropertyChangedEventArgs.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0f717bd2a5c39cc43a49fc8904889932
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Standard Assets/Windows/Kinect.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 196fed97606fe634889dd00e793c9581
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 18 - 0
Assets/Standard Assets/Windows/Kinect/Activity.cs

@@ -0,0 +1,18 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Kinect
+{
+    //
+    // Windows.Kinect.Activity
+    //
+    public enum Activity : int
+    {
+        EyeLeftClosed                            =0,
+        EyeRightClosed                           =1,
+        MouthOpen                                =2,
+        MouthMoved                               =3,
+        LookingAway                              =4,
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/Windows/Kinect/Activity.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ec6785f19ac6c494a9957fa63f49fcf5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 14 - 0
Assets/Standard Assets/Windows/Kinect/Appearance.cs

@@ -0,0 +1,14 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Kinect
+{
+    //
+    // Windows.Kinect.Appearance
+    //
+    public enum Appearance : int
+    {
+        WearingGlasses                           =0,
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/Windows/Kinect/Appearance.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 00eb0d9c4964c0b4f9e3090704ff7201
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 240 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeam.cs

@@ -0,0 +1,240 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Kinect
+{
+    //
+    // Windows.Kinect.AudioBeam
+    //
+    public sealed partial class AudioBeam : Helper.INativeWrapper
+
+    {
+        internal RootSystem.IntPtr _pNative;
+        RootSystem.IntPtr Helper.INativeWrapper.nativePtr { get { return _pNative; } }
+
+        // Constructors and Finalizers
+        internal AudioBeam(RootSystem.IntPtr pNative)
+        {
+            _pNative = pNative;
+            Windows_Kinect_AudioBeam_AddRefObject(ref _pNative);
+        }
+
+        ~AudioBeam()
+        {
+            Dispose(false);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeam_ReleaseObject(ref RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeam_AddRefObject(ref RootSystem.IntPtr pNative);
+        private void Dispose(bool disposing)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            __EventCleanup();
+
+            Helper.NativeObjectCache.RemoveObject<AudioBeam>(_pNative);
+                Windows_Kinect_AudioBeam_ReleaseObject(ref _pNative);
+
+            _pNative = RootSystem.IntPtr.Zero;
+        }
+
+
+        // Public Properties
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern Windows.Kinect.AudioBeamMode Windows_Kinect_AudioBeam_get_AudioBeamMode(RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeam_put_AudioBeamMode(RootSystem.IntPtr pNative, Windows.Kinect.AudioBeamMode audioBeamMode);
+        public  Windows.Kinect.AudioBeamMode AudioBeamMode
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeam");
+                }
+
+                return Windows_Kinect_AudioBeam_get_AudioBeamMode(_pNative);
+            }
+            set
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeam");
+                }
+
+                Windows_Kinect_AudioBeam_put_AudioBeamMode(_pNative, value);
+                Helper.ExceptionHelper.CheckLastError();
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_AudioBeam_get_AudioSource(RootSystem.IntPtr pNative);
+        public  Windows.Kinect.AudioSource AudioSource
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeam");
+                }
+
+                RootSystem.IntPtr objectPointer = Windows_Kinect_AudioBeam_get_AudioSource(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+                if (objectPointer == RootSystem.IntPtr.Zero)
+                {
+                    return null;
+                }
+
+                return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.AudioSource>(objectPointer, n => new Windows.Kinect.AudioSource(n));
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern float Windows_Kinect_AudioBeam_get_BeamAngle(RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeam_put_BeamAngle(RootSystem.IntPtr pNative, float beamAngle);
+        public  float BeamAngle
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeam");
+                }
+
+                return Windows_Kinect_AudioBeam_get_BeamAngle(_pNative);
+            }
+            set
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeam");
+                }
+
+                Windows_Kinect_AudioBeam_put_BeamAngle(_pNative, value);
+                Helper.ExceptionHelper.CheckLastError();
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern float Windows_Kinect_AudioBeam_get_BeamAngleConfidence(RootSystem.IntPtr pNative);
+        public  float BeamAngleConfidence
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeam");
+                }
+
+                return Windows_Kinect_AudioBeam_get_BeamAngleConfidence(_pNative);
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern long Windows_Kinect_AudioBeam_get_RelativeTime(RootSystem.IntPtr pNative);
+        public  RootSystem.TimeSpan RelativeTime
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeam");
+                }
+
+                return RootSystem.TimeSpan.FromMilliseconds(Windows_Kinect_AudioBeam_get_RelativeTime(_pNative));
+            }
+        }
+
+
+        // Events
+        private static RootSystem.Runtime.InteropServices.GCHandle _Windows_Data_PropertyChangedEventArgs_Delegate_Handle;
+        [RootSystem.Runtime.InteropServices.UnmanagedFunctionPointer(RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
+        private delegate void _Windows_Data_PropertyChangedEventArgs_Delegate(RootSystem.IntPtr args, RootSystem.IntPtr pNative);
+        private static Helper.CollectionMap<RootSystem.IntPtr, List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>>> Windows_Data_PropertyChangedEventArgs_Delegate_callbacks = new Helper.CollectionMap<RootSystem.IntPtr, List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>>>();
+        [AOT.MonoPInvokeCallbackAttribute(typeof(_Windows_Data_PropertyChangedEventArgs_Delegate))]
+        private static void Windows_Data_PropertyChangedEventArgs_Delegate_Handler(RootSystem.IntPtr result, RootSystem.IntPtr pNative)
+        {
+            List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>> callbackList = null;
+            Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryGetValue(pNative, out callbackList);
+            lock(callbackList)
+            {
+                var objThis = Helper.NativeObjectCache.GetObject<AudioBeam>(pNative);
+                var args = new Windows.Data.PropertyChangedEventArgs(result);
+                foreach(var func in callbackList)
+                {
+                    Helper.EventPump.Instance.Enqueue(() => { try { func(objThis, args); } catch { } });
+                }
+            }
+        }
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeam_add_PropertyChanged(RootSystem.IntPtr pNative, _Windows_Data_PropertyChangedEventArgs_Delegate eventCallback, bool unsubscribe);
+        public  event RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs> PropertyChanged
+        {
+            add
+            {
+                Helper.EventPump.EnsureInitialized();
+
+                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    callbackList.Add(value);
+                    if(callbackList.Count == 1)
+                    {
+                        var del = new _Windows_Data_PropertyChangedEventArgs_Delegate(Windows_Data_PropertyChangedEventArgs_Delegate_Handler);
+                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle = RootSystem.Runtime.InteropServices.GCHandle.Alloc(del);
+                        Windows_Kinect_AudioBeam_add_PropertyChanged(_pNative, del, false);
+                    }
+                }
+            }
+            remove
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    return;
+                }
+
+                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    callbackList.Remove(value);
+                    if(callbackList.Count == 0)
+                    {
+                        Windows_Kinect_AudioBeam_add_PropertyChanged(_pNative, Windows_Data_PropertyChangedEventArgs_Delegate_Handler, true);
+                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle.Free();
+                    }
+                }
+            }
+        }
+
+
+        // Public Methods
+        private void __EventCleanup()
+        {
+            {
+                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    if (callbackList.Count > 0)
+                    {
+                        callbackList.Clear();
+                        if (_pNative != RootSystem.IntPtr.Zero)
+                        {
+                            Windows_Kinect_AudioBeam_add_PropertyChanged(_pNative, Windows_Data_PropertyChangedEventArgs_Delegate_Handler, true);
+                        }
+                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle.Free();
+                    }
+                }
+            }
+        }
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeam.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e64f7eb8de6f72e42874eb2ea7c01be5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 114 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeamFrame.cs

@@ -0,0 +1,114 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Kinect
+{
+    //
+    // Windows.Kinect.AudioBeamFrame
+    //
+    public sealed partial class AudioBeamFrame : RootSystem.IDisposable, Helper.INativeWrapper
+
+    {
+        internal RootSystem.IntPtr _pNative;
+        RootSystem.IntPtr Helper.INativeWrapper.nativePtr { get { return _pNative; } }
+
+        // Constructors and Finalizers
+        internal AudioBeamFrame(RootSystem.IntPtr pNative)
+        {
+            _pNative = pNative;
+            Windows_Kinect_AudioBeamFrame_AddRefObject(ref _pNative);
+        }
+
+        ~AudioBeamFrame()
+        {
+            Dispose(false);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrame_ReleaseObject(ref RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrame_AddRefObject(ref RootSystem.IntPtr pNative);
+
+        // Public Properties
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_AudioBeamFrame_get_AudioBeam(RootSystem.IntPtr pNative);
+        public  Windows.Kinect.AudioBeam AudioBeam
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrame");
+                }
+
+                RootSystem.IntPtr objectPointer = Windows_Kinect_AudioBeamFrame_get_AudioBeam(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+                if (objectPointer == RootSystem.IntPtr.Zero)
+                {
+                    return null;
+                }
+
+                return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.AudioBeam>(objectPointer, n => new Windows.Kinect.AudioBeam(n));
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_AudioBeamFrame_get_AudioSource(RootSystem.IntPtr pNative);
+        public  Windows.Kinect.AudioSource AudioSource
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrame");
+                }
+
+                RootSystem.IntPtr objectPointer = Windows_Kinect_AudioBeamFrame_get_AudioSource(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+                if (objectPointer == RootSystem.IntPtr.Zero)
+                {
+                    return null;
+                }
+
+                return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.AudioSource>(objectPointer, n => new Windows.Kinect.AudioSource(n));
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern long Windows_Kinect_AudioBeamFrame_get_Duration(RootSystem.IntPtr pNative);
+        public  RootSystem.TimeSpan Duration
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrame");
+                }
+
+                return RootSystem.TimeSpan.FromMilliseconds(Windows_Kinect_AudioBeamFrame_get_Duration(_pNative));
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern long Windows_Kinect_AudioBeamFrame_get_RelativeTimeStart(RootSystem.IntPtr pNative);
+        public  RootSystem.TimeSpan RelativeTimeStart
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrame");
+                }
+
+                return RootSystem.TimeSpan.FromMilliseconds(Windows_Kinect_AudioBeamFrame_get_RelativeTimeStart(_pNative));
+            }
+        }
+
+
+        // Public Methods
+        private void __EventCleanup()
+        {
+        }
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeamFrame.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8ff93fd69396b944ea1e0d067cf5b091
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 75 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeamFrameArrivedEventArgs.cs

@@ -0,0 +1,75 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Kinect
+{
+    //
+    // Windows.Kinect.AudioBeamFrameArrivedEventArgs
+    //
+    public sealed partial class AudioBeamFrameArrivedEventArgs : RootSystem.EventArgs, Helper.INativeWrapper
+
+    {
+        internal RootSystem.IntPtr _pNative;
+        RootSystem.IntPtr Helper.INativeWrapper.nativePtr { get { return _pNative; } }
+
+        // Constructors and Finalizers
+        internal AudioBeamFrameArrivedEventArgs(RootSystem.IntPtr pNative)
+        {
+            _pNative = pNative;
+            Windows_Kinect_AudioBeamFrameArrivedEventArgs_AddRefObject(ref _pNative);
+        }
+
+        ~AudioBeamFrameArrivedEventArgs()
+        {
+            Dispose(false);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameArrivedEventArgs_ReleaseObject(ref RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameArrivedEventArgs_AddRefObject(ref RootSystem.IntPtr pNative);
+        private void Dispose(bool disposing)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            __EventCleanup();
+
+            Helper.NativeObjectCache.RemoveObject<AudioBeamFrameArrivedEventArgs>(_pNative);
+                Windows_Kinect_AudioBeamFrameArrivedEventArgs_ReleaseObject(ref _pNative);
+
+            _pNative = RootSystem.IntPtr.Zero;
+        }
+
+
+        // Public Properties
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_AudioBeamFrameArrivedEventArgs_get_FrameReference(RootSystem.IntPtr pNative);
+        public  Windows.Kinect.AudioBeamFrameReference FrameReference
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrameArrivedEventArgs");
+                }
+
+                RootSystem.IntPtr objectPointer = Windows_Kinect_AudioBeamFrameArrivedEventArgs_get_FrameReference(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+                if (objectPointer == RootSystem.IntPtr.Zero)
+                {
+                    return null;
+                }
+
+                return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.AudioBeamFrameReference>(objectPointer, n => new Windows.Kinect.AudioBeamFrameReference(n));
+            }
+        }
+
+        private void __EventCleanup()
+        {
+        }
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeamFrameArrivedEventArgs.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bb78a9668fb2c694881a216e349cb1e9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 71 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeamFrameList.cs

@@ -0,0 +1,71 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Kinect
+{
+    //
+    // Windows.Kinect.AudioBeamFrameList
+    //
+    public sealed partial class AudioBeamFrameList : RootSystem.IDisposable, Helper.INativeWrapper
+
+    {
+        internal RootSystem.IntPtr _pNative;
+        RootSystem.IntPtr Helper.INativeWrapper.nativePtr { get { return _pNative; } }
+
+        // Constructors and Finalizers
+        internal AudioBeamFrameList(RootSystem.IntPtr pNative)
+        {
+            _pNative = pNative;
+            Windows_Kinect_AudioBeamFrameList_AddRefObject(ref _pNative);
+        }
+
+        ~AudioBeamFrameList()
+        {
+            Dispose(false);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameList_ReleaseObject(ref RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameList_AddRefObject(ref RootSystem.IntPtr pNative);
+        private void Dispose(bool disposing)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            __EventCleanup();
+
+            Helper.NativeObjectCache.RemoveObject<AudioBeamFrameList>(_pNative);
+
+            if (disposing)
+            {
+                Windows_Kinect_AudioBeamFrameList_Dispose(_pNative);
+            }
+                Windows_Kinect_AudioBeamFrameList_ReleaseObject(ref _pNative);
+
+            _pNative = RootSystem.IntPtr.Zero;
+        }
+
+
+        // Public Methods
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameList_Dispose(RootSystem.IntPtr pNative);
+        public void Dispose()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            Dispose(true);
+            RootSystem.GC.SuppressFinalize(this);
+        }
+
+        private void __EventCleanup()
+        {
+        }
+    }
+
+}

+ 11 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeamFrameList.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fe7ef6722da9a6d42b589d3f8b35b6f9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 309 - 0
Assets/Standard Assets/Windows/Kinect/AudioBeamFrameReader.cs

@@ -0,0 +1,309 @@
+using RootSystem = System;
+using System.Linq;
+using System.Collections.Generic;
+namespace Windows.Kinect
+{
+    //
+    // Windows.Kinect.AudioBeamFrameReader
+    //
+    public sealed partial class AudioBeamFrameReader : RootSystem.IDisposable, Helper.INativeWrapper
+
+    {
+        internal RootSystem.IntPtr _pNative;
+        RootSystem.IntPtr Helper.INativeWrapper.nativePtr { get { return _pNative; } }
+
+        // Constructors and Finalizers
+        internal AudioBeamFrameReader(RootSystem.IntPtr pNative)
+        {
+            _pNative = pNative;
+            Windows_Kinect_AudioBeamFrameReader_AddRefObject(ref _pNative);
+        }
+
+        ~AudioBeamFrameReader()
+        {
+            Dispose(false);
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameReader_ReleaseObject(ref RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameReader_AddRefObject(ref RootSystem.IntPtr pNative);
+        private void Dispose(bool disposing)
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            __EventCleanup();
+
+            Helper.NativeObjectCache.RemoveObject<AudioBeamFrameReader>(_pNative);
+
+            if (disposing)
+            {
+                Windows_Kinect_AudioBeamFrameReader_Dispose(_pNative);
+            }
+                Windows_Kinect_AudioBeamFrameReader_ReleaseObject(ref _pNative);
+
+            _pNative = RootSystem.IntPtr.Zero;
+        }
+
+
+        // Public Properties
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern RootSystem.IntPtr Windows_Kinect_AudioBeamFrameReader_get_AudioSource(RootSystem.IntPtr pNative);
+        public  Windows.Kinect.AudioSource AudioSource
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrameReader");
+                }
+
+                RootSystem.IntPtr objectPointer = Windows_Kinect_AudioBeamFrameReader_get_AudioSource(_pNative);
+                Helper.ExceptionHelper.CheckLastError();
+                if (objectPointer == RootSystem.IntPtr.Zero)
+                {
+                    return null;
+                }
+
+                return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.AudioSource>(objectPointer, n => new Windows.Kinect.AudioSource(n));
+            }
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern bool Windows_Kinect_AudioBeamFrameReader_get_IsPaused(RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameReader_put_IsPaused(RootSystem.IntPtr pNative, bool isPaused);
+        public  bool IsPaused
+        {
+            get
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrameReader");
+                }
+
+                return Windows_Kinect_AudioBeamFrameReader_get_IsPaused(_pNative);
+            }
+            set
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    throw new RootSystem.ObjectDisposedException("AudioBeamFrameReader");
+                }
+
+                Windows_Kinect_AudioBeamFrameReader_put_IsPaused(_pNative, value);
+                Helper.ExceptionHelper.CheckLastError();
+            }
+        }
+
+
+        // Events
+        private static RootSystem.Runtime.InteropServices.GCHandle _Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_Handle;
+        [RootSystem.Runtime.InteropServices.UnmanagedFunctionPointer(RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
+        private delegate void _Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate(RootSystem.IntPtr args, RootSystem.IntPtr pNative);
+        private static Helper.CollectionMap<RootSystem.IntPtr, List<RootSystem.EventHandler<Windows.Kinect.AudioBeamFrameArrivedEventArgs>>> Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_callbacks = new Helper.CollectionMap<RootSystem.IntPtr, List<RootSystem.EventHandler<Windows.Kinect.AudioBeamFrameArrivedEventArgs>>>();
+        [AOT.MonoPInvokeCallbackAttribute(typeof(_Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate))]
+        private static void Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_Handler(RootSystem.IntPtr result, RootSystem.IntPtr pNative)
+        {
+            List<RootSystem.EventHandler<Windows.Kinect.AudioBeamFrameArrivedEventArgs>> callbackList = null;
+            Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_callbacks.TryGetValue(pNative, out callbackList);
+            lock(callbackList)
+            {
+                var objThis = Helper.NativeObjectCache.GetObject<AudioBeamFrameReader>(pNative);
+                var args = new Windows.Kinect.AudioBeamFrameArrivedEventArgs(result);
+                foreach(var func in callbackList)
+                {
+                    Helper.EventPump.Instance.Enqueue(() => { try { func(objThis, args); } catch { } });
+                }
+            }
+        }
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameReader_add_FrameArrived(RootSystem.IntPtr pNative, _Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate eventCallback, bool unsubscribe);
+        public  event RootSystem.EventHandler<Windows.Kinect.AudioBeamFrameArrivedEventArgs> FrameArrived
+        {
+            add
+            {
+                Helper.EventPump.EnsureInitialized();
+
+                Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    callbackList.Add(value);
+                    if(callbackList.Count == 1)
+                    {
+                        var del = new _Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate(Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_Handler);
+                        _Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_Handle = RootSystem.Runtime.InteropServices.GCHandle.Alloc(del);
+                        Windows_Kinect_AudioBeamFrameReader_add_FrameArrived(_pNative, del, false);
+                    }
+                }
+            }
+            remove
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    return;
+                }
+
+                Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    callbackList.Remove(value);
+                    if(callbackList.Count == 0)
+                    {
+                        Windows_Kinect_AudioBeamFrameReader_add_FrameArrived(_pNative, Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_Handler, true);
+                        _Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_Handle.Free();
+                    }
+                }
+            }
+        }
+
+        private static RootSystem.Runtime.InteropServices.GCHandle _Windows_Data_PropertyChangedEventArgs_Delegate_Handle;
+        [RootSystem.Runtime.InteropServices.UnmanagedFunctionPointer(RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
+        private delegate void _Windows_Data_PropertyChangedEventArgs_Delegate(RootSystem.IntPtr args, RootSystem.IntPtr pNative);
+        private static Helper.CollectionMap<RootSystem.IntPtr, List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>>> Windows_Data_PropertyChangedEventArgs_Delegate_callbacks = new Helper.CollectionMap<RootSystem.IntPtr, List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>>>();
+        [AOT.MonoPInvokeCallbackAttribute(typeof(_Windows_Data_PropertyChangedEventArgs_Delegate))]
+        private static void Windows_Data_PropertyChangedEventArgs_Delegate_Handler(RootSystem.IntPtr result, RootSystem.IntPtr pNative)
+        {
+            List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>> callbackList = null;
+            Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryGetValue(pNative, out callbackList);
+            lock(callbackList)
+            {
+                var objThis = Helper.NativeObjectCache.GetObject<AudioBeamFrameReader>(pNative);
+                var args = new Windows.Data.PropertyChangedEventArgs(result);
+                foreach(var func in callbackList)
+                {
+                    Helper.EventPump.Instance.Enqueue(() => { try { func(objThis, args); } catch { } });
+                }
+            }
+        }
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameReader_add_PropertyChanged(RootSystem.IntPtr pNative, _Windows_Data_PropertyChangedEventArgs_Delegate eventCallback, bool unsubscribe);
+        public  event RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs> PropertyChanged
+        {
+            add
+            {
+                Helper.EventPump.EnsureInitialized();
+
+                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    callbackList.Add(value);
+                    if(callbackList.Count == 1)
+                    {
+                        var del = new _Windows_Data_PropertyChangedEventArgs_Delegate(Windows_Data_PropertyChangedEventArgs_Delegate_Handler);
+                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle = RootSystem.Runtime.InteropServices.GCHandle.Alloc(del);
+                        Windows_Kinect_AudioBeamFrameReader_add_PropertyChanged(_pNative, del, false);
+                    }
+                }
+            }
+            remove
+            {
+                if (_pNative == RootSystem.IntPtr.Zero)
+                {
+                    return;
+                }
+
+                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    callbackList.Remove(value);
+                    if(callbackList.Count == 0)
+                    {
+                        Windows_Kinect_AudioBeamFrameReader_add_PropertyChanged(_pNative, Windows_Data_PropertyChangedEventArgs_Delegate_Handler, true);
+                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle.Free();
+                    }
+                }
+            }
+        }
+
+
+        // Public Methods
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern int Windows_Kinect_AudioBeamFrameReader_AcquireLatestBeamFrames_Length(RootSystem.IntPtr pNative);
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern int Windows_Kinect_AudioBeamFrameReader_AcquireLatestBeamFrames(RootSystem.IntPtr pNative, [RootSystem.Runtime.InteropServices.Out] RootSystem.IntPtr[] outCollection, int outCollectionSize);
+        public RootSystem.Collections.Generic.IList<Windows.Kinect.AudioBeamFrame> AcquireLatestBeamFrames()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                throw new RootSystem.ObjectDisposedException("AudioBeamFrameReader");
+            }
+
+            int outCollectionSize = Windows_Kinect_AudioBeamFrameReader_AcquireLatestBeamFrames_Length(_pNative);
+            var outCollection = new RootSystem.IntPtr[outCollectionSize];
+            var managedCollection = new Windows.Kinect.AudioBeamFrame[outCollectionSize];
+
+            outCollectionSize = Windows_Kinect_AudioBeamFrameReader_AcquireLatestBeamFrames(_pNative, outCollection, outCollectionSize);
+            Helper.ExceptionHelper.CheckLastError();
+            for(int i=0;i<outCollectionSize;i++)
+            {
+                if(outCollection[i] == RootSystem.IntPtr.Zero)
+                {
+                    continue;
+                }
+
+                var obj = Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.AudioBeamFrame>(outCollection[i], n => new Windows.Kinect.AudioBeamFrame(n));
+
+                managedCollection[i] = obj;
+            }
+            return managedCollection;
+        }
+
+        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
+        private static extern void Windows_Kinect_AudioBeamFrameReader_Dispose(RootSystem.IntPtr pNative);
+        public void Dispose()
+        {
+            if (_pNative == RootSystem.IntPtr.Zero)
+            {
+                return;
+            }
+
+            Dispose(true);
+            RootSystem.GC.SuppressFinalize(this);
+        }
+
+        private void __EventCleanup()
+        {
+            {
+                Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    if (callbackList.Count > 0)
+                    {
+                        callbackList.Clear();
+                        if (_pNative != RootSystem.IntPtr.Zero)
+                        {
+                            Windows_Kinect_AudioBeamFrameReader_add_FrameArrived(_pNative, Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_Handler, true);
+                        }
+                        _Windows_Kinect_AudioBeamFrameArrivedEventArgs_Delegate_Handle.Free();
+                    }
+                }
+            }
+            {
+                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
+                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
+                lock (callbackList)
+                {
+                    if (callbackList.Count > 0)
+                    {
+                        callbackList.Clear();
+                        if (_pNative != RootSystem.IntPtr.Zero)
+                        {
+                            Windows_Kinect_AudioBeamFrameReader_add_PropertyChanged(_pNative, Windows_Data_PropertyChangedEventArgs_Delegate_Handler, true);
+                        }
+                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle.Free();
+                    }
+                }
+            }
+        }
+    }
+
+}

Some files were not shown because too many files changed in this diff