I_Jemin

Init

Showing 613 changed files with 3863 additions and 0 deletions
# Created by https://www.gitignore.io/api/unity
### Unity ###
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/Assets/AssetStoreTools*
# Visual Studio 2015 cache directory
/.vscode/
# Visual Studio 2015 cache directory
/.vs/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
# Unity3D generated meta files
*.pidb.meta
# Unity3D Generated File On Crash Reports
sysinfo.txt
# Builds
*.apk
*.unitypackage
# End of https://www.gitignore.io/api/unity
\ No newline at end of file
fileFormatVersion: 2
guid: d393f5b72d8777d48aa49843ba1f9ca4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!134 &13400000
PhysicMaterial:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Ball Physics Material
dynamicFriction: 1
staticFriction: 1
bounciness: 0
frictionCombine: 0
bounceCombine: 0
fileFormatVersion: 2
guid: e05af2f3a6bdd3743af70b50868da37b
timeCreated: 1523554632
licenseType: Pro
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 13400000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 10
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 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: 1
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ShowResolutionOverlay: 1
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 0
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1001 &155261415
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4297793100120782, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4297793100120782, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4297793100120782, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4297793100120782, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4297793100120782, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4297793100120782, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4297793100120782, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4297793100120782, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 54889650561961254, guid: 0e71b24f3fb6f684596ef143448959c0,
type: 2}
propertyPath: m_AngularDrag
value: 1000
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 0e71b24f3fb6f684596ef143448959c0, type: 2}
m_IsPrefabParent: 0
--- !u!1 &785643733
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 785643737}
- component: {fileID: 785643736}
- component: {fileID: 785643735}
- component: {fileID: 785643734}
m_Layer: 0
m_Name: Camera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &785643734
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 785643733}
m_Enabled: 1
--- !u!124 &785643735
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 785643733}
m_Enabled: 1
--- !u!20 &785643736
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 785643733}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294934527
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 &785643737
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 785643733}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -4.68}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1113254002}
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1113253996
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1113254002}
- component: {fileID: 1113254001}
- component: {fileID: 1113254000}
- component: {fileID: 1113253999}
- component: {fileID: 1113253998}
- component: {fileID: 1113253997}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!54 &1113253997
Rigidbody:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1113253996}
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_UseGravity: 0
m_IsKinematic: 1
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!114 &1113253998
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1113253996}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 061e358065833c542812bcff8271d265, type: 3}
m_Name:
m_EditorClassIdentifier:
m_MoveSpeed: 2
m_ScrollSpeed: 100
m_YawSpeed: 100
--- !u!65 &1113253999
BoxCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1113253996}
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!23 &1113254000
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1113253996}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 4294967295
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &1113254001
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1113253996}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1113254002
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1113253996}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0.94, y: 0, z: 2.39}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 785643737}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
fileFormatVersion: 2
guid: 291dfa6181bfdaa418cdd784a674c1d3
timeCreated: 1523555264
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: a1667d37678804b48b656b2a3c954f53
folderAsset: yes
timeCreated: 1484136440
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ArrayMat
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _EMISSION
m_LightmapFlags: 1
m_CustomRenderQueue: -1
stringTagMap: {}
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
- first:
name: _BumpMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailAlbedoMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailMask
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailNormalMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MetallicGlossMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _OcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _ParallaxMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- first:
name: _BumpScale
second: 1
- first:
name: _Cutoff
second: 0.5
- first:
name: _DetailNormalMapScale
second: 1
- first:
name: _DstBlend
second: 0
- first:
name: _GlossMapScale
second: 1
- first:
name: _Glossiness
second: 0.5
- first:
name: _GlossyReflections
second: 1
- first:
name: _Metallic
second: 0
- first:
name: _Mode
second: 0
- first:
name: _OcclusionStrength
second: 1
- first:
name: _Parallax
second: 0.02
- first:
name: _SmoothnessTextureChannel
second: 0
- first:
name: _SpecularHighlights
second: 1
- first:
name: _SrcBlend
second: 1
- first:
name: _UVSec
second: 0
- first:
name: _ZWrite
second: 1
m_Colors:
- first:
name: _Color
second: {r: 0, g: 0, b: 0, a: 1}
- first:
name: _EmissionColor
second: {r: 0, g: 0, b: 0, a: 1}
fileFormatVersion: 2
guid: a9ebddeebc93d87448925603f5520944
timeCreated: 1484136451
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: GravityBall Material
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _EMISSION
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0, g: 0, b: 0, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
fileFormatVersion: 2
guid: 2c08eef64dd9963468283d5134da86b5
timeCreated: 1525000475
licenseType: Pro
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: X
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 0.13774185, b: 0, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
fileFormatVersion: 2
guid: bc9e87a8448c0ad44b1706a14f0daf66
timeCreated: 1525000475
licenseType: Pro
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Y
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0, g: 1, b: 0, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
fileFormatVersion: 2
guid: b2d5dace7e9b678499ab2e25cad8cdf3
timeCreated: 1525000475
licenseType: Pro
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Z
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0, g: 0.20210934, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
fileFormatVersion: 2
guid: 6ffb880675a34414e9b85bb5f7d4d731
timeCreated: 1525000475
licenseType: Pro
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 7f4aa94b50c845545904855825f632e2
folderAsset: yes
timeCreated: 1484136287
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
This diff could not be displayed because it is too large.
fileFormatVersion: 2
guid: eea4913cea234014d9b45a77f4e18893
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:
This diff could not be displayed because it is too large.
fileFormatVersion: 2
guid: 0e71b24f3fb6f684596ef143448959c0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 35a2dc7dab4e4524a85ffbaaf6f8d49c
folderAsset: yes
timeCreated: 1484227520
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
using Ultrahaptics;
/// <summary>
/// Helper class to handle conversion between world space and Ultrahaptics device space.
/// </summary>
public class CoordinateSpaceConverter : MonoBehaviour
{
// Expose this field to the Unity inspector so it can be set to
// the transform that corresponds to the origin of the array (top-centre)
[SerializeField]
private Transform _arrayOrigin;
/// <summary>
/// Converts the given position vector from world space to device space.
/// </summary>
/// <param name="vector">The position vector in world space.</param>
/// <returns>The equivalent position vector in device space.</returns>
public Ultrahaptics.Vector3 WorldToDevicePosition(UnityEngine.Vector3 vector)
{
// Transform the world position to the local space of the array
var localPosition = _arrayOrigin.InverseTransformPoint(vector);
// Construct an Ultrahaptics Vector3
// Note that the y and z coordinates are swapped as Ultrahaptics uses a coordinate system where the positive Y-axis is up
var ultrahapticsPosition = new Ultrahaptics.Vector3(localPosition.x, localPosition.z, localPosition.y);
return ultrahapticsPosition;
}
/// <summary>
/// Converts the given direction vector from world space to device space.
/// </summary>
/// <param name="vector">The direction vector in world space.</param>
/// <returns>The equivalent direction vector in device space.</returns>
public Ultrahaptics.Vector3 WorldToDeviceDirection(UnityEngine.Vector3 vector)
{
// Transform the world direction to the local space of the array
var localDirection = _arrayOrigin.InverseTransformDirection(vector);
// Construct an Ultrahaptics Vector3
// Note that the y and z coordinates are swapped as Ultrahaptics uses a coordinate system where the positive Y-axis is up
var ultrahapticsDirection = new Ultrahaptics.Vector3(localDirection.x, localDirection.z, localDirection.y);
return ultrahapticsDirection;
}
}
fileFormatVersion: 2
guid: 0ffc3ea8979bc8d42b1ca0eec3dff9ba
timeCreated: 1484227689
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GravityBall : MonoBehaviour
{
public static GravityBall Instance
{
get
{
if (!m_Instance)
{
m_Instance = FindObjectOfType<GravityBall>();
if (!m_Instance)
{
Debug.LogError("You didn't Crate GravityBall!");
}
}
return m_Instance;
}
}
private static GravityBall m_Instance;
public LayerMask m_ContactTarget;
//private SphereCollider m_Collider;
private const float m_ColliderThickness = 0.001f;
public bool m_IsTouched { get; private set; }
private Vector3 m_StartPos;
private Material m_RenderMaterial;
private Rigidbody m_Rigidbody;
public Color m_IdleColor = Color.black;
public Color m_PressedColor = Color.red;
public string m_XDistanceInputName = "Horizontal";
public string m_ZDistanceINputName = "Vertical";
public string m_XSwipeInputName = "Scroll";
public string m_YSwipeInputName = "Spin";
public string m_ZSwipeInputName = "Stroke";
public float m_ControlRange = 0.08f;
[Range(0.01f, 0.2f)]
public float m_RotationDeadzone = 0.01f;
[Range(0.1f, 5f)]
public float m_RotationSenstive = 1f;
private void Awake()
{
m_Rigidbody = GetComponent<Rigidbody>();
}
private void Start()
{
m_StartPos = m_Rigidbody.position;
m_RenderMaterial = GetComponentInChildren<Renderer>().material;
m_RenderMaterial.color = m_IdleColor;
}
private void Update()
{
if (GetButton())
{
m_RenderMaterial.color = m_PressedColor;
}
else
{
m_RenderMaterial.color = m_IdleColor;
}
}
private void FixedUpdate()
{
// 범위를 벗어난 경우 범위 내부로 강제로 되돌리기
if (m_IsTouched)
{
if (Vector3.Distance(m_StartPos, m_Rigidbody.position) > m_ControlRange)
{
m_Rigidbody.MovePosition(m_StartPos + (m_Rigidbody.position - m_StartPos) * m_ControlRange);
}
}
}
public bool GetButton()
{
if (!m_IsTouched)
{
return false;
}
if ((m_StartPos.y - m_Rigidbody.position.y) >= m_ControlRange * 0.5f)
{
return true;
}
return false;
}
public float GetInputAxis(string inputName)
{
if (!m_IsTouched)
{
return 0;
}
// Swipe를 하고 있다면, 값을 억누르기
float inputFactorBySwipe = 1.0f;
if (m_Rigidbody.angularVelocity.sqrMagnitude >= 1.0f)
{
inputFactorBySwipe = 1.0f / m_Rigidbody.angularVelocity.sqrMagnitude;
}
Vector3 deltaVec = m_Rigidbody.position - m_StartPos;
Vector3 relativeVec = deltaVec / m_ControlRange;
if (inputName == m_XDistanceInputName)
{
return Mathf.Clamp(relativeVec.x, -1.0f, 1.0f) * inputFactorBySwipe;
}
else if (inputName == m_ZDistanceINputName)
{
return Mathf.Clamp(relativeVec.z, -1.0f, 1.0f) * inputFactorBySwipe;
}
Debug.LogError("Can't Find Input Name: " + inputName);
return 0;
}
public float GetInputSwipe(string inputName)
{
if (!m_IsTouched)
{
return 0;
}
Vector3 angularVelocity = m_Rigidbody.angularVelocity;
angularVelocity *= m_RotationSenstive;
float absX = Mathf.Abs(angularVelocity.x);
float absY = Mathf.Abs(angularVelocity.y);
float absZ = Mathf.Abs(angularVelocity.z);
angularVelocity.x = absX <= m_RotationDeadzone ? 0 : angularVelocity.x;
angularVelocity.y = absY <= m_RotationDeadzone ? 0 : angularVelocity.y;
angularVelocity.z = absZ <= m_RotationDeadzone ? 0 : angularVelocity.z;
if (absX >= absY && absX >= absZ)
{
angularVelocity.y = 0;
angularVelocity.z = 0;
}
else if(absY >= absX && absY >= absZ)
{
angularVelocity.x = 0;
angularVelocity.z = 0;
}
else if (absZ >= absX && absZ >= absY)
{
angularVelocity.x = 0;
angularVelocity.y = 0;
}
float factorByButton = GetButton() ? 0.1f : 1.0f;
if (inputName == m_XSwipeInputName)
{
return Mathf.Clamp(angularVelocity.x, -1f, 1f) * factorByButton;
}
else if (inputName == m_YSwipeInputName)
{
return Mathf.Clamp(angularVelocity.y, -1f, 1f) * factorByButton;
}
else if (inputName == m_ZSwipeInputName)
{
return Mathf.Clamp(angularVelocity.z, -1f, 1f) * factorByButton;
}
Debug.LogError("Can't Find Input Name: " + inputName);
return 0;
}
private void OnCollisionExit(Collision collision)
{
m_IsTouched = false;
m_Rigidbody.MoveRotation(Quaternion.identity);
}
private void OnCollisionStay(Collision collision)
{
m_IsTouched = true;
}
void OnDrawGizmos()
{
// Draw a wire sphere at each of the points
Gizmos.color = Color.blue;
if (m_Rigidbody == null)
{
Gizmos.DrawWireSphere(transform.position, m_ControlRange);
}
else
{
Gizmos.DrawWireSphere(m_StartPos, m_ControlRange);
}
}
}
fileFormatVersion: 2
guid: 8501577b7fbf32b4392132f3e98d2937
timeCreated: 1523555450
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
//using Ultrahaptics;
/// <summary>
/// Keeps track of collision data to be used for haptics.
/// This class should be attached to GameObjects that will receive haptics when touched,
/// these GameObjects must also have a collider and a Rigidbody.
/// </summary>
[RequireComponent(typeof(Collider), typeof(Rigidbody))]
public class HapticReceiver : MonoBehaviour
{
// Dictionary of colliders that are currently touching the haptic receiver,
// and the corresponding point of contact
private Rigidbody hapticRigidbody;
private CoordinateSpaceConverter _coordinateSpaceConverter;
private const float skinThickness = 0.001f;
private void Awake()
{
hapticRigidbody = GetComponent<Rigidbody>();
_coordinateSpaceConverter = FindObjectOfType<CoordinateSpaceConverter>();
}
public RaycastHit[] GetCurrentContactPoint()
{
RaycastHit[] downHit = hapticRigidbody.SweepTestAll(-transform.up, skinThickness);
//RaycastHit[] upHit = hapticRigidbody.SweepTestAll(Vector3.up, 0.01f);
return downHit.ToArray();
}
}
fileFormatVersion: 2
guid: 3e7520c3b6ec68d4faec7690dce606da
timeCreated: 1484213939
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
using Ultrahaptics;
using System.Linq;
using System.Collections.Generic;
/// <summary>
/// Controller class for all the haptics in the scene.
/// This class is responsible for controlling the Ultrahaptics device
/// and telling it when and where to emit control points.
/// </summary>
public class HapticsController : MonoBehaviour
{
public float contactPointBackwardAdjust = 0.001f;
[Range(100f,200f)]
public float currentFrequency = 200f;
[Range(0f,1.0f)]
public float hapticStrength = 0.5f;
// The parent GameObject of the hands (so we can get access to the haptic receivers)
[SerializeField]
private GameObject _handsRoot;
public int currentControlPoints
{
get
{
if(hapticStrength < 0.95f)
{
return (int)(_maxControlPoints * 1.5f);
}
else
{
return _maxControlPoints;
}
}
}
// 4 is the maximum number of control points that should be emitted at any time
// If this number is set higher than 4 then all points will be weaker
private int _maxControlPoints = 4;
// The AmplitudeModulationEmitter allows us to control the Ultrahaptics array.
// Please refer to the SDK documentation for an explanation of the difference between
// AmplitudeModulationEmitter and TimePointStreamingEmitter.
private AmplitudeModulationEmitter _amEmitter;
List<UnityEngine.Vector3> _debugPoints = new List<UnityEngine.Vector3>();
// The CoordinateSpaceConverter enables conversion between world space and device coordinate space
private CoordinateSpaceConverter _coordinateSpaceConverter;
// A collection of all the haptic receivers in the scene
private HapticReceiver[] _hapticReceivers;
// Use this for initialization
void Start()
{
_amEmitter = new AmplitudeModulationEmitter();
_coordinateSpaceConverter = FindObjectOfType<CoordinateSpaceConverter>();
_hapticReceivers = _handsRoot.GetComponentsInChildren<HapticReceiver>(true);
if (!_amEmitter.isConnected())
{
Debug.LogWarning("No Ultrahaptics array connected");
}
}
// Update is called once per frame
void FixedUpdate()
{
// Get the current contact points from all the haptic receivers
var contactPoints = new List<UnityEngine.Vector3>();
for(int i = 0; i < _hapticReceivers.Length; i++) {
if (_hapticReceivers[i].gameObject.activeInHierarchy)
{
var contactHits = _hapticReceivers[i].GetCurrentContactPoint();
contactPoints.AddRange(contactHits.Select((hit) => hit.point + hit.normal * contactPointBackwardAdjust));
}
}
if(contactPoints.Count <= 0)
{
_amEmitter.stop();
return;
}
// Choose which points to emit if there are too many
var pointsToEmit = ChoosePointsToEmit(contactPoints);
// Store a reference to these points so they can be rendered for debugging
_debugPoints = pointsToEmit;
// Create a list to hold all the control points we want to emit this frame
var amControlPoints = new List<AmplitudeModulationControlPoint>();
// Construct control points for each of the points we want to emit
foreach (var pointToEmit in pointsToEmit)
{
// The positions are in world space so convert them to device space
var deviceSpacePosition = _coordinateSpaceConverter.WorldToDevicePosition(pointToEmit);
// Construct a control point with the position and intensity of the point
var amControlPoint = new AmplitudeModulationControlPoint(deviceSpacePosition, hapticStrength);
amControlPoint.setFrequency(currentFrequency * (float)Units.hertz);
amControlPoints.Add(amControlPoint);
}
// Give the list of control points to the emitter
if (contactPoints.Count > 0)
{
_amEmitter.update(amControlPoints);
}
}
void OnDrawGizmos()
{
if (_debugPoints == null || _debugPoints.Count == 0)
{
// Nothing to draw
return;
}
// Draw a wire sphere at each of the points
Gizmos.color = Color.red;
foreach (var point in _debugPoints)
{
Gizmos.DrawWireSphere(point, 0.005f);
}
}
void OnDisable()
{
// Stop the emitter when this GameObject is destroyed
_amEmitter.stop();
}
/// <summary>
/// Chooses which of the given points should be emitted this frame.
/// If there are fewer or equal points in the given list than the maximum then all will be chosen.
/// </summary>
/// <param name="contactPoints">The list of possible points that could be emitted this frame.</param>
/// <returns>A subset of the given list.</returns>
List<UnityEngine.Vector3> ChoosePointsToEmit(List<UnityEngine.Vector3> contactPoints)
{
var pointsToEmit = new List<UnityEngine.Vector3>();
if (contactPoints.Count <= currentControlPoints)
{
// We can emit all the points
pointsToEmit.AddRange(contactPoints);
}
else
{
// There are more points of contact than haptic points we can emit this frame,
// so we must choose which ones to emit.
// This implementation chooses them randomly, but more sophisticated algorithms could be used
var indices = new int[contactPoints.Count];
for (var i = 0; i < contactPoints.Count; i++)
{
indices[i] = i;
}
indices.OrderBy(a => Random.Range(0, int.MaxValue));
for (var i = 0; i < currentControlPoints; i++)
{
pointsToEmit.Add(contactPoints[indices[i]]);
}
}
return pointsToEmit;
}
}
fileFormatVersion: 2
guid: b04d8f70aa93f78469d2964d21a313f8
timeCreated: 1484214302
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RiggingTest : MonoBehaviour {
public Rigidbody rigTarget;
private Rigidbody myRigid;
float dampTime = 0.05f;
float movingSpeed = 1000f;
// Use this for initialization
void Start () {
myRigid = GetComponent<Rigidbody>();
}
// Update is called once per frame
void FixedUpdate () {
//Vector3 direction = rigTarget.position - myRigid.position;
// transform.position = rigTarget.position;
// myRigid.AddForce(direction * Time.deltaTime * movingSpeed);
myRigid.MovePosition(rigTarget.position);
//myRigid.MoveRotation(rigTarget.rotation);
}
}
fileFormatVersion: 2
guid: c23a56b57e507984ebcf42e02a53b19a
timeCreated: 1523954696
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SyncTestCube : MonoBehaviour {
public float m_MoveSpeed = 2f;
public float m_ScrollSpeed = 30f;
public float m_YawSpeed = 30f;
private Rigidbody m_Rigidbody;
private Material m_ColorMaterial;
private void Awake()
{
m_Rigidbody = GetComponent<Rigidbody>();
m_ColorMaterial = GetComponent<Renderer>().material;
m_ColorMaterial.color = Color.white;
}
// Update is called once per frame
void Update () {
if(GravityBall.Instance.GetButton())
{
m_ColorMaterial.color = Color.red;
}
else
{
m_ColorMaterial.color = Color.white;
}
float xInput = GravityBall.Instance.GetInputAxis("Horizontal");
float zIput = GravityBall.Instance.GetInputAxis("Vertical");
transform.Translate(xInput * m_MoveSpeed * Time.deltaTime, 0, zIput * m_MoveSpeed * Time.deltaTime, Space.World);
float scroll = GravityBall.Instance.GetInputSwipe("Scroll");
float yaw = GravityBall.Instance.GetInputSwipe("Stroke");
transform.Rotate(scroll * m_ScrollSpeed * Time.deltaTime, yaw * m_YawSpeed * Time.deltaTime, 0f,Space.World);
}
}
fileFormatVersion: 2
guid: 061e358065833c542812bcff8271d265
timeCreated: 1524027925
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: c6e8375801ed84be28f219cfb84c2935
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 73f260fa43a63d64e8af172330c64e4b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
This Unity Asset is dependent on Leap Motion tracking and the Leap Motion Controller which can be installed from: https://developer.leapmotion.com/
\ No newline at end of file
fileFormatVersion: 2
guid: cb1e08d6c2b9e4e629986b5afb697fdb
timeCreated: 1427392316
licenseType: Pro
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 2681d190be51e474bac5bf9f13a4bcb7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using UnityEngine;
using UnityEditor;
namespace Leap.Unity {
public static class CorePreferences {
private const string ALLOW_CLEAR_TRANSFORM_HOTKEY_KEY = "LeapMotion_AllowClearTransformHotkey";
private const string ALLOW_GROUP_OBJECTS_HOTKEY_KEY = "LeapMotion_AllowGroupObjectsHotkey";
public static bool allowClearTransformHotkey {
get {
return EditorPrefs.GetBool(ALLOW_CLEAR_TRANSFORM_HOTKEY_KEY, defaultValue: false);
}
set {
EditorPrefs.SetBool(ALLOW_CLEAR_TRANSFORM_HOTKEY_KEY, value);
}
}
public static bool allowGroupObjectsHotkey {
get {
return EditorPrefs.GetBool(ALLOW_GROUP_OBJECTS_HOTKEY_KEY, defaultValue: false);
}
set {
EditorPrefs.SetBool(ALLOW_GROUP_OBJECTS_HOTKEY_KEY, value);
}
}
[LeapPreferences("Core", 0)]
private static void drawCorePreferences() {
drawPreferencesBool(ALLOW_CLEAR_TRANSFORM_HOTKEY_KEY, "Clear Transforms Hotkey", "When you press Ctrl+E, clear out the local position, rotation, and scale of the selected transforms.");
drawPreferencesBool(ALLOW_GROUP_OBJECTS_HOTKEY_KEY, "Group Transforms Hotkey", "When you press Ctrl+G, group all selected objects underneath a single new object named Group.");
}
private static void drawPreferencesBool(string key, string label, string tooltip) {
GUIContent content = new GUIContent(label, tooltip);
bool value = EditorPrefs.GetBool(key, defaultValue: false);
var newValue = EditorGUILayout.Toggle(content, value);
if (newValue != value) {
EditorPrefs.SetBool(key, newValue);
}
}
}
}
fileFormatVersion: 2
guid: 6659559e2a159ac4cbc8a42ba449dcf6
timeCreated: 1498009954
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed. Click to expand it.
fileFormatVersion: 2
guid: 5153a3309ec1fdb4fb6d7ebecfc60279
timeCreated: 1459454776
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
namespace Leap.Unity {
public class CustomPropertyDrawerBase : PropertyDrawer {
public const float INDENT_AMOUNT = 12;
private List<IDrawable> _drawables;
private SerializedProperty _property;
private string _onGuiSampleName;
private string _getHeightSampleName;
public CustomPropertyDrawerBase() {
_onGuiSampleName = "OnGUI for " + GetType().Name;
_getHeightSampleName = "GetPropertyHeight for " + GetType().Name;
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
using (new ProfilerSample(_onGuiSampleName)) {
init(property);
foreach (var drawable in _drawables) {
drawable.Draw(ref position);
}
}
}
public override float GetPropertyHeight(SerializedProperty property, GUIContent label) {
using (new ProfilerSample(_getHeightSampleName)) {
init(property);
float height = 0;
foreach (var drawable in _drawables) {
if (drawable is PropertyContainer) {
height += ((PropertyContainer)drawable).getHeight();
}
}
return height;
}
}
protected virtual void init(SerializedProperty property) {
if (_property == property) {
return;
}
_drawables = new List<IDrawable>();
_property = property;
}
protected void drawPropertyConditionally(string propertyName, string conditionalName, bool includeChildren = true) {
SerializedProperty property, condition;
if (!tryGetProperty(propertyName, out property) || !tryGetProperty(conditionalName, out condition)) {
return;
}
_drawables.Add(new PropertyContainer() {
draw = rect => {
if (condition.boolValue) {
EditorGUI.PropertyField(rect, property, includeChildren);
}
},
getHeight = () => {
return condition.boolValue ? EditorGUI.GetPropertyHeight(property, GUIContent.none, includeChildren) : 0;
}
});
}
protected void drawPropertyConditionally(string propertyName, Func<bool> condition, bool includeChildren = true) {
SerializedProperty property;
if (!tryGetProperty(propertyName, out property)) {
return;
}
_drawables.Add(new PropertyContainer() {
draw = rect => {
if (condition()) {
EditorGUI.PropertyField(rect, property, includeChildren);
}
},
getHeight = () => {
return condition() ? EditorGUI.GetPropertyHeight(property, GUIContent.none, includeChildren) : 0;
}
});
}
protected void drawProperty(string name, bool includeChildren = true, bool disable = false) {
SerializedProperty property;
if (!tryGetProperty(name, out property)) {
return;
}
GUIContent content = new GUIContent(property.displayName, property.tooltip);
_drawables.Add(new PropertyContainer() {
draw = rect => {
EditorGUI.BeginDisabledGroup(disable);
EditorGUI.PropertyField(rect, property, content, includeChildren);
EditorGUI.EndDisabledGroup();
},
getHeight = () => EditorGUI.GetPropertyHeight(property, GUIContent.none, includeChildren)
});
}
protected void drawProperty(string name, Func<string> nameFunc, bool includeChildren = true) {
SerializedProperty property;
if (!tryGetProperty(name, out property)) {
return;
}
GUIContent content = new GUIContent(nameFunc(), property.tooltip);
_drawables.Add(new PropertyContainer() {
draw = rect => {
content.text = nameFunc() ?? property.displayName;
EditorGUI.PropertyField(rect, property, content, includeChildren);
},
getHeight = () => EditorGUI.GetPropertyHeight(property, content, includeChildren)
});
}
protected void drawCustom(Action<Rect> drawFunc, float height) {
_drawables.Add(new PropertyContainer() {
draw = drawFunc,
getHeight = () => height
});
}
protected void drawCustom(Action<Rect> drawFunc, Func<float> heightFunc) {
_drawables.Add(new PropertyContainer() {
draw = drawFunc,
getHeight = heightFunc
});
}
protected void increaseIndent() {
_drawables.Add(new IndentDrawable() {
indent = INDENT_AMOUNT
});
}
protected void decreaseIndent() {
_drawables.Add(new IndentDrawable() {
indent = -INDENT_AMOUNT
});
}
protected bool tryGetProperty(string name, out SerializedProperty property) {
property = _property.FindPropertyRelative(name);
if (property == null) {
Debug.LogWarning("Could not find property " + name + ", was it renamed or removed?");
return false;
} else {
return true;
}
}
protected bool validateProperty(string name) {
if (_property.FindPropertyRelative(name) == null) {
Debug.LogWarning("Could not find property " + name + ", was it renamed or removed?");
return false;
}
return true;
}
private interface IDrawable {
void Draw(ref Rect rect);
}
private struct PropertyContainer : IDrawable {
public Action<Rect> draw;
public Func<float> getHeight;
public void Draw(ref Rect rect) {
rect.height = getHeight();
draw(rect);
rect.y += rect.height;
}
}
private struct IndentDrawable : IDrawable {
public float indent;
public void Draw(ref Rect rect) {
rect.x += indent;
rect.width -= indent;
}
}
}
}
fileFormatVersion: 2
guid: bf0db7f46a29f4745bdcc7d116b80572
timeCreated: 1493751356
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using System;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine;
public static class EmptyFolderUtility {
[MenuItem("Assets/Delete Empty Folders")]
public static void DeleteEmptyFolders() {
string[] directories = Directory.GetDirectories("Assets", "*", SearchOption.AllDirectories);
foreach (var directory in directories) {
try {
if (!Directory.Exists(directory)) {
continue;
}
if (Directory.GetFiles(directory, "*", SearchOption.AllDirectories).Count(p => Path.GetExtension(p) != ".meta") > 0) {
continue;
}
} catch (Exception e) {
Debug.LogException(e);
}
try {
Directory.Delete(directory, recursive: true);
} catch (Exception e) {
Debug.LogError("Could not delete directory " + directory);
Debug.LogException(e);
}
}
AssetDatabase.Refresh();
}
}
fileFormatVersion: 2
guid: 86c4d5fe8c1e52f438fc8663e7d3b46d
timeCreated: 1502479020
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using UnityEditor;
using UnityEngine;
using System.Collections;
using Leap;
namespace Leap.Unity {
[CustomEditor(typeof(LeapHandController))]
public class LeapHandControllerEditor : CustomEditorBase<LeapHandController> {
private const float BOX_RADIUS = 0.45f;
private const float BOX_WIDTH = 0.965f;
private const float BOX_DEPTH = 0.6671f;
public void OnSceneGUI() {
Vector3 origin = target.transform.TransformPoint(Vector3.zero);
Vector3 local_top_left, top_left, local_top_right, top_right,
local_bottom_left, bottom_left, local_bottom_right, bottom_right;
getLocalGlobalPoint(-1, 1, 1, out local_top_left, out top_left);
getLocalGlobalPoint(1, 1, 1, out local_top_right, out top_right);
getLocalGlobalPoint(-1, 1, -1, out local_bottom_left, out bottom_left);
getLocalGlobalPoint(1, 1, -1, out local_bottom_right, out bottom_right);
Handles.DrawLine(origin, top_left);
Handles.DrawLine(origin, top_right);
Handles.DrawLine(origin, bottom_left);
Handles.DrawLine(origin, bottom_right);
drawControllerEdge(origin, local_top_left, local_top_right);
drawControllerEdge(origin, local_bottom_left, local_top_left);
drawControllerEdge(origin, local_bottom_left, local_bottom_right);
drawControllerEdge(origin, local_bottom_right, local_top_right);
drawControllerArc(origin, local_top_left, local_bottom_left, local_top_right, local_bottom_right, -Vector3.forward);
drawControllerArc(origin, local_top_left, local_top_right, local_bottom_left, local_bottom_right, -Vector3.right);
}
private void getLocalGlobalPoint(int x, int y, int z, out Vector3 local, out Vector3 global) {
local = new Vector3(x * BOX_WIDTH, y * BOX_RADIUS, z * BOX_DEPTH);
global = target.transform.TransformPoint(BOX_RADIUS * local.normalized);
}
private void drawControllerEdge(Vector3 origin,
Vector3 edge0, Vector3 edge1) {
Vector3 right_normal = target.transform.TransformDirection(Vector3.Cross(edge0, edge1));
float right_angle = Vector3.Angle(edge0, edge1);
Handles.DrawWireArc(origin, right_normal,
target.transform.TransformDirection(edge0),
right_angle, target.transform.lossyScale.x * BOX_RADIUS);
}
private void drawControllerArc(Vector3 origin,
Vector3 edgeA0, Vector3 edgeA1,
Vector3 edgeB0, Vector3 edgeB1,
Vector3 direction) {
Vector3 faceA = Vector3.Lerp(edgeA0, edgeA1, 0.5f);
Vector3 faceB = Vector3.Lerp(edgeB0, edgeB1, 0.5f);
Vector3 depth_normal = target.transform.TransformDirection(direction);
float angle = Vector3.Angle(faceA, faceB);
Handles.DrawWireArc(origin, depth_normal,
target.transform.TransformDirection(faceA),
angle, target.transform.lossyScale.x * BOX_RADIUS);
}
}
}
fileFormatVersion: 2
guid: e617762d9583845b884c0dce6e2b54a6
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using UnityEngine;
using UnityEditor;
namespace Leap.Unity{
[CustomEditor(typeof(LeapImageRetriever))]
public class LeapImageRetrieverEditor : CustomEditorBase<LeapImageRetriever> {
private GUIContent _brightTextureGUIContent;
private GUIContent _rawTextureGUIContent;
private GUIContent _distortionTextureGUIContent;
protected override void OnEnable() {
base.OnEnable();
_brightTextureGUIContent = new GUIContent("Bright Texture");
_rawTextureGUIContent = new GUIContent("Raw Texture");
_distortionTextureGUIContent = new GUIContent("Distortion Texture");
}
public override void OnInspectorGUI() {
base.OnInspectorGUI();
if (Application.isPlaying) {
var data = target.TextureData;
var dataType = typeof(Object);
EditorGUI.BeginDisabledGroup(true);
EditorGUILayout.ObjectField(_brightTextureGUIContent, data.BrightTexture.CombinedTexture, dataType, true);
EditorGUILayout.ObjectField(_rawTextureGUIContent, data.RawTexture.CombinedTexture, dataType, true);
EditorGUILayout.ObjectField(_distortionTextureGUIContent, data.Distortion.CombinedTexture, dataType, true);
EditorGUI.EndDisabledGroup();
}
}
}
}
fileFormatVersion: 2
guid: 489ddbb3e49c3c34f8016d4ea0c4b5d2
timeCreated: 1429813852
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using UnityEditor;
namespace Leap.Unity {
[CustomEditor(typeof(LeapServiceProvider))]
public class LeapServiceProviderEditor : CustomEditorBase {
protected override void OnEnable() {
base.OnEnable();
specifyCustomDecorator("_frameOptimization", frameOptimizationWarning);
specifyConditionalDrawing("_frameOptimization", (int)LeapServiceProvider.FrameOptimizationMode.None,
"_physicsExtrapolation",
"_physicsExtrapolationTime");
specifyConditionalDrawing("_physicsExtrapolation", (int)LeapServiceProvider.PhysicsExtrapolationMode.Manual,
"_physicsExtrapolationTime");
}
private void frameOptimizationWarning(SerializedProperty property) {
var mode = (LeapServiceProvider.FrameOptimizationMode)property.intValue;
string warningText;
switch (mode) {
case LeapServiceProvider.FrameOptimizationMode.ReuseUpdateForPhysics:
warningText = "Reusing update frames for physics introduces a frame of latency for physics interactions.";
break;
case LeapServiceProvider.FrameOptimizationMode.ReusePhysicsForUpdate:
warningText = "This optimization REQUIRES physics framerate to match your target framerate EXACTLY.";
break;
default:
return;
}
EditorGUILayout.HelpBox(warningText, MessageType.Warning);
}
}
}
fileFormatVersion: 2
guid: 820a690b04c5ed7449f6d0bd3a657f06
timeCreated: 1458765852
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 18de20d1eb6c6394386ad46cb2ab3db3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using System.Linq;
using NUnit.Framework;
namespace Leap.Unity.Tests {
public abstract class FrameValidator {
protected const float TOLERANCE = 0.0001f;
protected static Finger.FingerType[] _fingers = {
Finger.FingerType.TYPE_INDEX,
Finger.FingerType.TYPE_MIDDLE,
Finger.FingerType.TYPE_PINKY,
Finger.FingerType.TYPE_RING,
Finger.FingerType.TYPE_THUMB
};
protected static Bone.BoneType[] _bones = {
Bone.BoneType.TYPE_DISTAL,
Bone.BoneType.TYPE_INTERMEDIATE,
Bone.BoneType.TYPE_METACARPAL,
Bone.BoneType.TYPE_PROXIMAL
};
protected Frame _frame;
[SetUp]
public virtual void Setup() {
_frame = createFrame();
}
[SetUp]
public virtual void Teardown() {
_frame = null;
}
protected abstract Frame createFrame();
[Test]
public void HandsAreUnique() {
bool existDuplicates = _frame.Hands.GroupBy(h => h.Id).Any(g => g.Count() > 1);
Assert.That(existDuplicates, Is.False);
}
[Test]
public void HandsHaveFiveFingers() {
foreach (Hand hand in _frame.Hands) {
Assert.That(hand.Fingers.Count, Is.EqualTo(5));
}
}
[Test]
public void FingersHaveFourBones([ValueSource(typeof(FrameValidator), "_fingers")] Finger.FingerType fingerType,
[ValueSource(typeof(FrameValidator), "_bones")] Bone.BoneType boneType) {
foreach (Hand hand in _frame.Hands) {
Bone bone = getBone(hand, fingerType, boneType);
Assert.That(bone, Is.Not.Null);
}
}
[Test]
public void BoneLength([ValueSource(typeof(FrameValidator), "_fingers")] Finger.FingerType fingerType,
[ValueSource(typeof(FrameValidator), "_bones")] Bone.BoneType boneType) {
foreach (Hand hand in _frame.Hands) {
Bone bone = getBone(hand, fingerType, boneType);
float apparentLength = bone.NextJoint.DistanceTo(bone.PrevJoint);
float actualLength = bone.Length;
Assert.That(actualLength, Is.EqualTo(apparentLength).Within(TOLERANCE));
}
}
[Test]
public void JointsMatch([ValueSource(typeof(FrameValidator), "_fingers")] Finger.FingerType fingerType,
[ValueSource(typeof(FrameValidator), "_bones")] Bone.BoneType boneType) {
foreach (Hand hand in _frame.Hands) {
Bone prevBone = getBone(hand, fingerType, boneType - 1);
Bone bone = getBone(hand, fingerType, boneType);
Bone nextBone = getBone(hand, fingerType, boneType + 1);
if (prevBone != null) {
assertVectorsEqual(prevBone.NextJoint, bone.PrevJoint);
}
if (nextBone != null) {
assertVectorsEqual(nextBone.PrevJoint, bone.NextJoint);
}
}
}
[Test]
public void CenterIsBetweenJoints([ValueSource(typeof(FrameValidator), "_fingers")] Finger.FingerType fingerType,
[ValueSource(typeof(FrameValidator), "_bones")] Bone.BoneType boneType) {
foreach (Hand hand in _frame.Hands) {
Bone bone = getBone(hand, fingerType, boneType);
Vector jointAverage = (bone.NextJoint + bone.PrevJoint) * 0.5f;
assertVectorsEqual(jointAverage, bone.Center);
}
}
[Test]
public void DirectionMatchesJoints([ValueSource(typeof(FrameValidator), "_fingers")] Finger.FingerType fingerType,
[ValueSource(typeof(FrameValidator), "_bones")] Bone.BoneType boneType) {
foreach (Hand hand in _frame.Hands) {
Bone bone = getBone(hand, fingerType, boneType);
//If the joints are at the same position this test is meaningless
if (bone.NextJoint.DistanceTo(bone.PrevJoint) < TOLERANCE) {
continue;
}
Vector jointDirection = (bone.NextJoint - bone.PrevJoint).Normalized;
assertVectorsEqual(jointDirection, bone.Direction);
}
}
[Test]
public void RotationIsValid() {
foreach (Hand hand in _frame.Hands) {
Assert.That(hand.Rotation.IsValid());
}
}
protected Bone getBone(Hand hand, Finger.FingerType fingerType, Bone.BoneType boneType) {
if (boneType < 0 || (int)boneType >= 4) {
return null;
}
foreach (Finger finger in hand.Fingers) {
if (finger.Type != fingerType) {
continue;
}
return finger.Bone(boneType);
}
return null;
}
protected void assertVectorsEqual(Vector a, Vector b, string vectorName = "Vector") {
Assert.That(a.x, Is.EqualTo(b.x).Within(TOLERANCE), vectorName + ".x");
Assert.That(a.y, Is.EqualTo(b.y).Within(TOLERANCE), vectorName + ".y");
Assert.That(a.z, Is.EqualTo(b.z).Within(TOLERANCE), vectorName + ".z");
}
}
}
fileFormatVersion: 2
guid: 7c6eb467dcf4a1446badf724a74ce9e3
timeCreated: 1461712111
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using NUnit.Framework;
namespace Leap.Unity.Tests {
/// <summary>
/// Tests for From(), To(), and Then() extension methods.
///
/// These extension methods provide a consistent rightward syntax for mathematical
/// transformations, e.g. Quaternions and matrices as well as more trivial types like
/// float and Vector3.
/// </summary>
public class FromThenTests {
public static float EPSILON = 0.0006f;
#region Vector3
private static Vector3 VEC_A = new Vector3(0.5f, 0.2f, 0.8f);
private static Vector3 VEC_B = new Vector3(0.13f, 0.98f, 3000f);
[Test]
public void FromVecAToVecB() {
Assert.That(AreVector3sEqual(VEC_A.Then(VEC_B.From(VEC_A)), VEC_B));
}
[Test]
public void ToVecBFromVecA() {
Assert.That(AreVector3sEqual(VEC_A.Then(VEC_A.To(VEC_B)), VEC_B));
}
[Test]
public void FromVecBToVecA() {
Assert.That(AreVector3sEqual(VEC_B.Then(VEC_A.From(VEC_B)), VEC_A));
}
[Test]
public void ToVecAFromVecB() {
Assert.That(AreVector3sEqual(VEC_B.Then(VEC_B.To(VEC_A)), VEC_A));
}
private static bool AreVector3sEqual(Vector3 a, Vector3 b) {
return (a - b).magnitude < EPSILON;
}
#endregion
#region Quaternion
private static Quaternion QUAT_A {
get { return Quaternion.AngleAxis(90f, Vector3.up); }
}
private static Quaternion QUAT_B {
get { return Quaternion.AngleAxis(43f, Vector3.one.normalized); }
}
[Test]
public void FromQuatAToQuatB() {
Assert.That(AreQuaternionsEqual(QUAT_A.Then(QUAT_B.From(QUAT_A)), QUAT_B));
}
[Test]
public void ToQuatAFromQuatB() {
Assert.That(AreQuaternionsEqual(QUAT_A.Then(QUAT_A.To(QUAT_B)), QUAT_B));
}
[Test]
public void FromQuatBToQuatA() {
Assert.That(AreQuaternionsEqual(QUAT_B.Then(QUAT_A.From(QUAT_B)), QUAT_A));
}
[Test]
public void ToQuatBFromQuatA() {
Assert.That(AreQuaternionsEqual(QUAT_B.Then(QUAT_B.To(QUAT_A)), QUAT_A));
}
private static bool AreQuaternionsEqual(Quaternion a, Quaternion b) {
return (a.ToAngleAxisVector() - b.ToAngleAxisVector()).magnitude < EPSILON;
}
#endregion
#region Pose
public static Pose POSE_A {
get { return new Pose(VEC_A, QUAT_A); }
}
public static Pose POSE_B {
get { return new Pose(VEC_B, QUAT_B); }
}
[Test]
public void FromPoseAToPoseB() {
Assert.That(ArePosesEqual(POSE_B.Then(POSE_A.From(POSE_B)), POSE_A));
}
[Test]
public void ToPoseAFromPoseB() {
Assert.That(ArePosesEqual(POSE_B.Then(POSE_B.To(POSE_A)), POSE_A));
}
[Test]
public void FromPoseBToPoseA() {
Assert.That(ArePosesEqual(POSE_A.Then(POSE_B.From(POSE_A)), POSE_B));
}
[Test]
public void ToPoseBFromPoseA() {
Assert.That(ArePosesEqual(POSE_A.Then(POSE_A.To(POSE_B)), POSE_B));
}
private bool ArePosesEqual(Pose a, Pose b) {
return AreVector3sEqual(a.position, b.position)
&& AreQuaternionsEqual(a.rotation, b.rotation);
}
#endregion
#region Matrix4x4
private Matrix4x4 MAT_A {
get {
return Matrix4x4.TRS(Vector3.right * 100f,
Quaternion.AngleAxis(77f, Vector3.one),
Vector3.one * 35f);
}
}
private Matrix4x4 MAT_B {
get {
return Matrix4x4.TRS(Vector3.one * 20f,
Quaternion.AngleAxis(24f, Vector3.up),
Vector3.one * 2f);
}
}
[Test]
public void FromMatrixBToMatrixA() {
Assert.That(AreMatricesEqual(MAT_B.Then(MAT_A.From(MAT_B)), MAT_A));
}
[Test]
public void ToMatrixAFromMatrixB() {
Assert.That(AreMatricesEqual(MAT_B.Then(MAT_B.To(MAT_A)), MAT_A));
}
[Test]
public void FromMatrixAToMatrixB() {
Assert.That(AreMatricesEqual(MAT_A.Then(MAT_B.From(MAT_A)), MAT_B));
}
private static bool AreMatricesEqual(Matrix4x4 a, Matrix4x4 b) {
return AreVector3sEqual(a.GetVector3(), b.GetVector3())
&& AreQuaternionsEqual(a.GetQuaternion(), b.GetQuaternion());
}
#endregion
}
}
fileFormatVersion: 2
guid: d8dae2a3179de4145ad49d629d64787d
timeCreated: 1508543219
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using System;
using NUnit.Framework;
namespace Leap.Unity.Tests {
[TestFixture(Category = "TestHandFactory")]
public class HandFactoryTwoHands : FrameValidator {
protected override Frame createFrame() {
return TestHandFactory.MakeTestFrame(0, true, true);
}
[Test]
public void CorrectHandCount() {
Assert.That(_frame.Hands.Count, Is.EqualTo(2));
}
}
[TestFixture(Category = "TestHandFactory")]
public class HandFactoryLeft : FrameValidator {
protected override Frame createFrame() {
return TestHandFactory.MakeTestFrame(0, true, false);
}
[Test]
public void CorrectHandCount() {
Assert.That(_frame.Hands.Count, Is.EqualTo(1));
}
}
[TestFixture(Category = "TestHandFactory")]
public class HandFactoryRight : FrameValidator {
protected override Frame createFrame() {
return TestHandFactory.MakeTestFrame(0, false, true);
}
[Test]
public void CorrectHandCount() {
Assert.That(_frame.Hands.Count, Is.EqualTo(1));
}
}
}
fileFormatVersion: 2
guid: 0fb0f9371f59c894f8597f3dcaefec54
timeCreated: 1461711202
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using System;
using System.Linq;
using System.Reflection;
using System.Collections;
using NUnit.Framework;
namespace Leap.Unity.Tests {
public class TransformCopyIdentity : FrameValidator {
protected Frame _originalFrame;
protected override Frame createFrame() {
_originalFrame = TestHandFactory.MakeTestFrame(0, true, true);
return _originalFrame.TransformedCopy(LeapTransform.Identity);
}
[Test]
public void IdsAreSame() {
Assert.That(_frame.Hands.Count, Is.EqualTo(_originalFrame.Hands.Count));
for (int i = 0; i < _frame.Hands.Count; i++) {
Hand oldHand = _originalFrame.Hands[i];
Hand newHand = _frame.Hands[i];
Assert.That(oldHand.Id, Is.EqualTo(newHand.Id));
for (int j = 0; j < 5; j++) {
Finger oldFinger = oldHand.Fingers[j];
Finger newFinger = newHand.Fingers[j];
Assert.That(oldFinger.Id, Is.EqualTo(newFinger.Id));
}
}
}
[Test]
public void AreBinaryEqual() {
assertObjectsEqual("Frame", _originalFrame, _frame);
}
private void assertObjectsEqual(string objectName, object a, object b) {
if ((a == null) != (b == null)) {
Assert.Fail("For " + objectName + ", one object was null an the other was not.");
return;
}
Type typeA = a.GetType();
Type typeB = b.GetType();
if (typeA != typeB) {
Assert.Fail("For " + objectName + ", object Type " + typeA + " is not equal to type " + typeB + ".");
}
if (typeA.IsValueType) {
Assert.That(a, Is.EqualTo(b), objectName);
return;
}
if (a is IList) {
IList aList = a as IList;
IList bList = b as IList;
Assert.That(aList.Count, Is.EqualTo(bList.Count), objectName + ".Count");
for (int i = 0; i < aList.Count; i++) {
assertObjectsEqual(objectName + "[" + i + "]", aList[i], bList[i]);
}
} else {
FieldInfo[] fields = typeA.GetFields(BindingFlags.Public | BindingFlags.Instance);
foreach (FieldInfo field in fields) {
assertObjectsEqual(objectName + "." + field.Name, field.GetValue(a), field.GetValue(b));
}
PropertyInfo[] properties = typeA.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo property in properties) {
if (property.GetIndexParameters().Length == 0) {
object propA;
try {
propA = property.GetValue(a, null);
} catch (Exception exceptionA) {
try {
property.GetValue(b, null);
Assert.Fail("For " + objectName + ", one property threw an exception where the other did not.");
return;
} catch (Exception exceptionB) {
Assert.That(exceptionA.GetType(), Is.EqualTo(exceptionB.GetType()), "For " + objectName + ", both properties threw exceptions but their types were different.");
return;
}
}
object propB = property.GetValue(b, null);
assertObjectsEqual(objectName + "." + property.Name, propA, propB);
}
}
}
}
}
public class TransformCopyTranslation : FrameValidator {
protected static Vector translation = Vector.Forward;
protected Frame _originalFrame;
protected override Frame createFrame() {
_originalFrame = TestHandFactory.MakeTestFrame(0, true, true);
LeapTransform forwardTransform = new LeapTransform(translation, LeapQuaternion.Identity);
return _originalFrame.TransformedCopy(forwardTransform);
}
[Test]
public void IsTranslated() {
for (int i = 0; i < _frame.Hands.Count; i++) {
Hand oldHand = _originalFrame.Hands[i];
Hand newHand = _frame.Hands[i];
assertVectorsEqual(oldHand.PalmPosition + translation, newHand.PalmPosition, "Palm Position");
for (int j = 0; j < 5; j++) {
Finger oldFinger = oldHand.Fingers[j];
Finger newFinger = newHand.Fingers[j];
assertVectorsEqual(oldFinger.TipPosition + translation, newFinger.TipPosition, oldFinger.Type.ToString());
}
}
}
}
}
fileFormatVersion: 2
guid: 735f00b9d48456f469d7d7fce9a5a333
timeCreated: 1461711984
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 2eb1085ae7df28d488d4f685b4f209d8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: deb56e030d40a2e459ff79f6da5e82cc
timeCreated: 1493336311
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: -1
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 0
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 256
textureFormat: -1
textureCompression: 3
compressionQuality: 1
crunchedCompression: 1
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 256
textureFormat: -1
textureCompression: 3
compressionQuality: 1
crunchedCompression: 1
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Android
maxTextureSize: 256
textureFormat: -1
textureCompression: 3
compressionQuality: 1
crunchedCompression: 1
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 00048aead71e05243b337b5046e4947e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 6bdf40ab4a111d648a7e00084192c40f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Attachment Hands Example Blue
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0, g: 0.42068958, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
fileFormatVersion: 2
guid: 67b66d4eb50ed684d94eb00bc04709d2
timeCreated: 1493435146
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Attachment Hands Example Green
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.48316428, g: 1, b: 0.2352941, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
fileFormatVersion: 2
guid: 81f6d387b9d5c994d9e291af97c84648
timeCreated: 1493435146
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Attachment Hands Example Red
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 0.058823526, b: 0.42880338, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
fileFormatVersion: 2
guid: 113742fcb5ec3254e96c40315b70f248
timeCreated: 1493435146
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1354446095468498}
m_IsPrefabParent: 1
--- !u!1 &1354446095468498
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4742774030164970}
m_Layer: 0
m_Name: Attachment Hands Example Transform Prefab
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1531365716100390
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4471079068341904}
- component: {fileID: 33258764987043748}
- component: {fileID: 23068812418196360}
m_Layer: 0
m_Name: Capsule (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1663003037467920
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4291965287335194}
- component: {fileID: 33102402002948822}
- component: {fileID: 23281748798793066}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1944279291534800
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4544740298448378}
- component: {fileID: 33108316112102534}
- component: {fileID: 23598185842902946}
m_Layer: 0
m_Name: Capsule (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4291965287335194
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1663003037467920}
m_LocalRotation: {x: 0.7071065, y: -0, z: -0, w: 0.7071071}
m_LocalPosition: {x: 0.000000007450581, y: -0, z: 0.0104}
m_LocalScale: {x: -0.005102402, y: 0.015, z: -0.0051024}
m_Children: []
m_Father: {fileID: 4742774030164970}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 90.00001, y: 0, z: 0}
--- !u!4 &4471079068341904
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531365716100390}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.0095, z: 0}
m_LocalScale: {x: -0.0053297738, y: 0.015, z: -0.0053297738}
m_Children: []
m_Father: {fileID: 4742774030164970}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4544740298448378
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1944279291534800}
m_LocalRotation: {x: -0, y: -0, z: -0.70710677, w: 0.7071068}
m_LocalPosition: {x: 0.0091, y: 0, z: 0}
m_LocalScale: {x: -0.0053267055, y: 0.015, z: -0.0053267055}
m_Children: []
m_Father: {fileID: 4742774030164970}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90.00001}
--- !u!4 &4742774030164970
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1354446095468498}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.6588137, y: 0.65881366, z: 0.65881366}
m_Children:
- {fileID: 4291965287335194}
- {fileID: 4471079068341904}
- {fileID: 4544740298448378}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &23068812418196360
MeshRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531365716100390}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 81f6d387b9d5c994d9e291af97c84648, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!23 &23281748798793066
MeshRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1663003037467920}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 67b66d4eb50ed684d94eb00bc04709d2, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!23 &23598185842902946
MeshRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1944279291534800}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 113742fcb5ec3254e96c40315b70f248, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &33102402002948822
MeshFilter:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1663003037467920}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!33 &33108316112102534
MeshFilter:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1944279291534800}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!33 &33258764987043748
MeshFilter:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531365716100390}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
fileFormatVersion: 2
guid: 1477d75bc13cce74ea026927aa88dd9f
timeCreated: 1493435497
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:
This diff could not be displayed because it is too large.
fileFormatVersion: 2
guid: e136a15ad33ad024d857c80ab2e20ec8
timeCreated: 1493340871
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed. Click to expand it.
fileFormatVersion: 2
guid: e97e5c56326797c41be5a618cde4727a
timeCreated: 1456790283
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 480afe764b344a64688bf3a502bc612a
timeCreated: 1456789367
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
This diff could not be displayed because it is too large.
fileFormatVersion: 2
guid: b8716ea72d45ecc4f9d690226f6664d1
timeCreated: 1455584052
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 9a1f8659dc3f7b74486b73db925392de
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: d88e9011efa39d24a9c768560b6c9bf0
timeCreated: 1462923422
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
This diff could not be displayed because it is too large.
fileFormatVersion: 2
guid: af5071277bb494844a54bfccdc5e226f
timeCreated: 1460509684
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 1d352d8f60ef73b4aad43bee36c7ddab
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 8e191cfd76525421fa90723c1a520a70
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 4096
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
fileFormatVersion: 2
guid: 36c2955be7f365c44ad76b5f21a9e8d1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 4f1e7bc24ef9d25499537cf0f916ad53
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Background
m_Shader: {fileID: 4800000, guid: a944a7b9f5c8740469de79e2e07b4437, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 5
m_CustomRenderQueue: -1
stringTagMap: {}
m_SavedProperties:
serializedVersion: 2
m_TexEnvs: {}
m_Floats: {}
m_Colors: {}
fileFormatVersion: 2
guid: a781c82cecc141143bb13e71d88efa99
timeCreated: 1429641609
licenseType: Free
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Foreground
m_Shader: {fileID: 4800000, guid: 4a2714c8f776648479c759c998cdbf16, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 5
m_CustomRenderQueue: -1
stringTagMap: {}
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
data:
first:
name: _MainTex
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _BumpMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailNormalMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _ParallaxMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _OcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _EmissionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailMask
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailAlbedoMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _MetallicGlossMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
data:
first:
name: _SrcBlend
second: 1
data:
first:
name: _DstBlend
second: 0
data:
first:
name: _Cutoff
second: 0.5
data:
first:
name: _Parallax
second: 0.02
data:
first:
name: _ZWrite
second: 1
data:
first:
name: _Glossiness
second: 0.5
data:
first:
name: _BumpScale
second: 1
data:
first:
name: _OcclusionStrength
second: 1
data:
first:
name: _DetailNormalMapScale
second: 1
data:
first:
name: _UVSec
second: 0
data:
first:
name: _Mode
second: 0
data:
first:
name: _Metallic
second: 0
data:
first:
name: _EmissionScaleUI
second: 0
m_Colors:
data:
first:
name: _EmissionColor
second: {r: 0, g: 0, b: 0, a: 1}
data:
first:
name: _Color
second: {r: 1, g: 1, b: 1, a: 1}
data:
first:
name: _EmissionColorUI
second: {r: 1, g: 1, b: 1, a: 1}
fileFormatVersion: 2
guid: 3f4fac4e15d524ca1bdd90a2fe016185
timeCreated: 1430880378
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ThresholdOverlay
m_Shader: {fileID: 4800000, guid: 8e5b00b7c29383f48b52edad41699d70, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 5
m_CustomRenderQueue: -1
stringTagMap: {}
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
data:
first:
name: _MainTex
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _BumpMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailNormalMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _ParallaxMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _OcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _EmissionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailMask
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailAlbedoMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _MetallicGlossMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
data:
first:
name: _SrcBlend
second: 1
data:
first:
name: _DstBlend
second: 0
data:
first:
name: _Cutoff
second: 0.5
data:
first:
name: _Parallax
second: 0.02
data:
first:
name: _ZWrite
second: 1
data:
first:
name: _Glossiness
second: 0.5
data:
first:
name: _BumpScale
second: 1
data:
first:
name: _OcclusionStrength
second: 1
data:
first:
name: _DetailNormalMapScale
second: 1
data:
first:
name: _UVSec
second: 0
data:
first:
name: _Mode
second: 0
data:
first:
name: _Metallic
second: 0
data:
first:
name: _EmissionScaleUI
second: 0
data:
first:
name: _Fade
second: 0.5
data:
first:
name: _Min
second: 0.2
data:
first:
name: _Max
second: 0.3
m_Colors:
data:
first:
name: _EmissionColor
second: {r: 0, g: 0, b: 0, a: 1}
data:
first:
name: _Color
second: {r: 1, g: 1, b: 1, a: 1}
data:
first:
name: _EmissionColorUI
second: {r: 1, g: 1, b: 1, a: 1}
fileFormatVersion: 2
guid: aa4becb64f4f17d429ea16a4241a82e0
timeCreated: 1429641624
licenseType: Free
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type
This diff is collapsed. Click to expand it.
No preview for this file type
This diff is collapsed. Click to expand it.
No preview for this file type
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.