diff --git a/Assets/FittsLawVR.meta b/Assets/FittsLawVR.meta new file mode 100644 index 0000000..fd5e179 --- /dev/null +++ b/Assets/FittsLawVR.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62d3a01001b36e5458fdd69d42454965 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/FittsLawVR/Prefabs.meta b/Assets/FittsLawVR/Prefabs.meta new file mode 100644 index 0000000..cecd55c --- /dev/null +++ b/Assets/FittsLawVR/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d31c8fb2741a8b4bb15554eee798a44 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/FittsLawVR/Prefabs/Oculus.prefab b/Assets/FittsLawVR/Prefabs/Oculus.prefab new file mode 100644 index 0000000..5288052 --- /dev/null +++ b/Assets/FittsLawVR/Prefabs/Oculus.prefab @@ -0,0 +1,3283 @@ +%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_SourcePrefab: {fileID: 0} + m_RootGameObject: {fileID: 1183045170563806} + m_IsPrefabAsset: 1 +--- !u!1 &1008010802821890 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4178561024636574} + - component: {fileID: 137612276124298222} + m_Layer: 0 + m_Name: lctrl:o_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1029393255810302 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4139459556117688} + - component: {fileID: 114001859480273076} + - component: {fileID: 114463545341352292} + - component: {fileID: 114840397608499616} + m_Layer: 0 + m_Name: OVRCameraRig + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1031802246653814 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4062604697072744} + - component: {fileID: 137805404417022070} + m_Layer: 0 + m_Name: lctrl:ring_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1042878997297914 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4491574881290202} + - component: {fileID: 114962958340395502} + m_Layer: 0 + m_Name: RTouch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1045658553142772 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4111184685383556} + - component: {fileID: 137148132631994804} + m_Layer: 0 + m_Name: rctrl:main_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1053801355523812 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4465248853309910} + - component: {fileID: 20274601183661862} + m_Layer: 0 + m_Name: RightEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1061161000150842 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4034613778799152} + - component: {fileID: 137180000663918186} + m_Layer: 0 + m_Name: rctrl:o_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1078465785723288 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4444380538584808} + m_Layer: 0 + m_Name: rctrl:b_hold + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1082399576097744 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4133093452106756} + m_Layer: 0 + m_Name: lctrl:b_hold + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1131268841222728 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4127641868092796} + m_Layer: 0 + m_Name: TrackingSpace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1141293064429872 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4716441106909838} + - component: {fileID: 137613867366649898} + m_Layer: 0 + m_Name: lctrl:o_button_decal_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1183045170563806 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4410846568587808} + m_Layer: 0 + m_Name: Oculus + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1189129104510430 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4107914804363626} + - component: {fileID: 137204444273523720} + m_Layer: 0 + m_Name: lctrl:surface_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1207312671622230 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4455092461885150} + m_Layer: 0 + m_Name: rctrl:geometry_null + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1230995782317284 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4364185373208546} + - component: {fileID: 137468296976460544} + m_Layer: 0 + m_Name: rctrl:a_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1231531406751686 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4388112727649494} + m_Layer: 0 + m_Name: lctrl:b_button03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1270099051622174 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4912419501220768} + m_Layer: 0 + m_Name: lctrl:b_trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1293166971399762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4512843973412506} + - component: {fileID: 114839188770181300} + - component: {fileID: 120398966450370718} + m_Layer: 0 + m_Name: SelectionVisualizer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1306310864550006 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4003427305254816} + - component: {fileID: 54323481038950528} + m_Layer: 0 + m_Name: LeftHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1315822590551050 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4029300027851912} + - component: {fileID: 137914174105819778} + m_Layer: 0 + m_Name: rctrl:controller_body_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1321730224802014 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4653219990905850} + - component: {fileID: 137040064589917182} + m_Layer: 0 + m_Name: lctrl:side_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1324281428395128 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4887762857460790} + - component: {fileID: 137361936360025664} + m_Layer: 0 + m_Name: rctrl:o_button_decal_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1340961996715960 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4578042792432272} + - component: {fileID: 20756120698993726} + m_Layer: 0 + m_Name: LeftEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1376108724270460 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4533541412696044} + - component: {fileID: 143737885462451472} + - component: {fileID: 114995186159704452} + - component: {fileID: 114370772782704848} + - component: {fileID: 114506725510804180} + m_Layer: 0 + m_Name: OVRPlayerController + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1382528177965624 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4232438007324584} + - component: {fileID: 137974184637426204} + m_Layer: 0 + m_Name: rctrl:ring_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1387646442887024 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4937160217228036} + m_Layer: 0 + m_Name: lctrl:b_stick_IGNORE + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1449194769942470 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4935933450093108} + - component: {fileID: 137877157368393854} + m_Layer: 0 + m_Name: rctrl:thumbstick_ball_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1480171889903294 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4813744234393538} + - component: {fileID: 81402152418839728} + - component: {fileID: 20888543910458868} + - component: {fileID: 114301251741820116} + m_Layer: 0 + m_Name: CenterEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1482830777472834 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4352286269394490} + - component: {fileID: 137984259938474902} + m_Layer: 0 + m_Name: lctrl:y_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1513286662987698 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4362283647895826} + - component: {fileID: 137961172473005288} + m_Layer: 0 + m_Name: rctrl:b_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1513791001280726 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4910292472569130} + m_Layer: 0 + m_Name: rctrl:b_button03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1535555518007482 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4891010876983576} + m_Layer: 0 + m_Name: rctrl:b_trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1541658138338664 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4925291493155058} + - component: {fileID: 33669567690537454} + - component: {fileID: 23929117139990098} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1550272665643462 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4369252638870738} + m_Layer: 0 + m_Name: rctrl:b_button02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1567590013772700 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4229078841310128} + m_Layer: 0 + m_Name: lctrl:b_stick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1597946625617276 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4146450307585708} + m_Layer: 0 + m_Name: lctrl:b_button02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1652686885004074 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4245763007847274} + m_Layer: 0 + m_Name: lctrl:b_button01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1669541702215424 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4939801866340422} + - component: {fileID: 137004120655206302} + m_Layer: 0 + m_Name: rctrl:side_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1722890906776760 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4317680904826592} + - component: {fileID: 137096908432534910} + m_Layer: 0 + m_Name: lctrl:x_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1724730679745614 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4415734246794500} + - component: {fileID: 137627683081495916} + m_Layer: 0 + m_Name: lctrl:main_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1794725814233656 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4759431838530558} + m_Layer: 0 + m_Name: rctrl:right_touch_controller_world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1798033961986062 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4622912572211856} + - component: {fileID: 137018590653453048} + m_Layer: 0 + m_Name: lctrl:controller_body_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1801793881473454 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4145083746083470} + - component: {fileID: 212871506437813090} + m_Layer: 0 + m_Name: MessageBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1814801617670008 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4409045441053244} + m_Layer: 0 + m_Name: rctrl:b_stick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1821865350508356 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048411268462084} + - component: {fileID: 23559814118952182} + - component: {fileID: 102202735798131216} + m_Layer: 5 + m_Name: Message + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1853435194287092 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4541191661546702} + - component: {fileID: 114027548463849574} + m_Layer: 0 + m_Name: LTouch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1863465214629996 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4471817159416240} + m_Layer: 0 + m_Name: rctrl:b_button01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1866140103649316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4085176178632756} + - component: {fileID: 114021309938585376} + - component: {fileID: 114027885419952974} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1868761396121918 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4752821825769380} + m_Layer: 0 + m_Name: ForwardDirection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1876116716611796 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4323039354355834} + m_Layer: 0 + m_Name: lctrl:geometry_null + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1934979368438408 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4419754587853222} + - component: {fileID: 54109972591532240} + m_Layer: 0 + m_Name: RightHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1945148176587708 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4214297037958582} + m_Layer: 0 + m_Name: lctrl:left_touch_controller_world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1959184156362832 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4309044444266546} + m_Layer: 0 + m_Name: rctrl:b_stick_IGNORE + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1964298081179526 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4472463806269930} + m_Layer: 0 + m_Name: TrackerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1976751641897454 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4620243736624550} + - component: {fileID: 137491217167986792} + m_Layer: 0 + m_Name: rctrl:surface_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1989181151997952 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4697233872465348} + - component: {fileID: 137478618964489738} + m_Layer: 0 + m_Name: lctrl:thumbstick_ball_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4003427305254816 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1306310864550006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4541191661546702} + m_Father: {fileID: 4127641868092796} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4029300027851912 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1315822590551050} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4034613778799152 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1061161000150842} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4048411268462084 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1821865350508356} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1.57} + m_LocalScale: {x: 0.15807404, y: 0.38758174, z: 0.23063003} + m_Children: [] + m_Father: {fileID: 4145083746083470} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4062604697072744 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1031802246653814} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4085176178632756 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1866140103649316} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.67, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4410846568587808} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4107914804363626 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1189129104510430} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4111184685383556 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1045658553142772} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4127641868092796 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1131268841222728} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4578042792432272} + - {fileID: 4813744234393538} + - {fileID: 4465248853309910} + - {fileID: 4472463806269930} + - {fileID: 4003427305254816} + - {fileID: 4419754587853222} + m_Father: {fileID: 4139459556117688} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4133093452106756 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1082399576097744} + m_LocalRotation: {x: -0.18065539, y: -0.13555649, z: -0.067166515, w: 0.97184193} + m_LocalPosition: {x: 0.013074442, y: -0.025639696, z: -0.027427113} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4214297037958582} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4139459556117688 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1029393255810302} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4127641868092796} + m_Father: {fileID: 4533541412696044} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4145083746083470 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1801793881473454} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.65811} + m_LocalScale: {x: 0.028354773, y: 0.00918638, z: 0.048044328} + m_Children: + - {fileID: 4048411268462084} + m_Father: {fileID: 4813744234393538} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4146450307585708 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1597946625617276} + m_LocalRotation: {x: 0.017080953, y: -0.07918932, z: 0.52647054, w: 0.84632504} + m_LocalPosition: {x: -0.0091353385, y: 0.005499125, z: -0.00011681918} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4214297037958582} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4178561024636574 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1008010802821890} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4214297037958582 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1945148176587708} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: -8.659561e-17} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4245763007847274} + - {fileID: 4146450307585708} + - {fileID: 4388112727649494} + - {fileID: 4133093452106756} + - {fileID: 4229078841310128} + - {fileID: 4912419501220768} + m_Father: {fileID: 4541191661546702} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4229078841310128 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1567590013772700} + m_LocalRotation: {x: 0.0027868259, y: 0.70437866, z: -0.0031505642, w: 0.7098119} + m_LocalPosition: {x: 0.010637393, y: 0.00497835, z: -0.009418557} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4937160217228036} + m_Father: {fileID: 4214297037958582} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4232438007324584 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1382528177965624} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4245763007847274 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1652686885004074} + m_LocalRotation: {x: 0.05660452, y: -0.05795374, z: -0.0046757394, w: 0.9967023} + m_LocalPosition: {x: -0.0019170768, y: -0.0073837424, z: -0.00091214647} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4214297037958582} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4309044444266546 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1959184156362832} + m_LocalRotation: {x: -4.5059287e-17, y: -0.70108956, z: -6.5911624e-17, w: 0.71307325} + m_LocalPosition: {x: -0.019321036, y: 0, z: 9.992007e-18} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4409045441053244} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4317680904826592 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1722890906776760} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4323039354355834 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1876116716611796} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4622912572211856} + - {fileID: 4415734246794500} + - {fileID: 4716441106909838} + - {fileID: 4178561024636574} + - {fileID: 4062604697072744} + - {fileID: 4653219990905850} + - {fileID: 4107914804363626} + - {fileID: 4697233872465348} + - {fileID: 4317680904826592} + - {fileID: 4352286269394490} + m_Father: {fileID: 4541191661546702} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4352286269394490 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1482830777472834} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4362283647895826 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1513286662987698} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4364185373208546 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1230995782317284} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4369252638870738 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1550272665643462} + m_LocalRotation: {x: 0.07876507, y: 0.01894126, z: 0.5343878, w: 0.8413483} + m_LocalPosition: {x: 0.009152712, y: 0.0054823146, z: 0.000030916483} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4759431838530558} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4388112727649494 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1231531406751686} + m_LocalRotation: {x: 0.05660452, y: -0.05795374, z: -0.0046757394, w: 0.9967023} + m_LocalPosition: {x: 0.012083728, y: -0.01402681, z: -0.0007126567} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4214297037958582} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4409045441053244 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1814801617670008} + m_LocalRotation: {x: -0.003149668, y: 0.7098123, z: 0.002783398, w: 0.7043784} + m_LocalPosition: {x: -0.010637393, y: 0.00497835, z: -0.009418557} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4309044444266546} + m_Father: {fileID: 4759431838530558} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4410846568587808 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1183045170563806} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.67, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4512843973412506} + - {fileID: 4533541412696044} + - {fileID: 4085176178632756} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4415734246794500 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1724730679745614} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4419754587853222 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1934979368438408} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4491574881290202} + m_Father: {fileID: 4127641868092796} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4444380538584808 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1078465785723288} + m_LocalRotation: {x: -0.17913595, y: 0.14914332, z: 0.022661837, w: 0.97218984} + m_LocalPosition: {x: -0.013074442, y: -0.025639696, z: -0.027427113} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4759431838530558} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4455092461885150 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1207312671622230} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4364185373208546} + - {fileID: 4362283647895826} + - {fileID: 4029300027851912} + - {fileID: 4111184685383556} + - {fileID: 4887762857460790} + - {fileID: 4034613778799152} + - {fileID: 4232438007324584} + - {fileID: 4939801866340422} + - {fileID: 4620243736624550} + - {fileID: 4935933450093108} + m_Father: {fileID: 4491574881290202} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4465248853309910 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1053801355523812} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4127641868092796} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4471817159416240 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1863465214629996} + m_LocalRotation: {x: 0.056604527, y: 0.05795374, z: 0.004675739, w: 0.9967023} + m_LocalPosition: {x: 0.0019170768, y: -0.0073837424, z: -0.00091214647} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4759431838530558} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4472463806269930 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1964298081179526} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4127641868092796} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4491574881290202 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1042878997297914} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4455092461885150} + - {fileID: 4759431838530558} + m_Father: {fileID: 4419754587853222} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4512843973412506 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1293166971399762} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.67, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4925291493155058} + m_Father: {fileID: 4410846568587808} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4533541412696044 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1376108724270460} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4139459556117688} + - {fileID: 4752821825769380} + m_Father: {fileID: 4410846568587808} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4541191661546702 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1853435194287092} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4323039354355834} + - {fileID: 4214297037958582} + m_Father: {fileID: 4003427305254816} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4578042792432272 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1340961996715960} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4127641868092796} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4620243736624550 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1976751641897454} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4622912572211856 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1798033961986062} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4653219990905850 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1321730224802014} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4697233872465348 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1989181151997952} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4716441106909838 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1141293064429872} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4323039354355834} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4752821825769380 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1868761396121918} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4533541412696044} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4759431838530558 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1794725814233656} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: -8.659561e-17} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4471817159416240} + - {fileID: 4369252638870738} + - {fileID: 4910292472569130} + - {fileID: 4444380538584808} + - {fileID: 4409045441053244} + - {fileID: 4891010876983576} + m_Father: {fileID: 4491574881290202} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4813744234393538 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1480171889903294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4145083746083470} + m_Father: {fileID: 4127641868092796} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4887762857460790 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1324281428395128} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4891010876983576 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535555518007482} + m_LocalRotation: {x: 0.056604527, y: 0.05795374, z: 0.004675739, w: 0.9967023} + m_LocalPosition: {x: 0.001420367, y: 0.021865888, z: -0.005495974} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4759431838530558} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4910292472569130 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1513791001280726} + m_LocalRotation: {x: 0.07876507, y: 0.01894126, z: 0.5343878, w: 0.8413483} + m_LocalPosition: {x: -0.012083728, y: -0.01402681, z: -0.0007126567} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4759431838530558} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4912419501220768 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1270099051622174} + m_LocalRotation: {x: -0.05795374, y: -0.05660452, z: 0.9967023, w: 0.0046757394} + m_LocalPosition: {x: -0.001420367, y: 0.021865888, z: -0.005495974} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4214297037958582} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4925291493155058 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1541658138338664} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 3} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_Children: [] + m_Father: {fileID: 4512843973412506} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4935933450093108 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1449194769942470} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4937160217228036 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1387646442887024} + m_LocalRotation: {x: 0, y: -0.70108956, z: -0, w: 0.71307325} + m_LocalPosition: {x: -0.019321036, y: 0, z: 9.992007e-18} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4229078841310128} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4939801866340422 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1669541702215424} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4455092461885150} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &20274601183661862 +Camera: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1053801355523812} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!20 &20756120698993726 +Camera: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1340961996715960} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!20 &20888543910458868 +Camera: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1480171889903294} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 90 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!23 &23559814118952182 +MeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1821865350508356} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: ff2791f8cc50fd342832d3d80893c37f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 4813744234393538} + 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!23 &23929117139990098 +MeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1541658138338664} + 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: 2100000, guid: 02f4d91e963f1e74d8bee0002c24efe7, 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 &33669567690537454 +MeshFilter: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1541658138338664} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &54109972591532240 +Rigidbody: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1934979368438408} + 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!54 &54323481038950528 +Rigidbody: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1306310864550006} + 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!81 &81402152418839728 +AudioListener: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1480171889903294} + m_Enabled: 1 +--- !u!102 &102202735798131216 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1821865350508356} + m_Text: Trial Complete + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 4eedafad5084240419e649245c7b2093, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!114 &114001859480273076 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1029393255810302} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df9f338034892c44ebb62d97894772f1, type: 3} + m_Name: + m_EditorClassIdentifier: + usePerEyeCameras: 0 + useFixedUpdateForTracking: 0 +--- !u!114 &114021309938585376 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1866140103649316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!114 &114027548463849574 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1853435194287092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aed62bf3ae2456c408f247f96808ce96, type: 3} + m_Name: + m_EditorClassIdentifier: + m_modelGearVrController: {fileID: 1853435194287092} + m_modelOculusGoController: {fileID: 1853435194287092} + m_controller: 1 +--- !u!114 &114027885419952974 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1866140103649316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4a9c50de96f6d04386957f4741ac65c, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingSpace: {fileID: 4127641868092796} + joyPadClickButton: 8192 + performSphereCastForGazepointer: 0 + matchNormalOnPhysicsColliders: 0 + useLeftStickScroll: 1 + leftStickDeadZone: 0.15 + useSwipeScroll: 1 + minSwipeMovement: 0 + swipeScrollScale: 4 + activeController: 0 + angleDragThreshold: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_AllowActivationOnMobileDevice: 1 +--- !u!114 &114301251741820116 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1480171889903294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df8e1d778abf442e4bec449c360e9e1c, type: 3} + m_Name: + m_EditorClassIdentifier: + fadeTime: 2 + fadeColor: {r: 0.01, g: 0.01, b: 0.01, a: 1} + fadeOnStart: 1 + renderQueue: 5000 +--- !u!114 &114370772782704848 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1376108724270460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f07515ada089df47868559a20dd6783, type: 3} + m_Name: + m_EditorClassIdentifier: + quitKey: 27 + fadeInTexture: {fileID: 0} + speedRotationIncrement: 0.05 + layerName: Default +--- !u!114 &114463545341352292 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1029393255810302} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 0 + _monoscopic: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + _trackingOriginType: 0 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 0 + AllowRecenter: 1 + _reorientHMDOnControllerRecenter: 1 +--- !u!114 &114506725510804180 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1376108724270460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b71d1996d67004241a3b69960856ffcb, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114839188770181300 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1293166971399762} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 12283131fa5724f44b343883ae474072, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingSpace: {fileID: 4127641868092796} + linePointer: {fileID: 120398966450370718} + gazePointer: {fileID: 4925291493155058} + rayDrawDistance: 500 + gazeDrawDistance: 3 + activeController: 0 +--- !u!114 &114840397608499616 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1029393255810302} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8570f210d5cef498074d4fe90d403f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EventMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &114962958340395502 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1042878997297914} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aed62bf3ae2456c408f247f96808ce96, type: 3} + m_Name: + m_EditorClassIdentifier: + m_modelGearVrController: {fileID: 1042878997297914} + m_modelOculusGoController: {fileID: 1042878997297914} + m_controller: 2 +--- !u!114 &114995186159704452 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1376108724270460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0950df82e7936c84983497630bde5b54, type: 3} + m_Name: + m_EditorClassIdentifier: + Acceleration: 0.1 + Damping: 0.3 + BackAndSideDampen: 0.5 + JumpForce: 0.3 + RotationAmount: 1.5 + RotationRatchet: 45 + SnapRotation: 1 + FixedSpeedSteps: 0 + HmdResetsY: 1 + HmdRotatesY: 1 + GravityModifier: 1 + useProfileData: 0 + EnableLinearMovement: 0 + EnableRotation: 0 +--- !u!120 &120398966450370718 +LineRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1293166971399762} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 0} + - {fileID: 2100000, guid: 02f4d91e963f1e74d8bee0002c24efe7, 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: 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 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 2 + widthMultiplier: 0.02 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!137 &137004120655206302 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1669541702215424} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4444380538584808} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4444380538584808} + m_AABB: + m_Center: {x: 0.015085926, y: 0.00079575554, z: 0.0022845895} + m_Extent: {x: 0.0075142607, y: 0.014562387, z: 0.0074783238} + m_DirtyAABB: 0 +--- !u!137 &137018590653453048 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1798033961986062} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300008, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4214297037958582} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4214297037958582} + m_AABB: + m_Center: {x: 0.0012377053, y: -0.01906057, z: -0.031179678} + m_Extent: {x: 0.030484851, y: 0.051344883, z: 0.03589144} + m_DirtyAABB: 0 +--- !u!137 &137040064589917182 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1321730224802014} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300016, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4133093452106756} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4133093452106756} + m_AABB: + m_Center: {x: -0.015075568, y: -0.000016345643, z: 0.0018507424} + m_Extent: {x: 0.0069265533, y: 0.014548335, z: 0.007307569} + m_DirtyAABB: 0 +--- !u!137 &137096908432534910 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1722890906776760} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300002, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4245763007847274} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4245763007847274} + m_AABB: + m_Center: {x: -0.00000072829425, y: 0.000013418496, z: 0.0004995642} + m_Extent: {x: 0.0050891023, y: 0.005111114, z: 0.0025754946} + m_DirtyAABB: 0 +--- !u!137 &137148132631994804 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1045658553142772} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300004, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4891010876983576} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4891010876983576} + m_AABB: + m_Center: {x: -0.0006609438, y: -0.0013324562, z: -0.013972085} + m_Extent: {x: 0.014561905, y: 0.009363498, z: 0.013364948} + m_DirtyAABB: 0 +--- !u!137 &137180000663918186 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1061161000150842} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300002, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4910292472569130} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4910292472569130} + m_AABB: + m_Center: {x: -0.00000026635826, y: -0.00000013131648, z: 0.0005419669} + m_Extent: {x: 0.004489839, y: 0.0044893455, z: 0.0007474746} + m_DirtyAABB: 0 +--- !u!137 &137204444273523720 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1189129104510430} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4214297037958582} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4214297037958582} + m_AABB: + m_Center: {x: 0.00016466714, y: 0.00024955533, z: -0.0010734661} + m_Extent: {x: 0.02819586, y: 0.02827545, z: 0.005969927} + m_DirtyAABB: 0 +--- !u!137 &137361936360025664 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1324281428395128} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300018, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4910292472569130} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4910292472569130} + m_AABB: + m_Center: {x: 0.00004066783, y: 0.00002745376, z: 0.0012303367} + m_Extent: {x: 0.0015236214, y: 0.0021297487, z: 0.00001941109} + m_DirtyAABB: 0 +--- !u!137 &137468296976460544 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1230995782317284} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300016, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4471817159416240} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4471817159416240} + m_AABB: + m_Center: {x: 0.0000007292256, y: 0.000013417564, z: 0.00051031867} + m_Extent: {x: 0.0050891023, y: 0.005111115, z: 0.0025862483} + m_DirtyAABB: 0 +--- !u!137 &137478618964489738 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1989181151997952} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300014, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4214297037958582} + - {fileID: 4229078841310128} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4214297037958582} + m_AABB: + m_Center: {x: 0.010604477, y: 0.0049807085, z: 0.0022465447} + m_Extent: {x: 0.010754766, y: 0.010751986, z: 0.007853852} + m_DirtyAABB: 0 +--- !u!137 &137491217167986792 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1976751641897454} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300010, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4759431838530558} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4759431838530558} + m_AABB: + m_Center: {x: -0.00016466714, y: 0.00024955347, z: -0.0010734657} + m_Extent: {x: 0.02819586, y: 0.02827545, z: 0.0059699244} + m_DirtyAABB: 0 +--- !u!137 &137612276124298222 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1008010802821890} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300012, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4388112727649494} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4388112727649494} + m_AABB: + m_Center: {x: 0.00000037020072, y: 0.00000087032095, z: 0.00057196105} + m_Extent: {x: 0.004508083, y: 0.004509521, z: 0.0007474739} + m_DirtyAABB: 0 +--- !u!137 &137613867366649898 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1141293064429872} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300018, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4388112727649494} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4388112727649494} + m_AABB: + m_Center: {x: 0.000017451588, y: -0.00010048866, z: 0.0012767098} + m_Extent: {x: 0.00211959, y: 0.001628002, z: 0.000015275553} + m_DirtyAABB: 0 +--- !u!137 &137627683081495916 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1724730679745614} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300010, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4912419501220768} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4912419501220768} + m_AABB: + m_Center: {x: -0.0006609438, y: 0.0013324535, z: -0.013972079} + m_Extent: {x: 0.0145619055, y: 0.009363498, z: 0.0133649465} + m_DirtyAABB: 0 +--- !u!137 &137805404417022070 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1031802246653814} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300006, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4214297037958582} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4214297037958582} + m_AABB: + m_Center: {x: 0.016699282, y: 0.010818447, z: -0.036364146} + m_Extent: {x: 0.054633915, y: 0.02167825, z: 0.050220706} + m_DirtyAABB: 0 +--- !u!137 &137877157368393854 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1449194769942470} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300008, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4759431838530558} + - {fileID: 4409045441053244} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4759431838530558} + m_AABB: + m_Center: {x: -0.01054777, y: 0.004984765, z: 0.00224772} + m_Extent: {x: 0.010899382, y: 0.010843774, z: 0.007860384} + m_DirtyAABB: 0 +--- !u!137 &137914174105819778 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1315822590551050} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300012, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4759431838530558} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4759431838530558} + m_AABB: + m_Center: {x: -0.0012377053, y: -0.019060574, z: -0.031160347} + m_Extent: {x: 0.030484851, y: 0.051344886, z: 0.035910763} + m_DirtyAABB: 0 +--- !u!137 &137961172473005288 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1513286662987698} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300014, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4369252638870738} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4369252638870738} + m_AABB: + m_Center: {x: 0.000000345055, y: -0.0000009192154, z: 0.0003571303} + m_Extent: {x: 0.0050524976, y: 0.0050528734, z: 0.0025179689} + m_DirtyAABB: 0 +--- !u!137 &137974184637426204 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1382528177965624} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300006, guid: 270ca9aaa39af4d4bb26754fdce0c971, type: 3} + m_Bones: + - {fileID: 4759431838530558} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4759431838530558} + m_AABB: + m_Center: {x: -0.016699282, y: 0.010818443, z: -0.036364153} + m_Extent: {x: 0.054633915, y: 0.021678247, z: 0.050220713} + m_DirtyAABB: 0 +--- !u!137 &137984259938474902 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1482830777472834} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 2100000, guid: d8a202bc350b09c4e808ea37c6929755, 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: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300004, guid: 1bf8f52eeebe8e149b9d6e3477251532, type: 3} + m_Bones: + - {fileID: 4146450307585708} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4146450307585708} + m_AABB: + m_Center: {x: 0.0000023958273, y: -0.000002474524, z: 0.0004961197} + m_Extent: {x: 0.005060065, y: 0.0050237104, z: 0.0025072566} + m_DirtyAABB: 0 +--- !u!143 &143737885462451472 +CharacterController: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1376108724270460} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 2 + m_Radius: 0.5 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.01 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!212 &212871506437813090 +SpriteRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1801793881473454} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 10754, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 744b884f5ab1b4aefb7838eeec4d046a, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 19.2, y: 10.8} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/FittsLawVR/Prefabs/Oculus.prefab.meta b/Assets/FittsLawVR/Prefabs/Oculus.prefab.meta new file mode 100644 index 0000000..cfc1584 --- /dev/null +++ b/Assets/FittsLawVR/Prefabs/Oculus.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d0ed8ddd4ae30547a37f12335d8a28e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleVR/GVRVideoPlayer.unitypackage.meta b/Assets/GoogleVR/GVRVideoPlayer.unitypackage.meta new file mode 100644 index 0000000..7071b37 --- /dev/null +++ b/Assets/GoogleVR/GVRVideoPlayer.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 39850532bc74a4078a24832112e8aef3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta b/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta new file mode 100644 index 0000000..88dd0ac --- /dev/null +++ b/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dc278786e6540af428ccbf7825495004 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet.meta b/Assets/JsonDotNet.meta new file mode 100644 index 0000000..70e7f13 --- /dev/null +++ b/Assets/JsonDotNet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2947be5c0c8e8c2409ef2ae8c294bf23 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies.meta b/Assets/JsonDotNet/Assemblies.meta new file mode 100644 index 0000000..59ac16b --- /dev/null +++ b/Assets/JsonDotNet/Assemblies.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 577d9725f58264943855b8ac185531fe +folderAsset: yes +timeCreated: 1466788344 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/AOT.meta b/Assets/JsonDotNet/Assemblies/AOT.meta new file mode 100644 index 0000000..f9dba64 --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/AOT.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 14f21d7a1e53a8c4e87b25526a7eb63c +folderAsset: yes +timeCreated: 1466788345 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML b/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML new file mode 100644 index 0000000..2b72b8e --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML @@ -0,0 +1,8015 @@ + + + + Newtonsoft.Json + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a JSON array. + + + + + Writes the beginning of a JSON object. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Represents a BSON Oid (object id). + + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Initializes a new instance of the class. + + The Oid value. + + + + Converts a binary value to and from a base 64 string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + + + + + + + + + + + + + + + + + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + true if the written enum text will be camel case; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Json Converter for Vector2, Vector3 and Vector4. Only serializes x, y, (z) and (w) properties. + + + + + Default Constructor - All Vector types enabled by default + + + + + Selectively enable Vector types + + Use for Vector2 objects + Use for Vector3 objects + Use for Vector4 objects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface for using pooled arrays. + + The array type content. + + + + Rent a array from the pool. This array must be returned when it is no longer needed. + + The minimum required length of the array. The returned array may be longer. + The rented array from the pool. This array must be returned when it is no longer needed. + + + + Return an array to the pool. + + The array that is being returned. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Initializes a new instance of the class. + + + + + Instructs the to always serialize the member, and require the member has a value. + + + + + Specifies how JSON comments are handled when loading JSON. + + + + + Ignore comments. + + + + + Load comments as a with type . + + + + + Specifies how line information is handled when loading JSON. + + + + + Ignore line information. + + + + + Load line information. + + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Specifies the settings used when loading JSON. + + + + + Gets or sets how JSON comments are handled when loading JSON. + + The JSON comment handling. + + + + Gets or sets how JSON line info is handled when loading JSON. + + The JSON line info handling. + + + + Specifies the settings used when merging JSON. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Gets or sets how how null value properties are merged. + + How null value properties are merged. + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies how null value properties are merged. + + + + + The content's null value properties will be ignored during merging. + + + + + The content's null value properties will be merged. + + + + + Represents a raw JSON string. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a token that can contain other tokens. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with the specified key. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Represents a JSON object. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets the node type for this . + + The type. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Represents a JSON array. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets the at the reader's current position. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets the at the writer's current position. + + + + + Gets the token being writen. + + The token being writen. + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Represents an abstract JSON token. + + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Represents a JSON property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a undefined value. + + A undefined value. + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Represents a trace writer. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Contract details for a used by the . + + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + The instance to get attributes for. This parameter should be a , , or . + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Contract details for a used by the . + + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Provides data for the Error event. + + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used by to resolves a for a given . + + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly improve performance with multiple resolver instances because expensive reflection will only + happen once. This setting can cause unexpected behavior if different instances of the resolver are suppose to produce different + results. When set to false it is highly recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Resolved name of the property. + + + + Resolves the key of the dictionary. By default is used to resolve dictionary keys. + + Key of the dictionary. + Resolved key of the dictionary. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the collection values. + + true if the creator has a parameter with the collection values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Contract details for a used by the . + + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets or sets the dictionary key resolver. + + The dictionary key resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the dictionary values. + + true if the creator has a parameter with the dictionary values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be deserialized. + + A predicate used to determine whether the property should be deserialized. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Contract details for a used by the . + + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Gets or sets the extension data value type. + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the JsonConverter type described by the argument. + + The JsonConverter type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + Create a factory function that can be used to create instances of a JsonConverter described by the + argument type. The returned function can then be used to either invoke the converter's default ctor, or any + parameterized constructors by way of an object array. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + The property is not required but it cannot be a null value. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the how to serialize the object. + + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Gets the of the converter. + + The of the converter. + + + + The parameter list to use when constructing the JsonConverter described by ConverterType. + If null, the default constructor is used. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Initializes a new instance of the class. + + Type of the converter. + Parameter list to use when constructing the JsonConverter. Can be null. + + + + Instructs the how to serialize the object. + + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Specifies the settings on a object. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets a function that creates the used by the serializer when resolving references. + + A function that creates the used by the serializer when resolving references. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Gets or sets the reader's character buffer pool. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the writer's character array pool. + + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Represents a collection of . + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings + from . + + + A new instance. + The will not use default settings + from . + + + + + Creates a new instance using the specified . + The will not use default settings + from . + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings + from . + + + + + Creates a new instance. + The will use default settings + from . + + + A new instance. + The will use default settings + from . + + + + + Creates a new instance using the specified . + The will use default settings + from as well as the specified . + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings + from as well as the specified . + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the JSON structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Specifies type name handling options for the . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Specifies the type of JSON token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the end of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current JSON object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + A null value can be passed to the method for token's that don't have a value, e.g. . + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML.meta b/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML.meta new file mode 100644 index 0000000..0e2097f --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aadad8ac54f29e44583510294ac5c312 +timeCreated: 1466788355 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll b/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll new file mode 100644 index 0000000..3d09325 Binary files /dev/null and b/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll differ diff --git a/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll.meta b/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll.meta new file mode 100644 index 0000000..ea21e1f --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 6a3c684705042f345975d924f6983e36 +timeCreated: 1466788352 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 1 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + SamsungTV: + enabled: 1 + settings: + STV_MODEL: STANDARD_13 + Tizen: + enabled: 1 + settings: {} + WebGL: + enabled: 1 + settings: {} + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 1 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll + SDK: AnySDK + ScriptingBackend: Il2Cpp + iOS: + enabled: 1 + settings: + CompileFlags: + FrameworkDependencies: + tvOS: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/Standalone.meta b/Assets/JsonDotNet/Assemblies/Standalone.meta new file mode 100644 index 0000000..242f110 --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/Standalone.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 01ef782d02bb1994dbe418b69432552b +folderAsset: yes +timeCreated: 1466788344 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML b/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML new file mode 100644 index 0000000..f5a5a04 --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML @@ -0,0 +1,8040 @@ + + + + Newtonsoft.Json + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a JSON array. + + + + + Writes the beginning of a JSON object. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Represents a BSON Oid (object id). + + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Initializes a new instance of the class. + + The Oid value. + + + + Converts a binary value to and from a base 64 string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + + + + + + + + + + + + + + + + + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + true if the written enum text will be camel case; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Json Converter for Vector2, Vector3 and Vector4. Only serializes x, y, (z) and (w) properties. + + + + + Default Constructor - All Vector types enabled by default + + + + + Selectively enable Vector types + + Use for Vector2 objects + Use for Vector3 objects + Use for Vector4 objects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface for using pooled arrays. + + The array type content. + + + + Rent a array from the pool. This array must be returned when it is no longer needed. + + The minimum required length of the array. The returned array may be longer. + The rented array from the pool. This array must be returned when it is no longer needed. + + + + Return an array to the pool. + + The array that is being returned. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Initializes a new instance of the class. + + + + + Instructs the to always serialize the member, and require the member has a value. + + + + + Specifies how JSON comments are handled when loading JSON. + + + + + Ignore comments. + + + + + Load comments as a with type . + + + + + Specifies how line information is handled when loading JSON. + + + + + Ignore line information. + + + + + Load line information. + + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Specifies the settings used when loading JSON. + + + + + Gets or sets how JSON comments are handled when loading JSON. + + The JSON comment handling. + + + + Gets or sets how JSON line info is handled when loading JSON. + + The JSON line info handling. + + + + Specifies the settings used when merging JSON. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Gets or sets how how null value properties are merged. + + How null value properties are merged. + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies how null value properties are merged. + + + + + The content's null value properties will be ignored during merging. + + + + + The content's null value properties will be merged. + + + + + Represents a raw JSON string. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a token that can contain other tokens. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with the specified key. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Represents a JSON object. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets the node type for this . + + The type. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Represents a JSON array. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets the at the reader's current position. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets the at the writer's current position. + + + + + Gets the token being writen. + + The token being writen. + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Represents an abstract JSON token. + + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Represents a JSON property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a undefined value. + + A undefined value. + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Represents a trace writer. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Contract details for a used by the . + + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + The instance to get attributes for. This parameter should be a , , or . + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Contract details for a used by the . + + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides data for the Error event. + + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used by to resolves a for a given . + + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly improve performance with multiple resolver instances because expensive reflection will only + happen once. This setting can cause unexpected behavior if different instances of the resolver are suppose to produce different + results. When set to false it is highly recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Resolved name of the property. + + + + Resolves the key of the dictionary. By default is used to resolve dictionary keys. + + Key of the dictionary. + Resolved key of the dictionary. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the collection values. + + true if the creator has a parameter with the collection values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Contract details for a used by the . + + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets or sets the dictionary key resolver. + + The dictionary key resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the dictionary values. + + true if the creator has a parameter with the dictionary values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be deserialized. + + A predicate used to determine whether the property should be deserialized. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Contract details for a used by the . + + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Gets or sets the extension data value type. + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the JsonConverter type described by the argument. + + The JsonConverter type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + Create a factory function that can be used to create instances of a JsonConverter described by the + argument type. The returned function can then be used to either invoke the converter's default ctor, or any + parameterized constructors by way of an object array. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + The property is not required but it cannot be a null value. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the how to serialize the object. + + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Gets the of the converter. + + The of the converter. + + + + The parameter list to use when constructing the JsonConverter described by ConverterType. + If null, the default constructor is used. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Initializes a new instance of the class. + + Type of the converter. + Parameter list to use when constructing the JsonConverter. Can be null. + + + + Instructs the how to serialize the object. + + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Specifies the settings on a object. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets a function that creates the used by the serializer when resolving references. + + A function that creates the used by the serializer when resolving references. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Gets or sets the reader's character buffer pool. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the writer's character array pool. + + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Represents a collection of . + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings + from . + + + A new instance. + The will not use default settings + from . + + + + + Creates a new instance using the specified . + The will not use default settings + from . + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings + from . + + + + + Creates a new instance. + The will use default settings + from . + + + A new instance. + The will use default settings + from . + + + + + Creates a new instance using the specified . + The will use default settings + from as well as the specified . + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings + from as well as the specified . + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the JSON structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Specifies type name handling options for the . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Specifies the type of JSON token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the end of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current JSON object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + A null value can be passed to the method for token's that don't have a value, e.g. . + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML.meta b/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML.meta new file mode 100644 index 0000000..7623f10 --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6807fedb8dcaf04682d2c84f0ab753f +timeCreated: 1466788355 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll b/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll new file mode 100644 index 0000000..cea08b2 Binary files /dev/null and b/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll differ diff --git a/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll.meta b/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll.meta new file mode 100644 index 0000000..e130150 --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll.meta @@ -0,0 +1,75 @@ +fileFormatVersion: 2 +guid: 17aef65a15b471f468b5fbeb4ff0c6a1 +timeCreated: 1466788349 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + Linux: + enabled: 1 + settings: + CPU: x86 + Linux64: + enabled: 1 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 1 + settings: + CPU: AnyCPU + OSXIntel: + enabled: 1 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 1 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 1 + settings: + CPU: AnyCPU + SamsungTV: + enabled: 0 + settings: + STV_MODEL: STANDARD_13 + Win: + enabled: 1 + settings: + CPU: AnyCPU + Win64: + enabled: 1 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: Il2Cpp + iOS: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/Windows.meta b/Assets/JsonDotNet/Assemblies/Windows.meta new file mode 100644 index 0000000..0c47db5 --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/Windows.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1418141139a6ac443b18cb05c0643a29 +folderAsset: yes +timeCreated: 1466788345 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML b/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML new file mode 100644 index 0000000..1af577e --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML @@ -0,0 +1,7977 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Initializes a new instance of the class. + + The Oid value. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a JSON array. + + + + + Writes the beginning of a JSON object. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + + + + + + + + + + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + + + + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + true if the written enum text will be camel case; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Json Converter for Vector2, Vector3 and Vector4. Only serializes x, y, (z) and (w) properties. + + + + + Default Constructor - All Vector types enabled by default + + + + + Selectively enable Vector types + + Use for Vector2 objects + Use for Vector3 objects + Use for Vector4 objects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface for using pooled arrays. + + The array type content. + + + + Rent a array from the pool. This array must be returned when it is no longer needed. + + The minimum required length of the array. The returned array may be longer. + The rented array from the pool. This array must be returned when it is no longer needed. + + + + Return an array to the pool. + + The array that is being returned. + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the object. + + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string. + Serialization will happen on a new thread. + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting. + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting and a collection of . + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Asynchronously populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Instructs the to use the specified when serializing the member or class. + + + + + Gets the of the converter. + + The of the converter. + + + + The parameter list to use when constructing the JsonConverter described by ConverterType. + If null, the default constructor is used. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Initializes a new instance of the class. + + Type of the converter. + Parameter list to use when constructing the JsonConverter. Can be null. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Initializes a new instance of the class. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to always serialize the member with the specified name. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the to always serialize the member, and require the member has a value. + + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings + from . + + + A new instance. + The will not use default settings + from . + + + + + Creates a new instance using the specified . + The will not use default settings + from . + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings + from . + + + + + Creates a new instance. + The will use default settings + from . + + + A new instance. + The will use default settings + from . + + + + + Creates a new instance using the specified . + The will use default settings + from as well as the specified . + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings + from as well as the specified . + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the JSON structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the JSON structure + to a Stream using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Specifies the settings on a object. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets a function that creates the used by the serializer when resolving references. + + A function that creates the used by the serializer when resolving references. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Gets or sets the reader's character buffer pool. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the writer's character array pool. + + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Specifies the type of JSON token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the end of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current JSON object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + A null value can be passed to the method for token's that don't have a value, e.g. . + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Specifies how JSON comments are handled when loading JSON. + + + + + Ignore comments. + + + + + Load comments as a with type . + + + + + Specifies how line information is handled when loading JSON. + + + + + Ignore line information. + + + + + Load line information. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Represents a JSON constructor. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a token that can contain other tokens. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Raises the event. + + The instance containing the event data. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with the specified key. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Represents a JSON object. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets the node type for this . + + The type. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Represents a JSON property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a raw JSON string. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Specifies the settings used when loading JSON. + + + + + Gets or sets how JSON comments are handled when loading JSON. + + The JSON comment handling. + + + + Gets or sets how JSON line info is handled when loading JSON. + + The JSON line info handling. + + + + Specifies the settings used when merging JSON. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Gets or sets how how null value properties are merged. + + How null value properties are merged. + + + + Represents an abstract JSON token. + + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets the at the reader's current position. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets the at the writer's current position. + + + + + Gets the token being writen. + + The token being writen. + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a undefined value. + + A undefined value. + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies how null value properties are merged. + + + + + The content's null value properties will be ignored during merging. + + + + + The content's null value properties will be merged. + + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + The property is not required but it cannot be a null value. + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Used by to resolves a for a given . + + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly improve performance with multiple resolver instances because expensive reflection will only + happen once. This setting can cause unexpected behavior if different instances of the resolver are suppose to produce different + results. When set to false it is highly recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Resolved name of the property. + + + + Resolves the key of the dictionary. By default is used to resolve dictionary keys. + + Key of the dictionary. + Resolved key of the dictionary. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Represents a trace writer. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the collection values. + + true if the creator has a parameter with the collection values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Contract details for a used by the . + + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets or sets the dictionary key resolver. + + The dictionary key resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the dictionary values. + + true if the creator has a parameter with the dictionary values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Gets or sets the extension data value type. + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be deserialized. + + A predicate used to determine whether the property should be deserialized. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the JsonConverter type described by the argument. + + The JsonConverter type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + Create a factory function that can be used to create instances of a JsonConverter described by the + argument type. The returned function can then be used to either invoke the converter's default ctor, or any + parameterized constructors by way of an object array. + + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + The instance to get attributes for. This parameter should be a , , or . + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than TypeNameHandling.None. + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + diff --git a/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML.meta b/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML.meta new file mode 100644 index 0000000..c4619d0 --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 36f7323c55864364d8bb88c736e4bca6 +timeCreated: 1466788355 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll b/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll new file mode 100644 index 0000000..05a0d4b Binary files /dev/null and b/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll differ diff --git a/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll.meta b/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll.meta new file mode 100644 index 0000000..b91baae --- /dev/null +++ b/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll.meta @@ -0,0 +1,67 @@ +fileFormatVersion: 2 +guid: 9b6ba260dada0ea4a871a42011f8b87d +timeCreated: 1466788355 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + SamsungTV: + enabled: 0 + settings: + STV_MODEL: STANDARD_13 + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 1 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll + SDK: AnySDK + ScriptingBackend: DotNet + iOS: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Documentation.meta b/Assets/JsonDotNet/Documentation.meta new file mode 100644 index 0000000..cda8075 --- /dev/null +++ b/Assets/JsonDotNet/Documentation.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 76f828f47ce26cc43991113c6a39dbbf +folderAsset: yes +timeCreated: 1466010535 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf b/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf new file mode 100644 index 0000000..4f7651d Binary files /dev/null and b/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf differ diff --git a/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf.meta b/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf.meta new file mode 100644 index 0000000..e5d0257 --- /dev/null +++ b/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4e7d9a07cc3f02a41a575406e7230846 +timeCreated: 1466788421 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/JsonDotNet201Source.zip b/Assets/JsonDotNet/JsonDotNet201Source.zip new file mode 100644 index 0000000..23b699a Binary files /dev/null and b/Assets/JsonDotNet/JsonDotNet201Source.zip differ diff --git a/Assets/JsonDotNet/JsonDotNet201Source.zip.meta b/Assets/JsonDotNet/JsonDotNet201Source.zip.meta new file mode 100644 index 0000000..c846be6 --- /dev/null +++ b/Assets/JsonDotNet/JsonDotNet201Source.zip.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a6f8c7c1ea72ce46831c5e1b6150d0c +timeCreated: 1466790933 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JsonDotNet/link.xml b/Assets/JsonDotNet/link.xml new file mode 100644 index 0000000..cac3e06 --- /dev/null +++ b/Assets/JsonDotNet/link.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Assets/JsonDotNet/link.xml.meta b/Assets/JsonDotNet/link.xml.meta new file mode 100644 index 0000000..1e0e273 --- /dev/null +++ b/Assets/JsonDotNet/link.xml.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 06314f49bdda26043963578d60a0a7ee +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OVRInputSelection/Materials/SelectionRay.mat b/Assets/OVRInputSelection/Materials/SelectionRay.mat index e0fe72a..355e2fb 100644 --- a/Assets/OVRInputSelection/Materials/SelectionRay.mat +++ b/Assets/OVRInputSelection/Materials/SelectionRay.mat @@ -72,5 +72,5 @@ Material: - _UVSec: 0 - _ZWrite: 1 m_Colors: - - _Color: {r: 1, g: 0, b: 1, a: 1} + - _Color: {r: 0, g: 1, b: 0.9582815, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Oculus/AudioManager.meta b/Assets/Oculus/AudioManager.meta new file mode 100644 index 0000000..a774a14 --- /dev/null +++ b/Assets/Oculus/AudioManager.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e8bd6fc3bb11b734ebab29d20ce38dbe +folderAsset: yes +timeCreated: 1538788975 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Audio.meta b/Assets/Oculus/AudioManager/Audio.meta new file mode 100644 index 0000000..9b8e75b --- /dev/null +++ b/Assets/Oculus/AudioManager/Audio.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 29ab7e927676ef74a93aeedf4146f1ac +folderAsset: yes +timeCreated: 1470780399 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds.meta b/Assets/Oculus/AudioManager/Audio/TestSounds.meta new file mode 100644 index 0000000..be98549 --- /dev/null +++ b/Assets/Oculus/AudioManager/Audio/TestSounds.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 180c8a539f95cce428f820b0ba392c1f +folderAsset: yes +timeCreated: 1468506676 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01.wav b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01.wav new file mode 100644 index 0000000..cf2a6e9 Binary files /dev/null and b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01.wav differ diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01.wav.meta b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01.wav.meta new file mode 100644 index 0000000..bd6540e --- /dev/null +++ b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 485ac48a563e2bf44bb4de7ead5a1f68 +timeCreated: 1461716881 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01a.wav b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01a.wav new file mode 100644 index 0000000..5202abd Binary files /dev/null and b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01a.wav differ diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01a.wav.meta b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01a.wav.meta new file mode 100644 index 0000000..97e8d37 --- /dev/null +++ b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_close_01a.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: d3994560fb567c34a821fd9355c10eef +timeCreated: 1461716882 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01.wav b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01.wav new file mode 100644 index 0000000..343ccb6 Binary files /dev/null and b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01.wav differ diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01.wav.meta b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01.wav.meta new file mode 100644 index 0000000..d45cc67 --- /dev/null +++ b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 7000b4d67a1320940b363f3cf891dfff +timeCreated: 1461716881 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01a.wav b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01a.wav new file mode 100644 index 0000000..aa7e7d1 Binary files /dev/null and b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01a.wav differ diff --git a/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01a.wav.meta b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01a.wav.meta new file mode 100644 index 0000000..f9e7fdb --- /dev/null +++ b/Assets/Oculus/AudioManager/Audio/TestSounds/metal_sliding_door_open_01a.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 8198ccc08475a764daaf226b841a55f1 +timeCreated: 1461716882 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scenes.meta b/Assets/Oculus/AudioManager/Scenes.meta new file mode 100644 index 0000000..9823fcc --- /dev/null +++ b/Assets/Oculus/AudioManager/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6d597fe114807b54a99033a3dae9ce0d +folderAsset: yes +timeCreated: 1470780399 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scenes/Scripts.meta b/Assets/Oculus/AudioManager/Scenes/Scripts.meta new file mode 100644 index 0000000..c1dd9fd --- /dev/null +++ b/Assets/Oculus/AudioManager/Scenes/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7ee6cbebddf12044c95f9d6eb6e40823 +folderAsset: yes +timeCreated: 1470780399 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scenes/Scripts/TestScript.cs b/Assets/Oculus/AudioManager/Scenes/Scripts/TestScript.cs new file mode 100644 index 0000000..d644397 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scenes/Scripts/TestScript.cs @@ -0,0 +1,31 @@ +using UnityEngine; +using System.Collections; + +public class TestScript : MonoBehaviour { + + [InspectorNote( "Sound Setup", "Press '1' to play testSound1 and '2' to play testSound2")] + + public SoundFXRef testSound1; + public SoundFXRef testSound2; + + // Use this for initialization + void Start () { + + } + + + // Update is called once per frame + void Update () + { + // use attached game object location + if ( Input.GetKeyDown( KeyCode.Alpha1 ) ) + { + testSound1.PlaySoundAt( transform.position ); + } + + // hard code information + if ( Input.GetKeyDown( KeyCode.Alpha2 ) ) { + testSound2.PlaySoundAt( new Vector3( 5.0f, 0.0f, 0.0f ) ); + } + } +} diff --git a/Assets/Oculus/AudioManager/Scenes/Scripts/TestScript.cs.meta b/Assets/Oculus/AudioManager/Scenes/Scripts/TestScript.cs.meta new file mode 100644 index 0000000..e1faa97 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scenes/Scripts/TestScript.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cfae243ecd01edd49bd439c56a8b18cf +timeCreated: 1468506975 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scenes/Test.unity b/Assets/Oculus/AudioManager/Scenes/Test.unity new file mode 100644 index 0000000..a88e0f8 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scenes/Test.unity @@ -0,0 +1,434 @@ +%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: 8 + 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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + 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_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !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 + m_NavMeshData: {fileID: 0} +--- !u!1 &767466533 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 767466535} + - component: {fileID: 767466534} + m_Layer: 0 + m_Name: AudioManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &767466534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 767466533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6d1d30b41806244fca035fdae2896fb7, type: 3} + m_Name: + m_EditorClassIdentifier: + makePersistent: 1 + enableSpatializedAudio: 1 + enableSpatializedFastOverride: 0 + audioMixer: {fileID: 0} + defaultMixerGroup: {fileID: 24300001, guid: 323417d454569d94fa01d511f6eb44d9, type: 2} + reservedMixerGroup: {fileID: 0} + voiceChatMixerGroup: {fileID: 0} + verboseLogging: 0 + maxSoundEmitters: 32 + volumeSoundFX: 1 + soundFxFadeSecs: 1 + audioMinFallOffDistance: 1 + audioMaxFallOffDistance: 25 + soundGroupings: + - name: Test Group + soundList: + - name: TestSound1 + playback: 0 + volume: 1 + pitchVariance: {x: 0.95, y: 1.05} + falloffDistance: {x: 1, y: 25} + falloffCurve: 2 + volumeFalloffCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1.0044228 + inSlope: -1.9459304 + outSlope: -1.9459304 + tangentMode: 0 + - serializedVersion: 2 + time: 0.27001944 + value: 0.24837627 + inSlope: -1.3226271 + outSlope: -1.3226271 + tangentMode: 0 + - serializedVersion: 2 + time: 0.99744946 + value: -0.0020017216 + inSlope: -0.42040923 + outSlope: -0.42040923 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMix: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1.0044228 + inSlope: -1.9459304 + outSlope: -1.9459304 + tangentMode: 0 + - serializedVersion: 2 + time: 0.36357749 + value: 0.4567863 + inSlope: -1.3226271 + outSlope: -1.3226271 + tangentMode: 0 + - serializedVersion: 2 + time: 0.99594045 + value: 0.19572063 + inSlope: -0.107312 + outSlope: -0.107312 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spread: 0 + pctChanceToPlay: 1 + priority: 0 + delay: {x: 0, y: 0} + looping: 0 + ospProps: + enableSpatialization: 1 + useFastOverride: 1 + gain: 0 + enableInvSquare: 1 + volumetric: 0 + invSquareFalloff: {x: 1, y: 250} + soundClips: + - {fileID: 8300000, guid: 7000b4d67a1320940b363f3cf891dfff, type: 3} + - {fileID: 8300000, guid: 8198ccc08475a764daaf226b841a55f1, type: 3} + visibilityToggle: 0 + - name: TestSound2 + playback: 0 + volume: 1 + pitchVariance: {x: 0.79999995, y: 1.25} + falloffDistance: {x: 1, y: 25} + falloffCurve: 1 + volumeFalloffCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMix: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spread: 0 + pctChanceToPlay: 1 + priority: 0 + delay: {x: 0, y: 0} + looping: 0 + ospProps: + enableSpatialization: 1 + useFastOverride: 0 + gain: 0 + enableInvSquare: 0 + volumetric: 0 + invSquareFalloff: {x: 1, y: 25} + soundClips: + - {fileID: 8300000, guid: 485ac48a563e2bf44bb4de7ead5a1f68, type: 3} + - {fileID: 8300000, guid: d3994560fb567c34a821fd9355c10eef, type: 3} + visibilityToggle: 0 + mixerGroup: {fileID: 24300001, guid: 1dd706bb85d8aef4e83a6229dbd62c36, type: 2} + maxPlayingSounds: 0 + preloadAudio: 0 + volumeOverride: 1 + playingSoundCount: 0 +--- !u!4 &767466535 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 767466533} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1050355579 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1050355581} + - component: {fileID: 1050355580} + m_Layer: 0 + m_Name: TestScript + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1050355580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1050355579} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfae243ecd01edd49bd439c56a8b18cf, type: 3} + m_Name: + m_EditorClassIdentifier: + testSound1: + soundFXName: TestSound1 + testSound2: + soundFXName: TestSound2 +--- !u!4 &1050355581 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1050355579} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2106254871 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2106254876} + - component: {fileID: 2106254875} + - component: {fileID: 2106254874} + - component: {fileID: 2106254873} + - component: {fileID: 2106254872} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2106254872 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2106254871} + m_Enabled: 1 +--- !u!124 &2106254873 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2106254871} + m_Enabled: 1 +--- !u!92 &2106254874 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2106254871} + m_Enabled: 1 +--- !u!20 &2106254875 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2106254871} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + 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: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &2106254876 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2106254871} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Oculus/AudioManager/Scenes/Test.unity.meta b/Assets/Oculus/AudioManager/Scenes/Test.unity.meta new file mode 100644 index 0000000..b8047e1 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scenes/Test.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 600e5d49b0a68254286400e32c53addc +timeCreated: 1468506358 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts.meta b/Assets/Oculus/AudioManager/Scripts.meta new file mode 100644 index 0000000..7c41c17 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 25be027379f7fce4d97ba2bcaf313019 +folderAsset: yes +timeCreated: 1470780399 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio.meta b/Assets/Oculus/AudioManager/Scripts/Audio.meta new file mode 100644 index 0000000..3a66e26 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b8c0d722519c64144a78f8fc99cd40b5 +folderAsset: yes +timeCreated: 1468505670 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/AmbienceEmitter.cs b/Assets/Oculus/AudioManager/Scripts/Audio/AmbienceEmitter.cs new file mode 100644 index 0000000..0017fbd --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/AmbienceEmitter.cs @@ -0,0 +1,113 @@ +using UnityEngine; +using System.Collections; + +/* +----------------------- + + AmbienceEmitter() + +----------------------- +*/ +public class AmbienceEmitter : MonoBehaviour { + + public SoundFXRef[] ambientSounds = new SoundFXRef[0]; + public bool autoActivate = true; + [Tooltip("Automatically play the sound randomly again when checked. Should be OFF for looping sounds")] + public bool autoRetrigger = true; + [MinMax( 2.0f, 4.0f, 0.1f, 10.0f )] + public Vector2 randomRetriggerDelaySecs = new Vector2( 2.0f, 4.0f ); + [Tooltip( "If defined, the sounds will randomly play from these transform positions, otherwise the sound will play from this transform" )] + public Transform[] playPositions = new Transform[0]; + private bool activated = false; + private int playingIdx = -1; + private float nextPlayTime = 0.0f; + private float fadeTime = 0.25f; + private int lastPosIdx = -1; + + /* + ----------------------- + Awake() + ----------------------- + */ + void Awake() { + if ( autoActivate ) { + activated = true; + nextPlayTime = Time.time + Random.Range( randomRetriggerDelaySecs.x, randomRetriggerDelaySecs.y ); + } + // verify all the play positions are valid + foreach ( Transform t in playPositions ) { + if ( t == null ) { + Debug.LogWarning( "[AmbienceEmitter] Invalid play positions in " + name ); + playPositions = new Transform[0]; + break; + } + } + } + + /* + ----------------------- + Update() + ----------------------- + */ + void Update() { + if ( activated ) { + if ( ( playingIdx == -1 ) || autoRetrigger ) { + if ( Time.time >= nextPlayTime ) { + Play(); + if ( !autoRetrigger ) { + activated = false; + } + } + } + } + } + + /* + ----------------------- + OnTriggerEnter() + ----------------------- + */ + public void OnTriggerEnter( Collider col ) { + activated = !activated; + } + + /* + ----------------------- + Play() + ----------------------- + */ + public void Play() { + Transform transformToPlayFrom = transform; + if ( playPositions.Length > 0 ) { + int idx = Random.Range( 0, playPositions.Length ); + while ( ( playPositions.Length > 1 ) && ( idx == lastPosIdx ) ) { + idx = Random.Range( 0, playPositions.Length ); + } + transformToPlayFrom = playPositions[idx]; + lastPosIdx = idx; + } + playingIdx = ambientSounds[Random.Range(0, ambientSounds.Length)].PlaySoundAt( transformToPlayFrom.position ); + if ( playingIdx != -1 ) { + AudioManager.FadeInSound( playingIdx, fadeTime ); + nextPlayTime = Time.time + Random.Range( randomRetriggerDelaySecs.x, randomRetriggerDelaySecs.y ); + } + } + + /* + ----------------------- + EnableEmitter() + ----------------------- + */ + public void EnableEmitter( bool enable ) { + activated = enable; + if ( enable ) { + Play(); + } else { + if ( playingIdx != -1 ) { + AudioManager.FadeOutSound( playingIdx, fadeTime ); + } + } + + } + +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/AmbienceEmitter.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/AmbienceEmitter.cs.meta new file mode 100644 index 0000000..e5ecd9b --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/AmbienceEmitter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c11944691f6b9cf44a391c95cb3f7dea +timeCreated: 1455050294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager.cs b/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager.cs new file mode 100644 index 0000000..f77c3ea --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager.cs @@ -0,0 +1,425 @@ +using UnityEngine; +using UnityEngine.Audio; +using System.Collections; +using System.Collections.Generic; +#if UNITY_EDITOR +using UnityEditor; +using System; +using System.Reflection; +#endif + +public enum PreloadSounds { + Default, // default unity behavior + Preload, // audio clips are forced to preload + ManualPreload, // audio clips are forced to not preload, preloading must be done manually +} + +public enum Fade +{ + In, + Out +} + +[System.Serializable] +public class SoundGroup { + public SoundGroup( string name ) { + this.name = name; + } + public SoundGroup() { + mixerGroup = null; + maxPlayingSounds = 0; + preloadAudio = PreloadSounds.Default; + volumeOverride = 1.0f; + } + public void IncrementPlayCount() { + playingSoundCount = Mathf.Clamp( ++playingSoundCount, 0, maxPlayingSounds ); + } + public void DecrementPlayCount() { + playingSoundCount = Mathf.Clamp( --playingSoundCount, 0, maxPlayingSounds ); + } + public bool CanPlaySound() { + return ( maxPlayingSounds == 0 ) || ( playingSoundCount < maxPlayingSounds ); + } + + public string name = string.Empty; + public SoundFX[] soundList = new SoundFX[0]; + public AudioMixerGroup mixerGroup = null; // default = AudioManager.defaultMixerGroup + [Range(0,64)] + public int maxPlayingSounds = 0; // default = 0, unlimited + // TODO: this preload behavior is not yet implemented + public PreloadSounds preloadAudio = PreloadSounds.Default; // default = true, audio clip data will be preloaded + public float volumeOverride = 1.0f; // default = 1.0 + + [HideInInspector] + public int playingSoundCount = 0; +} + +/* +----------------------- + + AudioManager + +----------------------- +*/ +public partial class AudioManager : MonoBehaviour { + + [Tooltip("Make the audio manager persistent across all scene loads")] + public bool makePersistent = true; // true = don't destroy on load + [Tooltip("Enable the OSP audio plugin features")] + public bool enableSpatializedAudio = true; // true = enable spatialized audio + [Tooltip("Always play spatialized sounds with no reflections (Default)")] + public bool enableSpatializedFastOverride = false; // true = disable spatialized reflections override + [Tooltip("The audio mixer asset used for snapshot blends, etc.")] + public AudioMixer audioMixer = null; + [Tooltip( "The audio mixer group used for the pooled emitters" )] + public AudioMixerGroup defaultMixerGroup = null; + [Tooltip( "The audio mixer group used for the reserved pool emitter" )] + public AudioMixerGroup reservedMixerGroup = null; + [Tooltip( "The audio mixer group used for voice chat" )] + public AudioMixerGroup voiceChatMixerGroup = null; + [Tooltip("Log all PlaySound calls to the Unity console")] + public bool verboseLogging = false; // true = log all PlaySounds + [Tooltip("Maximum sound emitters")] + public int maxSoundEmitters = 32; // total number of sound emitters created + [Tooltip("Default volume for all sounds modulated by individual sound FX volumes")] + public float volumeSoundFX = 1.0f; // user pref: volume of all sound FX + [Tooltip("Sound FX fade time")] + public float soundFxFadeSecs = 1.0f; // sound FX fade time + + public float audioMinFallOffDistance = 1.0f; // minimum falloff distance + public float audioMaxFallOffDistance = 25.0f; // maximum falloff distance + + public SoundGroup[] soundGroupings = new SoundGroup[0]; + + private Dictionary soundFXCache = null; + + static private AudioManager theAudioManager = null; + static private FastList names = new FastList(); + static private string[] defaultSound = new string[1] { "Default Sound" }; + static private SoundFX nullSound = new SoundFX(); + static private bool hideWarnings = false; + static public bool enableSpatialization { get { return ( theAudioManager !=null ) ? theAudioManager.enableSpatializedAudio : false; } } + + static public AudioManager Instance { get { return theAudioManager; } } + static public float NearFallOff { get { return theAudioManager.audioMinFallOffDistance; } } + static public float FarFallOff { get { return theAudioManager.audioMaxFallOffDistance; } } + static public AudioMixerGroup EmitterGroup { get { return theAudioManager.defaultMixerGroup; } } + static public AudioMixerGroup ReservedGroup { get { return theAudioManager.reservedMixerGroup; } } + static public AudioMixerGroup VoipGroup { get { return theAudioManager.voiceChatMixerGroup; } } + + /* + ----------------------- + Awake() + ----------------------- + */ + void Awake() { + Init(); + } + + /* + ----------------------- + OnDestroy() + ----------------------- + */ + void OnDestroy() { + // we only want the initialized audio manager instance cleaning up the sound emitters + if ( theAudioManager == this ) { + if ( soundEmitterParent != null ) { + Destroy( soundEmitterParent ); + } + } + ///TODO - if you change scenes you'll want to call OnPreSceneLoad to detach the sound emitters + ///from anything they might be parented to or they will get destroyed with that object + ///there should only be one instance of the AudioManager across the life of the game/app + ///GameManager.OnPreSceneLoad -= OnPreSceneLoad; + } + + /* + ----------------------- + Init() + ----------------------- + */ + void Init() { + if ( theAudioManager != null ) { + if ( Application.isPlaying && ( theAudioManager != this ) ) { + enabled = false; + } + return; + } + theAudioManager = this; + + ///TODO - if you change scenes you'll want to call OnPreSceneLoad to detach the sound emitters + ///from anything they might be parented to or they will get destroyed with that object + ///there should only be one instance of the AudioManager across the life of the game/app + ///GameManager.OnPreSceneLoad += OnPreSceneLoad; + + // make sure the first one is a null sound + nullSound.name = "Default Sound"; + + // build the sound FX cache + RebuildSoundFXCache(); + + // create the sound emitters + if ( Application.isPlaying ) { + InitializeSoundSystem(); + if ( makePersistent && ( transform.parent == null ) ) { + // don't destroy the audio manager on scene loads + DontDestroyOnLoad( gameObject ); + } + } + +#if UNITY_EDITOR + Debug.Log( "[AudioManager] Initialized..." ); +#endif + } + + /* + ----------------------- + Update() + ----------------------- + */ + void Update() { + // update the free and playing lists + UpdateFreeEmitters(); + } + + /* + ----------------------- + RebuildSoundFXCache() + ----------------------- + */ + void RebuildSoundFXCache() { + // build the SoundFX dictionary for quick name lookups + int count = 0; + for ( int group = 0; group < soundGroupings.Length; group++ ) { + count += soundGroupings[group].soundList.Length; + } + soundFXCache = new Dictionary( count + 1 ); + // add the null sound + soundFXCache.Add( nullSound.name, nullSound ); + // add the rest + for ( int group = 0; group < soundGroupings.Length; group++ ) { + for ( int i = 0; i < soundGroupings[group].soundList.Length; i++ ) { + if ( soundFXCache.ContainsKey( soundGroupings[group].soundList[i].name ) ) { + Debug.LogError( "ERROR: Duplicate Sound FX name in the audio manager: '" + soundGroupings[group].name + "' > '" + soundGroupings[group].soundList[i].name + "'" ); + } else { + soundGroupings[group].soundList[i].Group = soundGroupings[group]; + soundFXCache.Add( soundGroupings[group].soundList[i].name, soundGroupings[group].soundList[i] ); + } + } + soundGroupings[group].playingSoundCount = 0; + } + } + + /* + ----------------------- + FindSoundFX() + ----------------------- + */ + static public SoundFX FindSoundFX( string name, bool rebuildCache = false ) { +#if UNITY_EDITOR + if ( theAudioManager == null ) { + Debug.LogError( "ERROR: audio manager not yet initialized or created!" + " Time: " + Time.time ); + return null; + } +#endif + if ( string.IsNullOrEmpty( name ) ) { + return nullSound; + } + if ( rebuildCache ) { + theAudioManager.RebuildSoundFXCache(); + } + if ( !theAudioManager.soundFXCache.ContainsKey( name ) ) { +#if DEBUG_BUILD || UNITY_EDITOR + Debug.LogError( "WARNING: Missing Sound FX in cache: " + name ); +#endif + return nullSound; + } + return theAudioManager.soundFXCache[name]; + } + + /* + ----------------------- + FindAudioManager() + ----------------------- + */ + static private bool FindAudioManager() { + GameObject audioManagerObject = GameObject.Find( "AudioManager" ); + if ( ( audioManagerObject == null ) || ( audioManagerObject.GetComponent() == null ) ) { + if ( !hideWarnings ) { + Debug.LogError( "[ERROR] AudioManager object missing from hierarchy!" ); + hideWarnings = true; + } + return false; + } else { + audioManagerObject.GetComponent().Init(); + } + return true; + } + + /* + ----------------------- + GetGameObject() + ----------------------- + */ + static public GameObject GetGameObject() { + if ( theAudioManager == null ) { + if ( !FindAudioManager() ) { + return null; + } + } + return theAudioManager.gameObject; + } + + /* + ----------------------- + NameMinusGroup() + strip off the sound group from the inspector dropdown + ----------------------- + */ + static public string NameMinusGroup( string name ) { + if ( name.IndexOf( "/" ) > -1 ) { + return name.Substring( name.IndexOf( "/" ) + 1 ); + } + return name; + } + + /* + ----------------------- + GetSoundFXNames() + used by the inspector + ----------------------- + */ + static public string[] GetSoundFXNames( string currentValue, out int currentIdx ) { + currentIdx = 0; + names.Clear(); + if ( theAudioManager == null ) { + if ( !FindAudioManager() ) { + return defaultSound; + } + } + names.Add( nullSound.name ); + for ( int group = 0; group < theAudioManager.soundGroupings.Length; group++ ) { + for ( int i = 0; i < theAudioManager.soundGroupings[group].soundList.Length; i++ ) { + if ( string.Compare( currentValue, theAudioManager.soundGroupings[group].soundList[i].name, true ) == 0 ) { + currentIdx = names.Count; + } + names.Add( theAudioManager.soundGroupings[group].name + "/" + theAudioManager.soundGroupings[group].soundList[i].name ); + } + } + //names.Sort( delegate( string s1, string s2 ) { return s1.CompareTo( s2 ); } ); + return names.ToArray(); + + } +#if UNITY_EDITOR + /* + ----------------------- + OnPrefabReimported() + ----------------------- + */ + static public void OnPrefabReimported() { + if ( theAudioManager != null ) { + Debug.Log( "[AudioManager] Reimporting the sound FX cache." ); + theAudioManager.RebuildSoundFXCache(); + } + } + + /* + ----------------------- + PlaySound() + used in the editor + ----------------------- + */ + static public void PlaySound( string soundFxName ) { + if ( theAudioManager == null ) { + if ( !FindAudioManager() ) { + return; + } + } + SoundFX soundFX = FindSoundFX( soundFxName, true ); + if ( soundFX == null ) { + return; + } + AudioClip clip = soundFX.GetClip(); + if ( clip != null ) { + Assembly unityEditorAssembly = typeof(AudioImporter).Assembly; + Type audioUtilClass = unityEditorAssembly.GetType("UnityEditor.AudioUtil"); + MethodInfo method = audioUtilClass.GetMethod( + "PlayClip", + BindingFlags.Static | BindingFlags.Public, + null, + new System.Type[] { typeof(AudioClip) }, + null ); + method.Invoke( null, new object[] { clip } ); + } + } + + /* + ----------------------- + IsSoundPlaying() + used in the editor + ----------------------- + */ + static public bool IsSoundPlaying( string soundFxName ) { + if ( theAudioManager == null ) { + if ( !FindAudioManager() ) { + return false; + } + } + SoundFX soundFX = FindSoundFX( soundFxName, true ); + if ( soundFX == null ) { + return false; + } + AudioClip clip = soundFX.GetClip(); + if ( clip != null ) { + Assembly unityEditorAssembly = typeof(AudioImporter).Assembly; + Type audioUtilClass = unityEditorAssembly.GetType("UnityEditor.AudioUtil"); + MethodInfo method = audioUtilClass.GetMethod( + "IsClipPlaying", + BindingFlags.Static | BindingFlags.Public, + null, + new System.Type[] { typeof(AudioClip) }, + null ); + return Convert.ToBoolean( method.Invoke( null, new object[] { clip } ) ); + } + + return false; + } + + /* + ----------------------- + StopSound() + used in the editor + ----------------------- + */ + static public void StopSound(string soundFxName) + { + if (theAudioManager == null) + { + if (!FindAudioManager()) + { + return; + } + } + SoundFX soundFX = FindSoundFX(soundFxName, true); + if (soundFX == null) + { + return; + } + AudioClip clip = soundFX.GetClip(); + if (clip != null) + { + Assembly unityEditorAssembly = typeof(AudioImporter).Assembly; + Type audioUtilClass = unityEditorAssembly.GetType("UnityEditor.AudioUtil"); + MethodInfo method = audioUtilClass.GetMethod( + "StopClip", + BindingFlags.Static | BindingFlags.Public, + null, + new System.Type[] { typeof(AudioClip) }, + null); + method.Invoke(null, new object[] { clip }); + } + } +#endif +} + diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager.cs.meta new file mode 100644 index 0000000..02c9d03 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d1d30b41806244fca035fdae2896fb7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager_Sound.cs b/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager_Sound.cs new file mode 100644 index 0000000..b8e8181 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager_Sound.cs @@ -0,0 +1,782 @@ +using UnityEngine; +using UnityEngine.Audio; + +//------------------------------------------------------------------------- +// Types +//------------------------------------------------------------------------- + +public enum EmitterChannel { + None = -1, + Reserved = 0, // plays on the single reserved emitter + Any // queues to the next available emitter +} + +[System.Serializable] +public class MixerSnapshot { + public AudioMixerSnapshot snapshot = null; + public float transitionTime = 0.25f; +} + +/* +----------------------- + + GameManager Sound Routines + +----------------------- +*/ +public partial class AudioManager : MonoBehaviour { + + public enum Fade { + In, + Out + } + + private float audioMaxFallOffDistanceSqr = 25.0f * 25.0f; // past this distance, sounds are ignored for the local player + + private SoundEmitter[] soundEmitters = null; // pool of sound emitters to play sounds through + + private FastList playingEmitters = new FastList(); + private FastList nextFreeEmitters = new FastList(); + + private MixerSnapshot currentSnapshot = null; + + static private GameObject soundEmitterParent = null; // parent object for the sound emitters + static private Transform staticListenerPosition = null; // play position for regular 2D sounds + + static private bool showPlayingEmitterCount = false; + static private bool forceShowEmitterCount = false; + + static private bool soundEnabled = true; + static public bool SoundEnabled { get { return soundEnabled; } } + + static readonly AnimationCurve defaultReverbZoneMix = new AnimationCurve( new Keyframe[2] { new Keyframe( 0f, 1.0f ), new Keyframe( 1f, 1f ) } ); + + /* + ----------------------- + InitializeSoundSystem() + initialize persistent sound emitter objects that live across scene loads + ----------------------- + */ + void InitializeSoundSystem() { + + int bufferLength = 960; + int numBuffers = 4; + AudioSettings.GetDSPBufferSize( out bufferLength, out numBuffers ); + if ( Application.isPlaying ) { + Debug.Log( "[AudioManager] Audio Sample Rate: " + AudioSettings.outputSampleRate ); + Debug.Log( "[AudioManager] Audio Buffer Length: " + bufferLength + " Size: " + numBuffers ); + } + + // find the audio listener for playing regular 2D sounds + AudioListener audioListenerObject = GameObject.FindObjectOfType() as AudioListener; + if ( audioListenerObject == null ) { + Debug.LogError( "[AudioManager] Missing AudioListener object! Add one to the scene." ); + } else { + staticListenerPosition = audioListenerObject.transform; + } + + // we allocate maxSoundEmitters + reserved channels + soundEmitters = new SoundEmitter[maxSoundEmitters+(int)EmitterChannel.Any]; + + // see if the sound emitters have already been created, if so, nuke it, it shouldn't exist in the scene upon load + soundEmitterParent = GameObject.Find( "__SoundEmitters__" ); + if ( soundEmitterParent != null ) { + // delete any sound emitters hanging around + Destroy( soundEmitterParent ); + } + + // create them all + soundEmitterParent = new GameObject( "__SoundEmitters__" ); + for ( int i = 0; i < maxSoundEmitters + (int)EmitterChannel.Any; i++ ) { + GameObject emitterObject = new GameObject( "SoundEmitter_" + i ); + emitterObject.transform.parent = soundEmitterParent.transform; + emitterObject.transform.position = Vector3.zero; + // don't ever save this to the scene + emitterObject.hideFlags = HideFlags.DontSaveInEditor; + // add the sound emitter components + soundEmitters[i] = emitterObject.AddComponent(); + soundEmitters[i].SetDefaultParent( soundEmitterParent.transform ); + soundEmitters[i].SetChannel( i ); + soundEmitters[i].Stop(); + // save off the original index + soundEmitters[i].originalIdx = i; + } + // reset the free emitter lists + ResetFreeEmitters(); + soundEmitterParent.hideFlags = HideFlags.DontSaveInEditor; + + audioMaxFallOffDistanceSqr = audioMaxFallOffDistance * audioMaxFallOffDistance; + } + + /* + ----------------------- + UpdateFreeEmitters() + ----------------------- + */ + void UpdateFreeEmitters() { + if ( verboseLogging ) { + if ( Input.GetKeyDown( KeyCode.A ) ) { + forceShowEmitterCount = !forceShowEmitterCount; + } + if ( forceShowEmitterCount ) { + showPlayingEmitterCount = true; + } + } + // display playing emitter count when the sound system is overwhelmed + int total = 0, veryLow = 0, low = 0, def = 0, high = 0, veryHigh = 0; + + // find emitters that are done playing and add them to the nextFreeEmitters list + for ( int i = 0; i < playingEmitters.size; ) { + if ( playingEmitters[i] == null ) { + Debug.LogError( "[AudioManager] ERROR: playingEmitters list had a null emitter! Something nuked a sound emitter!!!" ); + playingEmitters.RemoveAtFast( i ); + return; + } + if ( !playingEmitters[i].IsPlaying() ) { + // add to the free list and remove from the playing list + if ( verboseLogging ) { + if ( nextFreeEmitters.Contains( playingEmitters[i] ) ) { + Debug.LogError( "[AudioManager] ERROR: playing sound emitter already in the free emitters list!" ); + } + } + playingEmitters[i].Stop(); + nextFreeEmitters.Add( playingEmitters[i] ); + playingEmitters.RemoveAtFast( i ); + continue; + } + // debugging/profiling + if ( verboseLogging && showPlayingEmitterCount ) { + total++; + switch ( playingEmitters[i].priority ) { + case SoundPriority.VeryLow: veryLow++; break; + case SoundPriority.Low: low++; break; + case SoundPriority.Default: def++; break; + case SoundPriority.High: high++; break; + case SoundPriority.VeryHigh: veryHigh++; break; + } + } + i++; + } + if ( verboseLogging && showPlayingEmitterCount ) { + Debug.LogWarning( string.Format( "[AudioManager] Playing sounds: Total {0} | VeryLow {1} | Low {2} | Default {3} | High {4} | VeryHigh {5} | Free {6}", Fmt( total ), Fmt( veryLow ), Fmt( low ), Fmt( def ), Fmt( high ), Fmt( veryHigh ), FmtFree( nextFreeEmitters.Count ) ) ); + showPlayingEmitterCount = false; + } + } + + /* + ----------------------- + Fmt() + ----------------------- + */ + string Fmt( int count ) { + float t = count / (float)theAudioManager.maxSoundEmitters; + if ( t < 0.5f ) { + return "" + count.ToString() + ""; + } else if ( t < 0.7 ) { + return "" + count.ToString() + ""; + } else { + return "" + count.ToString() + ""; + } + } + + /* + ----------------------- + FmtFree() + ----------------------- + */ + string FmtFree( int count ) { + float t = count / (float)theAudioManager.maxSoundEmitters; + if ( t < 0.2f ) { + return "" + count.ToString() + ""; + } else if ( t < 0.3 ) { + return "" + count.ToString() + ""; + } else { + return "" + count.ToString() + ""; + } + } + + /* + ----------------------- + OnPreSceneLoad() + ----------------------- + */ + void OnPreSceneLoad() { + // move any attached sounds back to the sound emitters parent before changing levels so they don't get destroyed + Debug.Log( "[AudioManager] OnPreSceneLoad cleanup" ); + for ( int i = 0; i < soundEmitters.Length; i++ ) { + soundEmitters[i].Stop(); + soundEmitters[i].ResetParent( soundEmitterParent.transform ); + } + // reset our emitter lists + ResetFreeEmitters(); + } + + /* + ----------------------- + ResetFreeEmitters() + ----------------------- + */ + void ResetFreeEmitters() { + nextFreeEmitters.Clear(); + playingEmitters.Clear(); + for ( int i = (int)EmitterChannel.Any; i < soundEmitters.Length; i++ ) { + nextFreeEmitters.Add( soundEmitters[i] ); + } + } + + /* + ----------------------- + FadeOutSoundChannel() + utility function to fade out a playing sound channel + ----------------------- + */ + static public void FadeOutSoundChannel( int channel, float delaySecs, float fadeTime ) { + theAudioManager.soundEmitters[channel].FadeOutDelayed( delaySecs, fadeTime ); + } + + /* + ----------------------- + StopSound() + ----------------------- + */ + static public bool StopSound( int idx, bool fadeOut = true, bool stopReserved = false ) { + if ( !stopReserved && ( idx == (int)EmitterChannel.Reserved ) ) { + return false; + } + if ( !fadeOut ) { + theAudioManager.soundEmitters[idx].Stop(); + } + else { + theAudioManager.soundEmitters[idx].FadeOut( theAudioManager.soundFxFadeSecs ); + } + + return true; + } + + /* + ----------------------- + FadeInSound() + ----------------------- + */ + public static void FadeInSound( int idx, float fadeTime, float volume ) { + theAudioManager.soundEmitters[idx].FadeIn( fadeTime, volume ); + } + + /* + ----------------------- + FadeInSound() + ----------------------- + */ + public static void FadeInSound( int idx, float fadeTime ) { + theAudioManager.soundEmitters[idx].FadeIn( fadeTime ); + } + + /* + ----------------------- + FadeOutSound() + ----------------------- + */ + public static void FadeOutSound( int idx, float fadeTime ) { + theAudioManager.soundEmitters[idx].FadeOut( fadeTime ); + } + + /* + ----------------------- + StopAllSounds() + ----------------------- + */ + public static void StopAllSounds( bool fadeOut, bool stopReserved = false ) { + for ( int i = 0; i < theAudioManager.soundEmitters.Length; i++ ) { + StopSound( i, fadeOut, stopReserved ); + } + } + + /* + ----------------------- + MuteAllSounds() + ----------------------- + */ + public void MuteAllSounds( bool mute, bool muteReserved = false ) { + for ( int i = 0; i < soundEmitters.Length; i++ ) { + if ( !muteReserved && ( i == (int)EmitterChannel.Reserved ) ) { + continue; + } + soundEmitters[i].audioSource.mute = true; + } + } + + /* + ----------------------- + UnMuteAllSounds() + ----------------------- + */ + public void UnMuteAllSounds( bool unmute, bool unmuteReserved = false ) { + for ( int i = 0; i < soundEmitters.Length; i++ ) { + if ( !unmuteReserved && ( i == (int)EmitterChannel.Reserved ) ) { + continue; + } + if ( soundEmitters[i].audioSource.isPlaying ) { + soundEmitters[i].audioSource.mute = false; + } + } + } + + /* + ----------------------- + GetEmitterEndTime() + ----------------------- + */ + static public float GetEmitterEndTime( int idx ) { + return theAudioManager.soundEmitters[idx].endPlayTime; + } + + /* + ----------------------- + SetEmitterTime() + ----------------------- + */ + static public float SetEmitterTime( int idx, float time ) { + return theAudioManager.soundEmitters[idx].time = time; + } + + /* + ----------------------- + PlaySound() + ----------------------- + */ + static public int PlaySound( AudioClip clip, float volume, EmitterChannel src = EmitterChannel.Any, float delay = 0.0f, float pitchVariance = 1.0f, bool loop = false ) { + if ( !SoundEnabled ) { + return -1; + } + return PlaySoundAt( ( staticListenerPosition != null ) ? staticListenerPosition.position : Vector3.zero, clip, volume, src, delay, pitchVariance, loop ); + } + + /* + ----------------------- + FindFreeEmitter() + ----------------------- + */ + static private int FindFreeEmitter( EmitterChannel src, SoundPriority priority ) { + // default to the reserved emitter + SoundEmitter next = theAudioManager.soundEmitters[0]; + if ( src == EmitterChannel.Any ) { + // pull from the free emitter list if possible + if ( theAudioManager.nextFreeEmitters.size > 0 ) { + // return the first in the list + next = theAudioManager.nextFreeEmitters[0]; + // remove it from the free list + theAudioManager.nextFreeEmitters.RemoveAtFast( 0 ); + } else { + // no free emitters available so pull from the lowest priority sound + if ( priority == SoundPriority.VeryLow ) { + // skip low priority sounds + return -1; + } else { + // find a playing emitter that has a lower priority than what we're requesting + // TODO - we could first search for Very Low, then Low, etc ... TBD if it's worth the effort + next = theAudioManager.playingEmitters.Find( item => item != null && item.priority < priority ); + if ( next == null ) { + // last chance to find a free emitter + if ( priority < SoundPriority.Default ) { + // skip sounds less than the default priority + if ( theAudioManager.verboseLogging ) { + Debug.LogWarning( "[AudioManager] skipping sound " + priority ); + } + return -1; + } else { + // grab a default priority emitter so that we don't cannabalize a high priority sound + next = theAudioManager.playingEmitters.Find( item => item != null && item.priority <= SoundPriority.Default ); ; + } + } + if ( next != null ) { + if ( theAudioManager.verboseLogging ) { + Debug.LogWarning( "[AudioManager] cannabalizing " + next.originalIdx + " Time: " + Time.time ); + } + // remove it from the playing list + next.Stop(); + theAudioManager.playingEmitters.RemoveFast( next ); + } + } + } + } + if ( next == null ) { + Debug.LogError( "[AudioManager] ERROR - absolutely couldn't find a free emitter! Priority = " + priority + " TOO MANY PlaySound* calls!" ); + showPlayingEmitterCount = true; + return -1; + } + return next.originalIdx; + } + + /* + ----------------------- + PlaySound() + ----------------------- + */ + static public int PlaySound( SoundFX soundFX, EmitterChannel src = EmitterChannel.Any, float delay = 0.0f ) { + if ( !SoundEnabled ) { + return -1; + } + return PlaySoundAt( ( staticListenerPosition != null ) ? staticListenerPosition.position : Vector3.zero, soundFX, src, delay ); + } + + /* + ----------------------- + PlaySoundAt() + ----------------------- + */ + static public int PlaySoundAt( Vector3 position, SoundFX soundFX, EmitterChannel src = EmitterChannel.Any, float delay = 0.0f, float volumeOverride = 1.0f, float pitchMultiplier = 1.0f ) { + if ( !SoundEnabled ) { + return -1; + } + + AudioClip clip = soundFX.GetClip(); + if ( clip == null ) { + return -1; + } + + // check the distance from the local player and ignore sounds out of range + if ( staticListenerPosition != null ) { + float distFromListener = ( staticListenerPosition.position - position ).sqrMagnitude; + if ( distFromListener > theAudioManager.audioMaxFallOffDistanceSqr ) { + return -1; + } + if ( distFromListener > soundFX.MaxFalloffDistSquared ) { + return -1; + } + } + + // check max playing sounds + if ( soundFX.ReachedGroupPlayLimit() ) { + if ( theAudioManager.verboseLogging ) { + Debug.Log( "[AudioManager] PlaySoundAt() with " + soundFX.name + " skipped due to group play limit" ); + } + return -1; + } + + int idx = FindFreeEmitter( src, soundFX.priority ); + if ( idx == -1 ) { + // no free emitters - should only happen on very low priority sounds + return -1; + } + SoundEmitter emitter = theAudioManager.soundEmitters[idx]; + + // make sure to detach the emitter from a previous parent + emitter.ResetParent( soundEmitterParent.transform ); + emitter.gameObject.SetActive( true ); + + // set up the sound emitter + AudioSource audioSource = emitter.audioSource; + ONSPAudioSource osp = emitter.osp; + + audioSource.enabled = true; + audioSource.volume = Mathf.Clamp01( Mathf.Clamp01( theAudioManager.volumeSoundFX * soundFX.volume ) * volumeOverride * soundFX.GroupVolumeOverride ); + audioSource.pitch = soundFX.GetPitch() * pitchMultiplier; + audioSource.time = 0.0f; + audioSource.spatialBlend = 1.0f; + audioSource.rolloffMode = soundFX.falloffCurve; + if ( soundFX.falloffCurve == AudioRolloffMode.Custom ) { + audioSource.SetCustomCurve( AudioSourceCurveType.CustomRolloff, soundFX.volumeFalloffCurve ); + } + audioSource.SetCustomCurve( AudioSourceCurveType.ReverbZoneMix, soundFX.reverbZoneMix ); + audioSource.dopplerLevel = 0; + audioSource.clip = clip; + audioSource.spread = soundFX.spread; + audioSource.loop = soundFX.looping; + audioSource.mute = false; + audioSource.minDistance = soundFX.falloffDistance.x; + audioSource.maxDistance = soundFX.falloffDistance.y; + audioSource.outputAudioMixerGroup = soundFX.GetMixerGroup( AudioManager.EmitterGroup ); + // set the play time so we can check when sounds are done + emitter.endPlayTime = Time.time + clip.length + delay; + // cache the default volume for fading + emitter.defaultVolume = audioSource.volume; + // sound priority + emitter.priority = soundFX.priority; + // reset this + emitter.onFinished = null; + // update the sound group limits + emitter.SetPlayingSoundGroup( soundFX.Group ); + // add to the playing list + if ( src == EmitterChannel.Any ) { + theAudioManager.playingEmitters.AddUnique( emitter ); + } + + // OSP properties + if ( osp != null ) { + osp.EnableSpatialization = soundFX.ospProps.enableSpatialization; + osp.EnableRfl = theAudioManager.enableSpatializedFastOverride || soundFX.ospProps.useFastOverride ? true : false; + osp.Gain = soundFX.ospProps.gain; + osp.UseInvSqr = soundFX.ospProps.enableInvSquare; + osp.Near = soundFX.ospProps.invSquareFalloff.x; + osp.Far = soundFX.ospProps.invSquareFalloff.y; + audioSource.spatialBlend = (soundFX.ospProps.enableSpatialization) ? 1.0f : 0.8f; + + // make sure to set the properties in the audio source before playing + osp.SetParameters(ref audioSource); + } + + audioSource.transform.position = position; + + if ( theAudioManager.verboseLogging ) { + Debug.Log( "[AudioManager] PlaySoundAt() channel = " + idx + " soundFX = " + soundFX.name + " volume = " + emitter.volume + " Delay = " + delay + " time = " + Time.time + "\n" ); + } + + // play the sound + if ( delay > 0f ) { + audioSource.PlayDelayed( delay ); + } else { + audioSource.Play(); + } + + return idx; + } + + /* + ----------------------- + PlayRandomSoundAt() + ----------------------- + */ + static public int PlayRandomSoundAt( Vector3 position, AudioClip[] clips, float volume, EmitterChannel src = EmitterChannel.Any, float delay = 0.0f, float pitch = 1.0f, bool loop = false ) { + if ( ( clips == null ) || ( clips.Length == 0 ) ) { + return -1; + } + int idx = Random.Range( 0, clips.Length ); + return PlaySoundAt( position, clips[idx], volume, src, delay, pitch, loop ); + } + + /* + ----------------------- + PlaySoundAt() + ----------------------- + */ + static public int PlaySoundAt( Vector3 position, AudioClip clip, float volume = 1.0f, EmitterChannel src = EmitterChannel.Any, float delay = 0.0f, float pitch = 1.0f, bool loop = false ) { + if ( !SoundEnabled ) { + return -1; + } + + if ( clip == null ) { + return -1; + } + + // check the distance from the local player and ignore sounds out of range + if ( staticListenerPosition != null ) { + if ( ( staticListenerPosition.position - position ).sqrMagnitude > theAudioManager.audioMaxFallOffDistanceSqr ) { + // no chance of being heard + return -1; + } + } + + int idx = FindFreeEmitter( src, 0 ); + if ( idx == -1 ) { + // no free emitters - should only happen on very low priority sounds + return -1; + } + SoundEmitter emitter = theAudioManager.soundEmitters[idx]; + + // make sure to detach the emitter from a previous parent + emitter.ResetParent( soundEmitterParent.transform ); + emitter.gameObject.SetActive( true ); + + // set up the sound emitter + AudioSource audioSource = emitter.audioSource; + ONSPAudioSource osp = emitter.osp; + + audioSource.enabled = true; + audioSource.volume = Mathf.Clamp01( theAudioManager.volumeSoundFX * volume ); + audioSource.pitch = pitch; + audioSource.spatialBlend = 0.8f; + audioSource.rolloffMode = AudioRolloffMode.Linear; + audioSource.SetCustomCurve( AudioSourceCurveType.ReverbZoneMix, defaultReverbZoneMix ); + audioSource.dopplerLevel = 0.0f; + audioSource.clip = clip; + audioSource.spread = 0.0f; + audioSource.loop = loop; + audioSource.mute = false; + audioSource.minDistance = theAudioManager.audioMinFallOffDistance; + audioSource.maxDistance = theAudioManager.audioMaxFallOffDistance; + audioSource.outputAudioMixerGroup = AudioManager.EmitterGroup; + // set the play time so we can check when sounds are done + emitter.endPlayTime = Time.time + clip.length + delay; + // cache the default volume for fading + emitter.defaultVolume = audioSource.volume; + // default priority + emitter.priority = 0; + // reset this + emitter.onFinished = null; + // update the sound group limits + emitter.SetPlayingSoundGroup( null ); + // add to the playing list + if ( src == EmitterChannel.Any ) { + theAudioManager.playingEmitters.AddUnique( emitter ); + } + + // disable spatialization (by default for regular AudioClips) + if ( osp != null ) { + osp.EnableSpatialization = false; + } + + audioSource.transform.position = position; + + if ( theAudioManager.verboseLogging ) { + Debug.Log( "[AudioManager] PlaySoundAt() channel = " + idx + " clip = " + clip.name + " volume = " + emitter.volume + " Delay = " + delay + " time = " + Time.time + "\n" ); + } + + // play the sound + if ( delay > 0f ) { + audioSource.PlayDelayed( delay ); + } else { + audioSource.Play(); + } + + return idx; + } + + /* + ----------------------- + SetOnFinished() + ----------------------- + */ + public static void SetOnFinished( int emitterIdx, System.Action onFinished ) { + if ( emitterIdx >= 0 && emitterIdx < theAudioManager.maxSoundEmitters ) { + theAudioManager.soundEmitters[emitterIdx].SetOnFinished( onFinished ); + } + } + + /* + ----------------------- + SetOnFinished() + ----------------------- + */ + public static void SetOnFinished( int emitterIdx, System.Action onFinished, object obj ) { + if ( emitterIdx >= 0 && emitterIdx < theAudioManager.maxSoundEmitters ) { + theAudioManager.soundEmitters[emitterIdx].SetOnFinished( onFinished, obj ); + } + } + + /* + ----------------------- + AttachSoundToParent() + ----------------------- + */ + public static void AttachSoundToParent( int idx, Transform parent ) { + if ( theAudioManager.verboseLogging ) { + string parentName = parent.name; + if ( parent.parent != null ) { + parentName = parent.parent.name + "/" + parentName; + } + Debug.Log( "[AudioManager] ATTACHING INDEX " + idx + " to " + parentName ); + } + theAudioManager.soundEmitters[idx].ParentTo( parent ); + } + + /* + ----------------------- + DetachSoundFromParent() + ----------------------- + */ + public static void DetachSoundFromParent( int idx ) { + if ( theAudioManager.verboseLogging ) { + Debug.Log( "[AudioManager] DETACHING INDEX " + idx ); + } + theAudioManager.soundEmitters[idx].DetachFromParent(); + } + + /* + ----------------------- + DetachSoundsFromParent() + ----------------------- + */ + public static void DetachSoundsFromParent( SoundEmitter[] emitters, bool stopSounds = true ) { + if ( emitters == null ) { + return; + } + foreach ( SoundEmitter emitter in emitters ) { + if ( emitter.defaultParent != null ) { + if ( stopSounds ) { + emitter.Stop(); + } + emitter.DetachFromParent(); + // make sure it's active + emitter.gameObject.SetActive( true ); + } else { + if ( stopSounds ) { + emitter.Stop(); + } + } + } + } + + /* + ----------------------- + SetEmitterMixerGroup() + ----------------------- + */ + public static void SetEmitterMixerGroup( int idx, AudioMixerGroup mixerGroup ) { + if ( ( theAudioManager != null ) && ( idx > -1 ) ) { + theAudioManager.soundEmitters[idx].SetAudioMixer( mixerGroup ); + } + } + + /* + ----------------------- + GetActiveSnapshot() + ----------------------- + */ + public static MixerSnapshot GetActiveSnapshot() { + return ( theAudioManager != null ) ? theAudioManager.currentSnapshot : null; + } + + /* + ----------------------- + SetCurrentSnapshot() + ----------------------- + */ + public static void SetCurrentSnapshot( MixerSnapshot mixerSnapshot ) { +#if UNITY_EDITOR + if ( mixerSnapshot == null || mixerSnapshot.snapshot == null ) { + Debug.LogError( "[AudioManager] ERROR setting empty mixer snapshot!" ); + } else { + Debug.Log( "[AudioManager] Setting audio mixer snapshot: " + ( ( mixerSnapshot != null && mixerSnapshot.snapshot != null ) ? mixerSnapshot.snapshot.name : "None" ) + " Time: " + Time.time ); + } +#endif + if ( theAudioManager != null ) { + if ( ( mixerSnapshot != null ) && ( mixerSnapshot.snapshot != null ) ) { + mixerSnapshot.snapshot.TransitionTo( mixerSnapshot.transitionTime ); + } else { + mixerSnapshot = null; + } + theAudioManager.currentSnapshot = mixerSnapshot; + } + } + + /* + ----------------------- + BlendWithCurrentSnapshot() + ----------------------- + */ + public static void BlendWithCurrentSnapshot( MixerSnapshot blendSnapshot, float weight, float blendTime = 0.0f ) { + if ( theAudioManager != null ) { + if ( theAudioManager.audioMixer == null ) { + Debug.LogWarning( "[AudioManager] can't call BlendWithCurrentSnapshot if the audio mixer is not set!" ); + return; + } + if ( blendTime == 0.0f ) { + blendTime = Time.deltaTime; + } + if ( ( theAudioManager.currentSnapshot != null ) && (theAudioManager.currentSnapshot.snapshot != null ) ) { + if ( ( blendSnapshot != null ) && ( blendSnapshot.snapshot != null ) ) { + weight = Mathf.Clamp01( weight ); + if ( weight == 0.0f ) { + // revert to the default snapshot + theAudioManager.currentSnapshot.snapshot.TransitionTo( blendTime ); + } else { + AudioMixerSnapshot[] snapshots = new AudioMixerSnapshot[] { theAudioManager.currentSnapshot.snapshot, blendSnapshot.snapshot }; + float[] weights = new float[] { 1.0f - weight, weight }; + theAudioManager.audioMixer.TransitionToSnapshots( snapshots, weights, blendTime ); + } + } + } + } + } + +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager_Sound.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager_Sound.cs.meta new file mode 100644 index 0000000..b819ea7 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/AudioManager_Sound.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41cb0f893e9a44e83b09a66c55bd7856 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor.meta b/Assets/Oculus/AudioManager/Scripts/Audio/Editor.meta new file mode 100644 index 0000000..28043d1 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 02213405caaf04aeea7876974c06fa5a +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioImportPostProcessor.cs b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioImportPostProcessor.cs new file mode 100644 index 0000000..c3a96f5 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioImportPostProcessor.cs @@ -0,0 +1,41 @@ +using UnityEngine; +using UnityEditor; + +/* +----------------------- +AudioImportPostProcessor() +----------------------- +*/ +public class AudioImportPostProcessor : AssetPostprocessor { + + static void OnPostprocessAllAssets( string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths ) { + AudioManager audioManager = AudioManager.Instance; + if ( audioManager != null ) { + // find the asset path to the loaded audio manager prefab +#if UNITY_2018_2_OR_NEWER + Object prefabObject = PrefabUtility.GetCorrespondingObjectFromSource( audioManager ); +#else + Object prefabObject = PrefabUtility.GetPrefabParent( audioManager ); +#endif + if ( prefabObject != null ) { + string path = AssetDatabase.GetAssetPath( prefabObject ); + // check to see if the AudioManager prefab has been reimported. + // if so, rebuild everything + foreach ( string asset in importedAssets ) { + if ( asset.ToLower() == path.ToLower() ) { + // in the event the audio manager is selected, deselect it first before reloading + Debug.Log( "[AudioManager] AudioManager prefab reloaded: " + path ); + Selection.objects = new Object[0] { }; + // unfortunately even saving the audio manager prefab will trigger this action + //string msg = "The Audio Manager was reloaded. If you are going to be making modifications to the Audio Manager, "; + //msg += "please verify you have the latest version before proceeding. If in doubt, restart Unity before making modifications."; + //EditorUtility.DisplayDialog( "Audio Manager Prefab Reloaded", msg, "OK" ); + // do the actual reload + AudioManager.OnPrefabReimported(); + break; + } + } + } + } + } +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioImportPostProcessor.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioImportPostProcessor.cs.meta new file mode 100644 index 0000000..95789e5 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioImportPostProcessor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 48902580b26e3554d992bad48087eee5 +timeCreated: 1471010515 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioManagerInspector.cs b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioManagerInspector.cs new file mode 100644 index 0000000..89285de --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioManagerInspector.cs @@ -0,0 +1,626 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +/* +----------------------- + + AudioManagerInspector + +----------------------- +*/ +[CustomEditor(typeof(AudioManager))] +public class AudioManagerInspector : Editor { + + private AudioManager audioManager = null; + private string dragDropIdentifier = "MoveSoundFX"; + private GUIStyle customDividerStyle = null; + + /* + ----------------------- + OnInspectorGUI() + ----------------------- + */ + public override void OnInspectorGUI() { + + audioManager = target as AudioManager; + + Event e = Event.current; + + // draw the default properties + DrawDefaultProperties(); + + // draw the categories section + DrawCategories( e ); + + serializedObject.Update(); + + // draw the sound effects for the selected category + DrawSoundEffects( e ); + + serializedObject.ApplyModifiedProperties(); + + CreateStyles(); + } + + /* + ----------------------- + MarkDirty() + ----------------------- + */ + void MarkDirty() { + serializedObject.SetIsDifferentCacheDirty(); + EditorUtility.SetDirty( audioManager ); + } + + static private int selectedGroup = 0; + private int nextGroup = -1; + private int editGroup = -1; + private FastList soundGroups = new FastList(); + private FastList groups = new FastList(); + private Rect dropArea = new Rect(); + private bool addSound = false; + private int deleteSoundIdx = -1; + private int dupeSoundIdx = -1; + private bool sortSounds = false; + private bool moveQueued = false; + private int origGroup = -1; + private int origIndex = -1; + private int moveToGroup = -1; + + /* + ----------------------- + DrawDefaultProperties() + ----------------------- + */ + void DrawDefaultProperties() { + + BeginContents(); + if ( DrawHeader( "Default Properties", true ) ) { + EditorGUILayout.BeginVertical( GUI.skin.box ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "makePersistent" ), new GUIContent( "Don't Destroy on Load" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "enableSpatializedAudio" ), new GUIContent( "Enable Spatialized Audio" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "enableSpatializedFastOverride" ), new GUIContent( "Force Disable Reflections" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "audioMixer" ), new GUIContent( "Master Audio Mixer" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "defaultMixerGroup" ), new GUIContent( "Pooled Emitter Mixer Group" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "reservedMixerGroup" ), new GUIContent( "Reserved Emitter Mixer Group" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "voiceChatMixerGroup" ), new GUIContent( "Voice Chat Mixer Group" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "verboseLogging" ), new GUIContent( "Verbose Logging" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "maxSoundEmitters" ), new GUIContent( "Max Sound Emitters" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "volumeSoundFX" ), new GUIContent( "Default Volume" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "soundFxFadeSecs" ), new GUIContent( "Sound FX Fade Secs" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "audioMinFallOffDistance" ), new GUIContent( "Minimum Falloff Distance" ) ); + EditorGUILayout.PropertyField( serializedObject.FindProperty( "audioMaxFallOffDistance" ), new GUIContent( "Maximum Falloff Distance" ) ); + EditorGUILayout.EndVertical(); + serializedObject.ApplyModifiedProperties(); + } + EndContents(); + } + + /* + ----------------------- + DrawSoundGroupProperties() + ----------------------- + */ + void DrawSoundGroupProperties() { + if ( selectedGroup == -1 ) { + return; + } + + SerializedProperty soundGroupsArray = serializedObject.FindProperty( "soundGroupings" ); + if ( selectedGroup >= soundGroupsArray.arraySize ) { + return; + } + SerializedProperty soundGroup = soundGroupsArray.GetArrayElementAtIndex( selectedGroup ); + string soundGroupName = soundGroup.FindPropertyRelative( "name" ).stringValue; + if ( DrawHeader( string.Format( "{0} Properties", soundGroupName ), true ) ) { + EditorGUILayout.BeginVertical( GUI.skin.box ); + EditorGUILayout.PropertyField( soundGroup.FindPropertyRelative( "mixerGroup" ), new GUIContent( "Override Mixer Group", "Leave empty to use the Audio Manager's default mixer group" ) ); + if ( !Application.isPlaying ) { + EditorGUILayout.PropertyField( soundGroup.FindPropertyRelative( "maxPlayingSounds" ), new GUIContent( "Max Playing Sounds Limit", "Max playing sounds for this sound group, 0 = no limit" ) ); + } else { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField( soundGroup.FindPropertyRelative( "maxPlayingSounds" ), new GUIContent( "Max Playing Sounds Limit", "Max playing sounds for this sound group, 0 = no limit" ) ); + // cast to the actual object + int playingSounds = soundGroup.FindPropertyRelative( "playingSoundCount" ).intValue; + EditorGUILayout.LabelField( string.Format( "Playing: {0}", playingSounds ), GUILayout.Width( 80.0f ) ); + EditorGUILayout.EndHorizontal(); + } + EditorGUILayout.PropertyField( soundGroup.FindPropertyRelative( "preloadAudio" ), new GUIContent( "Preload Audio Clips", "Default = No special preloading, Preload = Audio clips are set to 'Preload', Manual Preload = Audio clips are set to not 'Preload'" ) ); + EditorGUILayout.PropertyField( soundGroup.FindPropertyRelative( "volumeOverride" ), new GUIContent( "Volume Override", "All sounds played in this group will have volume scaled by this amount" ) ); + if ( soundGroup.FindPropertyRelative( "volumeOverride" ).floatValue == 0.0f ) { + EditorGUILayout.HelpBox( "With a volumeOverride of 0.0, these sounds will not play!", MessageType.Warning ); + } + EditorGUILayout.EndVertical(); + serializedObject.ApplyModifiedProperties(); + } + } + + /* + ----------------------- + DrawCategories() + ----------------------- + */ + void DrawCategories( Event e ) { + + // do any housework before we start drawing + if ( moveQueued ) { + // make a temp copy + List origSoundList = new List( audioManager.soundGroupings[origGroup].soundList ); + SoundFX temp = origSoundList[origIndex]; + List moveToSoundList = new List( audioManager.soundGroupings[moveToGroup].soundList ); + // add it to the move to group + moveToSoundList.Add( temp ); + audioManager.soundGroupings[moveToGroup].soundList = moveToSoundList.ToArray(); + // and finally, remove it from the original group + origSoundList.RemoveAt( origIndex ); + audioManager.soundGroupings[origGroup].soundList = origSoundList.ToArray(); + Debug.Log( "> Moved '" + temp.name + "' from " + "'" + audioManager.soundGroupings[origGroup].name + "' to '" + audioManager.soundGroupings[moveToGroup].name ); + MarkDirty(); + moveQueued = false; + } + // switch to the next group + if ( nextGroup > -1 ) { + selectedGroup = nextGroup; + nextGroup = -1; + } + // add a sound + if ( addSound ) { + List soundList = new List( audioManager.soundGroupings[selectedGroup].soundList ); + SoundFX soundFX = new SoundFX(); + soundFX.name = audioManager.soundGroupings[selectedGroup].name.ToLower() + "_new_unnamed_sound_fx"; + soundList.Add( soundFX ); + audioManager.soundGroupings[selectedGroup].soundList = soundList.ToArray(); + MarkDirty(); + addSound = false; + } + // sort the sounds + if ( sortSounds ) { + List soundList = new List( audioManager.soundGroupings[selectedGroup].soundList ); + soundList.Sort( delegate ( SoundFX sfx1, SoundFX sfx2 ) { return string.Compare( sfx1.name, sfx2.name ); } ); + audioManager.soundGroupings[selectedGroup].soundList = soundList.ToArray(); + MarkDirty(); + sortSounds = false; + } + // delete a sound + if ( deleteSoundIdx > -1 ) { + List soundList = new List( audioManager.soundGroupings[selectedGroup].soundList ); + soundList.RemoveAt( deleteSoundIdx ); + audioManager.soundGroupings[selectedGroup].soundList = soundList.ToArray(); + MarkDirty(); + deleteSoundIdx = -1; + } + // duplicate a sound + if ( dupeSoundIdx > -1 ) { + List soundList = new List( audioManager.soundGroupings[selectedGroup].soundList ); + SoundFX origSoundFX = soundList[dupeSoundIdx]; + // clone this soundFX + string json = JsonUtility.ToJson( origSoundFX ); + SoundFX soundFX = JsonUtility.FromJson( json ); + soundFX.name += "_duplicated"; + soundList.Insert( dupeSoundIdx + 1, soundFX ); + audioManager.soundGroupings[selectedGroup].soundList = soundList.ToArray(); + MarkDirty(); + dupeSoundIdx = -1; + } + + if ( e.type == EventType.Repaint ) { + groups.Clear(); + } + + GUILayout.Space( 6f ); + + Color defaultColor = GUI.contentColor; + BeginContents(); + + if ( DrawHeader( "Sound FX Groups", true ) ) { + EditorGUILayout.BeginVertical( GUI.skin.box ); + soundGroups.Clear(); + for ( int i = 0; i < audioManager.soundGroupings.Length; i++ ) { + soundGroups.Add( audioManager.soundGroupings[i] ); + } + for ( int i = 0; i < soundGroups.size; i++ ) { + EditorGUILayout.BeginHorizontal(); + { + if ( i == selectedGroup ) { + GUI.contentColor = ( i == editGroup ) ? Color.white : Color.yellow; + } else { + GUI.contentColor = defaultColor; + } + if ( ( e.type == EventType.KeyDown ) && ( ( e.keyCode == KeyCode.Return ) || ( e.keyCode == KeyCode.KeypadEnter ) ) ) { + // toggle editing + if ( editGroup >= 0 ) { + editGroup = -1; + } + Event.current.Use(); + } + if ( i == editGroup ) { + soundGroups[i].name = GUILayout.TextField( soundGroups[i].name, GUILayout.MinWidth( Screen.width - 80f ) ); + } else { + GUILayout.Label( soundGroups[i].name, ( i == selectedGroup ) ? EditorStyles.whiteLabel : EditorStyles.label, GUILayout.ExpandWidth( true ) ); + } + GUILayout.FlexibleSpace(); + if ( GUILayout.Button( GUIContent.none, "OL Minus", GUILayout.Width(17f) ) ) { // minus button + if ( EditorUtility.DisplayDialog( "Delete '" + soundGroups[i].name + "'", "Are you sure you want to delete the selected sound group?", "Continue", "Cancel" ) ) { + soundGroups.RemoveAt( i ); + MarkDirty(); + } + } + } + EditorGUILayout.EndHorizontal(); + // build a list of items + Rect lastRect = GUILayoutUtility.GetLastRect(); + if ( e.type == EventType.Repaint ) { + groups.Add ( new ItemRect( i, lastRect, null ) ); + } + if ( ( e.type == EventType.MouseDown ) && lastRect.Contains( e.mousePosition ) ) { + if ( ( i != selectedGroup ) || ( e.clickCount == 2 ) ) { + nextGroup = i; + if ( e.clickCount == 2 ) { + editGroup = i; + } else if ( editGroup != nextGroup ) { + editGroup = -1; + } + Repaint(); + } + } + } + // add the final plus button + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if ( GUILayout.Button( GUIContent.none, "OL Plus", GUILayout.Width(17f) ) ) { // plus button + soundGroups.Add( new SoundGroup( "unnamed sound group" ) ); + selectedGroup = editGroup = soundGroups.size - 1; + MarkDirty(); + } + EditorGUILayout.EndHorizontal(); + EditorGUILayout.EndVertical(); + + // reset the color + GUI.contentColor = defaultColor; + + // the sort and import buttons + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if ( GUILayout.Button( "Sort", GUILayout.Width( 70f ) ) ) { + soundGroups.Sort( delegate( SoundGroup sg1, SoundGroup sg2 ) { return string.Compare( sg1.name, sg2.name ); } ); + MarkDirty(); + } + EditorGUILayout.EndHorizontal(); + + // draw a rect around the selected item + if ( ( selectedGroup >= 0 ) && ( selectedGroup < groups.size ) ) { + EditorGUI.DrawRect( groups[selectedGroup].rect, new Color( 1f, 1f, 1f, 0.06f ) ); + } + + // finally move the sound groups back into the audio manager + if ( soundGroups.size > 0 ) { + audioManager.soundGroupings = soundGroups.ToArray(); + } + + // calculate the drop area rect + if ( ( e.type == EventType.Repaint ) && ( groups.size > 0 ) ) { + dropArea.x = groups[0].rect.x; + dropArea.y = groups[0].rect.y; + dropArea.width = groups[0].rect.width; + dropArea.height = ( groups[groups.size-1].rect.y - groups[0].rect.y ) + groups[groups.size-1].rect.height; + } + } + // draw the sound group properties now + DrawSoundGroupProperties(); + + EndContents(); + + EditorGUILayout.HelpBox("Create and delete sound groups by clicking + and - respectively. Double click to rename sound groups. Drag and drop sounds from below to the groups above to move them.", MessageType.Info); + + } + + public class CustomDragData{ + public int originalGroupIndex; + public int originalIndex; + public SerializedProperty originalProperty; + } + + public class ItemRect { + public ItemRect( int index, Rect rect, SerializedProperty prop ) { + this.index = index; + this.rect = rect; + this.prop = prop; + } + public int index; + public Rect rect; + public SerializedProperty prop; + } + + private FastList items = new FastList(); + + /* + ----------------------- + CreateStyles() + ----------------------- + */ + void CreateStyles() { + if ( customDividerStyle == null ) { + customDividerStyle = new GUIStyle( EditorStyles.label ); + customDividerStyle.normal.background = MakeTex( 4, 4, new Color( 0.5f, 0.5f, 0.5f, 0.25f ) ); + customDividerStyle.margin.right -= 16; + } + } + + /* + ----------------------- + MakeTex() + ----------------------- + */ + private Texture2D MakeTex( int width, int height, Color col ) { + Color[] pix = new Color[width*height]; + + for ( int i = 0; i < pix.Length; i++ ) + pix[i] = col; + + Texture2D result = new Texture2D(width, height); + result.SetPixels( pix ); + result.Apply(); + + return result; + } + + /* + ----------------------- + DrawSoundEffects() + ----------------------- + */ + void DrawSoundEffects( Event e ) { + if ( ( selectedGroup < 0 ) || ( audioManager.soundGroupings.Length == 0 ) || ( selectedGroup >= audioManager.soundGroupings.Length ) ) { + return; + } + + if ( e.type == EventType.Repaint ) { + items.Clear(); + } else { + CheckStartDrag( e ); + } + + BeginContents(); + if ( DrawHeader( "Sound Effects", true ) ) { + GUILayout.Space(3f); + GUILayout.BeginVertical( GUI.skin.box ); + + SerializedProperty soundGroupsArray = serializedObject.FindProperty( "soundGroupings" ); + SerializedProperty soundGroup = soundGroupsArray.GetArrayElementAtIndex( selectedGroup ); + SerializedProperty soundList = soundGroup.FindPropertyRelative( "soundList" ); + + CreateStyles(); + + Rect prevRect = new Rect(); + if ( soundList.arraySize > 0 ) { + // show all the sounds + for ( int i = 0; i < soundList.arraySize; i++ ) { + EditorGUI.indentLevel = 1; + SerializedProperty soundFX = soundList.GetArrayElementAtIndex( i ); + SerializedProperty visToggle = soundFX.FindPropertyRelative( "visibilityToggle" ); + EditorGUILayout.BeginHorizontal( customDividerStyle ); + { + string soundFXName = soundFX.FindPropertyRelative( "name" ).stringValue; + // save the visibility state + visToggle.boolValue = EditorGUILayout.Foldout( visToggle.boolValue, soundFXName ); + + // play button + if ( GUILayout.Button( "\u25BA", GUILayout.Width( 17f ), GUILayout.Height( 16f ) ) ) { + if ( AudioManager.IsSoundPlaying( soundFXName ) ) { + AudioManager.StopSound( soundFXName ); + } else { + AudioManager.PlaySound( soundFXName ); + } + } + } + EditorGUILayout.EndHorizontal(); + if ( visToggle.boolValue ) { + EditorGUILayout.PropertyField( soundFX, true ); + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if ( GUILayout.Button( "Delete FX", GUILayout.Width( Screen.width / 3.0f ) ) ) { + if ( EditorUtility.DisplayDialog( "Delete " + soundFX.displayName, "Are you sure?", "Yes", "No!" ) ) { + deleteSoundIdx = i; + } + } + if ( GUILayout.Button( "Duplicate FX", GUILayout.Width( Screen.width / 3.0f ) ) ) { + dupeSoundIdx = i; + } + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + GUILayout.Space( 10.0f ); + } + if ( e.type == EventType.Repaint ) { + // GetLastRect() is now returning the last rect drawn in the property drawer, + // not the rect used for the entire SoundFX + Rect curRect = prevRect; + curRect.y = prevRect.y + EditorGUIUtility.singleLineHeight; + Rect lastRect = GUILayoutUtility.GetLastRect(); + curRect.height = ( lastRect.y + lastRect.height ) - curRect.y; + curRect.width = Screen.width; + items.Add( new ItemRect( i, curRect, soundFX ) ); + } + prevRect = GUILayoutUtility.GetLastRect(); + } + } else { + EditorGUILayout.LabelField( " " ); + } + GUILayout.EndVertical(); + GUILayout.Space(3f); + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if ( GUILayout.Button( "Add FX", GUILayout.Width( 70f ) ) ) { + //soundList.InsertArrayElementAtIndex( soundList.arraySize ); + //MarkDirty(); + addSound = true; + } + if ( GUILayout.Button( "Sort", GUILayout.Width( 70f ) ) ) { + sortSounds = true; + } + EditorGUILayout.EndHorizontal(); + + } + EndContents(); + + UpdateDrag( e ); + + } + + /* + ----------------------- + CheckStartDrag() + ----------------------- + */ + void CheckStartDrag( Event e ) { + + if ( ( e.type == EventType.MouseDrag ) && ( e.button == 0 ) ) { + for ( int i = 0; i < items.size; i++ ) { + if ( items[i].rect.Contains( e.mousePosition ) ) { + DragAndDrop.PrepareStartDrag();// reset data + + CustomDragData dragData = new CustomDragData(); + dragData.originalGroupIndex = selectedGroup; + dragData.originalIndex = items[i].index; + dragData.originalProperty = items[i].prop; + + DragAndDrop.SetGenericData( dragDropIdentifier, dragData ); + + DragAndDrop.objectReferences = new Object[0]; + + DragAndDrop.StartDrag( dragData.originalProperty.FindPropertyRelative( "name" ).stringValue ); + e.Use(); + } + } + } + } + + /* + ----------------------- + FindGroupIndex() + ----------------------- + */ + int FindGroupIndex( Event e ) { + for ( int i = 0; i < groups.size; i++ ) { + if ( groups[i].rect.Contains( e.mousePosition ) ) { + return i; + } + } + return -1; + } + + /* + ----------------------- + UpdateDrag() + ----------------------- + */ + void UpdateDrag( Event e ) { + + CustomDragData dragData = DragAndDrop.GetGenericData( dragDropIdentifier ) as CustomDragData; + if ( dragData == null ) { + return; + } + + int groupIndex = FindGroupIndex( e ); + + switch ( e.type ) { + case EventType.DragUpdated: + if ( ( groupIndex >= 0 ) && ( groupIndex != selectedGroup ) ) { + DragAndDrop.visualMode = DragAndDropVisualMode.Move; + } else { + DragAndDrop.visualMode = DragAndDropVisualMode.Rejected; + } + e.Use(); + break; + case EventType.Repaint: + if ( ( DragAndDrop.visualMode == DragAndDropVisualMode.None ) || + ( DragAndDrop.visualMode == DragAndDropVisualMode.Rejected ) ) { + break; + } + if ( groupIndex >= 0 && groupIndex < groups.size ) { + EditorGUI.DrawRect( groups[groupIndex].rect, new Color( 0f, 1f, 0f, 0.1f ) ); + } + break; + case EventType.DragPerform: + DragAndDrop.AcceptDrag(); + // queue the sound FX move + QueueSoundFXMove( dragData.originalGroupIndex, dragData.originalIndex, groupIndex ); + e.Use(); + break; + case EventType.MouseUp: + // in case MouseDrag never occurred: + DragAndDrop.PrepareStartDrag(); + break; + } + } + + /* + ----------------------- + QueueSoundFXMove() + ----------------------- + */ + void QueueSoundFXMove( int origGroupIndex, int origSoundIndex, int newGroupIndex ) { + moveQueued = true; + origGroup = origGroupIndex; + origIndex = origSoundIndex; + moveToGroup = newGroupIndex; + } + + /* + ----------------------- + DrawHeader() + ----------------------- + */ + static public bool DrawHeader (string text) { return DrawHeader(text, text, false); } + static public bool DrawHeader (string text, string key) { return DrawHeader(text, key, false); } + static public bool DrawHeader (string text, bool forceOn) { return DrawHeader(text, text, forceOn); } + static public bool DrawHeader( string text, string key, bool forceOn ) { + bool state = EditorPrefs.GetBool(key, true); + + GUILayout.Space(3f); + if (!forceOn && !state) GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f); + GUILayout.BeginHorizontal(); + GUILayout.Space(3f); + + GUI.changed = false; + text = "" + text + ""; + if (state) text = "\u25BC " + text; + else text = "\u25B6 " + text; + if (!GUILayout.Toggle(true, text, "dragtab", GUILayout.MinWidth(20f))) state = !state; + if (GUI.changed) EditorPrefs.SetBool(key, state); + + GUILayout.Space(2f); + GUILayout.EndHorizontal(); + GUI.backgroundColor = Color.white; + if (!forceOn && !state) GUILayout.Space(3f); + return state; + } + + /* + ----------------------- + BeginContents() + ----------------------- + */ + static public void BeginContents() { + GUILayout.BeginHorizontal(); + GUILayout.Space(4f); + EditorGUILayout.BeginHorizontal(GUILayout.MinHeight(10f)); + GUILayout.BeginVertical(); + GUILayout.Space(2f); + } + + /* + ----------------------- + EndContents() + ----------------------- + */ + static public void EndContents() { + GUILayout.Space(3f); + GUILayout.EndVertical(); + EditorGUILayout.EndHorizontal(); + GUILayout.Space(3f); + GUILayout.EndHorizontal(); + GUILayout.Space(3f); + } + +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioManagerInspector.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioManagerInspector.cs.meta new file mode 100644 index 0000000..b5a07f7 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/AudioManagerInspector.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f04a80514947486d9793cab0005447f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MinMaxPropertyDrawer.cs b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MinMaxPropertyDrawer.cs new file mode 100644 index 0000000..528dcc1 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MinMaxPropertyDrawer.cs @@ -0,0 +1,61 @@ +using UnityEditor; +using UnityEngine; + +/* +----------------------- + + MinMaxPropertyDrawer + +----------------------- +*/ +[CustomPropertyDrawer (typeof (MinMaxAttribute))] +public class MinMaxPropertyDrawer : PropertyDrawer { + + // Provide easy access to the MinMaxAttribute for reading information from it. + MinMaxAttribute minMax { get { return ((MinMaxAttribute)attribute); } } + + /* + ----------------------- + GetPropertyHeight() + ----------------------- + */ + public override float GetPropertyHeight( SerializedProperty prop, GUIContent label ) { + return base.GetPropertyHeight( prop, label ) * 2f; + } + + /* + ----------------------- + OnGUI() + ----------------------- + */ + public override void OnGUI( Rect position, SerializedProperty property, GUIContent label ) { + Rect sliderPosition = EditorGUI.PrefixLabel( position, label ); + SerializedProperty min = property.FindPropertyRelative( "x" ); + SerializedProperty max = property.FindPropertyRelative( "y" ); + + // draw the range and the reset button first so that the slider doesn't grab all the input + Rect rangePosition = sliderPosition; + rangePosition.y += rangePosition.height * 0.5f; + rangePosition.height *= 0.5f; + Rect contentPosition = rangePosition; + EditorGUI.indentLevel = 0; + EditorGUIUtility.labelWidth = 30f; + contentPosition.width *= 0.3f; + EditorGUI.PropertyField(contentPosition, min, new GUIContent( "Min" ) ); + contentPosition.x += contentPosition.width + 20f; + EditorGUI.PropertyField( contentPosition, max, new GUIContent( "Max" ) ); + contentPosition.x += contentPosition.width + 20f; + contentPosition.width = 50.0f; + if ( GUI.Button( contentPosition, "Reset" ) ) { + min.floatValue = minMax.minDefaultVal; + max.floatValue = minMax.maxDefaultVal; + } + float minValue = min.floatValue; + float maxValue = max.floatValue; + EditorGUI.MinMaxSlider( sliderPosition, GUIContent.none, ref minValue, ref maxValue, minMax.min, minMax.max ); + // round to readable values + min.floatValue = Mathf.Round( minValue / 0.01f ) * 0.01f; + max.floatValue = Mathf.Round( maxValue / 0.01f ) * 0.01f; + } + +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MinMaxPropertyDrawer.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MinMaxPropertyDrawer.cs.meta new file mode 100644 index 0000000..1114479 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MinMaxPropertyDrawer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 225aed143a64c4a6a93f3a07656ac5cd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MixerSnapshotPropertyDrawer.cs b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MixerSnapshotPropertyDrawer.cs new file mode 100644 index 0000000..743ba60 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MixerSnapshotPropertyDrawer.cs @@ -0,0 +1,45 @@ +using UnityEditor; +using UnityEngine; + +/* +----------------------- + + MixerSnapshotPropertyDrawer + +----------------------- +*/ +[CustomPropertyDrawer( typeof( MixerSnapshot ) )] +public class MixerSnapshotPropertyDrawer : PropertyDrawer { + + // Draw the property inside the given rect + public override void OnGUI( Rect position, SerializedProperty property, GUIContent label ) { + // Using BeginProperty / EndProperty on the parent property means that + // prefab override logic works on the entire property. + EditorGUI.BeginProperty( position, label, property ); + + // Draw label + position = EditorGUI.PrefixLabel( position, GUIUtility.GetControlID( FocusType.Passive ), label ); + + // Don't make child fields be indented + var indent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + EditorGUIUtility.labelWidth = 65; + + float width = ( position.width - 15.0f ) / 2.0f; + + // Calculate rects + var srcRect = new Rect( position.x, position.y, width + 20, position.height ); position.x += width + 25.0f; + var destRect = new Rect( position.x, position.y, width - 60, position.height ); position.x += width - 60.0f; + var secsRect = new Rect( position.x, position.y, 40, position.height ); + + // Draw fields - pass GUIContent.none to each so they are drawn without labels + EditorGUI.PropertyField( srcRect, property.FindPropertyRelative( "snapshot" ), GUIContent.none ); + EditorGUI.PropertyField( destRect, property.FindPropertyRelative( "transitionTime" ), new GUIContent( "Transition" ) ); + EditorGUI.LabelField( secsRect, new GUIContent( "sec(s)" ) ); + + // Set indent back to what it was + EditorGUI.indentLevel = indent; + + EditorGUI.EndProperty(); + } +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MixerSnapshotPropertyDrawer.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MixerSnapshotPropertyDrawer.cs.meta new file mode 100644 index 0000000..8116165 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/MixerSnapshotPropertyDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 82a91f30f2305c14dbfd2cc3c289dc59 +timeCreated: 1472247018 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/OSPPropsPropertyDrawer.cs b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/OSPPropsPropertyDrawer.cs new file mode 100644 index 0000000..528fe4f --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/OSPPropsPropertyDrawer.cs @@ -0,0 +1,62 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +/* +----------------------- + +OSPPropsPropertyDrawer + +----------------------- +*/ +[CustomPropertyDrawer(typeof(OSPProps))] +public class OSPPropsPropertyDrawer : PropertyDrawer { + + static float lineHeight = EditorGUIUtility.singleLineHeight + 2.0f; + static float indent = 32.0f; + // TODO - some day just enumerate these + static string[] props = new string[] { "useFastOverride", "gain", "enableInvSquare", "volumetric" , "invSquareFalloff" }; + static string[] names = new string[] { "Reflections Enabled", "Gain", "Enable Oculus Atten.", "Volumetric", "Range" }; + static int[] lines = new int[] { 1, 1, 1, 1, 2, 2 }; + /* + ----------------------- + OnGUI() + ----------------------- + */ + public override void OnGUI( Rect position, SerializedProperty prop, GUIContent label ) { + SerializedProperty playSpatializedProp = prop.FindPropertyRelative("enableSpatialization"); + position.height = lineHeight; + EditorGUI.PropertyField( position, playSpatializedProp ); + if ( playSpatializedProp.boolValue ) { + position.y += lineHeight + 4.0f; + Rect posLine = position; + posLine.x += indent; + posLine.width -= indent; + posLine.height = 1f; + GUI.Box( posLine, "" ); + position.y -= 10.0f; + for ( int i = 0; i < props.Length; i++ ) { + position.y += lineHeight; + position.height = ( lineHeight * lines[i] ); + SerializedProperty sibling = prop.FindPropertyRelative( props[i] ); + EditorGUI.PropertyField( position, sibling, new GUIContent( names[i] ) ); + } + } + } + + /* + ----------------------- + GetPropertyHeight() + ----------------------- + */ + public override float GetPropertyHeight (SerializedProperty prop, GUIContent label) { + SerializedProperty playSpatializedProp = prop.FindPropertyRelative("enableSpatialization"); + if ( !playSpatializedProp.boolValue ) { + return base.GetPropertyHeight( prop, label ); + } else { + return base.GetPropertyHeight( prop, label ) + ( lineHeight * ( props.Length + 1 ) ) + 16.0f; + } + } + +} + diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/OSPPropsPropertyDrawer.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/OSPPropsPropertyDrawer.cs.meta new file mode 100644 index 0000000..1f97341 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/OSPPropsPropertyDrawer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9fc79251b168140d68851f1e8c283514 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXPropertyDrawer.cs b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXPropertyDrawer.cs new file mode 100644 index 0000000..855ce1e --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXPropertyDrawer.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +/* +----------------------- + +SoundFXPropertyDrawer + +----------------------- +*/ +[CustomPropertyDrawer(typeof(SoundFX))] +public class SoundFXPropertyDrawer : PropertyDrawer { + + static float lineHeight = EditorGUIUtility.singleLineHeight + 2.0f; + + static string[] props = new string[] { "name", "playback", "volume", "pitchVariance", "falloffDistance", "falloffCurve", "reverbZoneMix", "spread", "pctChanceToPlay", "priority", "delay", "looping", "ospProps", "soundClips" }; + + /* + ----------------------- + OnGUI() + ----------------------- + */ + public override void OnGUI( Rect position, SerializedProperty prop, GUIContent label ) { + + EditorGUILayout.BeginVertical(); + for ( int i = 0; i < props.Length; i++ ) { + EditorGUI.indentLevel = 2; + SerializedProperty property = prop.FindPropertyRelative( props[i] ); + if ( props[i] == "reverbZoneMix" ) { + EditorGUILayout.BeginHorizontal(); + SerializedProperty reverbCurve = prop.FindPropertyRelative( "reverbZoneMix" ); + EditorGUILayout.PropertyField( reverbCurve, true, GUILayout.Width( Screen.width - 130.0f ) ); + if ( GUILayout.Button( "Reset", GUILayout.Width( 50.0f ) ) ) { + reverbCurve.animationCurveValue = new AnimationCurve( new Keyframe[2] { new Keyframe( 0f, 1.0f ), new Keyframe( 1f, 1f ) } ); + } + EditorGUILayout.EndHorizontal(); + } else { + EditorGUILayout.PropertyField( property, true, GUILayout.Width( Screen.width - 80.0f ) ); + position.y += lineHeight + 4.0f; + if ( props[i] == "falloffCurve" ) { + if ( property.enumValueIndex == (int)AudioRolloffMode.Custom ) { + EditorGUILayout.PropertyField( prop.FindPropertyRelative( "volumeFalloffCurve" ), true, GUILayout.Width( Screen.width - 80.0f ) ); + position.y += lineHeight + 4.0f; + } + } + } + } + EditorGUILayout.EndVertical(); + GUILayout.Space( 5.0f ); + } + + /* + ----------------------- + GetPropertyHeight() + ----------------------- + */ + public override float GetPropertyHeight (SerializedProperty prop, GUIContent label) { + return base.GetPropertyHeight( prop, label ); + } + +} + diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXPropertyDrawer.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXPropertyDrawer.cs.meta new file mode 100644 index 0000000..ba7613b --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXPropertyDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e791ce392b6937f47b1f7c90c6b402db +timeCreated: 1468857307 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXRefPropertyDrawer.cs b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXRefPropertyDrawer.cs new file mode 100644 index 0000000..6b58785 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXRefPropertyDrawer.cs @@ -0,0 +1,58 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +/* +----------------------- + +SoundFXRefPropertyDrawer + +----------------------- +*/ +[CustomPropertyDrawer(typeof(SoundFXRef))] +public class SoundFXRefPropertyDrawer : PropertyDrawer { + + static private GUIStyle disabledStyle = null; + + /* + ----------------------- + OnGUI() + ----------------------- + */ + public override void OnGUI( Rect position, SerializedProperty prop, GUIContent label ) { + int idx = 0; + Rect buttonPosition = position; + buttonPosition.x = position.x + position.width - 40f; + buttonPosition.width = 20f; + position.width = buttonPosition.x - position.x - 2f; + SerializedProperty nameProp = prop.FindPropertyRelative( "soundFXName" ); + if ( AudioManager.GetGameObject() == null ) { + if ( disabledStyle == null ) { + disabledStyle = new GUIStyle(); + disabledStyle.normal.textColor = Color.gray; + } + EditorGUI.LabelField(position, label.text, nameProp.stringValue, disabledStyle ); + } + else { + string[] soundFXNames = AudioManager.GetSoundFXNames( nameProp.stringValue, out idx ); + + idx = EditorGUI.Popup( position, label.text, idx, soundFXNames ); + nameProp.stringValue = AudioManager.NameMinusGroup( soundFXNames[idx] ); + // play button + if ( GUI.Button( buttonPosition, "\u25BA" ) ) { + if ( AudioManager.IsSoundPlaying( nameProp.stringValue ) ) { + AudioManager.StopSound( nameProp.stringValue ); + } else { + AudioManager.PlaySound( nameProp.stringValue ); + } + } + buttonPosition.x += 22.0f; + // select audio manager + if ( GUI.Button( buttonPosition, "\u2630" ) ) { + Selection.activeGameObject = AudioManager.GetGameObject(); + } + + } + } +} + diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXRefPropertyDrawer.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXRefPropertyDrawer.cs.meta new file mode 100644 index 0000000..a7af21a --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/Editor/SoundFXRefPropertyDrawer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6204bcaba636340b48858c9f10ab9016 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/MinMaxAttribute.cs b/Assets/Oculus/AudioManager/Scripts/Audio/MinMaxAttribute.cs new file mode 100644 index 0000000..8992b7a --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/MinMaxAttribute.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +/* +----------------------- + + MinMaxAttribute + +----------------------- +*/ +public class MinMaxAttribute : PropertyAttribute { + public float minDefaultVal = 1.0f; + public float maxDefaultVal = 1.0f; + public float min = 0.0f; + public float max = 1.0f; + public MinMaxAttribute( float minDefaultVal, float maxDefaultVal, float min, float max ) { + this.minDefaultVal = minDefaultVal; + this.maxDefaultVal = maxDefaultVal; + this.min = min; + this.max = max; + } +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/MinMaxAttribute.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/MinMaxAttribute.cs.meta new file mode 100644 index 0000000..5739109 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/MinMaxAttribute.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15126f023faf44286a08bdb5bdbdb6e7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/SoundEmitter.cs b/Assets/Oculus/AudioManager/Scripts/Audio/SoundEmitter.cs new file mode 100644 index 0000000..46ae4d3 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/SoundEmitter.cs @@ -0,0 +1,428 @@ +using UnityEngine; +using UnityEngine.Audio; +using System.Collections; + +/* +----------------------- + + SoundEmitter() + +----------------------- +*/ +public class SoundEmitter : MonoBehaviour { + public enum FadeState { + Null, + FadingIn, + FadingOut, + Ducking, + } + + // OPTIMIZE + + public float volume { get { return audioSource.volume; } set { audioSource.volume = value; } } + public float pitch { get { return audioSource.pitch; } set { audioSource.pitch = value; } } + public AudioClip clip { get { return audioSource.clip; } set { audioSource.clip = value; } } + public float time { get { return audioSource.time; } set { audioSource.time = value; } } + public float length { get { return ( audioSource.clip != null ) ? audioSource.clip.length : 0.0f; } } + public bool loop { get { return audioSource.loop; } set { audioSource.loop = value; } } + public bool mute { get { return audioSource.mute; } set { audioSource.mute = value; } } + public AudioVelocityUpdateMode velocityUpdateMode { get { return audioSource.velocityUpdateMode; } set { audioSource.velocityUpdateMode = value; } } + public bool isPlaying { get { return audioSource.isPlaying; } } + + public EmitterChannel channel = EmitterChannel.Reserved; + public bool disableSpatialization = false; + private FadeState state = FadeState.Null; + [System.NonSerialized] + [HideInInspector] + public AudioSource audioSource = null; + [System.NonSerialized] + [HideInInspector] + public SoundPriority priority = SoundPriority.Default; + [System.NonSerialized] + [HideInInspector] + public ONSPAudioSource osp = null; + [System.NonSerialized] + [HideInInspector] + public float endPlayTime = 0.0f; + private Transform lastParentTransform = null; + [System.NonSerialized] + [HideInInspector] + public float defaultVolume = 1.0f; + [System.NonSerialized] + [HideInInspector] + public Transform defaultParent = null; + [System.NonSerialized] + [HideInInspector] + public int originalIdx = -1; + [System.NonSerialized] + [HideInInspector] + public System.Action onFinished = null; + [System.NonSerialized] + [HideInInspector] + public System.Action onFinishedObject = null; + [System.NonSerialized] + [HideInInspector] + public object onFinishedParam; + [System.NonSerialized] + [HideInInspector] + public SoundGroup playingSoundGroup = null; + + /* + ----------------------- + Awake() + ----------------------- + */ + void Awake() { + // unity defaults to 'playOnAwake = true' + audioSource = GetComponent(); + if ( audioSource == null ) { + audioSource = gameObject.AddComponent(); + } + // is the spatialized audio enabled? + if ( AudioManager.enableSpatialization && !disableSpatialization ) { + osp = GetComponent(); + if ( osp == null ) { + osp = gameObject.AddComponent(); + } + } + audioSource.playOnAwake = false; + audioSource.Stop(); + } + + /* + ----------------------- + SetPlayingSoundGroup() + ----------------------- + */ + public void SetPlayingSoundGroup( SoundGroup soundGroup ) { + playingSoundGroup = soundGroup; + if ( soundGroup != null ) { + soundGroup.IncrementPlayCount(); + } + } + + /* + ----------------------- + SetOnFinished() + ----------------------- + */ + public void SetOnFinished( System.Action onFinished ) { + this.onFinished = onFinished; + } + + /* + ----------------------- + SetOnFinished() + ----------------------- + */ + public void SetOnFinished( System.Action onFinished, object obj ) { + onFinishedObject = onFinished; + onFinishedParam = obj; + } + + /* + ----------------------- + SetChannel() + ----------------------- + */ + public void SetChannel( int _channel ) { + channel = (EmitterChannel)_channel; + } + + /* + ----------------------- + SetDefaultParent() + ----------------------- + */ + public void SetDefaultParent( Transform parent ) { + defaultParent = parent; + } + + /* + ----------------------- + SetAudioMixer() + ----------------------- + */ + public void SetAudioMixer( AudioMixerGroup _mixer ) { + if ( audioSource != null ) { + audioSource.outputAudioMixerGroup = _mixer; + } + } + + /* + ----------------------- + IsPlaying() + ----------------------- + */ + public bool IsPlaying() { + if ( loop && audioSource.isPlaying ) { + return true; + } + return endPlayTime > Time.time; + } + + /* + ----------------------- + Play() + ----------------------- + */ + public void Play() { + // overrides everything + state = FadeState.Null; + endPlayTime = Time.time + length; + StopAllCoroutines(); + audioSource.Play(); + } + + /* + ----------------------- + Pause() + ----------------------- + */ + public void Pause() { + // overrides everything + state = FadeState.Null; + StopAllCoroutines(); + audioSource.Pause(); + } + + /* + ----------------------- + Stop() + ----------------------- + */ + public void Stop() { + // overrides everything + state = FadeState.Null; + StopAllCoroutines(); + if ( audioSource != null ) { + audioSource.Stop(); + } + if ( onFinished != null ) { + onFinished(); + onFinished = null; + } + if ( onFinishedObject != null ) { + onFinishedObject( onFinishedParam ); + onFinishedObject = null; + } + if ( playingSoundGroup != null ) { + playingSoundGroup.DecrementPlayCount(); + playingSoundGroup = null; + } + } + + /* + ----------------------- + GetSampleTime() + ----------------------- + */ + int GetSampleTime() { + return audioSource.clip.samples - audioSource.timeSamples; + } + + /* + ----------------------- + ParentTo() + ----------------------- + */ + public void ParentTo( Transform parent ) { + if ( lastParentTransform != null ) { + Debug.LogError( "[SoundEmitter] You must detach the sound emitter before parenting to another object!" ); + return; + } + lastParentTransform = transform.parent; + transform.parent = parent; + } + + /* + ----------------------- + DetachFromParent() + ----------------------- + */ + public void DetachFromParent() { + if ( lastParentTransform == null ) { + transform.parent = defaultParent; + return; + } + transform.parent = lastParentTransform; + lastParentTransform = null; + } + + /* + ----------------------- + ResetParent() + ----------------------- + */ + public void ResetParent( Transform parent ) { + transform.parent = parent; + lastParentTransform = null; + } + + /* + ----------------------- + SyncTo() + ----------------------- + */ + public void SyncTo( SoundEmitter other, float fadeTime, float toVolume ) { + StartCoroutine( DelayedSyncTo( other, fadeTime, toVolume ) ); + } + + /* + ----------------------- + DelayedSyncTo() + have to wait until the end of frame to do proper sync'ing + ----------------------- + */ + IEnumerator DelayedSyncTo( SoundEmitter other, float fadeTime, float toVolume ) { + yield return new WaitForEndOfFrame(); + //audio.timeSamples = other.GetSampleTime(); + //audio.time = Mathf.Min( Mathf.Max( 0.0f, other.time - other.length ), other.time ); + audioSource.time = other.time; + audioSource.Play(); + FadeTo( fadeTime, toVolume ); + } + + /* + ----------------------- + FadeTo() + ----------------------- + */ + public void FadeTo( float fadeTime, float toVolume ) { + //Log.Print( ">>> FADE TO: " + channel ); + + + // don't override a fade out + if ( state == FadeState.FadingOut ) { + //Log.Print( " ....ABORTED" ); + return; + } + state = FadeState.Ducking; + StopAllCoroutines(); + StartCoroutine( FadeSoundChannelTo( fadeTime, toVolume ) ); + } + + /* + ----------------------- + FadeIn() + ----------------------- + */ + public void FadeIn( float fadeTime, float defaultVolume ) { + + //Log.Print( ">>> FADE IN: " + channel ); + audioSource.volume = 0.0f; + state = FadeState.FadingIn; + StopAllCoroutines(); + StartCoroutine( FadeSoundChannel( 0.0f, fadeTime, Fade.In, defaultVolume ) ); + } + + /* + ----------------------- + FadeIn() + ----------------------- + */ + public void FadeIn( float fadeTime ) { + + //Log.Print( ">>> FADE IN: " + channel ); + audioSource.volume = 0.0f; + state = FadeState.FadingIn; + StopAllCoroutines(); + StartCoroutine( FadeSoundChannel( 0.0f, fadeTime, Fade.In, defaultVolume ) ); + } + + /* + ----------------------- + FadeOut() + ----------------------- + */ + public void FadeOut( float fadeTime ) { + //Log.Print( ">>> FADE OUT: " + channel ); + if ( !audioSource.isPlaying ) { + //Log.Print( " ... SKIPPING" ); + return; + } + state = FadeState.FadingOut; + StopAllCoroutines(); + StartCoroutine( FadeSoundChannel( 0.0f, fadeTime, Fade.Out, audioSource.volume ) ); + } + + /* + ----------------------- + FadeOutDelayed() + ----------------------- + */ + public void FadeOutDelayed( float delayedSecs, float fadeTime ) { + //Log.Print( ">>> FADE OUT DELAYED: " + channel ); + if ( !audioSource.isPlaying ) { + //Log.Print( " ... SKIPPING" ); + return; + } + state = FadeState.FadingOut; + StopAllCoroutines(); + StartCoroutine( FadeSoundChannel( delayedSecs, fadeTime, Fade.Out, audioSource.volume ) ); + } + + /* + ----------------------- + FadeSoundChannelTo() + ----------------------- + */ + IEnumerator FadeSoundChannelTo( float fadeTime, float toVolume ) { + float start = audioSource.volume; + float end = toVolume; + float startTime = Time.realtimeSinceStartup; + float elapsedTime = 0.0f; + + while ( elapsedTime < fadeTime ) { + elapsedTime = Time.realtimeSinceStartup - startTime; + float t = elapsedTime / fadeTime; + audioSource.volume = Mathf.Lerp( start, end, t ); + yield return 0; + } + state = FadeState.Null; + } + + /* + ----------------------- + FadeSoundChannel() + ----------------------- + */ + IEnumerator FadeSoundChannel( float delaySecs, float fadeTime, Fade fadeType, float defaultVolume ) { + if ( delaySecs > 0.0f ) { + yield return new WaitForSeconds( delaySecs ); + } + float start = ( fadeType == Fade.In ) ? 0.0f : defaultVolume; + float end = ( fadeType == Fade.In ) ? defaultVolume : 0.0f; + bool restartPlay = false; + + if ( fadeType == Fade.In ) { + if ( Time.time == 0.0f ) { + restartPlay = true; + } + audioSource.volume = 0.0f; + audioSource.Play(); + } + + float startTime = Time.realtimeSinceStartup; + float elapsedTime = 0.0f; + + while ( elapsedTime < fadeTime ) { + elapsedTime = Time.realtimeSinceStartup - startTime; + float t = elapsedTime / fadeTime; + audioSource.volume = Mathf.Lerp( start, end, t ); + yield return 0; + if ( restartPlay && ( Time.time > 0.0f ) ) { + audioSource.Play(); + restartPlay = false; + } + if ( !audioSource.isPlaying ) { + break; + } + } + + if ( fadeType == Fade.Out ) { + Stop(); + } + state = FadeState.Null; + } +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/SoundEmitter.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/SoundEmitter.cs.meta new file mode 100644 index 0000000..64b29f4 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/SoundEmitter.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ecd24e91b27c645fc95f6c42115c13cc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/SoundFX.cs b/Assets/Oculus/AudioManager/Scripts/Audio/SoundFX.cs new file mode 100644 index 0000000..ee91090 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/SoundFX.cs @@ -0,0 +1,306 @@ +using UnityEngine; +using UnityEngine.Audio; + +public enum SoundFXNext { + Random = 0, + Sequential = 1, +} + +public enum FreqHint { + None = 0, + Wide = 1, + Narrow = 2, +} + +public enum SoundPriority { + VeryLow = -2, + Low = -1, + Default = 0, + High = 1, + VeryHigh = 2, +} + +[System.Serializable] +public class OSPProps { + public OSPProps() { + enableSpatialization = false; + useFastOverride = false; + gain = 0.0f; + enableInvSquare = false; + volumetric = 0.0f; + invSquareFalloff = new Vector2( 1.0f, 25.0f ); + } + + [Tooltip( "Set to true to play the sound FX spatialized with binaural HRTF, default = false")] + public bool enableSpatialization = false; + [Tooltip( "Play the sound FX with reflections, default = false")] + public bool useFastOverride = false; + [Tooltip( "Boost the gain on the spatialized sound FX, default = 0.0")] + [Range( 0.0f, 24.0f )] + public float gain = 0.0f; + [Tooltip("Enable Inverse Square attenuation curve, default = false")] + public bool enableInvSquare = false; + [Tooltip("Change the sound from point source (0.0f) to a spherical volume, default = 0.0")] + [Range(0.0f, 1000.0f)] + public float volumetric = 0.0f; + [Tooltip("Set the near and far falloff value for the OSP attenuation curve, default = 1.0")] + [MinMax ( 1.0f, 25.0f, 0.0f, 250.0f )] + public Vector2 invSquareFalloff = new Vector2( 1.0f, 25.0f ); +} + +/* +----------------------- + +SoundFX + +----------------------- +*/ +[System.Serializable] +public class SoundFX { + public SoundFX() { + playback = SoundFXNext.Random; + volume = 1.0f; + pitchVariance = Vector2.one; + falloffDistance = new Vector2( 1.0f, 25.0f ); + falloffCurve = AudioRolloffMode.Linear; + volumeFalloffCurve = new AnimationCurve( new Keyframe[2] { new Keyframe( 0f, 1.0f ), new Keyframe( 1f, 1f ) } ); + reverbZoneMix = new AnimationCurve( new Keyframe[2] { new Keyframe( 0f, 1.0f ), new Keyframe( 1f, 1f ) } ); + spread = 0.0f; + pctChanceToPlay = 1.0f; + priority = SoundPriority.Default; + delay = Vector2.zero; + looping = false; + ospProps = new OSPProps(); + } + + [Tooltip( "Each sound FX should have a unique name")] + public string name = string.Empty; + [Tooltip( "Sound diversity playback option when multiple audio clips are defined, default = Random")] + public SoundFXNext playback = SoundFXNext.Random; + [Tooltip( "Default volume for this sound FX, default = 1.0")] + [Range (0.0f, 1.0f)] + public float volume = 1.0f; + [Tooltip( "Random pitch variance each time a sound FX is played, default = 1.0 (none)")] + [MinMax ( 1.0f, 1.0f, 0.0f, 2.0f )] + public Vector2 pitchVariance = Vector2.one; + [Tooltip( "Falloff distance for the sound FX, default = 1m min to 25m max")] + [MinMax ( 1.0f, 25.0f, 0.0f, 250.0f )] + public Vector2 falloffDistance = new Vector2( 1.0f, 25.0f ); + [Tooltip( "Volume falloff curve - sets how the sound FX attenuates over distance, default = Linear")] + public AudioRolloffMode falloffCurve = AudioRolloffMode.Linear; + [Tooltip( "Defines the custom volume falloff curve")] + public AnimationCurve volumeFalloffCurve = new AnimationCurve( new Keyframe[2] { new Keyframe( 0f, 1.0f ), new Keyframe( 1f, 1f ) } ); + [Tooltip( "The amount by which the signal from the AudioSource will be mixed into the global reverb associated with the Reverb Zones | Valid range is 0.0 - 1.1, default = 1.0" )] + public AnimationCurve reverbZoneMix = new AnimationCurve( new Keyframe[2] { new Keyframe( 0f, 1.0f ), new Keyframe( 1f, 1f ) } ); + [Tooltip( "Sets the spread angle (in degrees) of a 3d stereo or multichannel sound in speaker space, default = 0")] + [Range (0.0f, 360.0f)] + public float spread = 0.0f; + [Tooltip( "The percentage chance that this sound FX will play | 0.0 = none, 1.0 = 100%, default = 1.0")] + [Range (0.0f, 1.0f)] + public float pctChanceToPlay = 1.0f; + [Tooltip( "Sets the priority for this sound to play and/or to override a currently playing sound FX, default = Default")] + public SoundPriority priority = SoundPriority.Default; + [Tooltip( "Specifies the default delay when this sound FX is played, default = 0.0 secs")] + [MinMax ( 0.0f, 0.0f, 0.0f, 2.0f )] + public Vector2 delay = Vector2.zero; // this overrides any delay passed into PlaySound() or PlaySoundAt() + [Tooltip( "Set to true for the sound to loop continuously, default = false")] + public bool looping = false; + public OSPProps ospProps = new OSPProps(); + [Tooltip( "List of the audio clips assigned to this sound FX")] + public AudioClip[] soundClips = new AudioClip[1]; + // editor only - unfortunately if we set it not to serialize, we can't query it from the editor + public bool visibilityToggle = false; + // runtime vars + [System.NonSerialized] + private SoundGroup soundGroup = null; + private int lastIdx = -1; + private int playingIdx = -1; + + public int Length { get { return soundClips.Length; } } + public bool IsValid { get { return ( ( soundClips.Length != 0 ) && ( soundClips[0] != null ) ); } } + public SoundGroup Group { get { return soundGroup; } set { soundGroup = value; } } + public float MaxFalloffDistSquared { get { return falloffDistance.y * falloffDistance.y; } } + public float GroupVolumeOverride { get { return ( soundGroup != null ) ? soundGroup.volumeOverride : 1.0f; } } + + /* + ----------------------- + GetClip() + ----------------------- + */ + public AudioClip GetClip() { + if ( soundClips.Length == 0 ) { + return null; + } else if ( soundClips.Length == 1 ) { + return soundClips[0]; + } + if ( playback == SoundFXNext.Random ) { + // random, but don't pick the last one + int idx = Random.Range( 0, soundClips.Length ); + while ( idx == lastIdx ) { + idx = Random.Range( 0, soundClips.Length ); + } + lastIdx = idx; + return soundClips[idx]; + } else { + // sequential + if ( ++lastIdx >= soundClips.Length ) { + lastIdx = 0; + } + return soundClips[lastIdx]; + } + } + + /* + ----------------------- + GetMixerGroup() + ----------------------- + */ + public AudioMixerGroup GetMixerGroup( AudioMixerGroup defaultMixerGroup ) { + if ( soundGroup != null ) { + return ( soundGroup.mixerGroup != null ) ? soundGroup.mixerGroup : defaultMixerGroup; + } + return defaultMixerGroup; + } + + /* + ----------------------- + ReachedGroupPlayLimit() + ----------------------- + */ + public bool ReachedGroupPlayLimit() { + if ( soundGroup != null ) { + return !soundGroup.CanPlaySound(); + } + return false; + } + + /* + ----------------------- + GetClipLength() + ----------------------- + */ + public float GetClipLength( int idx ) { + if ( ( idx == -1 ) || ( soundClips.Length == 0 ) || ( idx >= soundClips.Length ) || ( soundClips[idx] == null ) ) { + return 0.0f; + } else { + return soundClips[idx].length; + } + } + + /* + ----------------------- + GetPitch() + ----------------------- + */ + public float GetPitch() { + return Random.Range( pitchVariance.x, pitchVariance.y ); + } + + /* + ----------------------- + PlaySound() + ----------------------- + */ + public int PlaySound( float delaySecs = 0.0f ) { + playingIdx = -1; + + if ( !IsValid ) { + return playingIdx; + } + + // check the random chance to play here to save the function calls + if ( ( pctChanceToPlay > 0.99f ) || ( Random.value < pctChanceToPlay ) ) { + if ( delay.y > 0.0f ) { + delaySecs = Random.Range( delay.x, delay.y ); + } + playingIdx = AudioManager.PlaySound( this, EmitterChannel.Any, delaySecs ); + } + + return playingIdx; + } + + /* + ----------------------- + PlaySoundAt() + ----------------------- + */ + public int PlaySoundAt( Vector3 pos, float delaySecs = 0.0f, float volumeOverride = 1.0f, float pitchMultiplier = 1.0f ) { + playingIdx = -1; + + if ( !IsValid ) { + return playingIdx; + } + + // check the random chance to play here to save the function calls + if ( ( pctChanceToPlay > 0.99f ) || ( Random.value < pctChanceToPlay ) ) { + if ( delay.y > 0.0f ) { + delaySecs = Random.Range( delay.x, delay.y ); + } + playingIdx = AudioManager.PlaySoundAt( pos, this, EmitterChannel.Any, delaySecs, volumeOverride, pitchMultiplier ); + } + + return playingIdx; + } + + /* + ----------------------- + SetOnFinished() + get a callback when the sound is finished playing + ----------------------- + */ + public void SetOnFinished( System.Action onFinished ) { + if ( playingIdx > -1 ) { + AudioManager.SetOnFinished( playingIdx, onFinished ); + } + } + + /* + ----------------------- + SetOnFinished() + get a callback with an object parameter when the sound is finished playing + ----------------------- + */ + public void SetOnFinished( System.Action onFinished, object obj ) { + if ( playingIdx > -1 ) { + AudioManager.SetOnFinished( playingIdx, onFinished, obj ); + } + } + + /* + ----------------------- + StopSound() + ----------------------- + */ + public bool StopSound() { + bool stopped = false; + + if (playingIdx > -1){ + stopped = AudioManager.StopSound(playingIdx); + playingIdx = -1; + } + + return stopped; + } + + /* + ----------------------- + AttachToParent() + ----------------------- + */ + public void AttachToParent( Transform parent) { + if (playingIdx > -1) { + AudioManager.AttachSoundToParent(playingIdx, parent); + } + } + + /* + ----------------------- + DetachFromParent() + ----------------------- + */ + public void DetachFromParent() { + if (playingIdx > -1) { + AudioManager.DetachSoundFromParent(playingIdx); + } + } +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/SoundFX.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/SoundFX.cs.meta new file mode 100644 index 0000000..54131c1 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/SoundFX.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0a1e5e7b5cff46a187b02100f0e4a3c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/SoundFXRef.cs b/Assets/Oculus/AudioManager/Scripts/Audio/SoundFXRef.cs new file mode 100644 index 0000000..51f1dc4 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/SoundFXRef.cs @@ -0,0 +1,139 @@ +using UnityEngine; +using System.Collections; + +/* +----------------------- +SoundFXRef +just a references to a SoundFX.. all the SoundFX methods are called indirectly from here +----------------------- +*/ +[System.Serializable] +public class SoundFXRef { + + public string soundFXName = string.Empty; + + private bool initialized = false; + private SoundFX soundFXCached = null; + public SoundFX soundFX { + get { + if ( !initialized ) { + Init(); + } + return soundFXCached; + } + } + public string name { get { return soundFXName; } set { soundFXName = value; Init(); } } + + /* + ----------------------- + Init() + ----------------------- + */ + void Init() { + // look up the actual SoundFX object + soundFXCached = AudioManager.FindSoundFX( soundFXName ); + if ( soundFXCached == null ) { + soundFXCached = AudioManager.FindSoundFX( string.Empty ); + } + initialized = true; + } + + /* + ----------------------- + Length() + ----------------------- + */ + public int Length { get { return soundFX.Length; } } + + /* + ----------------------- + IsValid() + ----------------------- + */ + public bool IsValid { get { return soundFX.IsValid; } } + + /* + ----------------------- + GetClip() + ----------------------- + */ + public AudioClip GetClip() { + return soundFX.GetClip(); + } + + /* + ----------------------- + GetClipLength() + ----------------------- + */ + public float GetClipLength( int idx ) { + return soundFX.GetClipLength( idx ); + } + + /* + ----------------------- + PlaySound() + ----------------------- + */ + public int PlaySound( float delaySecs = 0.0f ) { + return soundFX.PlaySound( delaySecs ); + } + + /* + ----------------------- + PlaySoundAt() + ----------------------- + */ + public int PlaySoundAt( Vector3 pos, float delaySecs = 0.0f, float volume = 1.0f, float pitchMultiplier = 1.0f ) { + return soundFX.PlaySoundAt( pos, delaySecs, volume, pitchMultiplier ); + } + + /* + ----------------------- + SetOnFinished() + get a callback when the sound is finished playing + ----------------------- + */ + public void SetOnFinished( System.Action onFinished ) { + soundFX.SetOnFinished( onFinished ); + } + + /* + ----------------------- + SetOnFinished() + get a callback with an object parameter when the sound is finished playing + ----------------------- + */ + public void SetOnFinished( System.Action onFinished, object obj ) { + soundFX.SetOnFinished( onFinished, obj ); + } + + /* + ----------------------- + StopSound() + ----------------------- + */ + public bool StopSound() { + return soundFX.StopSound(); + } + + /* + ----------------------- + AttachToParent() + ----------------------- + */ + public void AttachToParent( Transform parent) + { + soundFX.AttachToParent( parent); + } + + /* + ----------------------- + DetachFromParent() + ----------------------- + */ + public void DetachFromParent() + { + soundFX.DetachFromParent(); + } +} diff --git a/Assets/Oculus/AudioManager/Scripts/Audio/SoundFXRef.cs.meta b/Assets/Oculus/AudioManager/Scripts/Audio/SoundFXRef.cs.meta new file mode 100644 index 0000000..f371711 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Audio/SoundFXRef.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 48176edab546a48de9b146105d7c5f47 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Utils.meta b/Assets/Oculus/AudioManager/Scripts/Utils.meta new file mode 100644 index 0000000..5bc01f0 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Utils.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 02268a883a27b9c4abac4ee978caec4d +folderAsset: yes +timeCreated: 1468506022 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Utils/Editor.meta b/Assets/Oculus/AudioManager/Scripts/Utils/Editor.meta new file mode 100644 index 0000000..a7fb901 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Utils/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b43e7f73d4ffc2545a17b938f63e6bc0 +folderAsset: yes +timeCreated: 1468507225 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Utils/Editor/DrawerInspectorNote.cs b/Assets/Oculus/AudioManager/Scripts/Utils/Editor/DrawerInspectorNote.cs new file mode 100644 index 0000000..db94d65 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Utils/Editor/DrawerInspectorNote.cs @@ -0,0 +1,77 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Collections.Generic; + +[CustomPropertyDrawer(typeof(InspectorNoteAttribute))] +public class DrawerInspectorNote : DecoratorDrawer +{ + public override void OnGUI( Rect position ) + { + InspectorNoteAttribute note = attribute as InspectorNoteAttribute; + + // our header is always present + Rect posLabel = position; + posLabel.y += 13; + posLabel.x -= 2; + posLabel.height += 13; + EditorGUI.LabelField(posLabel, note.header, EditorStyles.whiteLargeLabel); + + // do we have a message too? + if (!string.IsNullOrEmpty(note.message)) + { + Color color = GUI.color; + Color faded = color; + faded.a = 0.6f; + + Rect posExplain = posLabel; + posExplain.y += 15; + GUI.color = faded; + EditorGUI.LabelField(posExplain, note.message, EditorStyles.whiteMiniLabel); + GUI.color = color; + } + + Rect posLine = position; + posLine.y += string.IsNullOrEmpty(note.message) ? 30 : 42; + posLine.height = 1f; + GUI.Box(posLine, ""); + } + + public override float GetHeight() { + InspectorNoteAttribute note = attribute as InspectorNoteAttribute; + return string.IsNullOrEmpty( note.message ) ? 38 : 50; + } +} + +[CustomPropertyDrawer( typeof( InspectorCommentAttribute ) )] +public class DrawerInspectorComment : DecoratorDrawer { + public override void OnGUI( Rect position ) { + InspectorCommentAttribute comment = attribute as InspectorCommentAttribute; + + // our header is always present + Rect posLabel = position; + //posLabel.y += 13; + //posLabel.x -= 2; + //posLabel.height += 13; + //EditorGUI.LabelField( posLabel, comment.header, EditorStyles.whiteLargeLabel ); + + // do we have a message too? + if ( !string.IsNullOrEmpty( comment.message ) ) { + Color color = GUI.color; + Color faded = color; + faded.a = 0.6f; + + Rect posExplain = posLabel; + posExplain.y += 15; + GUI.color = faded; + EditorGUI.LabelField( posExplain, comment.message, EditorStyles.whiteMiniLabel ); + GUI.color = color; + } + + } + + public override float GetHeight() { + InspectorNoteAttribute note = attribute as InspectorNoteAttribute; + return string.IsNullOrEmpty( note.message ) ? 38 : 50; + } +} diff --git a/Assets/Oculus/AudioManager/Scripts/Utils/Editor/DrawerInspectorNote.cs.meta b/Assets/Oculus/AudioManager/Scripts/Utils/Editor/DrawerInspectorNote.cs.meta new file mode 100644 index 0000000..591e271 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Utils/Editor/DrawerInspectorNote.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f244e745a5bf8412d9d81d43dff35cf5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/AudioManager/Scripts/Utils/FastList.cs b/Assets/Oculus/AudioManager/Scripts/Utils/FastList.cs new file mode 100644 index 0000000..601c393 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Utils/FastList.cs @@ -0,0 +1,283 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +public class FastList { + + /// + /// Comparison function should return -1 if left is less than right, 1 if left is greater than right, and 0 if they match. + /// + public delegate int CompareFunc(T left, T right); + + + public T[] array = null; + public int size = 0; + + public FastList () { + } + + public FastList(int size) { + if (size > 0) { + this.size = 0; + array = new T[size]; + } + else { + this.size = 0; + } + } + + public int Count { + get { return size;} + set { } + } + + public T this[int i] { + get { return array[i];} + set { array[i] = value;} + } + + //Add item to end of list. + public void Add(T item) { + if (array == null || size == array.Length) { + Allocate(); + } + array[size] = item; + size++; + } + + //Add item to end of list if it is unique. + public void AddUnique( T item ) { + if ( array == null || size == array.Length ) { + Allocate(); + } + if ( !Contains( item ) ) { + array[size] = item; + size++; + } + } + + //Add items to the end of the list + public void AddRange( IEnumerable items ) { + foreach ( T item in items ) { + Add( item ); + } + } + + //Insert item at specified index + public void Insert(int index, T item) { + if (array == null || size == array.Length) { + Allocate(); + } + if (index < size) { + //move things back 1 + for (int i = size; i > index; i--) { + array[i] = array[i-1]; + } + array[index] = item; + size++; + } + else Add(item); + } + + //Removes specified item and keeps everything else in order + public bool Remove(T item) { + if (array != null) { + for (int i = 0; i < size; i++) { + if (item.Equals(array[i])) { //found it, push everything up + size--; + for (int j = i; j < size; j++) { + array[j] = array[j+1]; + } + array[size] = default(T); + return true; + } + } + } + return false; + } + + //Removes item at specified index while keeping everything else in order + //O(n) + public void RemoveAt(int index) { + if (array != null && size > 0 && index < size) { + size--; + for (int i = index; i < size; i++) { + array[i] = array[i+1]; + } + array[size] = default(T); + } + } + + //Removes the specified item from the list and replaces with last item. Return true if removed, false if not found. + public bool RemoveFast(T item) { + if (array != null) { + for (int i = 0; i < size; i++) { + if ( item.Equals( array[i] )) { //found + //Move last item here + if (i < (size - 1)) { + T lastItem = array[size-1]; + array[size-1] = default(T); + array[i] = lastItem; + } else { + array[i] = default(T); + } + size--; + return true; + } + } + } + return false; + } + + //Removes item at specified index and replace with last item. + public void RemoveAtFast(int index) { + if (array != null && index < size && index >= 0) { + //last element + if (index == size - 1) { + array[index] = default(T); + } + else { + T lastItem = array[size - 1]; + array[index] = lastItem; + array[size - 1] = default(T); + } + size--; + + } + } + + //Return whether an item is contained within the list + //O(n) + public bool Contains(T item) { + if (array == null || size <= 0 ) return false; + for (int i = 0; i < size; i++) { + if (array[i].Equals(item)) { return true;} + } + return false; + } + + //Returns index of specified item, or -1 if not found. + //O(n) + public int IndexOf(T item) { + if (size <= 0 || array == null) { return -1;} + for (int i = 0; i < size; i++) { + if (item.Equals(array[i])) { return i;} + } + return -1; + } + + public T Pop() { + if (array != null && size > 0) { + T lastItem = array[size-1]; + array[size-1] = default(T); + size--; + return lastItem; + } + + return default(T); + } + + public T[] ToArray() { + Trim(); + return array; + } + + public void Sort (CompareFunc comparer) { + int start = 0; + int end = size - 1; + bool changed = true; + + while (changed) { + changed = false; + + for (int i = start; i < end; i++) { + + if (comparer(array[i], array[i + 1]) > 0) { + T temp = array[i]; + array[i] = array[i+1]; + array[i+1] = temp; + changed = true; + } + else if (!changed) { + start = (i==0) ? 0 : i-1; + } + } + } + } + + public void InsertionSort(CompareFunc comparer) { + for (int i = 1; i < size; i++) { + T curr = array[i]; + int j = i; + while (j > 0 && comparer(array[j - 1], curr) > 0) { + array[j] = array[j-1]; + j--; + } + array[j] = curr; + } + } + + public IEnumerator GetEnumerator() { + if (array != null) { + for (int i = 0; i < size; i++) { + yield return array[i]; + } + } + } + + public T Find(Predicate match) { + if (match != null) { + if (array != null) { + for (int i = 0; i < size; i++) { + if (match(array[i])) { return array[i];} + } + } + } + return default(T); + } + + //Allocate more space to internal array. + void Allocate() { + T[] newArray; + if (array == null) { + newArray = new T[32]; + } + else { + newArray = new T[Mathf.Max(array.Length << 1, 32)]; + } + if (array != null && size > 0) { + array.CopyTo(newArray, 0); + } + + array = newArray; + } + + + void Trim() { + if (size > 0) { + T[] newArray = new T[size]; + for (int i = 0; i < size; i++) { + newArray[i] = array[i]; + } + array = newArray; + } + else { + array = null; + } + } + + //Set size to 0, does not delete array from memory + public void Clear() { + size = 0; + } + + //Delete array from memory + public void Release() { + Clear(); + array = null; + } + + + +} diff --git a/Assets/Oculus/AudioManager/Scripts/Utils/FastList.cs.meta b/Assets/Oculus/AudioManager/Scripts/Utils/FastList.cs.meta new file mode 100644 index 0000000..708d34f --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Utils/FastList.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5ad95fb7eea735748bd34c963525ea21 +timeCreated: 1432749689 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/AudioManager/Scripts/Utils/InspectorNoteAttribute.cs b/Assets/Oculus/AudioManager/Scripts/Utils/InspectorNoteAttribute.cs new file mode 100644 index 0000000..0c5db7b --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Utils/InspectorNoteAttribute.cs @@ -0,0 +1,35 @@ +using UnityEngine; + +/* +----------------------- + + InspectorNoteAttribute() + +----------------------- +*/ +public class InspectorNoteAttribute : PropertyAttribute +{ + public readonly string header; + public readonly string message; + + public InspectorNoteAttribute(string header, string message = "") + { + this.header = header; + this.message = message; + } +} + +/* +----------------------- + + InspectorCommentAttribute() + +----------------------- +*/ +public class InspectorCommentAttribute : PropertyAttribute { + public readonly string message; + + public InspectorCommentAttribute( string message = "" ) { + this.message = message; + } +} diff --git a/Assets/Oculus/AudioManager/Scripts/Utils/InspectorNoteAttribute.cs.meta b/Assets/Oculus/AudioManager/Scripts/Utils/InspectorNoteAttribute.cs.meta new file mode 100644 index 0000000..f6e86d6 --- /dev/null +++ b/Assets/Oculus/AudioManager/Scripts/Utils/InspectorNoteAttribute.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4616bbe65d311471f8d71174295f4986 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/Avatar.meta b/Assets/Oculus/Avatar.meta new file mode 100644 index 0000000..8868f27 --- /dev/null +++ b/Assets/Oculus/Avatar.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9f086770200dde84c98766f2308b6877 +folderAsset: yes +timeCreated: 1538788975 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content.meta b/Assets/Oculus/Avatar/Content.meta new file mode 100644 index 0000000..6257510 --- /dev/null +++ b/Assets/Oculus/Avatar/Content.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b7b5af4818686f84f844c1ae9df0f700 +folderAsset: yes +timeCreated: 1466716731 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Materials.meta b/Assets/Oculus/Avatar/Content/Materials.meta new file mode 100644 index 0000000..ce02c64 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 03c5cda4272cb2746a668ce131f04c0f +folderAsset: yes +timeCreated: 1466717994 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarMaterialStateShader.cginc b/Assets/Oculus/Avatar/Content/Materials/AvatarMaterialStateShader.cginc new file mode 100644 index 0000000..34c31b7 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarMaterialStateShader.cginc @@ -0,0 +1,318 @@ +#ifndef AVATAR_UTIL_CG_INCLUDED +#define AVATAR_UTIL_CG_INCLUDED + +#include "UnityCG.cginc" + +#define SAMPLE_MODE_COLOR 0 +#define SAMPLE_MODE_TEXTURE 1 +#define SAMPLE_MODE_TEXTURE_SINGLE_CHANNEL 2 +#define SAMPLE_MODE_PARALLAX 3 +#define SAMPLE_MODE_RSRM 4 + +#define MASK_TYPE_NONE 0 +#define MASK_TYPE_POSITIONAL 1 +#define MASK_TYPE_REFLECTION 2 +#define MASK_TYPE_FRESNEL 3 +#define MASK_TYPE_PULSE 4 + +#define BLEND_MODE_ADD 0 +#define BLEND_MODE_MULTIPLY 1 + +#ifdef LAYERS_1 +#define LAYER_COUNT 1 +#elif LAYERS_2 +#define LAYER_COUNT 2 +#elif LAYERS_3 +#define LAYER_COUNT 3 +#elif LAYERS_4 +#define LAYER_COUNT 4 +#elif LAYERS_5 +#define LAYER_COUNT 5 +#elif LAYERS_6 +#define LAYER_COUNT 6 +#elif LAYERS_7 +#define LAYER_COUNT 7 +#elif LAYERS_8 +#define LAYER_COUNT 8 +#endif + +#define DECLARE_LAYER_UNIFORMS(index) \ + int _LayerSampleMode##index; \ + int _LayerBlendMode##index; \ + int _LayerMaskType##index; \ + fixed4 _LayerColor##index; \ + sampler2D _LayerSurface##index; \ + float4 _LayerSurface##index##_ST; \ + float4 _LayerSampleParameters##index; \ + float4 _LayerMaskParameters##index; \ + float4 _LayerMaskAxis##index; + +DECLARE_LAYER_UNIFORMS(0) +DECLARE_LAYER_UNIFORMS(1) +DECLARE_LAYER_UNIFORMS(2) +DECLARE_LAYER_UNIFORMS(3) +DECLARE_LAYER_UNIFORMS(4) +DECLARE_LAYER_UNIFORMS(5) +DECLARE_LAYER_UNIFORMS(6) +DECLARE_LAYER_UNIFORMS(7) + +struct VertexOutput +{ + float4 pos : SV_POSITION; + float2 texcoord : TEXCOORD0; + float3 worldPos : TEXCOORD1; + float3 worldNormal : TEXCOORD2; + float3 viewDir : TEXCOORD3; + float4 vertColor : COLOR; + +#if NORMAL_MAP_ON || PARALLAX_ON + float3 worldTangent : TANGENT; + float3 worldBitangent : TEXCOORD5; +#endif +}; + +float _Alpha; +int _BaseMaskType; +float4 _BaseMaskParameters; +float4 _BaseMaskAxis; +fixed4 _DarkMultiplier; +fixed4 _BaseColor; +sampler2D _AlphaMask; +float4 _AlphaMask_ST; +sampler2D _AlphaMask2; +float4 _AlphaMask2_ST; +sampler2D _NormalMap; +float4 _NormalMap_ST; +sampler2D _ParallaxMap; +float4 _ParallaxMap_ST; +sampler2D _RoughnessMap; +float4 _RoughnessMap_ST; +float4x4 _ProjectorWorldToLocal; + +VertexOutput vert(appdata_full v) +{ + VertexOutput o; + UNITY_INITIALIZE_OUTPUT(VertexOutput, o); + + o.texcoord = v.texcoord.xy; + o.worldPos = mul(unity_ObjectToWorld, v.vertex); + o.vertColor = v.color; + o.viewDir = normalize(_WorldSpaceCameraPos.xyz - o.worldPos); + o.worldNormal = normalize(mul(unity_ObjectToWorld, float4(v.normal, 0.0)).xyz); + +#if NORMAL_MAP_ON || PARALLAX_ON + o.worldTangent = normalize(mul(unity_ObjectToWorld, float4(v.tangent.xyz, 0.0)).xyz); + o.worldBitangent = normalize(cross(o.worldNormal, o.worldTangent) * v.tangent.w); +#endif + + o.pos = UnityObjectToClipPos(v.vertex); + return o; +} + +#ifndef NORMAL_MAP_ON +#define COMPUTE_NORMAL IN.worldNormal +#else +#define COMPUTE_NORMAL normalize(mul(lerp(float3(0, 0, 1), surfaceNormal, normalMapStrength), tangentTransform)) +#endif + +float3 ComputeColor( + VertexOutput IN, + float2 uv, +#if PARALLAX_ON || NORMAL_MAP_ON + float3x3 tangentTransform, +#endif +#ifdef NORMAL_MAP_ON + float3 surfaceNormal, +#endif + sampler2D surface, + float4 surface_ST, + fixed4 color, + int sampleMode, + float4 sampleParameters +) { + if (sampleMode == SAMPLE_MODE_TEXTURE) { + float2 panning = _Time.g * sampleParameters.xy; + return tex2D(surface, (uv + panning) * surface_ST.xy + surface_ST.zw).rgb * color.rgb; + } + else if (sampleMode == SAMPLE_MODE_TEXTURE_SINGLE_CHANNEL) { + float4 channelMask = sampleParameters; + float4 channels = tex2D(surface, uv * surface_ST.xy + surface_ST.zw); + return dot(channels, channelMask) * color.rgb; + } +#ifdef PARALLAX_ON + else if (sampleMode == SAMPLE_MODE_PARALLAX) { + float parallaxMinHeight = sampleParameters.x; + float parallaxMaxHeight = sampleParameters.y; + float parallaxValue = tex2D(_ParallaxMap, TRANSFORM_TEX(uv, _ParallaxMap)).r; + float scaledHeight = lerp(parallaxMinHeight, parallaxMaxHeight, parallaxValue); + float2 parallaxUV = mul(tangentTransform, IN.viewDir).xy * scaledHeight; + return tex2D(surface, (uv * surface_ST.xy + surface_ST.zw) + parallaxUV).rgb * color.rgb; + } +#endif + else if (sampleMode == SAMPLE_MODE_RSRM) { + float roughnessMin = sampleParameters.x; + float roughnessMax = sampleParameters.y; +#ifdef ROUGHNESS_ON + float roughnessValue = tex2D(_RoughnessMap, TRANSFORM_TEX(uv, _RoughnessMap)).r; + float scaledRoughness = lerp(roughnessMin, roughnessMax, roughnessValue); +#else + float scaledRoughness = roughnessMin; +#endif + +#ifdef NORMAL_MAP_ON + float normalMapStrength = sampleParameters.z; +#endif + float3 viewReflect = reflect(-IN.viewDir, COMPUTE_NORMAL); + float viewAngle = viewReflect.y * 0.5 + 0.5; + return tex2D(surface, float2(scaledRoughness, viewAngle)).rgb * color.rgb; + } + return color.rgb; +} + +float ComputeMask( + VertexOutput IN, +#ifdef NORMAL_MAP_ON + float3x3 tangentTransform, + float3 surfaceNormal, +#endif + int maskType, + float4 layerParameters, + float3 maskAxis +) { + if (maskType == MASK_TYPE_POSITIONAL) { + float centerDistance = layerParameters.x; + float fadeAbove = layerParameters.y; + float fadeBelow = layerParameters.z; + float3 objPos = mul(unity_WorldToObject, float4(IN.worldPos, 1.0)).xyz; + float d = dot(objPos, maskAxis); + if (d > centerDistance) { + return saturate(1.0 - (d - centerDistance) / fadeAbove); + } + else { + return saturate(1.0 - (centerDistance - d) / fadeBelow); + } + } + else if (maskType == MASK_TYPE_REFLECTION) { + float fadeStart = layerParameters.x; + float fadeEnd = layerParameters.y; +#ifdef NORMAL_MAP_ON + float normalMapStrength = layerParameters.z; +#endif + float power = layerParameters.w; + float3 viewReflect = reflect(-IN.viewDir, COMPUTE_NORMAL); + float d = max(0.0, dot(viewReflect, maskAxis)); + return saturate(1.0 - (d - fadeStart) / (fadeEnd - fadeStart)); + } + else if (maskType == MASK_TYPE_FRESNEL) { + float power = layerParameters.x; + float fadeStart = layerParameters.y; + float fadeEnd = layerParameters.z; +#ifdef NORMAL_MAP_ON + float normalMapStrength = layerParameters.w; +#endif + float d = saturate(1.0 - max(0.0, dot(IN.viewDir, COMPUTE_NORMAL))); + float p = pow(d, power); + return saturate(lerp(fadeStart, fadeEnd, p)); + } + else if (maskType == MASK_TYPE_PULSE) { + float distance = layerParameters.x; + float speed = layerParameters.y; + float power = layerParameters.z; + float3 objPos = mul(unity_WorldToObject, float4(IN.worldPos, 1.0)).xyz; + float d = dot(objPos, maskAxis); + float theta = 6.2831 * frac((d - _Time.g * speed) / distance); + return saturate(pow((sin(theta) * 0.5 + 0.5), power)); + } + else { + return 1.0; + } +} + +float3 ComputeBlend(float3 source, float3 blend, float mask, int blendMode) { + if (blendMode == BLEND_MODE_MULTIPLY) { + return source * (blend * mask); + } + else { + return source + (blend * mask); + } +} + +float4 ComputeSurface(VertexOutput IN) +{ +#if PROJECTOR_ON + float3 projectorPos = mul(_ProjectorWorldToLocal, float4(IN.worldPos, 1.0)).xyz; + if (abs(projectorPos.x) > 1.0 || abs(projectorPos.y) > 1.0 || abs(projectorPos.z) > 1.0) + { + discard; + } + float2 uv = projectorPos.xy * 0.5 + 0.5; +#else + float2 uv = IN.texcoord.xy; +#endif + + fixed4 c = _BaseColor; + IN.worldNormal = normalize(IN.worldNormal); + +#if PARALLAX_ON || NORMAL_MAP_ON + float3x3 tangentTransform = float3x3(IN.worldTangent, IN.worldBitangent, IN.worldNormal); +#endif + +#ifdef NORMAL_MAP_ON + float3 surfaceNormal = UnpackNormal(tex2D(_NormalMap, TRANSFORM_TEX(uv, _NormalMap))); +#endif + +#if PARALLAX_ON || NORMAL_MAP_ON +#ifndef NORMAL_MAP_ON +#define COLOR_INPUTS IN, uv, tangentTransform +#define MASK_INPUTS IN +#else +#define COLOR_INPUTS IN, uv, tangentTransform, surfaceNormal +#define MASK_INPUTS IN, tangentTransform, surfaceNormal +#endif +#else +#define COLOR_INPUTS IN, uv +#define MASK_INPUTS IN +#endif + +#define LAYER_COLOR(index) ComputeColor(COLOR_INPUTS, _LayerSurface##index, _LayerSurface##index##_ST, _LayerColor##index, _LayerSampleMode##index, _LayerSampleParameters##index) +#define LAYER_MASK(index) ComputeMask(MASK_INPUTS, _LayerMaskType##index, _LayerMaskParameters##index, _LayerMaskAxis##index##.xyz) +#define LAYER_BLEND(index, c) ComputeBlend(c, LAYER_COLOR(index), LAYER_MASK(index), _LayerBlendMode##index) + + c.rgb = LAYER_BLEND(0, c.rgb); +#if LAYER_COUNT > 1 + c.rgb = LAYER_BLEND(1, c.rgb); +#endif +#if LAYER_COUNT > 2 + c.rgb = LAYER_BLEND(2, c.rgb); +#endif +#if LAYER_COUNT > 3 + c.rgb = LAYER_BLEND(3, c.rgb); +#endif +#if LAYER_COUNT > 4 + c.rgb = LAYER_BLEND(4, c.rgb); +#endif +#if LAYER_COUNT > 5 + c.rgb = LAYER_BLEND(5, c.rgb); +#endif +#if LAYER_COUNT > 6 + c.rgb = LAYER_BLEND(6, c.rgb); +#endif +#if LAYER_COUNT > 7 + c.rgb = LAYER_BLEND(7, c.rgb); +#endif + +#ifdef VERTALPHA_ON + float scaledValue = IN.vertColor.a * 2.0; + float alpha0weight = max(0.0, 1.0 - scaledValue); + float alpha2weight = max(0.0, scaledValue - 1.0); + float alpha1weight = 1.0 - alpha0weight - alpha2weight; + c.a = _Alpha * c.a * (tex2D(_AlphaMask, TRANSFORM_TEX(uv, _AlphaMask)).r * alpha1weight + tex2D(_AlphaMask2, TRANSFORM_TEX(uv, _AlphaMask2)).r * alpha2weight + alpha0weight) * ComputeMask(MASK_INPUTS, _BaseMaskType, _BaseMaskParameters, _BaseMaskAxis); +#else + c.a = _Alpha * c.a * tex2D(_AlphaMask, TRANSFORM_TEX(uv, _AlphaMask)).r * IN.vertColor.a * ComputeMask(MASK_INPUTS, _BaseMaskType, _BaseMaskParameters, _BaseMaskAxis); +#endif + c.rgb = lerp(c.rgb, c.rgb * _DarkMultiplier, IN.vertColor.r); + + return c; +} + +#endif diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarMaterialStateShader.cginc.meta b/Assets/Oculus/Avatar/Content/Materials/AvatarMaterialStateShader.cginc.meta new file mode 100644 index 0000000..1abee25 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarMaterialStateShader.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 462c52c09cf9a244bbc11a016d763ea7 +timeCreated: 1443137462 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShader.shader b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShader.shader new file mode 100644 index 0000000..eebfd1b --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShader.shader @@ -0,0 +1,141 @@ +Shader "OvrAvatar/AvatarSurfaceShader" { + Properties{ + // Global parameters + _Alpha("Alpha", Range(0.0, 1.0)) = 1.0 + _DarkMultiplier("Dark Multiplier", Color) = (0.6, 0.6, 0.6, 1.0) + _BaseColor("Base Color", Color) = (0.0, 0.0, 0.0, 0.0) + _BaseMaskType("Base Mask Type", Int) = 0 + _BaseMaskParameters("Base Mask Parameters", Vector) = (0, 0, 0, 0) + _BaseMaskAxis("Base Mask Axis", Vector) = (0, 1, 0, 0) + _AlphaMask("Alpha Mask", 2D) = "white" {} + _NormalMap("Normal Map", 2D) = "" {} + _ParallaxMap("Parallax Map", 2D) = "" {} + _RoughnessMap("Roughness Map", 2D) = "" {} + + // Layer 0 parameters + _LayerSampleMode0("Layer Sample Mode 0", Int) = 0 + _LayerBlendMode0("Layer Blend Mode 0", Int) = 0 + _LayerMaskType0("Layer Mask Type 0", Int) = 0 + _LayerColor0("Layer Color 0", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface0("Layer Surface 0", 2D) = "" {} + _LayerSampleParameters0("Layer Sample Parameters 0", Vector) = (0, 0, 0, 0) + _LayerMaskParameters0("Layer Mask Parameters 0", Vector) = (0, 0, 0, 0) + _LayerMaskAxis0("Layer Mask Axis 0", Vector) = (0, 1, 0, 0) + + // Layer 1 parameters + _LayerSampleMode1("Layer Sample Mode 1", Int) = 0 + _LayerBlendMode1("Layer Blend Mode 1", Int) = 0 + _LayerMaskType1("Layer Mask Type 1", Int) = 0 + _LayerColor1("Layer Color 1", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface1("Layer Surface 1", 2D) = "" {} + _LayerSampleParameters1("Layer Sample Parameters 1", Vector) = (0, 0, 0, 0) + _LayerMaskParameters1("Layer Mask Parameters 1", Vector) = (0, 0, 0, 0) + _LayerMaskAxis1("Layer Mask Axis 1", Vector) = (0, 1, 0, 0) + + // Layer 2 parameters + _LayerSampleMode2("Layer Sample Mode 2", Int) = 0 + _LayerBlendMode2("Layer Blend Mode 2", Int) = 0 + _LayerMaskType2("Layer Mask Type 2", Int) = 0 + _LayerColor2("Layer Color 2", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface2("Layer Surface 2", 2D) = "" {} + _LayerSampleParameters2("Layer Sample Parameters 2", Vector) = (0, 0, 0, 0) + _LayerMaskParameters2("Layer Mask Parameters 2", Vector) = (0, 0, 0, 0) + _LayerMaskAxis2("Layer Mask Axis 2", Vector) = (0, 1, 0, 0) + + // Layer 3 parameters + _LayerSampleMode3("Layer Sample Mode 3", Int) = 0 + _LayerBlendMode3("Layer Blend Mode 3", Int) = 0 + _LayerMaskType3("Layer Mask Type 3", Int) = 0 + _LayerColor3("Layer Color 3", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface3("Layer Surface 3", 2D) = "" {} + _LayerSampleParameters3("Layer Sample Parameters 3", Vector) = (0, 0, 0, 0) + _LayerMaskParameters3("Layer Mask Parameters 3", Vector) = (0, 0, 0, 0) + _LayerMaskAxis3("Layer Mask Axis 3", Vector) = (0, 1, 0, 0) + + // Layer 4 parameters + _LayerSampleMode4("Layer Sample Mode 4", Int) = 0 + _LayerBlendMode4("Layer Blend Mode 4", Int) = 0 + _LayerMaskType4("Layer Mask Type 4", Int) = 0 + _LayerColor4("Layer Color 4", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface4("Layer Surface 4", 2D) = "" {} + _LayerSampleParameters4("Layer Sample Parameters 4", Vector) = (0, 0, 0, 0) + _LayerMaskParameters4("Layer Mask Parameters 4", Vector) = (0, 0, 0, 0) + _LayerMaskAxis4("Layer Mask Axis 4", Vector) = (0, 1, 0, 0) + + // Layer 5 parameters + _LayerSampleMode5("Layer Sample Mode 5", Int) = 0 + _LayerBlendMode5("Layer Blend Mode 5", Int) = 0 + _LayerMaskType5("Layer Mask Type 5", Int) = 0 + _LayerColor5("Layer Color 5", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface5("Layer Surface 5", 2D) = "" {} + _LayerSampleParameters5("Layer Sample Parameters 5", Vector) = (0, 0, 0, 0) + _LayerMaskParameters5("Layer Mask Parameters 5", Vector) = (0, 0, 0, 0) + _LayerMaskAxis5("Layer Mask Axis 5", Vector) = (0, 1, 0, 0) + + // Layer 6 parameters + _LayerSampleMode6("Layer Sample Mode 6", Int) = 0 + _LayerBlendMode6("Layer Blend Mode 6", Int) = 0 + _LayerMaskType6("Layer Mask Type 6", Int) = 0 + _LayerColor6("Layer Color 6", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface6("Layer Surface 6", 2D) = "" {} + _LayerSampleParameters6("Layer Sample Parameters 6", Vector) = (0, 0, 0, 0) + _LayerMaskParameters6("Layer Mask Parameters 6", Vector) = (0, 0, 0, 0) + _LayerMaskAxis6("Layer Mask Axis 6", Vector) = (0, 1, 0, 0) + + // Layer 7 parameters + _LayerSampleMode7("Layer Sample Mode 7", Int) = 0 + _LayerBlendMode7("Layer Blend Mode 7", Int) = 0 + _LayerMaskType7("Layer Mask Type 7", Int) = 0 + _LayerColor7("Layer Color 7", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface7("Layer Surface 7", 2D) = "" {} + _LayerSampleParameters7("Layer Sample Parameters 7", Vector) = (0, 0, 0, 0) + _LayerMaskParameters7("Layer Mask Parameters 7", Vector) = (0, 0, 0, 0) + _LayerMaskAxis7("Layer Mask Axis 7", Vector) = (0, 1, 0, 0) + } + + SubShader + { + Tags + { + "Queue" = "Transparent" + "RenderType" = "Transparent" + } + + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + LOD 200 + + Pass + { + Name "FORWARD" + Tags + { + "LightMode" = "ForwardBase" + } + + CGPROGRAM + #pragma only_renderers d3d11 gles3 gles + #pragma vertex vert + #pragma fragment frag + #pragma target 3.0 + #pragma multi_compile PROJECTOR_OFF PROJECTOR_ON + #pragma multi_compile NORMAL_MAP_OFF NORMAL_MAP_ON + #pragma multi_compile PARALLAX_OFF PARALLAX_ON + #pragma multi_compile ROUGHNESS_OFF ROUGHNESS_ON + #pragma multi_compile VERTALPHA_OFF VERTALPHA_ON + #pragma multi_compile LAYERS_1 LAYERS_2 LAYERS_3 LAYERS_4 LAYERS_5 LAYERS_6 LAYERS_7 LAYERS_8 + + #include "Assets/Oculus/Avatar/Content/Materials/AvatarMaterialStateShader.cginc" + + float4 frag(VertexOutput IN) : COLOR + { + return ComputeSurface(IN); + } + + ENDCG + } + } + + FallBack "Diffuse" + CustomEditor "AvatarMaterialEditor" +} diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShader.shader.meta b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShader.shader.meta new file mode 100644 index 0000000..f0911d7 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d0f6e1942d3d1f946a96fd8a00175474 +timeCreated: 1470862124 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBS.shader b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBS.shader new file mode 100644 index 0000000..b0bab0e --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBS.shader @@ -0,0 +1,79 @@ +// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' + +Shader "OvrAvatar/AvatarSurfaceShaderPBS" { + Properties{ + // Global parameters + _Alpha("Alpha", Range(0.0, 1.0)) = 1.0 + _Albedo("Albedo (RGB)", 2D) = "" {} + _Surface("Metallic (R) Occlusion (G) and Smoothness (A)", 2D) = "" {} + } + SubShader{ + Tags { + "Queue" = "Transparent" + "RenderType" = "Transparent" + } + + Pass { + ZWrite On + Cull Off + ColorMask 0 + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 3.0 + #include "UnityCG.cginc" + + struct v2f { + float4 position : SV_POSITION; + }; + v2f vert(appdata_full v) { + // Output + v2f output; + output.position = UnityObjectToClipPos(v.vertex); + return output; + } + + float4 frag(v2f input) : COLOR { + return 0; + } + ENDCG + } + + LOD 200 + + CGPROGRAM + +// Physically based Standard lighting model, and enable shadows on all light types +#pragma surface surf Standard vertex:vert nolightmap alpha noforwardadd + +float _Alpha; +sampler2D _Albedo; +float4 _Albedo_ST; +sampler2D _Surface; +float4 _Surface_ST; + +struct Input { + float2 texcoord; +}; + +void vert(inout appdata_full v, out Input o) { + UNITY_INITIALIZE_OUTPUT(Input, o); + o.texcoord = v.texcoord.xy; +} + +void surf (Input IN, inout SurfaceOutputStandard o) { + o.Albedo = tex2D(_Albedo, TRANSFORM_TEX(IN.texcoord, _Albedo)).rgb; + float4 surfaceParams = tex2D(_Surface, TRANSFORM_TEX(IN.texcoord, _Surface)); + o.Metallic = surfaceParams.r; + o.Occlusion = surfaceParams.g; + o.Smoothness = surfaceParams.a; + o.Alpha = _Alpha; +} + +#pragma only_renderers d3d11 gles3 gles + +ENDCG + } + FallBack "Diffuse" +} diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBS.shader.meta b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBS.shader.meta new file mode 100644 index 0000000..4625073 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBS.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d7662dbac0646464a9b4a48e93989adb +timeCreated: 1470862124 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBSV2.shader b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBSV2.shader new file mode 100644 index 0000000..cf67a20 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBSV2.shader @@ -0,0 +1,39 @@ +Shader "OvrAvatar/AvatarSurfaceShaderPBSV2" { + Properties { + _AlbedoMultiplier ("Albedo Multiplier", Color) = (1,1,1,1) + _Albedo ("Albedo (RGB)", 2D) = "white" {} + _Metallicness("Metallicness", 2D) = "grey" {} + _GlossinessScale ("Glossiness Scale", Range(0,1)) = 0.5 + } + SubShader { + Tags { "RenderType"="Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _Albedo; + sampler2D _Metallicness; + + struct Input { + float2 uv_Albedo; + }; + + float _GlossinessScale; + float4 _AlbedoMultiplier; + + void surf (Input IN, inout SurfaceOutputStandard o) { + fixed4 c = tex2D (_Albedo, IN.uv_Albedo) * _AlbedoMultiplier; + o.Albedo = c.rgb; + o.Metallic = tex2D (_Metallicness, IN.uv_Albedo).r; + o.Smoothness = _GlossinessScale; + o.Alpha = 1.0; + } + ENDCG + } + FallBack "Diffuse" +} \ No newline at end of file diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBSV2.shader.meta b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBSV2.shader.meta new file mode 100644 index 0000000..414e4a6 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderPBSV2.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3934b2d879c6eb94eb26fa19814c7fcd +timeCreated: 1512064795 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderSelfOccluding.shader b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderSelfOccluding.shader new file mode 100644 index 0000000..76ce51e --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderSelfOccluding.shader @@ -0,0 +1,175 @@ +Shader "OvrAvatar/AvatarSurfaceShaderSelfOccluding" { + Properties{ + // Global parameters + _Alpha("Alpha", Range(0.0, 1.0)) = 1.0 + _DarkMultiplier("Dark Multiplier", Color) = (0.6, 0.6, 0.6, 1.0) + _BaseColor("Base Color", Color) = (0.0, 0.0, 0.0, 0.0) + _BaseMaskType("Base Mask Type", Int) = 0 + _BaseMaskParameters("Base Mask Parameters", Vector) = (0, 0, 0, 0) + _BaseMaskAxis("Base Mask Axis", Vector) = (0, 1, 0, 0) + _AlphaMask("Alpha Mask", 2D) = "white" {} + _NormalMap("Normal Map", 2D) = "" {} + _ParallaxMap("Parallax Map", 2D) = "" {} + _RoughnessMap("Roughness Map", 2D) = "" {} + + // Layer 0 parameters + _LayerSampleMode0("Layer Sample Mode 0", Int) = 0 + _LayerBlendMode0("Layer Blend Mode 0", Int) = 0 + _LayerMaskType0("Layer Mask Type 0", Int) = 0 + _LayerColor0("Layer Color 0", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface0("Layer Surface 0", 2D) = "" {} + _LayerSampleParameters0("Layer Sample Parameters 0", Vector) = (0, 0, 0, 0) + _LayerMaskParameters0("Layer Mask Parameters 0", Vector) = (0, 0, 0, 0) + _LayerMaskAxis0("Layer Mask Axis 0", Vector) = (0, 1, 0, 0) + + // Layer 1 parameters + _LayerSampleMode1("Layer Sample Mode 1", Int) = 0 + _LayerBlendMode1("Layer Blend Mode 1", Int) = 0 + _LayerMaskType1("Layer Mask Type 1", Int) = 0 + _LayerColor1("Layer Color 1", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface1("Layer Surface 1", 2D) = "" {} + _LayerSampleParameters1("Layer Sample Parameters 1", Vector) = (0, 0, 0, 0) + _LayerMaskParameters1("Layer Mask Parameters 1", Vector) = (0, 0, 0, 0) + _LayerMaskAxis1("Layer Mask Axis 1", Vector) = (0, 1, 0, 0) + + // Layer 2 parameters + _LayerSampleMode2("Layer Sample Mode 2", Int) = 0 + _LayerBlendMode2("Layer Blend Mode 2", Int) = 0 + _LayerMaskType2("Layer Mask Type 2", Int) = 0 + _LayerColor2("Layer Color 2", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface2("Layer Surface 2", 2D) = "" {} + _LayerSampleParameters2("Layer Sample Parameters 2", Vector) = (0, 0, 0, 0) + _LayerMaskParameters2("Layer Mask Parameters 2", Vector) = (0, 0, 0, 0) + _LayerMaskAxis2("Layer Mask Axis 2", Vector) = (0, 1, 0, 0) + + // Layer 3 parameters + _LayerSampleMode3("Layer Sample Mode 3", Int) = 0 + _LayerBlendMode3("Layer Blend Mode 3", Int) = 0 + _LayerMaskType3("Layer Mask Type 3", Int) = 0 + _LayerColor3("Layer Color 3", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface3("Layer Surface 3", 2D) = "" {} + _LayerSampleParameters3("Layer Sample Parameters 3", Vector) = (0, 0, 0, 0) + _LayerMaskParameters3("Layer Mask Parameters 3", Vector) = (0, 0, 0, 0) + _LayerMaskAxis3("Layer Mask Axis 3", Vector) = (0, 1, 0, 0) + + // Layer 4 parameters + _LayerSampleMode4("Layer Sample Mode 4", Int) = 0 + _LayerBlendMode4("Layer Blend Mode 4", Int) = 0 + _LayerMaskType4("Layer Mask Type 4", Int) = 0 + _LayerColor4("Layer Color 4", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface4("Layer Surface 4", 2D) = "" {} + _LayerSampleParameters4("Layer Sample Parameters 4", Vector) = (0, 0, 0, 0) + _LayerMaskParameters4("Layer Mask Parameters 4", Vector) = (0, 0, 0, 0) + _LayerMaskAxis4("Layer Mask Axis 4", Vector) = (0, 1, 0, 0) + + // Layer 5 parameters + _LayerSampleMode5("Layer Sample Mode 5", Int) = 0 + _LayerBlendMode5("Layer Blend Mode 5", Int) = 0 + _LayerMaskType5("Layer Mask Type 5", Int) = 0 + _LayerColor5("Layer Color 5", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface5("Layer Surface 5", 2D) = "" {} + _LayerSampleParameters5("Layer Sample Parameters 5", Vector) = (0, 0, 0, 0) + _LayerMaskParameters5("Layer Mask Parameters 5", Vector) = (0, 0, 0, 0) + _LayerMaskAxis5("Layer Mask Axis 5", Vector) = (0, 1, 0, 0) + + // Layer 6 parameters + _LayerSampleMode6("Layer Sample Mode 6", Int) = 0 + _LayerBlendMode6("Layer Blend Mode 6", Int) = 0 + _LayerMaskType6("Layer Mask Type 6", Int) = 0 + _LayerColor6("Layer Color 6", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface6("Layer Surface 6", 2D) = "" {} + _LayerSampleParameters6("Layer Sample Parameters 6", Vector) = (0, 0, 0, 0) + _LayerMaskParameters6("Layer Mask Parameters 6", Vector) = (0, 0, 0, 0) + _LayerMaskAxis6("Layer Mask Axis 6", Vector) = (0, 1, 0, 0) + + // Layer 7 parameters + _LayerSampleMode7("Layer Sample Mode 7", Int) = 0 + _LayerBlendMode7("Layer Blend Mode 7", Int) = 0 + _LayerMaskType7("Layer Mask Type 7", Int) = 0 + _LayerColor7("Layer Color 7", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface7("Layer Surface 7", 2D) = "" {} + _LayerSampleParameters7("Layer Sample Parameters 7", Vector) = (0, 0, 0, 0) + _LayerMaskParameters7("Layer Mask Parameters 7", Vector) = (0, 0, 0, 0) + _LayerMaskAxis7("Layer Mask Axis 7", Vector) = (0, 1, 0, 0) + } + + SubShader + { + Tags + { + "Queue" = "Transparent" + "RenderType" = "Transparent" + } + + Pass + { + ZWrite On + Cull Off + ColorMask 0 + Offset 1, 1 + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 3.0 + #include "UnityCG.cginc" + + struct v2f + { + float4 position : SV_POSITION; + }; + + v2f vert(appdata_full v) + { + // Output + v2f output; + output.position = UnityObjectToClipPos(v.vertex); + return output; + } + + float4 frag(v2f input) : COLOR + { + return 0; + } + + ENDCG + } + + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + LOD 200 + + Pass + { + Name "FORWARD" + Tags + { + "LightMode" = "ForwardBase" + } + + CGPROGRAM + #pragma only_renderers d3d11 gles3 gles + #pragma vertex vert + #pragma fragment frag + #pragma target 3.0 + #pragma multi_compile PROJECTOR_OFF PROJECTOR_ON + #pragma multi_compile NORMAL_MAP_OFF NORMAL_MAP_ON + #pragma multi_compile PARALLAX_OFF PARALLAX_ON + #pragma multi_compile ROUGHNESS_OFF ROUGHNESS_ON + #pragma multi_compile VERTALPHA_OFF VERTALPHA_ON + #pragma multi_compile LAYERS_1 LAYERS_2 LAYERS_3 LAYERS_4 LAYERS_5 LAYERS_6 LAYERS_7 LAYERS_8 + + #include "Assets/Oculus/Avatar/Content/Materials/AvatarMaterialStateShader.cginc" + + float4 frag(VertexOutput IN) : SV_Target + { + return ComputeSurface(IN); + } + + ENDCG + } + } + + FallBack "Diffuse" + CustomEditor "AvatarMaterialEditor" +} diff --git a/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderSelfOccluding.shader.meta b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderSelfOccluding.shader.meta new file mode 100644 index 0000000..1a00873 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Materials/AvatarSurfaceShaderSelfOccluding.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 10513ef587704324487f3061a7e6699d +timeCreated: 1470862124 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Prefabs.meta b/Assets/Oculus/Avatar/Content/Prefabs.meta new file mode 100644 index 0000000..a1f059c --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e2c4ef7503877e647b22a4089384f04f +folderAsset: yes +timeCreated: 1466717433 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Prefabs/LocalAvatar.prefab b/Assets/Oculus/Avatar/Content/Prefabs/LocalAvatar.prefab new file mode 100644 index 0000000..ea2dd46 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Prefabs/LocalAvatar.prefab @@ -0,0 +1,793 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &157742 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 448722} + - component: {fileID: 11477770} + m_Layer: 0 + m_Name: controller_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &158226 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 463470} + - component: {fileID: 11437430} + - component: {fileID: 8254050} + - component: {fileID: 11441414} + m_Layer: 0 + m_Name: LocalAvatar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &184120 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400938} + - component: {fileID: 11405130} + m_Layer: 0 + m_Name: controller_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400938 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184120} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 463470} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &448722 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157742} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 463470} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &463470 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158226} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000010416372058} + - {fileID: 4000014100970646} + - {fileID: 4000013364346644} + - {fileID: 400938} + - {fileID: 4000011212216358} + - {fileID: 448722} + - {fileID: 4581494204247758} + - {fileID: 4468369968689664} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &8254050 +AudioSource: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158226} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &11405130 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11437430 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00f3402a2ea5bff4880c0313515240cd, type: 3} + m_Name: + m_EditorClassIdentifier: + DefaultBodyMaterialManager: {fileID: 114949324920430652} + DefaultHandMaterialManager: {fileID: 114029231360713414} + Driver: {fileID: 11441414} + Base: {fileID: 114000010884708534} + Body: {fileID: 114000012186362028} + ControllerLeft: {fileID: 11405130} + ControllerRight: {fileID: 11477770} + HandLeft: {fileID: 114000011404857786} + HandRight: {fileID: 114000010372160784} + RecordPackets: 0 + UseSDKPackets: 1 + StartWithControllers: 0 + FirstPersonLayer: + layerIndex: 0 + ThirdPersonLayer: + layerIndex: 0 + ShowFirstPerson: 1 + ShowThirdPerson: 0 + Capabilities: -1 + SurfaceShader: {fileID: 4800000, guid: 73f67c4e7bf718b4385aa6b1f8a06591, type: 3} + SurfaceShaderSelfOccluding: {fileID: 4800000, guid: 69f342b79d37541489919a19cfd8a924, + type: 3} + SurfaceShaderPBS: {fileID: 4800000, guid: 5e52aa58207bbf24d8eb8ec969e9ae88, type: 3} + SurfaceShaderPBSV2Single: {fileID: 4800000, guid: c26fc51e445dcfd4db09305d861dc11c, + type: 3} + SurfaceShaderPBSV2Combined: {fileID: 4800000, guid: 37d2b8298f61cd2469465fc36108675d, + type: 3} + SurfaceShaderPBSV2Simple: {fileID: 4800000, guid: 36b8b481cf607814a8cec318f0148d63, + type: 3} + SurfaceShaderPBSV2Loading: {fileID: 4800000, guid: 822f5e641dc5dd54ca9555b727b3277f, + type: 3} + oculusUserID: 0 + LeftHandCustomPose: {fileID: 0} + RightHandCustomPose: {fileID: 0} + PacketSettings: + UpdateRate: 0.033333335 + VoiceAmplitude: 0 + EnableMouthVertexAnimation: 0 +--- !u!114 &11441414 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac27124318cf8e84aa7350c2ac1cdb80, type: 3} + m_Name: + m_EditorClassIdentifier: + Mode: 0 +--- !u!114 &11477770 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !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: 158226} + m_IsPrefabParent: 1 +--- !u!1 &1000010482306814 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011212216358} + - component: {fileID: 114000010372160784} + m_Layer: 0 + m_Name: hand_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010910743596 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010416372058} + - component: {fileID: 114000010884708534} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011125779090 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000013364346644} + - component: {fileID: 114000011404857786} + m_Layer: 0 + m_Name: hand_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012026592076 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000014100970646} + - component: {fileID: 114000012186362028} + m_Layer: 0 + m_Name: body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1098047352992398 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4581494204247758} + - component: {fileID: 114949324920430652} + m_Layer: 0 + m_Name: DefaultBodyMaterialManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1231602751420816 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4468369968689664} + - component: {fileID: 114029231360713414} + m_Layer: 0 + m_Name: DefaultHandMaterialManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010416372058 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010910743596} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 463470} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011212216358 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010482306814} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 463470} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013364346644 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011125779090} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 463470} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000014100970646 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012026592076} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 463470} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4468369968689664 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1231602751420816} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 463470} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4581494204247758 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1098047352992398} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 463470} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114000010372160784 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010482306814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114000010884708534 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010910743596} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a0e33623ec5372748b5703f61a4df82d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114000011404857786 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011125779090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114000012186362028 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012026592076} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb7a6650b6cb46545967d3b380b7396c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114029231360713414 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1231602751420816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a139d83bf6796734db220df8a5bfacbd, type: 3} + m_Name: + m_EditorClassIdentifier: + DiffuseFallbacks: + - {fileID: 2800000, guid: 7d8da3d06466cc04da8c020819170a59, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: b3e87b1024f5fa8408d004b398e7b0c0, type: 3} + NormalFallbacks: + - {fileID: 2800000, guid: 93a54b3b63bcc6d49b16f6bdb655b940, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 22a046c12fc7f3c4d98a98add109fa96, type: 3} + BodyColorTints: + - {r: 0.9764706, g: 0.8509804, b: 0.6862745, a: 1} + - {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + - {r: 0.9764706, g: 0.9019608, b: 0.6745098, a: 1} + - {r: 0.7647059, g: 0.6039216, b: 0.2509804, a: 1} + - {r: 0.45490196, g: 0.1882353, b: 0, a: 1} + - {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + LocalAvatarConfig: + ComponentMaterialProperties: [] + MaterialPropertyBlock: + Colors: [] + DiffuseIntensities: [] + RimIntensities: [] + BacklightIntensities: [] + ReflectionIntensities: [] + DefaultAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + Textures: [] + DiffuseIntensity: 0.301 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: [] + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 0.80784315, g: 0.80784315, b: 0.80784315, a: 1} + Textures: [] + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.22352941, g: 0.11372549, b: 0, a: 1} + Textures: [] + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + Textures: [] + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + DiffuseIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + RimIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + BacklightIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + ReflectionIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 +--- !u!114 &114949324920430652 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1098047352992398} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a139d83bf6796734db220df8a5bfacbd, type: 3} + m_Name: + m_EditorClassIdentifier: + DiffuseFallbacks: + - {fileID: 2800000, guid: 7d8da3d06466cc04da8c020819170a59, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: b3e87b1024f5fa8408d004b398e7b0c0, type: 3} + NormalFallbacks: + - {fileID: 2800000, guid: 93a54b3b63bcc6d49b16f6bdb655b940, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 22a046c12fc7f3c4d98a98add109fa96, type: 3} + BodyColorTints: + - {r: 0.9764706, g: 0.8509804, b: 0.6862745, a: 1} + - {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + - {r: 0.9764706, g: 0.9019608, b: 0.6745098, a: 1} + - {r: 0.7647059, g: 0.6039216, b: 0.2509804, a: 1} + - {r: 0.45490196, g: 0.1882353, b: 0, a: 1} + - {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + LocalAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.86, b: 0.77, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.3 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.6235, g: 0.4627, b: 0.3412, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: -5.3487954e+9, g: 771.1758, b: -5.6686517e+23, a: 4.9667446e-34} + Textures: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 1, y: 0.86, z: 0.77, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 0.6235, y: 0.4627, z: 0.3412, w: 1} + - {x: -0.025753247, y: -2.0311036e-13, z: -6.2685677e-31, w: -2.0021067e+22} + DiffuseIntensities: + - 0.3 + - 0.1 + - 0 + - 0.15 + - 0.15 + RimIntensities: + - 5 + - 2 + - 2.84 + - 4 + - 4 + BacklightIntensities: + - 1 + - 0.7 + - 0.7 + - 0.7 + - 0.7 + ReflectionIntensities: + - 0 + - 0.3 + - 0.4 + - 0 + - 0 + DefaultAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.86, b: 0.77, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.3 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.6235, g: 0.4627, b: 0.3412, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: -5.3487954e+9, g: 771.1758, b: -5.6686517e+23, a: 4.9667446e-34} + Textures: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 1, y: 0.86, z: 0.77, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 0.6235, y: 0.4627, z: 0.3412, w: 1} + - {x: -0.025753247, y: -2.0311036e-13, z: -6.2685677e-31, w: -2.0021067e+22} + DiffuseIntensities: + - 0.3 + - 0.1 + - 0 + - 0.15 + - 0.15 + RimIntensities: + - 5 + - 2 + - 2.84 + - 4 + - 4 + BacklightIntensities: + - 1 + - 0.7 + - 0.7 + - 0.7 + - 0.7 + ReflectionIntensities: + - 0 + - 0.3 + - 0.4 + - 0 + - 0 diff --git a/Assets/Oculus/Avatar/Content/Prefabs/LocalAvatar.prefab.meta b/Assets/Oculus/Avatar/Content/Prefabs/LocalAvatar.prefab.meta new file mode 100644 index 0000000..4844c05 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Prefabs/LocalAvatar.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 84c8b8609f9bb434eaf5248f17ff1293 +timeCreated: 1466806466 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Prefabs/RemoteAvatar.prefab b/Assets/Oculus/Avatar/Content/Prefabs/RemoteAvatar.prefab new file mode 100644 index 0000000..575f84c --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Prefabs/RemoteAvatar.prefab @@ -0,0 +1,2830 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &143252 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 496618} + - component: {fileID: 11464902} + - component: {fileID: 11461908} + m_Layer: 0 + m_Name: RemoteAvatar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &154294 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 489662} + - component: {fileID: 114000010091674760} + m_Layer: 0 + m_Name: hand_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &165584 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 429728} + - component: {fileID: 114000012345544872} + m_Layer: 0 + m_Name: body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &166844 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 435882} + - component: {fileID: 11465430} + m_Layer: 0 + m_Name: controller_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &178596 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 433868} + - component: {fileID: 11470276} + m_Layer: 0 + m_Name: controller_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &188284 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 407044} + - component: {fileID: 114000012207304612} + m_Layer: 0 + m_Name: hand_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &407044 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188284} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 496618} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &429728 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165584} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 496618} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &433868 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178596} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000012540091686} + m_Father: {fileID: 496618} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &435882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166844} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000011967535116} + m_Father: {fileID: 496618} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &489662 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 496618} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &496618 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000011021225538} + - {fileID: 429728} + - {fileID: 489662} + - {fileID: 407044} + - {fileID: 433868} + - {fileID: 435882} + - {fileID: 4461464600332690} + - {fileID: 4823973753068400} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &11461908 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143252} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c198a42a3843ca04fa633b60f428ff51, type: 3} + m_Name: + m_EditorClassIdentifier: + Mode: 0 +--- !u!114 &11464902 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143252} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00f3402a2ea5bff4880c0313515240cd, type: 3} + m_Name: + m_EditorClassIdentifier: + DefaultBodyMaterialManager: {fileID: 114533516196804206} + DefaultHandMaterialManager: {fileID: 114144217084364882} + Driver: {fileID: 11461908} + Base: {fileID: 114000010148578704} + Body: {fileID: 114000012345544872} + ControllerLeft: {fileID: 11470276} + ControllerRight: {fileID: 11465430} + HandLeft: {fileID: 114000010091674760} + HandRight: {fileID: 114000012207304612} + RecordPackets: 0 + UseSDKPackets: 1 + StartWithControllers: 0 + FirstPersonLayer: + layerIndex: 0 + ThirdPersonLayer: + layerIndex: 0 + ShowFirstPerson: 0 + ShowThirdPerson: 1 + Capabilities: -1 + SurfaceShader: {fileID: 4800000, guid: 73f67c4e7bf718b4385aa6b1f8a06591, type: 3} + SurfaceShaderSelfOccluding: {fileID: 4800000, guid: 69f342b79d37541489919a19cfd8a924, + type: 3} + SurfaceShaderPBS: {fileID: 4800000, guid: 5e52aa58207bbf24d8eb8ec969e9ae88, type: 3} + SurfaceShaderPBSV2Single: {fileID: 4800000, guid: c26fc51e445dcfd4db09305d861dc11c, + type: 3} + SurfaceShaderPBSV2Combined: {fileID: 4800000, guid: 37d2b8298f61cd2469465fc36108675d, + type: 3} + SurfaceShaderPBSV2Simple: {fileID: 4800000, guid: 36b8b481cf607814a8cec318f0148d63, + type: 3} + SurfaceShaderPBSV2Loading: {fileID: 4800000, guid: 822f5e641dc5dd54ca9555b727b3277f, + type: 3} + oculusUserID: 0 + LeftHandCustomPose: {fileID: 0} + RightHandCustomPose: {fileID: 0} + PacketSettings: + UpdateRate: 0.033333335 + VoiceAmplitude: 0 + EnableMouthVertexAnimation: 0 +--- !u!114 &11465430 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11470276 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178596} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !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: 143252} + m_IsPrefabParent: 1 +--- !u!1 &1000010176019332 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000013053309248} + - component: {fileID: 137000012539278394} + m_Layer: 0 + m_Name: rctrl:a_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010186355062 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000013448249666} + m_Layer: 0 + m_Name: rctrl:b_hold + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010353348604 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011939430368} + - component: {fileID: 137000012561251176} + m_Layer: 0 + m_Name: lctrl:ring_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010404229384 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011568184020} + - component: {fileID: 137000012327971406} + m_Layer: 0 + m_Name: lctrl:surface_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010462727460 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010715895894} + m_Layer: 0 + m_Name: rctrl:right_touch_controller_world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010540851970 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012605354570} + - component: {fileID: 137000012577831356} + m_Layer: 0 + m_Name: rctrl:b_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010567967398 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012724529694} + m_Layer: 0 + m_Name: rctrl:b_trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010618960340 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012540091686} + - component: {fileID: 95000014191315040} + m_Layer: 0 + m_Name: left_touch_controller_model_skel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010732039748 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000014027683858} + - component: {fileID: 137000014239696370} + m_Layer: 0 + m_Name: rctrl:o_button_decal_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010829465458 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000013426853722} + m_Layer: 0 + m_Name: lctrl:geometry_null + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011032731176 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000013724697446} + m_Layer: 0 + m_Name: rctrl:b_stick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011186482016 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011967535116} + - component: {fileID: 95000011808594792} + m_Layer: 0 + m_Name: right_touch_controller_model_skel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011251501750 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012705674684} + - component: {fileID: 137000013198274284} + m_Layer: 0 + m_Name: rctrl:ring_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011296493708 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011540650158} + m_Layer: 0 + m_Name: lctrl:b_trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011598347302 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012705338176} + m_Layer: 0 + m_Name: rctrl:b_stick_IGNORE + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011605533530 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010811930704} + m_Layer: 0 + m_Name: lctrl:b_stick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011727251070 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012384171158} + m_Layer: 0 + m_Name: rctrl:b_button01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011772014684 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011564629680} + - component: {fileID: 137000014119152936} + m_Layer: 0 + m_Name: rctrl:o_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011875671922 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000013166053970} + - component: {fileID: 137000010724210166} + m_Layer: 0 + m_Name: rctrl:side_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011963518446 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012961726978} + - component: {fileID: 137000011963534174} + m_Layer: 0 + m_Name: lctrl:thumbstick_ball_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011996807892 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000013876876732} + m_Layer: 0 + m_Name: rctrl:b_button02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012054331002 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011636682892} + - component: {fileID: 137000013701477334} + m_Layer: 0 + m_Name: rctrl:thumbstick_ball_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012150430946 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012272704210} + - component: {fileID: 137000012107674410} + m_Layer: 0 + m_Name: lctrl:o_button_decal_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012196631598 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012842689428} + m_Layer: 0 + m_Name: lctrl:left_touch_controller_world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012207203502 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011814646714} + m_Layer: 0 + m_Name: lctrl:b_stick_IGNORE + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012459128118 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010499556928} + - component: {fileID: 137000010692100556} + m_Layer: 0 + m_Name: lctrl:x_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012540503508 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010768823692} + m_Layer: 0 + m_Name: rctrl:b_button03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012561114658 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011465109902} + - component: {fileID: 137000011798888872} + m_Layer: 0 + m_Name: lctrl:o_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012687583852 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012029189976} + m_Layer: 0 + m_Name: lctrl:b_button01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012703596256 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010465752764} + - component: {fileID: 137000012369293346} + m_Layer: 0 + m_Name: rctrl:controller_body_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012739084852 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011697994020} + - component: {fileID: 137000012017572084} + m_Layer: 0 + m_Name: lctrl:main_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012820484798 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011581298260} + m_Layer: 0 + m_Name: rctrl:geometry_null + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012913350438 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011021225538} + - component: {fileID: 114000010148578704} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013039583002 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000013285752372} + m_Layer: 0 + m_Name: lctrl:b_button03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013068196432 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012208151102} + - component: {fileID: 137000011002884086} + m_Layer: 0 + m_Name: lctrl:controller_body_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013237565076 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012351109320} + - component: {fileID: 137000012071317434} + m_Layer: 0 + m_Name: rctrl:surface_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013362553720 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011208292394} + - component: {fileID: 137000010318330296} + m_Layer: 0 + m_Name: lctrl:side_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013632609248 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000014115540756} + - component: {fileID: 137000010086889286} + m_Layer: 0 + m_Name: rctrl:main_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013724541018 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011684154134} + m_Layer: 0 + m_Name: lctrl:b_button02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013773920210 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010076381212} + m_Layer: 0 + m_Name: lctrl:b_hold + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013783390420 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011937531554} + - component: {fileID: 137000010625253534} + m_Layer: 0 + m_Name: lctrl:y_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1387099181202896 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4461464600332690} + - component: {fileID: 114533516196804206} + m_Layer: 0 + m_Name: DefaultBodyMaterialManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1952448560374888 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4823973753068400} + - component: {fileID: 114144217084364882} + m_Layer: 0 + m_Name: DefaultHandMaterialManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010076381212 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013773920210} + m_LocalRotation: {x: -0.18065539, y: -0.13555649, z: -0.067166515, w: 0.97184193} + m_LocalPosition: {x: 0.013074442, y: -0.025639696, z: -0.027427113} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012842689428} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010465752764 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012703596256} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010499556928 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012459128118} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010715895894 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010462727460} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: -8.659561e-17} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000012384171158} + - {fileID: 4000013876876732} + - {fileID: 4000010768823692} + - {fileID: 4000013448249666} + - {fileID: 4000013724697446} + - {fileID: 4000012724529694} + m_Father: {fileID: 4000011967535116} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010768823692 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012540503508} + m_LocalRotation: {x: 0.07876507, y: 0.01894126, z: 0.5343878, w: 0.8413483} + m_LocalPosition: {x: -0.012083728, y: -0.01402681, z: -0.0007126567} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000010715895894} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010811930704 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011605533530} + m_LocalRotation: {x: 0.0027868259, y: 0.70437866, z: -0.0031505642, w: 0.7098119} + m_LocalPosition: {x: 0.010637393, y: 0.00497835, z: -0.009418557} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000011814646714} + m_Father: {fileID: 4000012842689428} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011021225538 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012913350438} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 496618} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011208292394 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013362553720} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011465109902 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012561114658} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011540650158 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011296493708} + m_LocalRotation: {x: -0.05795374, y: -0.05660452, z: 0.9967023, w: 0.0046757394} + m_LocalPosition: {x: -0.001420367, y: 0.021865888, z: -0.005495974} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012842689428} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011564629680 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011772014684} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011568184020 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010404229384} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011581298260 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012820484798} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000013053309248} + - {fileID: 4000012605354570} + - {fileID: 4000010465752764} + - {fileID: 4000014115540756} + - {fileID: 4000014027683858} + - {fileID: 4000011564629680} + - {fileID: 4000012705674684} + - {fileID: 4000013166053970} + - {fileID: 4000012351109320} + - {fileID: 4000011636682892} + m_Father: {fileID: 4000011967535116} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011636682892 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012054331002} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011684154134 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013724541018} + m_LocalRotation: {x: 0.017080953, y: -0.07918932, z: 0.52647054, w: 0.84632504} + m_LocalPosition: {x: -0.0091353385, y: 0.005499125, z: -0.00011681918} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012842689428} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011697994020 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012739084852} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011814646714 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012207203502} + m_LocalRotation: {x: 0, y: -0.70108956, z: -0, w: 0.71307325} + m_LocalPosition: {x: -0.019321036, y: 0, z: 9.992007e-18} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000010811930704} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011937531554 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013783390420} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011939430368 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010353348604} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011967535116 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011186482016} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000011581298260} + - {fileID: 4000010715895894} + m_Father: {fileID: 435882} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012029189976 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012687583852} + m_LocalRotation: {x: 0.05660452, y: -0.05795374, z: -0.0046757394, w: 0.9967023} + m_LocalPosition: {x: -0.0019170768, y: -0.0073837424, z: -0.00091214647} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012842689428} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012208151102 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013068196432} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012272704210 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012150430946} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012351109320 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013237565076} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012384171158 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011727251070} + m_LocalRotation: {x: 0.056604527, y: 0.05795374, z: 0.004675739, w: 0.9967023} + m_LocalPosition: {x: 0.0019170768, y: -0.0073837424, z: -0.00091214647} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000010715895894} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012540091686 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010618960340} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000013426853722} + - {fileID: 4000012842689428} + m_Father: {fileID: 433868} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012605354570 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010540851970} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012705338176 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011598347302} + m_LocalRotation: {x: -4.5059287e-17, y: -0.70108956, z: -6.5911624e-17, w: 0.71307325} + m_LocalPosition: {x: -0.019321036, y: 0, z: 9.992007e-18} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013724697446} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012705674684 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011251501750} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012724529694 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010567967398} + m_LocalRotation: {x: 0.056604527, y: 0.05795374, z: 0.004675739, w: 0.9967023} + m_LocalPosition: {x: 0.001420367, y: 0.021865888, z: -0.005495974} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000010715895894} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012842689428 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012196631598} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: -8.659561e-17} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000012029189976} + - {fileID: 4000011684154134} + - {fileID: 4000013285752372} + - {fileID: 4000010076381212} + - {fileID: 4000010811930704} + - {fileID: 4000011540650158} + m_Father: {fileID: 4000012540091686} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012961726978 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011963518446} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013426853722} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013053309248 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010176019332} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013166053970 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011875671922} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013285752372 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013039583002} + m_LocalRotation: {x: 0.05660452, y: -0.05795374, z: -0.0046757394, w: 0.9967023} + m_LocalPosition: {x: 0.012083728, y: -0.01402681, z: -0.0007126567} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012842689428} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013426853722 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010829465458} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000012208151102} + - {fileID: 4000011697994020} + - {fileID: 4000012272704210} + - {fileID: 4000011465109902} + - {fileID: 4000011939430368} + - {fileID: 4000011208292394} + - {fileID: 4000011568184020} + - {fileID: 4000012961726978} + - {fileID: 4000010499556928} + - {fileID: 4000011937531554} + m_Father: {fileID: 4000012540091686} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013448249666 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010186355062} + m_LocalRotation: {x: -0.17913595, y: 0.14914332, z: 0.022661837, w: 0.97218984} + m_LocalPosition: {x: -0.013074442, y: -0.025639696, z: -0.027427113} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000010715895894} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013724697446 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011032731176} + m_LocalRotation: {x: -0.003149668, y: 0.7098123, z: 0.002783398, w: 0.7043784} + m_LocalPosition: {x: -0.010637393, y: 0.00497835, z: -0.009418557} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000012705338176} + m_Father: {fileID: 4000010715895894} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013876876732 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011996807892} + m_LocalRotation: {x: 0.07876507, y: 0.01894126, z: 0.5343878, w: 0.8413483} + m_LocalPosition: {x: 0.009152712, y: 0.0054823146, z: 0.000030916483} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000010715895894} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000014027683858 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010732039748} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000014115540756 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013632609248} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011581298260} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4461464600332690 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1387099181202896} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 496618} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4823973753068400 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1952448560374888} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 496618} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &95000011808594792 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011186482016} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 1 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!95 &95000014191315040 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010618960340} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 1 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!114 &114000010091674760 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114000010148578704 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012913350438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a0e33623ec5372748b5703f61a4df82d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114000012207304612 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114000012345544872 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb7a6650b6cb46545967d3b380b7396c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114144217084364882 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1952448560374888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a139d83bf6796734db220df8a5bfacbd, type: 3} + m_Name: + m_EditorClassIdentifier: + DiffuseFallbacks: + - {fileID: 2800000, guid: 7d8da3d06466cc04da8c020819170a59, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: b3e87b1024f5fa8408d004b398e7b0c0, type: 3} + NormalFallbacks: + - {fileID: 2800000, guid: 93a54b3b63bcc6d49b16f6bdb655b940, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 22a046c12fc7f3c4d98a98add109fa96, type: 3} + BodyColorTints: + - {r: 0.9764706, g: 0.8509804, b: 0.6862745, a: 1} + - {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + - {r: 0.9764706, g: 0.9019608, b: 0.6745098, a: 1} + - {r: 0.7647059, g: 0.6039216, b: 0.2509804, a: 1} + - {r: 0.45490196, g: 0.1882353, b: 0, a: 1} + - {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + LocalAvatarConfig: + ComponentMaterialProperties: [] + MaterialPropertyBlock: + Colors: [] + DiffuseIntensities: [] + RimIntensities: [] + BacklightIntensities: [] + ReflectionIntensities: [] + DefaultAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + Textures: [] + DiffuseIntensity: 0.301 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: [] + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 0.80784315, g: 0.80784315, b: 0.80784315, a: 1} + Textures: [] + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.22352941, g: 0.11372549, b: 0, a: 1} + Textures: [] + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + Textures: [] + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + DiffuseIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + RimIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + BacklightIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + ReflectionIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 +--- !u!114 &114533516196804206 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1387099181202896} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a139d83bf6796734db220df8a5bfacbd, type: 3} + m_Name: + m_EditorClassIdentifier: + DiffuseFallbacks: + - {fileID: 2800000, guid: 7d8da3d06466cc04da8c020819170a59, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: b3e87b1024f5fa8408d004b398e7b0c0, type: 3} + NormalFallbacks: + - {fileID: 2800000, guid: 93a54b3b63bcc6d49b16f6bdb655b940, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 22a046c12fc7f3c4d98a98add109fa96, type: 3} + BodyColorTints: + - {r: 0.9764706, g: 0.8509804, b: 0.6862745, a: 1} + - {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + - {r: 0.9764706, g: 0.9019608, b: 0.6745098, a: 1} + - {r: 0.7647059, g: 0.6039216, b: 0.2509804, a: 1} + - {r: 0.45490196, g: 0.1882353, b: 0, a: 1} + - {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + LocalAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.86, b: 0.77, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.3 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.6235, g: 0.4627, b: 0.3412, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: -5.3487954e+9, g: 771.1758, b: -5.6686517e+23, a: 4.9667446e-34} + Textures: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 1, y: 0.86, z: 0.77, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 0.6235, y: 0.4627, z: 0.3412, w: 1} + - {x: -0.025753247, y: -2.0311036e-13, z: -6.2685677e-31, w: -2.0021067e+22} + DiffuseIntensities: + - 0.3 + - 0.1 + - 0 + - 0.15 + - 0.15 + RimIntensities: + - 5 + - 2 + - 2.84 + - 4 + - 4 + BacklightIntensities: + - 1 + - 0.7 + - 0.7 + - 0.7 + - 0.7 + ReflectionIntensities: + - 0 + - 0.3 + - 0.4 + - 0 + - 0 + DefaultAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.86, b: 0.77, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.3 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.6235, g: 0.4627, b: 0.3412, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: -5.3487954e+9, g: 771.1758, b: -5.6686517e+23, a: 4.9667446e-34} + Textures: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 1, y: 0.86, z: 0.77, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 0.6235, y: 0.4627, z: 0.3412, w: 1} + - {x: -0.025753247, y: -2.0311036e-13, z: -6.2685677e-31, w: -2.0021067e+22} + DiffuseIntensities: + - 0.3 + - 0.1 + - 0 + - 0.15 + - 0.15 + RimIntensities: + - 5 + - 2 + - 2.84 + - 4 + - 4 + BacklightIntensities: + - 1 + - 0.7 + - 0.7 + - 0.7 + - 0.7 + ReflectionIntensities: + - 0 + - 0.3 + - 0.4 + - 0 + - 0 +--- !u!137 &137000010086889286 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013632609248} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000012724529694} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000012724529694} + m_AABB: + m_Center: {x: -0.00066094473, y: -0.0013324618, z: -0.013972076} + m_Extent: {x: 0.014561898, y: 0.009363493, z: 0.013364943} + m_DirtyAABB: 0 +--- !u!137 &137000010318330296 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013362553720} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300004, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000010076381212} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000010076381212} + m_AABB: + m_Center: {x: -0.015075567, y: -0.000016345643, z: 0.0018507377} + m_Extent: {x: 0.0069265487, y: 0.01454833, z: 0.0073075653} + m_DirtyAABB: 0 +--- !u!137 &137000010625253534 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013783390420} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300014, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000011684154134} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000011684154134} + m_AABB: + m_Center: {x: 0.000002396293, y: -0.000002480112, z: 0.0004961204} + m_Extent: {x: 0.0050600627, y: 0.005023708, z: 0.0025072547} + m_DirtyAABB: 0 +--- !u!137 &137000010692100556 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012459128118} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300012, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000012029189976} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000012029189976} + m_AABB: + m_Center: {x: -0.0000007278286, y: 0.000013420358, z: 0.00049956236} + m_Extent: {x: 0.0050891, y: 0.0051111123, z: 0.0025754925} + m_DirtyAABB: 0 +--- !u!137 &137000010724210166 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011875671922} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300002, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000013448249666} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000013448249666} + m_AABB: + m_Center: {x: 0.015085924, y: 0.00079575554, z: 0.0022845878} + m_Extent: {x: 0.007514255, y: 0.01456238, z: 0.0074783214} + m_DirtyAABB: 0 +--- !u!137 &137000011002884086 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013068196432} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000012842689428} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000012842689428} + m_AABB: + m_Center: {x: 0.0012377053, y: -0.019060574, z: -0.031179674} + m_Extent: {x: 0.030484837, y: 0.051344864, z: 0.03589142} + m_DirtyAABB: 0 +--- !u!137 &137000011798888872 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012561114658} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300018, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000013285752372} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000013285752372} + m_AABB: + m_Center: {x: 0.00000036275014, y: 0.0000008731149, z: 0.00057195796} + m_Extent: {x: 0.004508081, y: 0.0045095203, z: 0.0007474726} + m_DirtyAABB: 0 +--- !u!137 &137000011963534174 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011963518446} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300006, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000012842689428} + - {fileID: 4000010811930704} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000012842689428} + m_AABB: + m_Center: {x: 0.010604473, y: 0.0049807066, z: 0.0022465445} + m_Extent: {x: 0.01075476, y: 0.010751982, z: 0.007853846} + m_DirtyAABB: 0 +--- !u!137 &137000012017572084 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012739084852} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300002, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000011540650158} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000011540650158} + m_AABB: + m_Center: {x: -0.00066094473, y: 0.00133246, z: -0.01397207} + m_Extent: {x: 0.014561897, y: 0.009363488, z: 0.013364941} + m_DirtyAABB: 0 +--- !u!137 &137000012071317434 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013237565076} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300008, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000010715895894} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000010715895894} + m_AABB: + m_Center: {x: -0.00016466528, y: 0.00024955347, z: -0.0010734652} + m_Extent: {x: 0.028195847, y: 0.028275441, z: 0.0059699165} + m_DirtyAABB: 0 +--- !u!137 &137000012107674410 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012150430946} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300016, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000013285752372} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000013285752372} + m_AABB: + m_Center: {x: 0.000017444137, y: -0.000100485515, z: 0.0012767066} + m_Extent: {x: 0.0021195891, y: 0.0016280017, z: 0.000015275204} + m_DirtyAABB: 0 +--- !u!137 &137000012327971406 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010404229384} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300010, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000012842689428} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000012842689428} + m_AABB: + m_Center: {x: 0.00016466528, y: 0.00024955347, z: -0.0010734657} + m_Extent: {x: 0.028195847, y: 0.028275441, z: 0.0059699193} + m_DirtyAABB: 0 +--- !u!137 &137000012369293346 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012703596256} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300010, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000010715895894} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000010715895894} + m_AABB: + m_Center: {x: -0.0012377053, y: -0.019060578, z: -0.031160343} + m_Extent: {x: 0.030484837, y: 0.051344868, z: 0.035910744} + m_DirtyAABB: 0 +--- !u!137 &137000012539278394 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010176019332} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300014, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000012384171158} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000012384171158} + m_AABB: + m_Center: {x: 0.0000007287599, y: 0.000013418961, z: 0.0005103166} + m_Extent: {x: 0.0050891, y: 0.005111113, z: 0.0025862462} + m_DirtyAABB: 0 +--- !u!137 &137000012561251176 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010353348604} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300008, guid: 111c043191ef2d44a8ff0233d087d59e, type: 3} + m_Bones: + - {fileID: 4000012842689428} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000012842689428} + m_AABB: + m_Center: {x: 0.016699273, y: 0.010818437, z: -0.03636413} + m_Extent: {x: 0.05463389, y: 0.021678235, z: 0.05022069} + m_DirtyAABB: 0 +--- !u!137 &137000012577831356 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010540851970} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300012, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000013876876732} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000013876876732} + m_AABB: + m_Center: {x: 0.00000034226105, y: -0.0000009154901, z: 0.000357131} + m_Extent: {x: 0.005052495, y: 0.00505287, z: 0.0025179668} + m_DirtyAABB: 0 +--- !u!137 &137000013198274284 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011251501750} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300006, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000010715895894} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000010715895894} + m_AABB: + m_Center: {x: -0.016699273, y: 0.010818433, z: -0.03636414} + m_Extent: {x: 0.05463389, y: 0.021678232, z: 0.050220694} + m_DirtyAABB: 0 +--- !u!137 &137000013701477334 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012054331002} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300004, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000010715895894} + - {fileID: 4000013724697446} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000010715895894} + m_AABB: + m_Center: {x: -0.010547765, y: 0.0049847644, z: 0.002247721} + m_Extent: {x: 0.010899376, y: 0.010843772, z: 0.007860379} + m_DirtyAABB: 0 +--- !u!137 &137000014119152936 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011772014684} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300018, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000010768823692} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000010768823692} + m_AABB: + m_Center: {x: -0.00000026077032, y: -0.0000001359731, z: 0.00054196385} + m_Extent: {x: 0.0044898377, y: 0.004489343, z: 0.000747473} + m_DirtyAABB: 0 +--- !u!137 &137000014239696370 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010732039748} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 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_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300016, guid: 20d82fb66fc22fa40ae34d9489bd6fcd, type: 3} + m_Bones: + - {fileID: 4000010768823692} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000010768823692} + m_AABB: + m_Center: {x: 0.00004067365, y: 0.000027449336, z: 0.0012303336} + m_Extent: {x: 0.0015236207, y: 0.0021297478, z: 0.000019410509} + m_DirtyAABB: 0 diff --git a/Assets/Oculus/Avatar/Content/Prefabs/RemoteAvatar.prefab.meta b/Assets/Oculus/Avatar/Content/Prefabs/RemoteAvatar.prefab.meta new file mode 100644 index 0000000..3f7a713 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Prefabs/RemoteAvatar.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90bf33f968e6bb44ea0208fc82c90a44 +timeCreated: 1468001728 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Textures.meta b/Assets/Oculus/Avatar/Content/Textures.meta new file mode 100644 index 0000000..de6bf6a --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bdcbd118b7677cd4095ea9260191f2f6 +folderAsset: yes +timeCreated: 1536104808 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_1024.png b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_1024.png new file mode 100644 index 0000000..65ae94c Binary files /dev/null and b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_1024.png differ diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_1024.png.meta b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_1024.png.meta new file mode 100644 index 0000000..12aa695 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_1024.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 502d438d2584976448c3cdb146ed836d +timeCreated: 1518638636 +licenseType: Store +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: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_2048.png b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_2048.png new file mode 100644 index 0000000..a81806a Binary files /dev/null and b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_2048.png differ diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_2048.png.meta b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_2048.png.meta new file mode 100644 index 0000000..61ae20c --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_2048.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: b3e87b1024f5fa8408d004b398e7b0c0 +timeCreated: 1518638636 +licenseType: Store +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: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_256.png b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_256.png new file mode 100644 index 0000000..54e5283 Binary files /dev/null and b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_256.png differ diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_256.png.meta b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_256.png.meta new file mode 100644 index 0000000..69a14cd --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Textures/fallback_diffuse_roughness_256.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 7d8da3d06466cc04da8c020819170a59 +timeCreated: 1534371261 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: -1 + 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: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_normal_1024.tif b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_1024.tif new file mode 100644 index 0000000..4730a9a Binary files /dev/null and b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_1024.tif differ diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_normal_1024.tif.meta b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_1024.tif.meta new file mode 100644 index 0000000..65aa22c --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_1024.tif.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 9fb4a3be60417d043865e457a9d51e63 +timeCreated: 1518638636 +licenseType: Store +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: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_normal_2048.png b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_2048.png new file mode 100644 index 0000000..9d92996 Binary files /dev/null and b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_2048.png differ diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_normal_2048.png.meta b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_2048.png.meta new file mode 100644 index 0000000..6c93605 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_2048.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 22a046c12fc7f3c4d98a98add109fa96 +timeCreated: 1518638636 +licenseType: Store +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: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_normal_256.png b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_256.png new file mode 100644 index 0000000..28adeac Binary files /dev/null and b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_256.png differ diff --git a/Assets/Oculus/Avatar/Content/Textures/fallback_normal_256.png.meta b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_256.png.meta new file mode 100644 index 0000000..3321662 --- /dev/null +++ b/Assets/Oculus/Avatar/Content/Textures/fallback_normal_256.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 93a54b3b63bcc6d49b16f6bdb655b940 +timeCreated: 1534371337 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: -1 + 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: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Editor.meta b/Assets/Oculus/Avatar/Editor.meta new file mode 100644 index 0000000..cc144f7 --- /dev/null +++ b/Assets/Oculus/Avatar/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6f6a577c077cce945b722f02f34c29f3 +folderAsset: yes +timeCreated: 1472072258 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Editor/AvatarMaterialEditor.cs b/Assets/Oculus/Avatar/Editor/AvatarMaterialEditor.cs new file mode 100644 index 0000000..6d2d09f --- /dev/null +++ b/Assets/Oculus/Avatar/Editor/AvatarMaterialEditor.cs @@ -0,0 +1,633 @@ +using UnityEngine; +using UnityEditor; +using NUnit.Framework; +using System.Linq; +using System.Collections.Generic; +using System; + +public class AvatarMaterialEditor : MaterialEditor { + + static Dictionary layerVisibilityMasks = new Dictionary(); + const int MaxLayerCount = 8; + + private const string NormalMapPrefix = "NORMAL_MAP"; + private const string ParallaxPrefix = "PARALLAX"; + private const string RoughnessPrefix = "ROUGHNESS"; + private const string LayerKeywordPrefix = "LAYERS_"; + private const string AlphaMaskUniform = "_AlphaMask"; + private const string DarkMultUniform = "_DarkMultiplier"; + private const string BaseColorUniform = "_BaseColor"; + private const string BaseMaskTypeUniform = "_BaseMaskType"; + private const string BaseMaskParametersUniform = "_BaseMaskParameters"; + private const string BaseMaskAxisUniform = "_BaseMaskAxis"; + private const string NormalMapUniform = "_NormalMap"; + private const string ParallaxMapUniform = "_ParallaxMap"; + private const string RoughnessMapUniform = "_RoughnessMap"; + private const string LayerSurfacePrefix = "_LayerSurface"; + private const string LayerColorPrefix = "_LayerColor"; + private const string LayerSampleParametersPrefix = "_LayerSampleParameters"; + private const string LayerMaskTypePrefix = "_LayerMaskType"; + private const string LayerMaskParametersPrefix = "_LayerMaskParameters"; + private const string LayerMaskAxisPrefix = "_LayerMaskAxis"; + private const string LayerBlendModePrefix = "_LayerBlendMode"; + private const string LayerSampleModePrefix = "_LayerSampleMode"; + + enum LayerSampleMode : int + { + Color, + Texture, + TextureSingleChannel, + Parallax, + RSRM, + Count + } + static readonly string[] layerSampleModeLabels = new string[(int)LayerSampleMode.Count] { "Color", "Texture", "Texture (single channel)", "Parallax", "RSRM" }; + + enum LayerMaskType : int + { + None, + Positional, + ViewReflection, + Fresnel, + Pulse, + Count + } + static readonly string[] layerMaskTypeLabels = new string[(int)LayerMaskType.Count] { "None", "Positional", "View reflection", "Fresnel", "Pulse" }; + + enum LayerBlendMode : int + { + Add, + Multiply, + Count + } + static readonly string[] layerBlendModeLabels = new string[(int)LayerBlendMode.Count] { "Add", "Multiply" }; + + Material[] previewMaterials = new Material[MaxLayerCount]; + Vector4[,] sampleParametersCache = new Vector4[MaxLayerCount, (int)LayerSampleMode.Count]; + Vector4[][] maskParametersCache = new Vector4[MaxLayerCount][]; + Vector4[][] maskAxisCache = new Vector4[MaxLayerCount][]; + Vector4[] baseMaskParametersCache = new Vector4[(int)LayerMaskType.Count]; + Vector4[] baseMaskAxisCache = new Vector4[(int)LayerMaskType.Count]; + PreviewRenderUtility previewUtility; + Mesh previewMesh; + + static readonly Vector4 PositionalMaskDefaults = new Vector4(0.0f, 1.0f, 1.0f, 0.0f); + static readonly Vector4 ViewReflectionMaskDefaults = new Vector4(1.0f, 0.0f, 1.0f, 0.0f); + static readonly Vector4 FresnelMaskDefaults = new Vector4(1.0f, 0.0f, 1.0f, 1.0f); + static readonly Vector4 PulseMaskDefaults = new Vector4(1.0f, 0.0f, 1.0f, 0.0f); + static readonly Vector4 MaskAxisDefault = new Vector4(0.0f, 1.0f, 0.0f, 0.0f); + + void Init() + { + if (previewUtility == null) + { + previewUtility = new PreviewRenderUtility(); + GameObject gameObject = (GameObject)EditorGUIUtility.LoadRequired("Previews/PreviewMaterials.fbx"); + previewMesh = gameObject.transform.Find("sphere").GetComponent().sharedMesh; + } + + baseMaskParametersCache[(int)LayerMaskType.Positional] = PositionalMaskDefaults; + baseMaskParametersCache[(int)LayerMaskType.ViewReflection] = ViewReflectionMaskDefaults; + baseMaskParametersCache[(int)LayerMaskType.Fresnel] = FresnelMaskDefaults; + baseMaskParametersCache[(int)LayerMaskType.Pulse] = PulseMaskDefaults; + + baseMaskAxisCache[(int)LayerMaskType.Positional] = MaskAxisDefault; + baseMaskAxisCache[(int)LayerMaskType.ViewReflection] = MaskAxisDefault; + + for (int i = 0; i < MaxLayerCount; ++i) + { + sampleParametersCache[i, (int)LayerSampleMode.Color] = new Vector4(1.0f, 1.0f, 1.0f, 1.0f); + sampleParametersCache[i, (int)LayerSampleMode.Texture] = new Vector4(0.0f, 0.0f, 1.0f, 1.0f); + sampleParametersCache[i, (int)LayerSampleMode.TextureSingleChannel] = new Vector4(1.0f, 0.0f, 0.0f, 0.0f); + sampleParametersCache[i, (int)LayerSampleMode.Parallax] = new Vector4(0.0f, 1.0f, 0.0f, 0.0f); + sampleParametersCache[i, (int)LayerSampleMode.RSRM] = new Vector4(0.0f, 1.0f, 1.0f, 0.0f); + + Vector4[] parametersCache = new Vector4[(int)LayerMaskType.Count]; + parametersCache[(int)LayerMaskType.Positional] = PositionalMaskDefaults; + parametersCache[(int)LayerMaskType.ViewReflection] = ViewReflectionMaskDefaults; + parametersCache[(int)LayerMaskType.Fresnel] = FresnelMaskDefaults; + parametersCache[(int)LayerMaskType.Pulse] = PulseMaskDefaults; + maskParametersCache[i] = parametersCache; + + Vector4[] axisCache = new Vector4[(int)LayerMaskType.Count]; + axisCache[(int)LayerMaskType.Positional] = MaskAxisDefault; + axisCache[(int)LayerMaskType.ViewReflection] = MaskAxisDefault; + axisCache[(int)LayerMaskType.Pulse] = MaskAxisDefault; + maskAxisCache[i] = axisCache; + } + } + + static class AvatarMaterialEditorGUILayout + { + public static bool KeywordToggle(string label, Material material, string keywordPrefix) + { + bool isEnabled = material.IsKeywordEnabled(keywordPrefix + "_ON"); + bool newIsEnabled = EditorGUILayout.Toggle(label, isEnabled); + if (newIsEnabled != isEnabled) + { + Undo.RecordObject(material, label + " change"); + if (newIsEnabled) + { + material.EnableKeyword(keywordPrefix + "_ON"); + material.DisableKeyword(keywordPrefix + "_OFF"); + } + else + { + material.EnableKeyword(keywordPrefix + "_OFF"); + material.DisableKeyword(keywordPrefix + "_ON"); + } + } + return newIsEnabled; + } + + public static Color ColorField(string label, Material material, string propertyName) + { + Color color = material.GetColor(propertyName); + Color newColor = EditorGUILayout.ColorField(label, color); + if (newColor != color) + { + Undo.RecordObject(material, label + " change"); + material.SetColor(propertyName, newColor); + } + return newColor; + } + + internal static int IntField(string label, Material material, string propertyName, string[] valueNames) + { + int currentValue = material.GetInt(propertyName); + int newValue = EditorGUILayout.Popup(label, currentValue, valueNames); + if (newValue != currentValue) + { + Undo.RecordObject(material, label + " change"); + material.SetInt(propertyName, newValue); + } + return newValue; + } + + internal static Vector2 Vector2Field(string label, Material material, string propertyName) + { + Vector4 currentValue = material.GetVector(propertyName); + Vector2 currentVec2 = new Vector2(currentValue.x, currentValue.y); + Vector2 newVec2 = EditorGUILayout.Vector2Field(label, currentVec2); + if (newVec2 != currentVec2) + { + Undo.RecordObject(material, label + " change"); + material.SetVector(propertyName, new Vector4(newVec2.x, newVec2.y, currentValue.z, currentValue.w)); + } + return newVec2; + } + + internal static Vector3 Vector3Field(string label, Material material, string propertyName) + { + Vector4 currentValue = material.GetVector(propertyName); + Vector3 currentVec3 = new Vector3(currentValue.x, currentValue.y, currentValue.z); + Vector3 newVec3 = EditorGUILayout.Vector3Field(label, currentVec3); + if (newVec3 != currentVec3) + { + Undo.RecordObject(material, label + " change"); + material.SetVector(propertyName, new Vector4(newVec3.x, newVec3.y, newVec3.z, currentValue.w)); + } + return newVec3; + } + + internal static float VectorComponentField(string label, Material material, string propertyName, int componentIndex) + { + Vector4 currentValue = material.GetVector(propertyName); + float currentComponent = currentValue[componentIndex]; + float newComponent = EditorGUILayout.FloatField(label, currentComponent); + if (newComponent != currentComponent) + { + Undo.RecordObject(material, label + " change"); + currentValue[componentIndex] = newComponent; + material.SetVector(propertyName, currentValue); + } + return newComponent; + } + + internal static Vector4 ChannelMaskField(string label, Material material, string propertyName) + { + Vector4 currentValue = material.GetVector(propertyName); + int currentChannel = 0; + for (int i = 0; i < 4; ++i) + { + if (currentValue[i] != 0) + { + currentChannel = i; + break; + } + } + int newChannel = EditorGUILayout.IntPopup(label, currentChannel, new string[] { "R", "G", "B", "A" }, new int[] { 0, 1, 2, 3 }); + if (newChannel != currentChannel) + { + Vector4 channelMask = Vector4.zero; + channelMask[newChannel] = 1.0f; + Undo.RecordObject(material, label + " change"); + currentValue = channelMask; + material.SetVector(propertyName, currentValue); + } + return currentValue; + } + } + + void MaskField( + string label, + Material material, + string maskTypePropertyName, + string maskParametersPropertyName, + string maskAxisPropertyName, + Vector4[] axisCache, + Vector4[] parameterCache, + bool normalMapEnabled) + { + EditorGUI.BeginChangeCheck(); + LayerMaskType maskType = (LayerMaskType)AvatarMaterialEditorGUILayout.IntField(label, material, maskTypePropertyName, layerMaskTypeLabels); + if (EditorGUI.EndChangeCheck()) + { + material.SetVector(maskAxisPropertyName, axisCache[(int)maskType]); + material.SetVector(maskParametersPropertyName, parameterCache[(int)maskType]); + } + + // Show mask-specific controls + EditorGUI.BeginChangeCheck(); + switch (maskType) + { + case LayerMaskType.Positional: + AvatarMaterialEditorGUILayout.Vector3Field("Axis", material, maskAxisPropertyName); + AvatarMaterialEditorGUILayout.VectorComponentField("Center distance", material, maskParametersPropertyName, 0); + AvatarMaterialEditorGUILayout.VectorComponentField("Fade above", material, maskParametersPropertyName, 1); + AvatarMaterialEditorGUILayout.VectorComponentField("Fade below", material, maskParametersPropertyName, 2); + break; + case LayerMaskType.ViewReflection: + AvatarMaterialEditorGUILayout.Vector3Field("Axis", material, maskAxisPropertyName); + AvatarMaterialEditorGUILayout.VectorComponentField("Fade begin", material, maskParametersPropertyName, 0); + AvatarMaterialEditorGUILayout.VectorComponentField("Fade end", material, maskParametersPropertyName, 1); + if (normalMapEnabled) + { + AvatarMaterialEditorGUILayout.VectorComponentField("Normal map strength", material, maskParametersPropertyName, 2); + } + break; + case LayerMaskType.Fresnel: + AvatarMaterialEditorGUILayout.VectorComponentField("Power", material, maskParametersPropertyName, 0); + AvatarMaterialEditorGUILayout.VectorComponentField("Fade begin", material, maskParametersPropertyName, 1); + AvatarMaterialEditorGUILayout.VectorComponentField("Fade end", material, maskParametersPropertyName, 2); + if (normalMapEnabled) + { + AvatarMaterialEditorGUILayout.VectorComponentField("Normal map strength", material, maskParametersPropertyName, 3); + } + break; + case LayerMaskType.Pulse: + AvatarMaterialEditorGUILayout.Vector3Field("Axis", material, maskAxisPropertyName); + AvatarMaterialEditorGUILayout.VectorComponentField("Pulse distance", material, maskParametersPropertyName, 0); + AvatarMaterialEditorGUILayout.VectorComponentField("Pulse speed", material, maskParametersPropertyName, 1); + AvatarMaterialEditorGUILayout.VectorComponentField("Power", material, maskParametersPropertyName, 2); + break; + } + if (EditorGUI.EndChangeCheck()) + { + parameterCache[(int)maskType] = material.GetVector(maskParametersPropertyName); + axisCache[(int)maskType] = material.GetVector(maskAxisPropertyName); + } + } + + public override void OnInspectorGUI() + { + Init(); + if (!isVisible) + { + return; + } + SetDefaultGUIWidths(); + + Material material = target as Material; + int layerCount = MaxLayerCount; + while (layerCount > 0 && !material.IsKeywordEnabled(GetPropertyName(LayerKeywordPrefix, layerCount))) + { + --layerCount; + } + if (layerCount == 0) + { + layerCount = 1; + material.EnableKeyword("LAYERS_" + layerCount); + } + + EditorGUILayout.LabelField("Global material properties"); + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + TextureField("AlphaMask", material, AlphaMaskUniform); + AvatarMaterialEditorGUILayout.ColorField("DarkMultiplier", material, DarkMultUniform); + AvatarMaterialEditorGUILayout.ColorField("BaseColor", material, BaseColorUniform); + bool normalMapEnabled = AvatarMaterialEditorGUILayout.KeywordToggle("Normal map enabled", material, NormalMapPrefix); + if (normalMapEnabled) + { + TextureField("Normal map", material, NormalMapUniform); + } + bool parallaxEnabled = AvatarMaterialEditorGUILayout.KeywordToggle("Parallax enabled", material, ParallaxPrefix); + if (parallaxEnabled) + { + TextureField("Parallax map", material, ParallaxMapUniform); + } + bool roughnessEnabled = AvatarMaterialEditorGUILayout.KeywordToggle("Roughness enabled", material, RoughnessPrefix); + if (roughnessEnabled) + { + TextureField("Roughness map", material, RoughnessMapUniform); + } + + MaskField("Base mask type", material, BaseMaskTypeUniform, BaseMaskParametersUniform, BaseMaskAxisUniform, baseMaskAxisCache, baseMaskParametersCache, normalMapEnabled); + + EditorGUILayout.EndVertical(); + + int layerVisibilityMask = 0; + layerVisibilityMasks.TryGetValue(material, out layerVisibilityMask); + + EditorGUILayout.LabelField("Layers"); + EditorGUI.indentLevel++; + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + int? removeLayerIndex = null; + int? swapSource = null; + int? swapTarget = null; + for (int i = 0; i < layerCount; ++i) + { + + // Draw the preview material + if (previewMaterials[i] == null) + previewMaterials[i] = CreatePreviewMaterial(material, i); + + const int previewSize = 64; + const int buttonSize = 20; + Rect layerHeaderRect = GUILayoutUtility.GetRect(previewSize, previewSize, GUILayout.ExpandWidth(true)); + + // Draw the preview texture +#if UNITY_2017_1_OR_NEWER + Camera cam = previewUtility.camera; +#else + Camera cam = previewUtility.m_Camera; +#endif + cam.transform.position = Vector3.forward * 5.0f; + cam.transform.rotation = Quaternion.identity; + cam.transform.LookAt(Vector3.zero); + previewUtility.BeginStaticPreview(new Rect(0, 0, previewSize, previewSize)); + previewUtility.DrawMesh(previewMesh, Vector3.zero, Quaternion.identity, previewMaterials[i], 0); + cam.Render(); + Texture preview = previewUtility.EndStaticPreview(); + GUI.Label(new Rect(layerHeaderRect.xMax - previewSize - buttonSize, layerHeaderRect.y, previewSize, previewSize), preview); + + float yButton = layerHeaderRect.y; + EditorGUI.BeginDisabledGroup(layerCount <= 1); + if (GUI.Button(new Rect(layerHeaderRect.xMax - buttonSize, yButton, buttonSize, buttonSize), new GUIContent("X", "Remove layer"))) + { + removeLayerIndex = i; + } + yButton += buttonSize + 4; + EditorGUI.EndDisabledGroup(); + + EditorGUI.BeginDisabledGroup(i == 0); + if (GUI.Button(new Rect(layerHeaderRect.xMax - buttonSize, yButton, buttonSize, buttonSize), new GUIContent("^", "Move layer up"))) + { + swapSource = i; + swapTarget = i - 1; + } + yButton += buttonSize; + EditorGUI.EndDisabledGroup(); + + EditorGUI.BeginDisabledGroup(i == layerCount - 1); + if (GUI.Button(new Rect(layerHeaderRect.xMax - buttonSize, yButton, buttonSize, buttonSize), new GUIContent("v", "Move layer down"))) + { + swapSource = i; + swapTarget = i + 1; + } + yButton += buttonSize; + EditorGUI.EndDisabledGroup(); + + // Create a toggleable group for the layer + int layerMaskBit = 1 << i; + bool layerVisible = (layerVisibilityMask & layerMaskBit) != 0; + layerVisible = EditorGUI.Foldout(layerHeaderRect, layerVisible, string.Format("Layer {0}", i + 1)); + + if (layerVisible) + layerVisibilityMask |= layerMaskBit; + else + layerVisibilityMask &= ~layerMaskBit; + if (layerVisible) + { + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + EditorGUI.BeginChangeCheck(); + { + // Handle the blend mode + AvatarMaterialEditorGUILayout.IntField("Blend mode", material, GetPropertyName(LayerBlendModePrefix, i), layerBlendModeLabels); + + // Handle the sample mode selector + string layerSampleParametersProperty = GetPropertyName(LayerSampleParametersPrefix, i); + EditorGUI.BeginChangeCheck(); + LayerSampleMode sampleMode = (LayerSampleMode)AvatarMaterialEditorGUILayout.IntField("Sample mode", material, GetPropertyName(LayerSampleModePrefix, i), layerSampleModeLabels); + if (EditorGUI.EndChangeCheck()) + { + material.SetVector(layerSampleParametersProperty, sampleParametersCache[i, (int)sampleMode]); + } + + // Show the mode-specific sample controls + EditorGUI.BeginChangeCheck(); + AvatarMaterialEditorGUILayout.ColorField("Surface color", material, GetPropertyName(LayerColorPrefix, i)); + switch (sampleMode) { + case LayerSampleMode.Texture: + TextureField("Surface texture", material, GetPropertyName(LayerSurfacePrefix, i)); + AvatarMaterialEditorGUILayout.Vector2Field("Panning speed", material, layerSampleParametersProperty); + break; + case LayerSampleMode.TextureSingleChannel: + TextureField("Surface texture", material, GetPropertyName(LayerSurfacePrefix, i)); + AvatarMaterialEditorGUILayout.ChannelMaskField("Channel", material, layerSampleParametersProperty); + break; + case LayerSampleMode.Parallax: + TextureField("Surface texture", material, GetPropertyName(LayerSurfacePrefix, i)); + AvatarMaterialEditorGUILayout.VectorComponentField("Parallax min height", material, layerSampleParametersProperty, 0); + AvatarMaterialEditorGUILayout.VectorComponentField("Parallax max height", material, layerSampleParametersProperty, 1); + break; + case LayerSampleMode.RSRM: + TextureField("RSRM texture", material, GetPropertyName(LayerSurfacePrefix, i)); + if (roughnessEnabled) + { + AvatarMaterialEditorGUILayout.VectorComponentField("Roughness min", material, layerSampleParametersProperty, 0); + AvatarMaterialEditorGUILayout.VectorComponentField("Roughness max", material, layerSampleParametersProperty, 1); + } + else + { + AvatarMaterialEditorGUILayout.VectorComponentField("Roughness", material, layerSampleParametersProperty, 0); + } + if (normalMapEnabled) + { + AvatarMaterialEditorGUILayout.VectorComponentField("Normal map strength", material, layerSampleParametersProperty, 2); + } + break; + } + if (EditorGUI.EndChangeCheck()) + { + sampleParametersCache[i, (int)sampleMode] = material.GetVector(layerSampleParametersProperty); + } + + // Handle the mask mode selector + string maskParametersName = GetPropertyName(LayerMaskParametersPrefix, i); + string maskAxisName = GetPropertyName(LayerMaskAxisPrefix, i); + MaskField("Mask Type", material, GetPropertyName(LayerMaskTypePrefix, i), maskParametersName, maskAxisName, maskAxisCache[i], maskParametersCache[i], normalMapEnabled); + } + if (EditorGUI.EndChangeCheck()) + { + previewMaterials[i] = null; + } + EditorGUILayout.EndVertical(); + } + } + layerVisibilityMasks[material] = layerVisibilityMask; + + if (layerCount < MaxLayerCount) + { + if (GUILayout.Button("Add layer")) + { + Undo.RecordObject(material, "Add layer"); + SetLayerCount(material, layerCount + 1); + removeLayerIndex = null; + } + } + if (removeLayerIndex.HasValue) + { + Undo.RecordObject(material, "Remove layer"); + for (int i = removeLayerIndex.Value; i < layerCount - 1; ++i) + { + CopyAttributes(material, i + 1, i); + } + SetLayerCount(material, layerCount - 1); + } + if (swapSource.HasValue && swapTarget.HasValue) + { + Undo.RecordObject(material, string.Format("Swap layers {1} and {0}", swapSource.Value, swapTarget.Value)); + SwapAttributes(material, swapSource.Value, swapTarget.Value); + } + + EditorGUI.indentLevel--; + EditorGUILayout.EndVertical(); + EditorUtility.SetDirty(target); + } + + public Texture TextureField(string label, Material material, string propertyName) + { + Texture texture = material.GetTexture(propertyName); + MaterialProperty property = MaterialEditor.GetMaterialProperty(new[] { material }, propertyName); + Texture newTexture = base.TextureProperty(property, label); + if (newTexture != texture) + { + Undo.RecordObject(material, label + " change"); + material.SetTexture(propertyName, newTexture); + } + return newTexture; + } + + private Material CreatePreviewMaterial(Material material, int layerIndex) + { + Material previewMaterial = new Material(material); + CopyAttributes(previewMaterial, layerIndex, 0); + SetLayerCount(previewMaterial, 1); + previewMaterial.SetVector(DarkMultUniform, new Vector4(0.6f, 0.6f, 0.6f, 1.0f)); + previewMaterial.SetVector(BaseColorUniform, new Vector4(0.0f, 0.0f, 0.0f, 1.0f)); + previewMaterial.SetTexture(AlphaMaskUniform, EditorGUIUtility.whiteTexture); + return previewMaterial; + } + + private void SetLayerCount(Material material, int layerCount) + { + for (int i = 0; i < MaxLayerCount; ++i) + { + string layerCountProperty = GetPropertyName("LAYERS_", i + 1); + if (i + 1 == layerCount) + material.EnableKeyword(layerCountProperty); + else + material.DisableKeyword(layerCountProperty); + } + } + + private static string GetPropertyName(string baseName, int index) + { + return string.Format("{0}{1}", baseName, index); + } + + class LayerAttributes + { + public Texture surface { get; private set; } + public Color color { get; private set; } + public LayerMaskType maskType { get; private set; } + public Vector4 maskParameters { get; private set; } + public Vector4 maskAxis { get; private set; } + public LayerSampleMode sampleMode { get; private set; } + public Vector4 sampleParameters { get; private set; } + public LayerBlendMode blendMode { get; private set; } + public LayerAttributes() + { + this.surface = null; + this.color = Color.white; + this.maskType = (int)LayerMaskType.None; + this.maskParameters = Vector4.zero; + this.maskAxis = new Vector4(0.0f, 1.0f, 0.0f, 0.0f); + this.sampleMode = (int)LayerSampleMode.Color; + this.sampleParameters = new Vector4(1.0f, 1.0f, 1.0f, 1.0f); + this.blendMode = (int)LayerBlendMode.Add; + } + public LayerAttributes( + Texture surface, + Color color, + LayerMaskType maskType, + Vector3 maskParameters, + Vector4 maskAxis, + LayerSampleMode sampleMode, + Vector4 sampleParameters, + LayerBlendMode blendMode + ) { + this.surface = surface; + this.color = color; + this.maskType = maskType; + this.maskParameters = maskParameters; + this.maskAxis = maskAxis; + this.sampleMode = sampleMode; + this.sampleParameters = sampleParameters; + this.blendMode = blendMode; + } + } + + private void CopyAttributes(Material material, int sourceIndex, int targetIndex) + { + LayerAttributes attributes = GetLayerAttributes(material, sourceIndex); + SetLayerAttributes(material, targetIndex, attributes); + previewMaterials[targetIndex] = null; + } + + private void SwapAttributes(Material material, int sourceIndex, int targetIndex) + { + LayerAttributes sourceAttributes = GetLayerAttributes(material, sourceIndex); + LayerAttributes targetAttributes = GetLayerAttributes(material, targetIndex); + SetLayerAttributes(material, sourceIndex, targetAttributes); + SetLayerAttributes(material, targetIndex, sourceAttributes); + previewMaterials[sourceIndex] = null; + previewMaterials[targetIndex] = null; + } + + private static LayerAttributes GetLayerAttributes(Material material, int layerIndex) + { + return new LayerAttributes( + material.GetTexture(GetPropertyName(LayerSurfacePrefix, layerIndex)), + material.GetColor(GetPropertyName(LayerColorPrefix, layerIndex)), + (LayerMaskType)material.GetInt(GetPropertyName(LayerMaskTypePrefix, layerIndex)), + material.GetVector(GetPropertyName(LayerMaskParametersPrefix, layerIndex)), + material.GetVector(GetPropertyName(LayerMaskAxisPrefix, layerIndex)), + (LayerSampleMode)material.GetInt(GetPropertyName(LayerSampleModePrefix, layerIndex)), + material.GetVector(GetPropertyName(LayerSampleParametersPrefix, layerIndex)), + (LayerBlendMode)material.GetInt(GetPropertyName(LayerBlendModePrefix, layerIndex)) + ); + } + + private static void SetLayerAttributes(Material material, int layerIndex, LayerAttributes attributes) + { + material.SetTexture(GetPropertyName(LayerSurfacePrefix, layerIndex), attributes.surface); + material.SetColor(GetPropertyName(LayerColorPrefix, layerIndex), attributes.color); + material.SetInt(GetPropertyName(LayerMaskTypePrefix, layerIndex), (int)attributes.maskType); + material.SetVector(GetPropertyName(LayerMaskParametersPrefix, layerIndex), attributes.maskParameters); + material.SetVector(GetPropertyName(LayerMaskAxisPrefix, layerIndex), attributes.maskAxis); + material.SetInt(GetPropertyName(LayerSampleModePrefix, layerIndex), (int)attributes.sampleMode); + material.SetVector(GetPropertyName(LayerSampleParametersPrefix, layerIndex), attributes.sampleParameters); + material.SetInt(GetPropertyName(LayerBlendModePrefix, layerIndex), (int)attributes.blendMode); + } +} diff --git a/Assets/Oculus/Avatar/Editor/AvatarMaterialEditor.cs.meta b/Assets/Oculus/Avatar/Editor/AvatarMaterialEditor.cs.meta new file mode 100644 index 0000000..e64ea04 --- /dev/null +++ b/Assets/Oculus/Avatar/Editor/AvatarMaterialEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fdddb32bde2072f4da6baf73fd9ebddc +timeCreated: 1470865818 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Plugins.meta b/Assets/Oculus/Avatar/Plugins.meta new file mode 100644 index 0000000..ca52fad --- /dev/null +++ b/Assets/Oculus/Avatar/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7e0c9e63876be544fb12244c66f5bced +folderAsset: yes +timeCreated: 1522867061 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Plugins/Android32.meta b/Assets/Oculus/Avatar/Plugins/Android32.meta new file mode 100644 index 0000000..b4ad94c --- /dev/null +++ b/Assets/Oculus/Avatar/Plugins/Android32.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c75924ae6be2e4d4a8c9021c599ac872 +folderAsset: yes +timeCreated: 1522867080 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Plugins/Android32/libovravatarloader.so b/Assets/Oculus/Avatar/Plugins/Android32/libovravatarloader.so new file mode 100644 index 0000000..094f389 Binary files /dev/null and b/Assets/Oculus/Avatar/Plugins/Android32/libovravatarloader.so differ diff --git a/Assets/Oculus/Avatar/Plugins/Android32/libovravatarloader.so.meta b/Assets/Oculus/Avatar/Plugins/Android32/libovravatarloader.so.meta new file mode 100644 index 0000000..146b37b --- /dev/null +++ b/Assets/Oculus/Avatar/Plugins/Android32/libovravatarloader.so.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: 0dc1a28a4f6367642b859b703b901f30 +timeCreated: 1516392277 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Android: + enabled: 1 + settings: + CPU: ARMv7 + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources.meta b/Assets/Oculus/Avatar/Resources.meta new file mode 100644 index 0000000..4999339 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3eeca1466db69a046849a21351c6ab64 +folderAsset: yes +timeCreated: 1536104808 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials.meta b/Assets/Oculus/Avatar/Resources/Materials.meta new file mode 100644 index 0000000..a546714 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a082ff1bb115495438c0dbd2a47e2b0f +folderAsset: yes +timeCreated: 1525971172 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarMaterialStateShader.cginc b/Assets/Oculus/Avatar/Resources/Materials/AvatarMaterialStateShader.cginc new file mode 100644 index 0000000..6b37b13 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarMaterialStateShader.cginc @@ -0,0 +1,318 @@ +#ifndef AVATAR_UTIL_CG_INCLUDED +#define AVATAR_UTIL_CG_INCLUDED + +#include "UnityCG.cginc" + +#define SAMPLE_MODE_COLOR 0 +#define SAMPLE_MODE_TEXTURE 1 +#define SAMPLE_MODE_TEXTURE_SINGLE_CHANNEL 2 +#define SAMPLE_MODE_PARALLAX 3 +#define SAMPLE_MODE_RSRM 4 + +#define MASK_TYPE_NONE 0 +#define MASK_TYPE_POSITIONAL 1 +#define MASK_TYPE_REFLECTION 2 +#define MASK_TYPE_FRESNEL 3 +#define MASK_TYPE_PULSE 4 + +#define BLEND_MODE_ADD 0 +#define BLEND_MODE_MULTIPLY 1 + +#ifdef LAYERS_1 +#define LAYER_COUNT 1 +#elif LAYERS_2 +#define LAYER_COUNT 2 +#elif LAYERS_3 +#define LAYER_COUNT 3 +#elif LAYERS_4 +#define LAYER_COUNT 4 +#elif LAYERS_5 +#define LAYER_COUNT 5 +#elif LAYERS_6 +#define LAYER_COUNT 6 +#elif LAYERS_7 +#define LAYER_COUNT 7 +#elif LAYERS_8 +#define LAYER_COUNT 8 +#endif + +#define DECLARE_LAYER_UNIFORMS(index) \ + int _LayerSampleMode##index; \ + int _LayerBlendMode##index; \ + int _LayerMaskType##index; \ + fixed4 _LayerColor##index; \ + sampler2D _LayerSurface##index; \ + float4 _LayerSurface##index##_ST; \ + float4 _LayerSampleParameters##index; \ + float4 _LayerMaskParameters##index; \ + float4 _LayerMaskAxis##index; + +DECLARE_LAYER_UNIFORMS(0) +DECLARE_LAYER_UNIFORMS(1) +DECLARE_LAYER_UNIFORMS(2) +DECLARE_LAYER_UNIFORMS(3) +DECLARE_LAYER_UNIFORMS(4) +DECLARE_LAYER_UNIFORMS(5) +DECLARE_LAYER_UNIFORMS(6) +DECLARE_LAYER_UNIFORMS(7) + +struct VertexOutput +{ + float4 pos : SV_POSITION; + float2 texcoord : TEXCOORD0; + float3 worldPos : TEXCOORD1; + float3 worldNormal : TEXCOORD2; + float3 viewDir : TEXCOORD3; + float4 vertColor : COLOR; + +#if NORMAL_MAP_ON || PARALLAX_ON + float3 worldTangent : TANGENT; + float3 worldBitangent : TEXCOORD5; +#endif +}; + +float _Alpha; +int _BaseMaskType; +float4 _BaseMaskParameters; +float4 _BaseMaskAxis; +fixed4 _DarkMultiplier; +fixed4 _BaseColor; +sampler2D _AlphaMask; +float4 _AlphaMask_ST; +sampler2D _AlphaMask2; +float4 _AlphaMask2_ST; +sampler2D _NormalMap; +float4 _NormalMap_ST; +sampler2D _ParallaxMap; +float4 _ParallaxMap_ST; +sampler2D _RoughnessMap; +float4 _RoughnessMap_ST; +float4x4 _ProjectorWorldToLocal; + +VertexOutput vert(appdata_full v) +{ + VertexOutput o; + UNITY_INITIALIZE_OUTPUT(VertexOutput, o); + + o.texcoord = v.texcoord.xy; + o.worldPos = mul(unity_ObjectToWorld, v.vertex); + o.vertColor = v.color; + o.viewDir = normalize(_WorldSpaceCameraPos.xyz - o.worldPos); + o.worldNormal = normalize(mul(unity_ObjectToWorld, float4(v.normal, 0.0)).xyz); + +#if NORMAL_MAP_ON || PARALLAX_ON + o.worldTangent = normalize(mul(unity_ObjectToWorld, float4(v.tangent.xyz, 0.0)).xyz); + o.worldBitangent = normalize(cross(o.worldNormal, o.worldTangent) * v.tangent.w); +#endif + + o.pos = UnityObjectToClipPos(v.vertex); + return o; +} + +#ifndef NORMAL_MAP_ON +#define COMPUTE_NORMAL IN.worldNormal +#else +#define COMPUTE_NORMAL normalize(mul(lerp(float3(0, 0, 1), surfaceNormal, normalMapStrength), tangentTransform)) +#endif + +float3 ComputeColor( + VertexOutput IN, + float2 uv, +#if PARALLAX_ON || NORMAL_MAP_ON + float3x3 tangentTransform, +#endif +#ifdef NORMAL_MAP_ON + float3 surfaceNormal, +#endif + sampler2D surface, + float4 surface_ST, + fixed4 color, + int sampleMode, + float4 sampleParameters +) { + if (sampleMode == SAMPLE_MODE_TEXTURE) { + float2 panning = _Time.g * sampleParameters.xy; + return tex2D(surface, (uv + panning) * surface_ST.xy + surface_ST.zw).rgb * color.rgb; + } + else if (sampleMode == SAMPLE_MODE_TEXTURE_SINGLE_CHANNEL) { + float4 channelMask = sampleParameters; + float4 channels = tex2D(surface, uv * surface_ST.xy + surface_ST.zw); + return dot(channels, channelMask) * color.rgb; + } +#ifdef PARALLAX_ON + else if (sampleMode == SAMPLE_MODE_PARALLAX) { + float parallaxMinHeight = sampleParameters.x; + float parallaxMaxHeight = sampleParameters.y; + float parallaxValue = tex2D(_ParallaxMap, TRANSFORM_TEX(uv, _ParallaxMap)).r; + float scaledHeight = lerp(parallaxMinHeight, parallaxMaxHeight, parallaxValue); + float2 parallaxUV = mul(tangentTransform, IN.viewDir).xy * scaledHeight; + return tex2D(surface, (uv * surface_ST.xy + surface_ST.zw) + parallaxUV).rgb * color.rgb; + } +#endif + else if (sampleMode == SAMPLE_MODE_RSRM) { + float roughnessMin = sampleParameters.x; + float roughnessMax = sampleParameters.y; +#ifdef ROUGHNESS_ON + float roughnessValue = tex2D(_RoughnessMap, TRANSFORM_TEX(uv, _RoughnessMap)).r; + float scaledRoughness = lerp(roughnessMin, roughnessMax, roughnessValue); +#else + float scaledRoughness = roughnessMin; +#endif + +#ifdef NORMAL_MAP_ON + float normalMapStrength = sampleParameters.z; +#endif + float3 viewReflect = reflect(-IN.viewDir, COMPUTE_NORMAL); + float viewAngle = viewReflect.y * 0.5 + 0.5; + return tex2D(surface, float2(scaledRoughness, viewAngle)).rgb * color.rgb; + } + return color.rgb; +} + +float ComputeMask( + VertexOutput IN, +#ifdef NORMAL_MAP_ON + float3x3 tangentTransform, + float3 surfaceNormal, +#endif + int maskType, + float4 layerParameters, + float3 maskAxis +) { + if (maskType == MASK_TYPE_POSITIONAL) { + float centerDistance = layerParameters.x; + float fadeAbove = layerParameters.y; + float fadeBelow = layerParameters.z; + float3 objPos = mul(unity_WorldToObject, float4(IN.worldPos, 1.0)).xyz; + float d = dot(objPos, maskAxis); + if (d > centerDistance) { + return saturate(1.0 - (d - centerDistance) / fadeAbove); + } + else { + return saturate(1.0 - (centerDistance - d) / fadeBelow); + } + } + else if (maskType == MASK_TYPE_REFLECTION) { + float fadeStart = layerParameters.x; + float fadeEnd = layerParameters.y; +#ifdef NORMAL_MAP_ON + float normalMapStrength = layerParameters.z; +#endif + float power = layerParameters.w; + float3 viewReflect = reflect(-IN.viewDir, COMPUTE_NORMAL); + float d = max(0.0, dot(viewReflect, maskAxis)); + return saturate(1.0 - (d - fadeStart) / (fadeEnd - fadeStart)); + } + else if (maskType == MASK_TYPE_FRESNEL) { + float power = layerParameters.x; + float fadeStart = layerParameters.y; + float fadeEnd = layerParameters.z; +#ifdef NORMAL_MAP_ON + float normalMapStrength = layerParameters.w; +#endif + float d = saturate(1.0 - max(0.0, dot(IN.viewDir, COMPUTE_NORMAL))); + float p = pow(d, power); + return saturate(lerp(fadeStart, fadeEnd, p)); + } + else if (maskType == MASK_TYPE_PULSE) { + float distance = layerParameters.x; + float speed = layerParameters.y; + float power = layerParameters.z; + float3 objPos = mul(unity_WorldToObject, float4(IN.worldPos, 1.0)).xyz; + float d = dot(objPos, maskAxis); + float theta = 6.2831 * frac((d - _Time.g * speed) / distance); + return saturate(pow((sin(theta) * 0.5 + 0.5), power)); + } + else { + return 1.0; + } +} + +float3 ComputeBlend(float3 source, float3 blend, float mask, int blendMode) { + if (blendMode == BLEND_MODE_MULTIPLY) { + return source * (blend * mask); + } + else { + return source + (blend * mask); + } +} + +float4 ComputeSurface(VertexOutput IN) +{ +#if PROJECTOR_ON + float3 projectorPos = mul(_ProjectorWorldToLocal, float4(IN.worldPos, 1.0)).xyz; + if (abs(projectorPos.x) > 1.0 || abs(projectorPos.y) > 1.0 || abs(projectorPos.z) > 1.0) + { + discard; + } + float2 uv = projectorPos.xy * 0.5 + 0.5; +#else + float2 uv = IN.texcoord.xy; +#endif + + fixed4 c = _BaseColor; + IN.worldNormal = normalize(IN.worldNormal); + +#if PARALLAX_ON || NORMAL_MAP_ON + float3x3 tangentTransform = float3x3(IN.worldTangent, IN.worldBitangent, IN.worldNormal); +#endif + +#ifdef NORMAL_MAP_ON + float3 surfaceNormal = UnpackNormal(tex2D(_NormalMap, TRANSFORM_TEX(uv, _NormalMap))); +#endif + +#if PARALLAX_ON || NORMAL_MAP_ON +#ifndef NORMAL_MAP_ON +#define COLOR_INPUTS IN, uv, tangentTransform +#define MASK_INPUTS IN +#else +#define COLOR_INPUTS IN, uv, tangentTransform, surfaceNormal +#define MASK_INPUTS IN, tangentTransform, surfaceNormal +#endif +#else +#define COLOR_INPUTS IN, uv +#define MASK_INPUTS IN +#endif + +#define LAYER_COLOR(index) ComputeColor(COLOR_INPUTS, _LayerSurface##index, _LayerSurface##index##_ST, _LayerColor##index, _LayerSampleMode##index, _LayerSampleParameters##index) +#define LAYER_MASK(index) ComputeMask(MASK_INPUTS, _LayerMaskType##index, _LayerMaskParameters##index, _LayerMaskAxis##index##.xyz) +#define LAYER_BLEND(index, c) ComputeBlend(c, LAYER_COLOR(index), LAYER_MASK(index), _LayerBlendMode##index) + + c.rgb = LAYER_BLEND(0, c.rgb); +#if LAYER_COUNT > 1 + c.rgb = LAYER_BLEND(1, c.rgb); +#endif +#if LAYER_COUNT > 2 + c.rgb = LAYER_BLEND(2, c.rgb); +#endif +#if LAYER_COUNT > 3 + c.rgb = LAYER_BLEND(3, c.rgb); +#endif +#if LAYER_COUNT > 4 + c.rgb = LAYER_BLEND(4, c.rgb); +#endif +#if LAYER_COUNT > 5 + c.rgb = LAYER_BLEND(5, c.rgb); +#endif +#if LAYER_COUNT > 6 + c.rgb = LAYER_BLEND(6, c.rgb); +#endif +#if LAYER_COUNT > 7 + c.rgb = LAYER_BLEND(7, c.rgb); +#endif + +#ifdef VERTALPHA_ON + float scaledValue = IN.vertColor.a * 2.0; + float alpha0weight = max(0.0, 1.0 - scaledValue); + float alpha2weight = max(0.0, scaledValue - 1.0); + float alpha1weight = 1.0 - alpha0weight - alpha2weight; + c.a = _Alpha * c.a * (tex2D(_AlphaMask, TRANSFORM_TEX(uv, _AlphaMask)).r * alpha1weight + tex2D(_AlphaMask2, TRANSFORM_TEX(uv, _AlphaMask2)).r * alpha2weight + alpha0weight) * ComputeMask(MASK_INPUTS, _BaseMaskType, _BaseMaskParameters, _BaseMaskAxis); +#else + c.a = _Alpha * c.a * tex2D(_AlphaMask, TRANSFORM_TEX(uv, _AlphaMask)).r * IN.vertColor.a * ComputeMask(MASK_INPUTS, _BaseMaskType, _BaseMaskParameters, _BaseMaskAxis); +#endif + c.rgb = lerp(c.rgb, c.rgb * _DarkMultiplier, IN.vertColor.r); + + return c; +} + +#endif diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarMaterialStateShader.cginc.meta b/Assets/Oculus/Avatar/Resources/Materials/AvatarMaterialStateShader.cginc.meta new file mode 100644 index 0000000..523b6c7 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarMaterialStateShader.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 80b6b34e742970d4bb0cdef9c74b04ae +timeCreated: 1525971186 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShader.shader b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShader.shader new file mode 100644 index 0000000..c3d6254 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShader.shader @@ -0,0 +1,141 @@ +Shader "OvrAvatar/AvatarSurfaceShader" { + Properties{ + // Global parameters + _Alpha("Alpha", Range(0.0, 1.0)) = 1.0 + _DarkMultiplier("Dark Multiplier", Color) = (0.6, 0.6, 0.6, 1.0) + _BaseColor("Base Color", Color) = (0.0, 0.0, 0.0, 0.0) + _BaseMaskType("Base Mask Type", Int) = 0 + _BaseMaskParameters("Base Mask Parameters", Vector) = (0, 0, 0, 0) + _BaseMaskAxis("Base Mask Axis", Vector) = (0, 1, 0, 0) + _AlphaMask("Alpha Mask", 2D) = "white" {} + _NormalMap("Normal Map", 2D) = "" {} + _ParallaxMap("Parallax Map", 2D) = "" {} + _RoughnessMap("Roughness Map", 2D) = "" {} + + // Layer 0 parameters + _LayerSampleMode0("Layer Sample Mode 0", Int) = 0 + _LayerBlendMode0("Layer Blend Mode 0", Int) = 0 + _LayerMaskType0("Layer Mask Type 0", Int) = 0 + _LayerColor0("Layer Color 0", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface0("Layer Surface 0", 2D) = "" {} + _LayerSampleParameters0("Layer Sample Parameters 0", Vector) = (0, 0, 0, 0) + _LayerMaskParameters0("Layer Mask Parameters 0", Vector) = (0, 0, 0, 0) + _LayerMaskAxis0("Layer Mask Axis 0", Vector) = (0, 1, 0, 0) + + // Layer 1 parameters + _LayerSampleMode1("Layer Sample Mode 1", Int) = 0 + _LayerBlendMode1("Layer Blend Mode 1", Int) = 0 + _LayerMaskType1("Layer Mask Type 1", Int) = 0 + _LayerColor1("Layer Color 1", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface1("Layer Surface 1", 2D) = "" {} + _LayerSampleParameters1("Layer Sample Parameters 1", Vector) = (0, 0, 0, 0) + _LayerMaskParameters1("Layer Mask Parameters 1", Vector) = (0, 0, 0, 0) + _LayerMaskAxis1("Layer Mask Axis 1", Vector) = (0, 1, 0, 0) + + // Layer 2 parameters + _LayerSampleMode2("Layer Sample Mode 2", Int) = 0 + _LayerBlendMode2("Layer Blend Mode 2", Int) = 0 + _LayerMaskType2("Layer Mask Type 2", Int) = 0 + _LayerColor2("Layer Color 2", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface2("Layer Surface 2", 2D) = "" {} + _LayerSampleParameters2("Layer Sample Parameters 2", Vector) = (0, 0, 0, 0) + _LayerMaskParameters2("Layer Mask Parameters 2", Vector) = (0, 0, 0, 0) + _LayerMaskAxis2("Layer Mask Axis 2", Vector) = (0, 1, 0, 0) + + // Layer 3 parameters + _LayerSampleMode3("Layer Sample Mode 3", Int) = 0 + _LayerBlendMode3("Layer Blend Mode 3", Int) = 0 + _LayerMaskType3("Layer Mask Type 3", Int) = 0 + _LayerColor3("Layer Color 3", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface3("Layer Surface 3", 2D) = "" {} + _LayerSampleParameters3("Layer Sample Parameters 3", Vector) = (0, 0, 0, 0) + _LayerMaskParameters3("Layer Mask Parameters 3", Vector) = (0, 0, 0, 0) + _LayerMaskAxis3("Layer Mask Axis 3", Vector) = (0, 1, 0, 0) + + // Layer 4 parameters + _LayerSampleMode4("Layer Sample Mode 4", Int) = 0 + _LayerBlendMode4("Layer Blend Mode 4", Int) = 0 + _LayerMaskType4("Layer Mask Type 4", Int) = 0 + _LayerColor4("Layer Color 4", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface4("Layer Surface 4", 2D) = "" {} + _LayerSampleParameters4("Layer Sample Parameters 4", Vector) = (0, 0, 0, 0) + _LayerMaskParameters4("Layer Mask Parameters 4", Vector) = (0, 0, 0, 0) + _LayerMaskAxis4("Layer Mask Axis 4", Vector) = (0, 1, 0, 0) + + // Layer 5 parameters + _LayerSampleMode5("Layer Sample Mode 5", Int) = 0 + _LayerBlendMode5("Layer Blend Mode 5", Int) = 0 + _LayerMaskType5("Layer Mask Type 5", Int) = 0 + _LayerColor5("Layer Color 5", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface5("Layer Surface 5", 2D) = "" {} + _LayerSampleParameters5("Layer Sample Parameters 5", Vector) = (0, 0, 0, 0) + _LayerMaskParameters5("Layer Mask Parameters 5", Vector) = (0, 0, 0, 0) + _LayerMaskAxis5("Layer Mask Axis 5", Vector) = (0, 1, 0, 0) + + // Layer 6 parameters + _LayerSampleMode6("Layer Sample Mode 6", Int) = 0 + _LayerBlendMode6("Layer Blend Mode 6", Int) = 0 + _LayerMaskType6("Layer Mask Type 6", Int) = 0 + _LayerColor6("Layer Color 6", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface6("Layer Surface 6", 2D) = "" {} + _LayerSampleParameters6("Layer Sample Parameters 6", Vector) = (0, 0, 0, 0) + _LayerMaskParameters6("Layer Mask Parameters 6", Vector) = (0, 0, 0, 0) + _LayerMaskAxis6("Layer Mask Axis 6", Vector) = (0, 1, 0, 0) + + // Layer 7 parameters + _LayerSampleMode7("Layer Sample Mode 7", Int) = 0 + _LayerBlendMode7("Layer Blend Mode 7", Int) = 0 + _LayerMaskType7("Layer Mask Type 7", Int) = 0 + _LayerColor7("Layer Color 7", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface7("Layer Surface 7", 2D) = "" {} + _LayerSampleParameters7("Layer Sample Parameters 7", Vector) = (0, 0, 0, 0) + _LayerMaskParameters7("Layer Mask Parameters 7", Vector) = (0, 0, 0, 0) + _LayerMaskAxis7("Layer Mask Axis 7", Vector) = (0, 1, 0, 0) + } + + SubShader + { + Tags + { + "Queue" = "Transparent" + "RenderType" = "Transparent" + } + + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + LOD 200 + + Pass + { + Name "FORWARD" + Tags + { + "LightMode" = "ForwardBase" + } + + CGPROGRAM + #pragma only_renderers d3d11 gles3 gles + #pragma vertex vert + #pragma fragment frag + #pragma target 3.0 + #pragma multi_compile PROJECTOR_OFF PROJECTOR_ON + #pragma multi_compile NORMAL_MAP_OFF NORMAL_MAP_ON + #pragma multi_compile PARALLAX_OFF PARALLAX_ON + #pragma multi_compile ROUGHNESS_OFF ROUGHNESS_ON + #pragma multi_compile VERTALPHA_OFF VERTALPHA_ON + #pragma multi_compile LAYERS_1 LAYERS_2 LAYERS_3 LAYERS_4 LAYERS_5 LAYERS_6 LAYERS_7 LAYERS_8 + + #include "Assets/Oculus/Avatar/Resources/Materials/AvatarMaterialStateShader.cginc" + + float4 frag(VertexOutput IN) : COLOR + { + return ComputeSurface(IN); + } + + ENDCG + } + } + + FallBack "Diffuse" + CustomEditor "AvatarMaterialEditor" +} diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShader.shader.meta b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShader.shader.meta new file mode 100644 index 0000000..ba3836a --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 73f67c4e7bf718b4385aa6b1f8a06591 +timeCreated: 1525971190 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBS.shader b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBS.shader new file mode 100644 index 0000000..901f16f --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBS.shader @@ -0,0 +1,79 @@ +// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' + +Shader "OvrAvatar/AvatarSurfaceShaderPBS" { + Properties{ + // Global parameters + _Alpha("Alpha", Range(0.0, 1.0)) = 1.0 + _Albedo("Albedo (RGB)", 2D) = "" {} + _Surface("Metallic (R) Occlusion (G) and Smoothness (A)", 2D) = "" {} + } + SubShader{ + Tags { + "Queue" = "Transparent" + "RenderType" = "Transparent" + } + + Pass { + ZWrite On + Cull Off + ColorMask 0 + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 3.0 + #include "UnityCG.cginc" + + struct v2f { + float4 position : SV_POSITION; + }; + v2f vert(appdata_full v) { + // Output + v2f output; + output.position = UnityObjectToClipPos(v.vertex); + return output; + } + + float4 frag(v2f input) : COLOR { + return 0; + } + ENDCG + } + + LOD 200 + + CGPROGRAM + +// Physically based Standard lighting model, and enable shadows on all light types +#pragma surface surf Standard vertex:vert nolightmap alpha noforwardadd + +float _Alpha; +sampler2D _Albedo; +float4 _Albedo_ST; +sampler2D _Surface; +float4 _Surface_ST; + +struct Input { + float2 texcoord; +}; + +void vert(inout appdata_full v, out Input o) { + UNITY_INITIALIZE_OUTPUT(Input, o); + o.texcoord = v.texcoord.xy; +} + +void surf (Input IN, inout SurfaceOutputStandard o) { + o.Albedo = tex2D(_Albedo, TRANSFORM_TEX(IN.texcoord, _Albedo)).rgb; + float4 surfaceParams = tex2D(_Surface, TRANSFORM_TEX(IN.texcoord, _Surface)); + o.Metallic = surfaceParams.r; + o.Occlusion = surfaceParams.g; + o.Smoothness = surfaceParams.a; + o.Alpha = _Alpha; +} + +#pragma only_renderers d3d11 gles3 gles + +ENDCG + } + FallBack "Diffuse" +} diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBS.shader.meta b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBS.shader.meta new file mode 100644 index 0000000..d1cf3c0 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBS.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5e52aa58207bbf24d8eb8ec969e9ae88 +timeCreated: 1525971190 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBSV2.shader b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBSV2.shader new file mode 100644 index 0000000..8a2845c --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBSV2.shader @@ -0,0 +1,39 @@ +Shader "OvrAvatar/AvatarSurfaceShaderPBSV2" { + Properties { + _AlbedoMultiplier ("Albedo Multiplier", Color) = (1,1,1,1) + _Albedo ("Albedo (RGB)", 2D) = "white" {} + _Metallicness("Metallicness", 2D) = "grey" {} + _GlossinessScale ("Glossiness Scale", Range(0,1)) = 0.5 + } + SubShader { + Tags { "RenderType"="Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _Albedo; + sampler2D _Metallicness; + + struct Input { + float2 uv_Albedo; + }; + + float _GlossinessScale; + float4 _AlbedoMultiplier; + + void surf (Input IN, inout SurfaceOutputStandard o) { + fixed4 c = tex2D (_Albedo, IN.uv_Albedo) * _AlbedoMultiplier; + o.Albedo = c.rgb; + o.Metallic = tex2D (_Metallicness, IN.uv_Albedo).r; + o.Smoothness = _GlossinessScale; + o.Alpha = 1.0; + } + ENDCG + } + FallBack "Diffuse" +} \ No newline at end of file diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBSV2.shader.meta b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBSV2.shader.meta new file mode 100644 index 0000000..dded93f --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderPBSV2.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 176faebcc612eb147900defeda2149cb +timeCreated: 1525971187 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderSelfOccluding.shader b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderSelfOccluding.shader new file mode 100644 index 0000000..54e8150 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderSelfOccluding.shader @@ -0,0 +1,175 @@ +Shader "OvrAvatar/AvatarSurfaceShaderSelfOccluding" { + Properties{ + // Global parameters + _Alpha("Alpha", Range(0.0, 1.0)) = 1.0 + _DarkMultiplier("Dark Multiplier", Color) = (0.6, 0.6, 0.6, 1.0) + _BaseColor("Base Color", Color) = (0.0, 0.0, 0.0, 0.0) + _BaseMaskType("Base Mask Type", Int) = 0 + _BaseMaskParameters("Base Mask Parameters", Vector) = (0, 0, 0, 0) + _BaseMaskAxis("Base Mask Axis", Vector) = (0, 1, 0, 0) + _AlphaMask("Alpha Mask", 2D) = "white" {} + _NormalMap("Normal Map", 2D) = "" {} + _ParallaxMap("Parallax Map", 2D) = "" {} + _RoughnessMap("Roughness Map", 2D) = "" {} + + // Layer 0 parameters + _LayerSampleMode0("Layer Sample Mode 0", Int) = 0 + _LayerBlendMode0("Layer Blend Mode 0", Int) = 0 + _LayerMaskType0("Layer Mask Type 0", Int) = 0 + _LayerColor0("Layer Color 0", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface0("Layer Surface 0", 2D) = "" {} + _LayerSampleParameters0("Layer Sample Parameters 0", Vector) = (0, 0, 0, 0) + _LayerMaskParameters0("Layer Mask Parameters 0", Vector) = (0, 0, 0, 0) + _LayerMaskAxis0("Layer Mask Axis 0", Vector) = (0, 1, 0, 0) + + // Layer 1 parameters + _LayerSampleMode1("Layer Sample Mode 1", Int) = 0 + _LayerBlendMode1("Layer Blend Mode 1", Int) = 0 + _LayerMaskType1("Layer Mask Type 1", Int) = 0 + _LayerColor1("Layer Color 1", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface1("Layer Surface 1", 2D) = "" {} + _LayerSampleParameters1("Layer Sample Parameters 1", Vector) = (0, 0, 0, 0) + _LayerMaskParameters1("Layer Mask Parameters 1", Vector) = (0, 0, 0, 0) + _LayerMaskAxis1("Layer Mask Axis 1", Vector) = (0, 1, 0, 0) + + // Layer 2 parameters + _LayerSampleMode2("Layer Sample Mode 2", Int) = 0 + _LayerBlendMode2("Layer Blend Mode 2", Int) = 0 + _LayerMaskType2("Layer Mask Type 2", Int) = 0 + _LayerColor2("Layer Color 2", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface2("Layer Surface 2", 2D) = "" {} + _LayerSampleParameters2("Layer Sample Parameters 2", Vector) = (0, 0, 0, 0) + _LayerMaskParameters2("Layer Mask Parameters 2", Vector) = (0, 0, 0, 0) + _LayerMaskAxis2("Layer Mask Axis 2", Vector) = (0, 1, 0, 0) + + // Layer 3 parameters + _LayerSampleMode3("Layer Sample Mode 3", Int) = 0 + _LayerBlendMode3("Layer Blend Mode 3", Int) = 0 + _LayerMaskType3("Layer Mask Type 3", Int) = 0 + _LayerColor3("Layer Color 3", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface3("Layer Surface 3", 2D) = "" {} + _LayerSampleParameters3("Layer Sample Parameters 3", Vector) = (0, 0, 0, 0) + _LayerMaskParameters3("Layer Mask Parameters 3", Vector) = (0, 0, 0, 0) + _LayerMaskAxis3("Layer Mask Axis 3", Vector) = (0, 1, 0, 0) + + // Layer 4 parameters + _LayerSampleMode4("Layer Sample Mode 4", Int) = 0 + _LayerBlendMode4("Layer Blend Mode 4", Int) = 0 + _LayerMaskType4("Layer Mask Type 4", Int) = 0 + _LayerColor4("Layer Color 4", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface4("Layer Surface 4", 2D) = "" {} + _LayerSampleParameters4("Layer Sample Parameters 4", Vector) = (0, 0, 0, 0) + _LayerMaskParameters4("Layer Mask Parameters 4", Vector) = (0, 0, 0, 0) + _LayerMaskAxis4("Layer Mask Axis 4", Vector) = (0, 1, 0, 0) + + // Layer 5 parameters + _LayerSampleMode5("Layer Sample Mode 5", Int) = 0 + _LayerBlendMode5("Layer Blend Mode 5", Int) = 0 + _LayerMaskType5("Layer Mask Type 5", Int) = 0 + _LayerColor5("Layer Color 5", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface5("Layer Surface 5", 2D) = "" {} + _LayerSampleParameters5("Layer Sample Parameters 5", Vector) = (0, 0, 0, 0) + _LayerMaskParameters5("Layer Mask Parameters 5", Vector) = (0, 0, 0, 0) + _LayerMaskAxis5("Layer Mask Axis 5", Vector) = (0, 1, 0, 0) + + // Layer 6 parameters + _LayerSampleMode6("Layer Sample Mode 6", Int) = 0 + _LayerBlendMode6("Layer Blend Mode 6", Int) = 0 + _LayerMaskType6("Layer Mask Type 6", Int) = 0 + _LayerColor6("Layer Color 6", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface6("Layer Surface 6", 2D) = "" {} + _LayerSampleParameters6("Layer Sample Parameters 6", Vector) = (0, 0, 0, 0) + _LayerMaskParameters6("Layer Mask Parameters 6", Vector) = (0, 0, 0, 0) + _LayerMaskAxis6("Layer Mask Axis 6", Vector) = (0, 1, 0, 0) + + // Layer 7 parameters + _LayerSampleMode7("Layer Sample Mode 7", Int) = 0 + _LayerBlendMode7("Layer Blend Mode 7", Int) = 0 + _LayerMaskType7("Layer Mask Type 7", Int) = 0 + _LayerColor7("Layer Color 7", Color) = (1.0, 1.0, 1.0, 1.0) + _LayerSurface7("Layer Surface 7", 2D) = "" {} + _LayerSampleParameters7("Layer Sample Parameters 7", Vector) = (0, 0, 0, 0) + _LayerMaskParameters7("Layer Mask Parameters 7", Vector) = (0, 0, 0, 0) + _LayerMaskAxis7("Layer Mask Axis 7", Vector) = (0, 1, 0, 0) + } + + SubShader + { + Tags + { + "Queue" = "Transparent" + "RenderType" = "Transparent" + } + + Pass + { + ZWrite On + Cull Off + ColorMask 0 + Offset 1, 1 + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 3.0 + #include "UnityCG.cginc" + + struct v2f + { + float4 position : SV_POSITION; + }; + + v2f vert(appdata_full v) + { + // Output + v2f output; + output.position = UnityObjectToClipPos(v.vertex); + return output; + } + + float4 frag(v2f input) : COLOR + { + return 0; + } + + ENDCG + } + + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + LOD 200 + + Pass + { + Name "FORWARD" + Tags + { + "LightMode" = "ForwardBase" + } + + CGPROGRAM + #pragma only_renderers d3d11 gles3 gles + #pragma vertex vert + #pragma fragment frag + #pragma target 3.0 + #pragma multi_compile PROJECTOR_OFF PROJECTOR_ON + #pragma multi_compile NORMAL_MAP_OFF NORMAL_MAP_ON + #pragma multi_compile PARALLAX_OFF PARALLAX_ON + #pragma multi_compile ROUGHNESS_OFF ROUGHNESS_ON + #pragma multi_compile VERTALPHA_OFF VERTALPHA_ON + #pragma multi_compile LAYERS_1 LAYERS_2 LAYERS_3 LAYERS_4 LAYERS_5 LAYERS_6 LAYERS_7 LAYERS_8 + + #include "Assets/Oculus/Avatar/Resources/Materials/AvatarMaterialStateShader.cginc" + + float4 frag(VertexOutput IN) : SV_Target + { + return ComputeSurface(IN); + } + + ENDCG + } + } + + FallBack "Diffuse" + CustomEditor "AvatarMaterialEditor" +} diff --git a/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderSelfOccluding.shader.meta b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderSelfOccluding.shader.meta new file mode 100644 index 0000000..3df41f3 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/AvatarSurfaceShaderSelfOccluding.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 69f342b79d37541489919a19cfd8a924 +timeCreated: 1525971190 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5.meta b/Assets/Oculus/Avatar/Resources/Materials/Version1.5.meta new file mode 100644 index 0000000..12db4fc --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ced8ef067736a0b468cde573cc63e3ec +folderAsset: yes +timeCreated: 1525971173 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_CombinedMesh.shader b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_CombinedMesh.shader new file mode 100644 index 0000000..7417def --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_CombinedMesh.shader @@ -0,0 +1,217 @@ +// +// *** OvrAvatar Mobile Combined Mesh shader *** +// *** Texture array approach for rendering a combined mesh avatar *** +// +// This is a Unity vertex-fragnment shader implementation for our 1.5 skin shaded avatar look. +// The benefit of using this version is performance as it bypasses the PBR lighting model and +// so is generally recommended for use on mobile. +// +// This is the texture array version of the shader, which will draw all pre-combined +// components in one draw call. This is coupled with OvrAvatarMaterialManager to populate the +// shader properties. +// +// Shader keywords: +// - SECONDARY_LIGHT_ON SECONDARY_LIGHT_OFF +// Enable SECONDARY_LIGHT_ON for a second "light" as expressed by _SecondaryLightDirection +// and _SecondaryLightColor to influence the standard rim effect. This is designed for use in video watching +// experiences to sample the screen color and apply this to the rim term. +// - NO_BACKLIGHT_ON NO_BACKLIGHT_OFF +// This effect is active by default: NO_BACKLIGHT_OFF is the default and enables the effect. Enable NO_BACKLIGHT_ON +// to disable illumination from the rear of the main light direction. This mobile shader supports one directional +// light. This can cause the un-illuminated side of the avatar to lose definition. +// +// Notes: +// - The primary light in your scene will be used to calculate lighting. +// - We don't have a mouth bone, but the vertex shader will animate the vertices around the mouth +// area according to the _Voice value. This should be set according to local microphone value +// range between 0-1. + +Shader "OvrAvatar/Avatar_Mobile_CombinedMesh" +{ + Properties + { + _MainTex("Main Texture Array", 2DArray) = "white" {} + _NormalMap("Normal Map Array", 2DArray) = "bump" {} + _RoughnessMap("Roughness Map Array", 2DArray) = "black" {} + + _Dimmer("Dimmer", Range(0.0,1.0)) = 1.0 + _Alpha("Alpha", Range(0.0,1.0)) = 1.0 + + _Voice("Voice", Range(0.0,1.0)) = 1.0 + [HideInInspector] _MouthPosition("Mouth position", Vector) = (0,0,0,1) + [HideInInspector] _MouthDirection("Mouth direction", Vector) = (0,0,0,1) + [HideInInspector] _MouthEffectDistance("Mouth Effect Distance", Float) = 0.03 + [HideInInspector] _MouthEffectScale("Mouth Effect Scaler", Float) = 1 + + // Index into the texture array needs an offset for precision + _Slices("Texture Array Slices", int) = 4.97 + } + + SubShader + { + Pass + { + Tags + { + "LightMode" = "ForwardBase" "Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" + } + LOD 100 + ZWrite On + ZTest LEqual + Cull Back + ColorMask RGB + Blend SrcAlpha OneMinusSrcAlpha + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 3.5 + #pragma fragmentoption ARB_precision_hint_fastest + #pragma multi_compile SECONDARY_LIGHT_OFF SECONDARY_LIGHT_ON + #pragma multi_compile BACKLIGHT_OFF BACKLIGHT_ON + #include "UnityCG.cginc" + #include "UnityLightingCommon.cginc" + + UNITY_DECLARE_TEX2DARRAY(_MainTex); + UNITY_DECLARE_TEX2DARRAY(_NormalMap); + uniform float4 _NormalMap_ST; + UNITY_DECLARE_TEX2DARRAY(_RoughnessMap); + + uniform int _Slices; + + uniform float4 _BaseColor[5]; + uniform float _DiffuseIntensity[5]; + uniform float _RimIntensity[5]; + uniform float _BacklightIntensity[5]; + uniform float _ReflectionIntensity[5]; + + uniform float3 _SecondaryLightDirection; + uniform float4 _SecondaryLightColor; + + uniform float _Dimmer; + uniform float _Alpha; + + uniform float _Voice; + uniform float4 _MouthPosition; + uniform float4 _MouthDirection; + uniform float _MouthEffectDistance; + uniform float _MouthEffectScale; + + static const fixed MOUTH_ZSCALE = 0.5f; + static const fixed MOUTH_DROPOFF = 0.01f; + + struct appdata + { + float4 vertex: POSITION; + float3 normal: NORMAL; + float4 tangent: TANGENT; + float2 texcoord: TEXCOORD0; + float4 vertexColor : COLOR0; + }; + + struct v2f + { + float4 pos : SV_POSITION; + float3 uv : TEXCOORD0; + float4 posWorld: TEXCOORD1; + float3 normalDir: TEXCOORD2; + float3 tangentDir: TEXCOORD3; + float3 bitangentDir: TEXCOORD4; + }; + + v2f vert(appdata v) + { + v2f o; + + // Mouth vertex animation with voip + float4 worldVert = mul(unity_ObjectToWorld, v.vertex);; + float3 delta = _MouthPosition - worldVert; + delta.z *= MOUTH_ZSCALE; + float dist = length(delta); + float scaledMouthDropoff = _MouthEffectScale * MOUTH_DROPOFF; + float scaledMouthEffect = _MouthEffectScale * _MouthEffectDistance; + float displacement = _Voice * smoothstep(scaledMouthEffect + scaledMouthDropoff, scaledMouthEffect, dist); + worldVert.xyz -= _MouthDirection * displacement; + v.vertex = mul(unity_WorldToObject, worldVert); + + // Calculate tangents for normal mapping + o.normalDir = normalize(UnityObjectToWorldNormal(v.normal)); + o.tangentDir = normalize(mul(unity_ObjectToWorld, half4(v.tangent.xyz, 0.0)).xyz); + o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w); + + o.posWorld = worldVert; + o.pos = UnityObjectToClipPos(v.vertex); + o.uv.xy = v.texcoord; + o.uv.z = v.vertexColor.x * _Slices; + return o; + } + + fixed4 frag(v2f i) : COLOR + { + // Light direction + float3 lightDirection = _WorldSpaceLightPos0.xyz; + + // Unpack normal map + float3 transformedNormalUV = i.uv; + transformedNormalUV.xy = float2(TRANSFORM_TEX(i.uv.xy, _NormalMap)); + float3 normalMap = UNITY_SAMPLE_TEX2DARRAY(_NormalMap, transformedNormalUV).rgb * 2 - 1; + + // Calculate normal + float3x3 tangentTransform = float3x3(i.tangentDir, i.bitangentDir, i.normalDir); + float3 normalDirection = normalize(mul(normalMap.rgb, tangentTransform)); + float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz); + + // Apply view, normal, and lighting dependent terms + float VdotN = saturate(dot(viewDirection, normalDirection)); + float NdotL = saturate(dot(normalDirection, lightDirection)); + + float LightColorNdotL = NdotL * _LightColor0; + + // Sample the default reflection cubemap using the reflection vector + float3 worldReflection = reflect(-viewDirection, normalDirection); + half4 skyData = UNITY_SAMPLE_TEXCUBE(unity_SpecCube0, worldReflection); + // Decode cubemap data into actual color + half3 reflectionColor = DecodeHDR(skyData, unity_SpecCube0_HDR); + + // Calculate color for each component + float4 col; + // Get index into texture array + int componentIndex = floor(i.uv.z + 0.5); + // Diffuse texture sample + col = UNITY_SAMPLE_TEX2DARRAY(_MainTex, i.uv); + // Multiply in color tint (don't need to deal with gamma/linear here as conversion already done) + col.rgb *= _BaseColor[componentIndex]; + // Main light + col.rgb += _DiffuseIntensity[componentIndex] * LightColorNdotL; + #ifdef NO_BACKLIGHT_ON + //NO_BACKLIGHT_ON disables the rear illumination + #else + // Illuminate from behind + float3 reverseLightDirection = lightDirection * -1; + float NdotInvL = saturate(dot(normalDirection, normalize(reverseLightDirection))); + col.rgb += (_DiffuseIntensity[componentIndex] * _BacklightIntensity[componentIndex]) * NdotInvL * _LightColor0; + #endif + // Rim term + #ifdef SECONDARY_LIGHT_ON + // Secondary light proxy (direction and color) passed into the rim term + NdotL = saturate(dot(normalDirection, _SecondaryLightDirection)); + col.rgb += pow(1.0 - VdotN, _RimIntensity[componentIndex]) * NdotL * _SecondaryLightColor; + #else + col.rgb += pow(1.0 - VdotN, _RimIntensity[componentIndex]) * LightColorNdotL; + #endif + // Reflection + col.rgb += reflectionColor * UNITY_SAMPLE_TEX2DARRAY(_RoughnessMap, i.uv).a * _ReflectionIntensity[componentIndex]; + + // Global dimmer + col.rgb *= _Dimmer; + // Global alpha + col.a *= _Alpha; + #if !defined(UNITY_COLORSPACE_GAMMA) + col.rgb = GammaToLinearSpace(col.rgb); + #endif + // Return clamped final color + return saturate(col); + } + ENDCG + } + } +} diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_CombinedMesh.shader.meta b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_CombinedMesh.shader.meta new file mode 100644 index 0000000..179d4db --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_CombinedMesh.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 37d2b8298f61cd2469465fc36108675d +timeCreated: 1526311739 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_Loader.shader b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_Loader.shader new file mode 100644 index 0000000..e4a5dd9 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_Loader.shader @@ -0,0 +1,165 @@ +// +// *** OvrAvatar Mobile Single Component Loading shader *** +// +// Cut-down single component version of the avatar shader to be used during loading. +// See main mobile shader for implementation notes. + +Shader "OvrAvatar/Avatar_Mobile_Loader" +{ + Properties + { + _NormalMap("Normal Map", 2D) = "bump" {} + + _BaseColor("Color Tint", Color) = (1.0,1.0,1.0,1.0) + _Dimmer("Dimmer", Range(0.0,1.0)) = 1.0 + _LoadingDimmer("Loading Dimmer", Range(0.0,1.0)) = 1.0 + _Alpha("Alpha", Range(0.0,1.0)) = 1.0 + + _DiffuseIntensity("Diffuse Intensity", Range(0.0,1.0)) = 0.3 + _RimIntensity("Rim Intensity", Range(0.0,10.0)) = 5.0 + _BacklightIntensity("Backlight Intensity", Range(0.0,1.0)) = 1.0 + + _Voice("Voice", Range(0.0,1.0)) = 0.0 + [HideInInspector] _MouthPosition("Mouth position", Vector) = (0,0,0,1) + [HideInInspector] _MouthDirection("Mouth direction", Vector) = (0,0,0,1) + [HideInInspector] _MouthEffectDistance("Mouth Effect Distance", Float) = 0.03 + [HideInInspector] _MouthEffectScale("Mouth Effect Scaler", Float) = 1 + } + + SubShader + { + Pass + { + Tags + { + "LightMode" = "ForwardBase" "Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" + } + LOD 100 + ZWrite On + ZTest LEqual + Cull Back + ColorMask RGB + Blend SrcAlpha OneMinusSrcAlpha + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 3.5 + #pragma fragmentoption ARB_precision_hint_fastest + #pragma multi_compile NO_BACKLIGHT_OFF NO_BACKLIGHT_ON + #include "UnityCG.cginc" + #include "UnityLightingCommon.cginc" + + uniform sampler2D _NormalMap; + uniform float4 _NormalMap_ST; + + uniform float4 _BaseColor; + uniform float _Dimmer; + uniform float _LoadingDimmer; + uniform float _Alpha; + + uniform float _RimIntensity; + uniform float _DiffuseIntensity; + uniform float _BacklightIntensity; + + uniform float _Voice; + uniform float4 _MouthPosition; + uniform float4 _MouthDirection; + uniform float _MouthEffectDistance; + uniform float _MouthEffectScale; + + static const fixed MOUTH_ZSCALE = 0.5f; + static const fixed MOUTH_DROPOFF = 0.01f; + + struct appdata + { + float4 vertex: POSITION; + float3 normal: NORMAL; + float4 tangent: TANGENT; + float4 uv: TEXCOORD0; + }; + + struct v2f + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + float4 posWorld: TEXCOORD1; + float3 normalDir: TEXCOORD2; + float3 tangentDir: TEXCOORD3; + float3 bitangentDir: TEXCOORD4; + }; + + v2f vert(appdata v) + { + v2f o; + + // Mouth vertex animation with voip + float4 worldVert = mul(unity_ObjectToWorld, v.vertex);; + float3 delta = _MouthPosition - worldVert; + delta.z *= MOUTH_ZSCALE; + float dist = length(delta); + float scaledMouthDropoff = _MouthEffectScale * MOUTH_DROPOFF; + float scaledMouthEffect = _MouthEffectScale * _MouthEffectDistance; + float displacement = _Voice * smoothstep(scaledMouthEffect + scaledMouthDropoff, scaledMouthEffect, dist); + worldVert.xyz -= _MouthDirection * displacement; + v.vertex = mul(unity_WorldToObject, worldVert); + + // Calculate tangents for normal mapping + o.normalDir = normalize(UnityObjectToWorldNormal(v.normal)); + o.tangentDir = normalize(mul(unity_ObjectToWorld, half4(v.tangent.xyz, 0.0)).xyz); + o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w); + + o.posWorld = worldVert; + o.pos = UnityObjectToClipPos(v.vertex); + o.uv = v.uv; + return o; + } + + fixed4 frag(v2f i) : COLOR + { + // Light direction + float3 lightDirection = _WorldSpaceLightPos0.xyz; + + // Calculate normal + float3 normalMap = UnpackNormal(tex2D(_NormalMap, TRANSFORM_TEX(i.uv, _NormalMap))); + float3x3 tangentTransform = float3x3(i.tangentDir, i.bitangentDir, i.normalDir); + float3 normalDirection = normalize(mul(normalMap.rgb, tangentTransform)); + float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz); + + // Apply view, normal, and lighting dependent terms + float VdotN = saturate(dot(viewDirection, normalDirection)); + float NdotL = saturate(dot(normalDirection, lightDirection)); + float LightColorNdotL = NdotL * _LightColor0; + + // Calculate color + float4 col; +#if !defined(UNITY_COLORSPACE_GAMMA) + _BaseColor.rgb = LinearToGammaSpace(_BaseColor.rgb); +#endif + // Multiply in color tint + col.rgb = _BaseColor; + // Main light + col.rgb += _DiffuseIntensity * NdotL; +#ifdef NO_BACKLIGHT_ON + //NO_BACKLIGHT_ON disables the rear illumination +#else + // Illuminate main light from behind of NO_BACKLIGHT_ON is disabled + float3 reverseLightDirection = lightDirection * -1; + float NdotInvL = saturate(dot(normalDirection, normalize(reverseLightDirection))); + col.rgb += (_DiffuseIntensity * _BacklightIntensity) * NdotInvL *_LightColor0; +#endif + // Rim term + col.rgb += pow(1.0 - VdotN, _RimIntensity) * LightColorNdotL; + // Global dimmer + col.rgb *= lerp(_Dimmer, _LoadingDimmer, step(_LoadingDimmer, _Dimmer)); + // Global alpha + col.a = _Alpha; +#if !defined(UNITY_COLORSPACE_GAMMA) + col.rgb = GammaToLinearSpace(col.rgb); +#endif + // Return clamped final color + return saturate(col); + } + ENDCG + } + } +} diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_Loader.shader.meta b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_Loader.shader.meta new file mode 100644 index 0000000..0304e1d --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_Loader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 822f5e641dc5dd54ca9555b727b3277f +timeCreated: 1526311739 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_SingleComponent.shader b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_SingleComponent.shader new file mode 100644 index 0000000..9956cd7 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_SingleComponent.shader @@ -0,0 +1,204 @@ +// *** OvrAvatar Mobile Single Component shader *** +// +// This is a Unity vertex-fragnment shader implementation for our 1.5 skin shaded avatar look. +// The benefit of using this version is performance as it bypasses the PBR lighting model and +// so is generally recommended for use on mobile. +// +// Shader keywords: +// - SECONDARY_LIGHT_ON SECONDARY_LIGHT_OFF +// Enable SECONDARY_LIGHT_ON for a second "light" as expressed by _SecondaryLightDirection +// and _SecondaryLightColor to influence the standard rim effect. This is designed for use in video watching +// experiences to sample the screen color and apply this to the rim term. +// - NO_BACKLIGHT_ON NO_BACKLIGHT_OFF +// This effect is active by default: NO_BACKLIGHT_OFF is the default and enables the effect. Enable NO_BACKLIGHT_ON +// to disable illumination from the rear of the main light direction. This mobile shader supports one directional +// light. This can cause the un-illuminated side of the avatar to lose definition. +// Notes: +// - The primary light in your scene will be used to calculate lighting. +// - We don't have a mouth bone, but the vertex shader will animate the vertices around the mouth +// area according to the _Voice value. This should be set according to local microphone value +// range between 0-1. + +Shader "OvrAvatar/Avatar_Mobile_SingleComponent" +{ + Properties + { + _MainTex("Main Texture", 2D) = "white" {} + _NormalMap("Normal Map", 2D) = "bump" {} + _RoughnessMap("Roughness Map", 2D) = "black" {} + + _BaseColor("Color Tint", Color) = (1.0,1.0,1.0,1.0) + _Dimmer("Dimmer", Range(0.0,1.0)) = 1.0 + _Alpha("Alpha", Range(0.0,1.0)) = 1.0 + + _DiffuseIntensity("Diffuse Intensity", Range(0.0,1.0)) = 0.3 + _RimIntensity("Rim Intensity", Range(0.0,10.0)) = 5.0 + _BacklightIntensity("Backlight Intensity", Range(0.0,1.0)) = 1.0 + _ReflectionIntensity("Reflection Intensity", Range(0.0,1.0)) = 0.0 + + _Voice("Voice", Range(0.0,1.0)) = 0.0 + [HideInInspector] _MouthPosition("Mouth position", Vector) = (0,0,0,1) + [HideInInspector] _MouthDirection("Mouth direction", Vector) = (0,0,0,1) + [HideInInspector] _MouthEffectDistance("Mouth Effect Distance", Float) = 0.03 + [HideInInspector] _MouthEffectScale("Mouth Effect Scaler", Float) = 1 + } + + SubShader + { + Pass + { + Tags + { + "LightMode" = "ForwardBase" "Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" + } + LOD 100 + ZWrite On + ZTest LEqual + Cull Back + ColorMask RGB + Blend SrcAlpha OneMinusSrcAlpha + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 3.5 + #pragma fragmentoption ARB_precision_hint_fastest + #pragma multi_compile SECONDARY_LIGHT_OFF SECONDARY_LIGHT_ON + #pragma multi_compile NO_BACKLIGHT_OFF NO_BACKLIGHT_ON + #include "UnityCG.cginc" + #include "UnityLightingCommon.cginc" + + uniform sampler2D _MainTex; + uniform sampler2D _NormalMap; + uniform float4 _NormalMap_ST; + uniform sampler2D _RoughnessMap; + uniform float4 _BaseColor; + uniform float _DiffuseIntensity; + uniform float _RimIntensity; + uniform float _BacklightIntensity; + uniform float _ReflectionIntensity; + + uniform float3 _SecondaryLightDirection; + uniform float4 _SecondaryLightColor; + + uniform float _Dimmer; + uniform float _Alpha; + + uniform float _Voice; + uniform float4 _MouthPosition; + uniform float4 _MouthDirection; + uniform float _MouthEffectDistance; + uniform float _MouthEffectScale; + + static const fixed MOUTH_ZSCALE = 0.5f; + static const fixed MOUTH_DROPOFF = 0.01f; + + struct appdata + { + float4 vertex: POSITION; + float3 normal: NORMAL; + float4 tangent: TANGENT; + float4 uv: TEXCOORD0; + }; + + struct v2f + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + float4 posWorld: TEXCOORD1; + float3 normalDir: TEXCOORD2; + float3 tangentDir: TEXCOORD3; + float3 bitangentDir: TEXCOORD4; + }; + + v2f vert(appdata v) + { + v2f o; + + // Mouth vertex animation with voip + float4 worldVert = mul(unity_ObjectToWorld, v.vertex);; + float3 delta = _MouthPosition - worldVert; + delta.z *= MOUTH_ZSCALE; + float dist = length(delta); + float scaledMouthDropoff = _MouthEffectScale * MOUTH_DROPOFF; + float scaledMouthEffect = _MouthEffectScale * _MouthEffectDistance; + float displacement = _Voice * smoothstep(scaledMouthEffect + scaledMouthDropoff, scaledMouthEffect, dist); + worldVert.xyz -= _MouthDirection * displacement; + v.vertex = mul(unity_WorldToObject, worldVert); + + // Calculate tangents for normal mapping + o.normalDir = normalize(UnityObjectToWorldNormal(v.normal)); + o.tangentDir = normalize(mul(unity_ObjectToWorld, half4(v.tangent.xyz, 0.0)).xyz); + o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w); + + o.posWorld = worldVert; + o.pos = UnityObjectToClipPos(v.vertex); + o.uv = v.uv; + return o; + } + + fixed4 frag(v2f i) : COLOR + { + // Light directions + float3 lightDirection = _WorldSpaceLightPos0.xyz; + + // Calculate normal + float3 normalMap = tex2D(_NormalMap, TRANSFORM_TEX(i.uv, _NormalMap)) * 2 - 1; + float3x3 tangentTransform = float3x3(i.tangentDir, i.bitangentDir, i.normalDir); + float3 normalDirection = normalize(mul(normalMap.rgb, tangentTransform)); + float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz); + + // Apply view, normal, and lighting dependent terms + float VdotN = saturate(dot(viewDirection, normalDirection)); + float NdotL = saturate(dot(normalDirection, lightDirection)); + float LightColorNdotL = NdotL * _LightColor0; + + // Sample the default reflection cubemap using the reflection vector + float3 worldReflection = reflect(-viewDirection, normalDirection); + half4 skyData = UNITY_SAMPLE_TEXCUBE(unity_SpecCube0, worldReflection); + // Decode cubemap data into actual color + half3 reflectionColor = DecodeHDR(skyData, unity_SpecCube0_HDR); + + // Calculate color + float4 col; + // Diffuse texture sample + col = tex2D(_MainTex, i.uv); + #if !defined(UNITY_COLORSPACE_GAMMA) + _BaseColor.rgb = LinearToGammaSpace(_BaseColor.rgb); + #endif + // Multiply in color tint + col.rgb *= _BaseColor; + // Main light + col.rgb += _DiffuseIntensity * LightColorNdotL; + #ifdef NO_BACKLIGHT_ON + //NO_BACKLIGHT_ON disables the rear illumination + #else + // Illuminate main light from behind of NO_BACKLIGHT_ON is disabled + float3 reverseLightDirection = lightDirection * -1; + float NdotInvL = saturate(dot(normalDirection, normalize(reverseLightDirection))); + col.rgb += (_DiffuseIntensity * _BacklightIntensity) * NdotInvL *_LightColor0; + #endif + // Rim term + #ifdef SECONDARY_LIGHT_ON + // Secondary light proxy (direction and color) passed into the rim term + NdotL = saturate(dot(normalDirection, _SecondaryLightDirection)); + col.rgb += pow(1.0 - VdotN, _RimIntensity) * NdotL * _SecondaryLightColor; + #else + col.rgb += pow(1.0 - VdotN, _RimIntensity) * LightColorNdotL; + #endif + // Reflection + col.rgb += reflectionColor * tex2D(_RoughnessMap, i.uv).a * _ReflectionIntensity; + + // Global dimmer + col.rgb *= _Dimmer; + // Global alpha + col.a *= _Alpha; + #if !defined(UNITY_COLORSPACE_GAMMA) + col.rgb = GammaToLinearSpace(col.rgb); + #endif + // Return clamped final color + return saturate(col); + } + ENDCG + } + } +} diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_SingleComponent.shader.meta b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_SingleComponent.shader.meta new file mode 100644 index 0000000..b39d8e8 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_Mobile_SingleComponent.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c26fc51e445dcfd4db09305d861dc11c +timeCreated: 1526311739 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_PC_SingleComponent.shader b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_PC_SingleComponent.shader new file mode 100644 index 0000000..6d9bb6f --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_PC_SingleComponent.shader @@ -0,0 +1,108 @@ +// +// OvrAvatar PC single component shader +// +// This is a Unity Surface shader implementation for our 1.5 skin shaded avatar look. +// The benefit of using this version is that it uses the full Unity PBR lighting under the hood. +// The Mobile shader is strongly recommended for use on mobile platforms for performance. +// +// Notes: +// - Use Mobile shader if you need mouth vertex movement. + +Shader "OvrAvatar/Avatar_PC_SingleComponent" +{ + Properties + { + [NoScaleOffset] _MainTex("Color (RGB)", 2D) = "white" {} + [NoScaleOffset] _NormalMap("Normal Map", 2D) = "bump" {} + [NoScaleOffset] _RoughnessMap("Roughness Map", 2D) = "black" {} + + _BaseColor("Color Tint", Color) = (0.95,0.77,0.63) + _Dimmer("Dimmer", Range(0.0,1.0)) = 1.0 + _Alpha("Alpha", Range(0.0,1.0)) = 1.0 + + _DiffuseIntensity("Diffuse Intensity", Range(0.0,1.0)) = 0.3 + _RimIntensity("Rim Intensity", Range(0.0,10.0)) = 5.0 + } + SubShader + { + Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" } + LOD 100 + Blend SrcAlpha OneMinusSrcAlpha + + // Render the back facing parts of the object then set on backface culling. + // This fixes broken faces with convex meshes when using the alpha path. + Pass + { + Color(0,0,0,0) + } + + CGPROGRAM +#pragma surface surf Standard alpha:fade +#pragma target 3.0 +#pragma fragmentoption ARB_precision_hint_fastest + // Set this shader keyword if you are using Linear color space +#pragma multi_compile COLORSPACE_LINEAR_OFF COLORSPACE_LINEAR_ON + // (Optional) Set this shader keyword if your scene only has one light +#pragma multi_compile SINGLE_LIGHT_OFF SINGLE_LIGHT_ON +#include "UnityCG.cginc" + sampler2D _MainTex; + sampler2D _NormalMap; + sampler2D _RoughnessMap; + + float4 _BaseColor; + float _Dimmer; + float _Alpha; + + float _DiffuseIntensity; + float _RimIntensity; + + struct Input + { + float2 uv_MainTex; + float2 uv_NormalMap; + float2 uv_RoughnessMap; + float3 viewDir; + float3 worldNormal; INTERNAL_DATA + }; + + void surf(Input IN, inout SurfaceOutputStandard o) + { + // Unpack normal map + o.Normal = tex2D(_NormalMap, IN.uv_NormalMap) * 2 - 1; + + // Diffuse texture sample + float4 col = tex2D(_MainTex, IN.uv_MainTex); + + // Convert _BaseColor to gamma color space if we are in linear + // Albedo texture is already in correct color space + #if !defined(UNITY_COLORSPACE_GAMMA) + _BaseColor.rgb = LinearToGammaSpace(_BaseColor.rgb); + #endif + // Adjust color tint with NdotL + float NdotL = saturate(dot(WorldNormalVector(IN, o.Normal), _WorldSpaceLightPos0.xyz)); + _BaseColor.rgb += _DiffuseIntensity * NdotL; + // Multiply in color tint + o.Albedo = col.rgb * _BaseColor; + // Rim term + float VdotN = saturate(dot(normalize(IN.viewDir), o.Normal)); + o.Albedo += pow(1.0 - VdotN, _RimIntensity) * NdotL * _LightColor0; + + // Sample roughness map and set smoothness and metallic + float4 roughnessSample = tex2D(_RoughnessMap, IN.uv_RoughnessMap); + o.Smoothness = roughnessSample.a; + o.Metallic = roughnessSample.r; + + // Global dimmer + o.Albedo *= _Dimmer; + // Global alpha + o.Alpha = col.a * _Alpha; + + + // Convert back to linear color space if we are in linear + #if !defined(UNITY_COLORSPACE_GAMMA) + o.Albedo = GammaToLinearSpace(o.Albedo); + #endif + } + ENDCG + } +} \ No newline at end of file diff --git a/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_PC_SingleComponent.shader.meta b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_PC_SingleComponent.shader.meta new file mode 100644 index 0000000..030e684 --- /dev/null +++ b/Assets/Oculus/Avatar/Resources/Materials/Version1.5/Avatar_PC_SingleComponent.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 36b8b481cf607814a8cec318f0148d63 +timeCreated: 1525971189 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples.meta b/Assets/Oculus/Avatar/Samples.meta new file mode 100644 index 0000000..408139d --- /dev/null +++ b/Assets/Oculus/Avatar/Samples.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b18c7ae976868a4499e2dbd7f60e92a4 +folderAsset: yes +timeCreated: 1467313717 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/Controllers.meta b/Assets/Oculus/Avatar/Samples/Controllers.meta new file mode 100644 index 0000000..3ba3824 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/Controllers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2856d681f3672e641a2e57df9676108c +folderAsset: yes +timeCreated: 1468456735 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/Controllers/Controllers.unity b/Assets/Oculus/Avatar/Samples/Controllers/Controllers.unity new file mode 100644 index 0000000..c0f157b --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/Controllers/Controllers.unity @@ -0,0 +1,1194 @@ +%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: 7 + 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_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.44657898, g: 0.4964133, b: 0.5748178, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !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 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &30936213 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1512034972} + serializedVersion: 5 + m_Component: + - component: {fileID: 30936217} + - component: {fileID: 30936216} + - component: {fileID: 30936215} + - component: {fileID: 30936214} + m_Layer: 0 + m_Name: LocalAvatar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &30936214 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11441414, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 30936213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac27124318cf8e84aa7350c2ac1cdb80, type: 3} + m_Name: + m_EditorClassIdentifier: + Mode: 0 +--- !u!82 &30936215 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8254050, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 30936213} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &30936216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 30936213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00f3402a2ea5bff4880c0313515240cd, type: 3} + m_Name: + m_EditorClassIdentifier: + DefaultBodyMaterialManager: {fileID: 114000014217873308, guid: 1e465f24e493b834b85afff39ca37bac, + type: 2} + DefaultHandMaterialManager: {fileID: 114000014217873308, guid: b74f8a6e52a6d8b448dd7344b607c5ee, + type: 2} + Driver: {fileID: 30936214} + Base: {fileID: 554071967} + Body: {fileID: 1654041718} + ControllerLeft: {fileID: 350570438} + ControllerRight: {fileID: 1436046664} + HandLeft: {fileID: 1421016110} + HandRight: {fileID: 1843625169} + RecordPackets: 0 + UseSDKPackets: 1 + StartWithControllers: 1 + FirstPersonLayer: + layerIndex: 0 + ThirdPersonLayer: + layerIndex: 0 + ShowFirstPerson: 1 + ShowThirdPerson: 0 + Capabilities: -1 + SurfaceShader: {fileID: 4800000, guid: d0f6e1942d3d1f946a96fd8a00175474, type: 3} + SurfaceShaderSelfOccluding: {fileID: 4800000, guid: 10513ef587704324487f3061a7e6699d, + type: 3} + SurfaceShaderPBS: {fileID: 4800000, guid: d7662dbac0646464a9b4a48e93989adb, type: 3} + SurfaceShaderPBSV2Single: {fileID: 4800000, guid: 7a05888309e329e4cb98dfdd56ac3e64, + type: 3} + SurfaceShaderPBSV2Combined: {fileID: 4800000, guid: 3315a1b9c2da8fd4d8aa7e314ca27061, + type: 3} + SurfaceShaderPBSV2Simple: {fileID: 4800000, guid: 3934b2d879c6eb94eb26fa19814c7fcd, + type: 3} + oculusUserID: 0 + CombineMeshes: 0 + AssetsDoneLoading: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + LeftHandCustomPose: {fileID: 0} + RightHandCustomPose: {fileID: 0} + PacketSettings: + UpdateRate: 0.033333335 + LevelOfDetail: 3 +--- !u!4 &30936217 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 30936213} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 554071968} + - {fileID: 1654041719} + - {fileID: 1421016111} + - {fileID: 350570439} + - {fileID: 1843625170} + - {fileID: 1436046665} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &53342041 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100002, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + serializedVersion: 5 + m_Component: + - component: {fileID: 53342042} + - component: {fileID: 53342044} + - component: {fileID: 53342043} + m_Layer: 0 + m_Name: CenterEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &53342042 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400002, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 53342041} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &53342043 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2037080, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 53342041} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 90 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!81 &53342044 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 53342041} + m_Enabled: 1 +--- !u!1 &56120625 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + serializedVersion: 5 + m_Component: + - component: {fileID: 56120626} + - component: {fileID: 56120627} + m_Layer: 0 + m_Name: RightEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &56120626 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 56120625} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &56120627 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000010189485334, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 56120625} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &350570437 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 184120, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1512034972} + serializedVersion: 5 + m_Component: + - component: {fileID: 350570439} + - component: {fileID: 350570438} + m_Layer: 0 + m_Name: controller_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &350570438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11405130, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 350570437} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &350570439 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400938, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 350570437} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &390448548 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100006, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + serializedVersion: 5 + m_Component: + - component: {fileID: 390448549} + - component: {fileID: 390448550} + m_Layer: 0 + m_Name: LeftEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &390448549 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400006, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 390448548} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &390448550 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000012175207052, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 390448548} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &554071966 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010910743596, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + serializedVersion: 5 + m_Component: + - component: {fileID: 554071968} + - component: {fileID: 554071967} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &554071967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000010884708534, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 554071966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a0e33623ec5372748b5703f61a4df82d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &554071968 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010416372058, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 554071966} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &753461663 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + serializedVersion: 5 + m_Component: + - component: {fileID: 753461666} + - component: {fileID: 753461665} + - component: {fileID: 753461664} + m_Layer: 0 + m_Name: OVRCameraRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &753461664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 753461663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + _trackingOriginType: 1 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 0 +--- !u!114 &753461665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400010, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 753461663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df9f338034892c44ebb62d97894772f1, type: 3} + m_Name: + m_EditorClassIdentifier: + usePerEyeCameras: 0 + useFixedUpdateForTracking: 0 +--- !u!4 &753461666 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 753461663} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1080567925} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &957641525 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 957641529} + - component: {fileID: 957641528} + - component: {fileID: 957641527} + - component: {fileID: 957641526} + m_Layer: 0 + m_Name: Floor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!23 &957641526 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + 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: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &957641527 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &957641528 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &957641529 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.5, z: 0} + m_LocalScale: {x: 10, y: 1, z: 10} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1080567924 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 159718, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + serializedVersion: 5 + m_Component: + - component: {fileID: 1080567925} + m_Layer: 0 + m_Name: TrackingSpace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1080567925 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 459718, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 1080567924} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 390448549} + - {fileID: 53342042} + - {fileID: 56120626} + - {fileID: 1754791342} + - {fileID: 1162487503} + - {fileID: 2098184029} + m_Father: {fileID: 753461666} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1162487502 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 109308, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + serializedVersion: 5 + m_Component: + - component: {fileID: 1162487503} + m_Layer: 0 + m_Name: LeftHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1162487503 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 482130, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 1162487502} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1269396464 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: _trackingOriginType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_RootGameObject: {fileID: 753461663} + m_IsPrefabParent: 0 +--- !u!1 &1421016109 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011125779090, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + serializedVersion: 5 + m_Component: + - component: {fileID: 1421016111} + - component: {fileID: 1421016110} + m_Layer: 0 + m_Name: hand_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1421016110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000011404857786, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 1421016109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1421016111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013364346644, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 1421016109} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1436046663 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 157742, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1512034972} + serializedVersion: 5 + m_Component: + - component: {fileID: 1436046665} + - component: {fileID: 1436046664} + m_Layer: 0 + m_Name: controller_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1436046664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11477770, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 1436046663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1436046665 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 448722, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 1436046663} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1512034972 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: StartWithControllers + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_RootGameObject: {fileID: 30936213} + m_IsPrefabParent: 0 +--- !u!1 &1654041717 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012026592076, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + serializedVersion: 5 + m_Component: + - component: {fileID: 1654041719} + - component: {fileID: 1654041718} + m_Layer: 0 + m_Name: body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1654041718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000012186362028, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 1654041717} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb7a6650b6cb46545967d3b380b7396c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1654041719 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014100970646, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 1654041717} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1658970730 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1658970732} + - component: {fileID: 1658970731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1658970731 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1658970730} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 0.5955882, g: 0.5955882, b: 0.5955882, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1658970732 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1658970730} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1754791341 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 168682, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + serializedVersion: 5 + m_Component: + - component: {fileID: 1754791342} + m_Layer: 0 + m_Name: TrackerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1754791342 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 468682, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 1754791341} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1843625168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010482306814, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + serializedVersion: 5 + m_Component: + - component: {fileID: 1843625170} + - component: {fileID: 1843625169} + m_Layer: 0 + m_Name: hand_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1843625169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000010372160784, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 1843625168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1843625170 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011212216358, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1512034972} + m_GameObject: {fileID: 1843625168} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2098184028 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 113768, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + serializedVersion: 5 + m_Component: + - component: {fileID: 2098184029} + m_Layer: 0 + m_Name: RightHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2098184029 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 487254, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1269396464} + m_GameObject: {fileID: 2098184028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Oculus/Avatar/Samples/Controllers/Controllers.unity.meta b/Assets/Oculus/Avatar/Samples/Controllers/Controllers.unity.meta new file mode 100644 index 0000000..c1de067 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/Controllers/Controllers.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a83dd010542d2744bf59af99b4bc47c +timeCreated: 1468457372 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/CrossPlatform.meta b/Assets/Oculus/Avatar/Samples/CrossPlatform.meta new file mode 100644 index 0000000..effbacd --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/CrossPlatform.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6b1bc2f99b5a3a042aed559717762f28 +folderAsset: yes +timeCreated: 1536104808 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/CrossPlatform/CrossPlatform.unity b/Assets/Oculus/Avatar/Samples/CrossPlatform/CrossPlatform.unity new file mode 100644 index 0000000..6bcfa60 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/CrossPlatform/CrossPlatform.unity @@ -0,0 +1,1138 @@ +%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: 8 + 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.44657898, g: 0.4964133, b: 0.5748178, a: 1} +--- !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: 9 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + 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 &42825988 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458827644 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (11) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &334702974 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 13 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458843421 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (12) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &470155066 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458738922 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (2) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &581305526 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458747067 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (3) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &591454203 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458769900 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (6) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &684816837 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458785587 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (8) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1012700868 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458727564 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (1) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1239677853 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.x + value: 5.5 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: _trackingOriginType + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1548752833 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458762178 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (5) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1639391999 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458775732 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (7) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1658970730 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1658970732} + - component: {fileID: 1658970731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1658970731 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1658970730} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 0.5955882, g: 0.5955882, b: 0.5955882, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1658970732 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1658970730} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1001 &1805004154 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458806683 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (9) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1905681510 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458820129 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (10) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &2000186629 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 10150030458756715 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (4) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 diff --git a/Assets/Oculus/Avatar/Samples/CrossPlatform/CrossPlatform.unity.meta b/Assets/Oculus/Avatar/Samples/CrossPlatform/CrossPlatform.unity.meta new file mode 100644 index 0000000..e8a6670 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/CrossPlatform/CrossPlatform.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cfdeeba4226b23c4691e78d2432e7d88 +timeCreated: 1532560992 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/CrossPlatform/Readme.txt b/Assets/Oculus/Avatar/Samples/CrossPlatform/Readme.txt new file mode 100644 index 0000000..9ac8c42 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/CrossPlatform/Readme.txt @@ -0,0 +1,41 @@ +This Cross Platform Unity scene demonstrates how to use Oculus Avatar SDK without the Oculus Platform SDK. + +Setup instructions: +1 - Create a new Unity Project +2 - Import the Oculus Avatar SDK Unity package: https://developer.oculus.com/downloads/package/oculus-avatar-sdk/ +3 - Open this CrossPlatform scene (in Assets/Oculus/Avatar/Samples/CrossPlatform) +4 - Import Oculus Utilities for Unity: https://developer.oculus.com/downloads/package/oculus-utilities-for-unity-5/ +5 - Do *not* import the Oculus Platform SDK for Unity! +6 - Delete the imported SocialStarter folder from Assets/Oculus/Avatar/Samples (it demos Platform features, we don't need it for this) +7 - Use the Oculus Dashboard (https://dashboard.oculus.com/) to create a placeholder Rift app and copy the App ID +8 - Paste the App ID in Unity under Oculus Avatars > Edit Configuration > Oculus Rift App Id +9 - Enable OpenVR: + Open PlayerSettings in the Inspector tab (menu Edit > Project Settings > Player) + In PlayerSettings expand XR Settings + Under Virtual Reality SDKs, add OpenVR +10 - Click Play + + +Changing Avatar customization: +1 - Note the "LocalAvatar" GameObjects in the scene. Each Avatar has distinct customization. +2 - Inspect each LocalAvatar GameObject and observe the attached Ovr Avatar Script component and the "Oculus User ID" property set on each. +3 - Create your own test accounts to customize your Avatars. +4 - Use your own User IDs in this sample scene. (You will have to leave and reenter Play mode to apply Avatar User ID changes.) + + + +Redistribution: +When packaging a Cross Platform application using Oculus Avatars, you will need to include: + * libovravatar.dll + * OvrAvatarAssets.zip +On a computer with the Oculus launcher, these files can be found in "C:\Program Files\Oculus\Support\oculus-runtime" by default. + +You also need to include the Oculus Avatar SDK License, found here: https://developer.oculus.com/licenses/avatar-sdk-1.0/ + +In your Unity project's Assets folder, add these files to a Plugins directory. + +NOTE: Unity's Build will only copy DLL files in a Plugins directory over to the output Plugins directory. +You must manually copy OvrAvatarAssets.zip to the output Plugins directory. +You can automate this process with a script adding a custom build command, +see the Unity docs here: https://docs.unity3d.com/Manual/BuildPlayerPipeline.html + diff --git a/Assets/Oculus/Avatar/Samples/CrossPlatform/Readme.txt.meta b/Assets/Oculus/Avatar/Samples/CrossPlatform/Readme.txt.meta new file mode 100644 index 0000000..936c686 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/CrossPlatform/Readme.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5569c00e32b73d845831ece15c9f1e36 +timeCreated: 1532561014 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/GripPoses.meta b/Assets/Oculus/Avatar/Samples/GripPoses.meta new file mode 100644 index 0000000..42860b4 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/GripPoses.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b8c4b9475079cf040953bf344ff4e44f +folderAsset: yes +timeCreated: 1477955918 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/GripPoses/GripPoses.unity b/Assets/Oculus/Avatar/Samples/GripPoses/GripPoses.unity new file mode 100644 index 0000000..1e71a0f --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/GripPoses/GripPoses.unity @@ -0,0 +1,2756 @@ +%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: 7 + 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_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.44657898, g: 0.4964133, b: 0.5748178, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 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_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !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 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &26803798 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010454308426, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 26803799} + m_Layer: 0 + m_Name: hands:b_l_middle1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &26803799 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010529492032, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 26803798} + m_LocalRotation: {x: -0.03365187, y: 0.6480089, z: 0.75659454, w: 0.080726825} + m_LocalPosition: {x: 0.09142233, y: -0.009532144, z: -0.010838794} + m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1} + m_Children: + - {fileID: 239467253} + m_Father: {fileID: 313519822} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &30936213 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1658856030} + serializedVersion: 5 + m_Component: + - component: {fileID: 30936217} + - component: {fileID: 30936216} + - component: {fileID: 30936215} + - component: {fileID: 30936214} + m_Layer: 0 + m_Name: LocalAvatar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &30936214 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11441414, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 30936213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac27124318cf8e84aa7350c2ac1cdb80, type: 3} + m_Name: + m_EditorClassIdentifier: + Mode: 0 +--- !u!82 &30936215 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8254050, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 30936213} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &30936216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 30936213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00f3402a2ea5bff4880c0313515240cd, type: 3} + m_Name: + m_EditorClassIdentifier: + DefaultBodyMaterialManager: {fileID: 114000014217873308, guid: 1e465f24e493b834b85afff39ca37bac, + type: 2} + DefaultHandMaterialManager: {fileID: 114000014217873308, guid: b74f8a6e52a6d8b448dd7344b607c5ee, + type: 2} + Driver: {fileID: 30936214} + Base: {fileID: 554071967} + Body: {fileID: 1654041718} + ControllerLeft: {fileID: 350570438} + ControllerRight: {fileID: 1436046664} + HandLeft: {fileID: 1421016110} + HandRight: {fileID: 1843625169} + RecordPackets: 0 + UseSDKPackets: 1 + StartWithControllers: 0 + FirstPersonLayer: + layerIndex: 0 + ThirdPersonLayer: + layerIndex: 0 + ShowFirstPerson: 1 + ShowThirdPerson: 0 + Capabilities: -1 + SurfaceShader: {fileID: 4800000, guid: d0f6e1942d3d1f946a96fd8a00175474, type: 3} + SurfaceShaderSelfOccluding: {fileID: 4800000, guid: 10513ef587704324487f3061a7e6699d, + type: 3} + SurfaceShaderPBS: {fileID: 4800000, guid: d7662dbac0646464a9b4a48e93989adb, type: 3} + SurfaceShaderPBSV2Single: {fileID: 4800000, guid: 7a05888309e329e4cb98dfdd56ac3e64, + type: 3} + SurfaceShaderPBSV2Combined: {fileID: 4800000, guid: 3315a1b9c2da8fd4d8aa7e314ca27061, + type: 3} + SurfaceShaderPBSV2Simple: {fileID: 4800000, guid: 3934b2d879c6eb94eb26fa19814c7fcd, + type: 3} + oculusUserID: 0 + CombineMeshes: 0 + AssetsDoneLoading: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + LeftHandCustomPose: {fileID: 585168899} + RightHandCustomPose: {fileID: 1365922220} + PacketSettings: + UpdateRate: 0.033333335 + LevelOfDetail: 3 +--- !u!4 &30936217 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 30936213} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 554071968} + - {fileID: 1654041719} + - {fileID: 470598175} + - {fileID: 350570439} + - {fileID: 1906766866} + - {fileID: 1436046665} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &34790505 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 34790507} + - component: {fileID: 34790506} + m_Layer: 0 + m_Name: RightHandPoseEditHelper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &34790506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 34790505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6bc5b4ba964e02b4ea773b2aaca7dc67, type: 3} + m_Name: + m_EditorClassIdentifier: + poseRoot: {fileID: 1365922220} +--- !u!4 &34790507 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 34790505} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1365922220} + m_Father: {fileID: 1906766866} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &53342041 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100002, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + serializedVersion: 5 + m_Component: + - component: {fileID: 53342042} + - component: {fileID: 53342044} + - component: {fileID: 53342043} + m_Layer: 0 + m_Name: CenterEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &53342042 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400002, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 53342041} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &53342043 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2037080, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 53342041} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 90 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!81 &53342044 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 53342041} + m_Enabled: 1 +--- !u!1 &56120625 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + serializedVersion: 5 + m_Component: + - component: {fileID: 56120626} + - component: {fileID: 56120627} + m_Layer: 0 + m_Name: RightEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &56120626 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 56120625} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &56120627 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000010189485334, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 56120625} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &56595420 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011683760016, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 56595421} + m_Layer: 0 + m_Name: hands:b_l_pinky1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &56595421 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014246121946, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 56595420} + m_LocalRotation: {x: -0.018903391, y: 0.006742826, z: 0.9928664, w: 0.11753104} + m_LocalPosition: {x: 0.053570647, y: 0.002438396, z: -0.0014630293} + m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1} + m_Children: + - {fileID: 136091887} + m_Father: {fileID: 1924116398} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &96379235 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011819343988, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 96379236} + m_Layer: 0 + m_Name: hands:b_l_grip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &96379236 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010032463254, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 96379235} + m_LocalRotation: {x: 0.31257486, y: -0.7696517, z: -0.018750966, w: 0.55640054} + m_LocalPosition: {x: 0.07215909, y: -0.013962122, z: 0.018992186} + m_LocalScale: {x: 0.9999999, y: 1.0000001, z: 1.0000001} + m_Children: [] + m_Father: {fileID: 313519822} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &99467182 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000014156853104, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 99467183} + m_Layer: 0 + m_Name: hands:b_r_grip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &99467183 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013762714132, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 99467182} + m_LocalRotation: {x: 0.55640054, y: -0.018751018, z: 0.76965183, w: -0.31257483} + m_LocalPosition: {x: -0.072158195, y: 0.013962137, z: -0.01899168} + m_LocalScale: {x: 0.99999994, y: 1.0000004, z: 1.0000002} + m_Children: [] + m_Father: {fileID: 256016476} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &136091886 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011987305466, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 136091887} + m_Layer: 0 + m_Name: hands:b_l_pinky2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &136091887 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011527629484, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 136091886} + m_LocalRotation: {x: -0.00000005668701, y: -0.00000014201431, z: -0.16458213, w: 0.9863634} + m_LocalPosition: {x: -0.03335595, y: -0.000000005462158, z: 0.0000000032950203} + m_LocalScale: {x: 0.9999999, y: 1, z: 1} + m_Children: + - {fileID: 1934855145} + m_Father: {fileID: 56595421} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &188612933 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013523545764, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 188612934} + m_Layer: 0 + m_Name: hands:b_l_ring2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &188612934 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011216156508, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 188612933} + m_LocalRotation: {x: 0.000000022927209, y: -0.00000005418313, z: -0.20290457, w: 0.9791986} + m_LocalPosition: {x: -0.03857202, y: -8.330935e-10, z: 0.000000006690977} + m_LocalScale: {x: 0.9999998, y: 1, z: 1} + m_Children: + - {fileID: 1911745904} + m_Father: {fileID: 1436277364} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &239467252 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010705688472, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 239467253} + m_Layer: 0 + m_Name: hands:b_l_middle2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &239467253 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013179478382, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 239467252} + m_LocalRotation: {x: 0.000000037141525, y: -0.00000010928968, z: -0.23558179, w: 0.97185457} + m_LocalPosition: {x: -0.04596742, y: -0.000000018352134, z: 0.0000000024601723} + m_LocalScale: {x: 0.9999999, y: 1, z: 0.9999999} + m_Children: + - {fileID: 1903904373} + m_Father: {fileID: 26803799} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &256016475 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012855789030, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 256016476} + m_Layer: 0 + m_Name: hands:b_r_hand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &256016476 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013646848534, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 256016475} + m_LocalRotation: {x: -0.0544794, y: 0.76687974, z: 0.14423032, w: 0.6229969} + m_LocalPosition: {x: 0.022390217, y: -0.034886185, z: -0.111438304} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 99467183} + - {fileID: 1448414926} + - {fileID: 1690781231} + - {fileID: 1208440875} + - {fileID: 914695922} + - {fileID: 445516544} + - {fileID: 1677342976} + m_Father: {fileID: 1365922220} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &313519821 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011482107920, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 313519822} + m_Layer: 0 + m_Name: hands:b_l_hand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &313519822 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013452988566, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 313519821} + m_LocalRotation: {x: 0.6229968, y: -0.14423034, z: 0.7668798, w: 0.054479446} + m_LocalPosition: {x: -0.022390187, y: -0.034886137, z: -0.11143835} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 96379236} + - {fileID: 758256568} + - {fileID: 870347746} + - {fileID: 26803799} + - {fileID: 1924116398} + - {fileID: 1436277364} + - {fileID: 1601188193} + m_Father: {fileID: 585168899} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &316040181 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012586892280, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 316040182} + m_Layer: 0 + m_Name: hands:b_r_middle3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &316040182 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012760637678, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 316040181} + m_LocalRotation: {x: 0.000000011001792, y: 0.000000001377423, z: -0.06577554, w: 0.99783444} + m_LocalPosition: {x: 0.02959023, y: -0.00000016815946, z: -0.00000006537217} + m_LocalScale: {x: 1, y: 1.0000001, z: 1.0000001} + m_Children: + - {fileID: 620480710} + m_Father: {fileID: 1470779009} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &329783417 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013940353552, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 329783418} + m_Layer: 0 + m_Name: hands:b_r_index3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &329783418 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010357036850, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329783417} + m_LocalRotation: {x: -0.000000043650598, y: 0.00000003915311, z: -0.05959587, w: 0.99822265} + m_LocalPosition: {x: 0.022152934, y: -0.00000021660776, z: -0.00000003802672} + m_LocalScale: {x: 0.9999999, y: 0.9999999, z: 0.99999994} + m_Children: + - {fileID: 843058192} + m_Father: {fileID: 376675011} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &350570437 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 184120, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1658856030} + serializedVersion: 5 + m_Component: + - component: {fileID: 350570439} + - component: {fileID: 350570438} + m_Layer: 0 + m_Name: controller_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &350570438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11405130, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 350570437} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &350570439 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400938, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 350570437} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &363627943 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010747787136, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 363627944} + m_Layer: 0 + m_Name: hands:b_l_pinky_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &363627944 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010274150756, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 363627943} + m_LocalRotation: {x: -0.000000009772398, y: -6.703349e-10, z: -0.0000000016464395, + w: 1} + m_LocalPosition: {x: -0.01944124, y: -0.0000000024336448, z: 0.0000000012287399} + m_LocalScale: {x: 1, y: 0.99999994, z: 1} + m_Children: [] + m_Father: {fileID: 1934855145} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &376675010 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011286598088, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 376675011} + m_Layer: 0 + m_Name: hands:b_r_index2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &376675011 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014263687414, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 376675010} + m_LocalRotation: {x: 0.000000015652539, y: -0.00000017256959, z: -0.18624677, w: 0.98250306} + m_LocalPosition: {x: 0.0415749, y: -0.00000025658417, z: -0.00000039068158} + m_LocalScale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + m_Children: + - {fileID: 329783418} + m_Father: {fileID: 1690781231} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &390448548 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100006, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + serializedVersion: 5 + m_Component: + - component: {fileID: 390448549} + - component: {fileID: 390448550} + m_Layer: 0 + m_Name: LeftEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &390448549 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400006, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 390448548} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &390448550 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000012175207052, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 390448548} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &445516543 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013154274196, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 445516544} + m_Layer: 0 + m_Name: hands:b_r_ring1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &445516544 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010696968466, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 445516543} + m_LocalRotation: {x: -0.10180093, y: 0.56929916, z: 0.8152098, w: 0.031114696} + m_LocalPosition: {x: -0.0895311, y: -0.012713969, z: 0.0018533244} + m_LocalScale: {x: 1.0000001, y: 1, z: 1.0000001} + m_Children: + - {fileID: 671216321} + m_Father: {fileID: 256016476} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &470598175 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013364346644, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 1421016109} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 560474079} + m_Father: {fileID: 30936217} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &491546331 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000014126987918, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 491546332} + m_Layer: 0 + m_Name: hands:b_l_middle_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &491546332 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012322389972, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 491546331} + m_LocalRotation: {x: 1.6939072e-10, y: 1.9323143e-10, z: 6.3522637e-10, w: 1} + m_LocalPosition: {x: -0.026469607, y: 0.0000000036855743, z: 0.000000003584191} + m_LocalScale: {x: 1, y: 0.99999994, z: 1} + m_Children: [] + m_Father: {fileID: 1903904373} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &554071966 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010910743596, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + serializedVersion: 5 + m_Component: + - component: {fileID: 554071968} + - component: {fileID: 554071967} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &554071967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000010884708534, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 554071966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a0e33623ec5372748b5703f61a4df82d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &554071968 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010416372058, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 554071966} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &560474077 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 560474079} + - component: {fileID: 560474078} + m_Layer: 0 + m_Name: LeftHandPoseEditHelper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &560474078 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 560474077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6bc5b4ba964e02b4ea773b2aaca7dc67, type: 3} + m_Name: + m_EditorClassIdentifier: + poseRoot: {fileID: 585168899} +--- !u!4 &560474079 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 560474077} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 585168899} + m_Father: {fileID: 470598175} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &563908831 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 563908833} + - component: {fileID: 563908832} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &563908832 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 563908831} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &563908833 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 563908831} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &585168898 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 585168899} + m_Layer: 0 + m_Name: hands_l_hand_world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &585168899 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 585168898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 313519822} + m_Father: {fileID: 560474079} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &600624809 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012510561956, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 600624810} + m_Layer: 0 + m_Name: hands:b_r_pinky1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &600624810 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013193183530, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 600624809} + m_LocalRotation: {x: -0.01890341, y: 0.0067427615, z: 0.9928664, w: 0.11753096} + m_LocalPosition: {x: -0.05356621, y: -0.002439512, z: 0.0014644872} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1241509020} + m_Father: {fileID: 914695922} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &620480709 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012971578408, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 620480710} + m_Layer: 0 + m_Name: hands:b_r_middle_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &620480710 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011751791164, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 620480709} + m_LocalRotation: {x: -0.0000000014362507, y: -0.000000002820773, z: -0.000000022191672, + w: 1} + m_LocalPosition: {x: 0.026469525, y: 0.00000040609203, z: 0.00000019350924} + m_LocalScale: {x: 1, y: 0.9999999, z: 1} + m_Children: [] + m_Father: {fileID: 316040182} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &665325992 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000014232464268, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 665325993} + m_Layer: 0 + m_Name: hands:b_r_thumb3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &665325993 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012208129616, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 665325992} + m_LocalRotation: {x: -0.000000007942694, y: 0.000000010101241, z: 0.008720721, w: 0.99996203} + m_LocalPosition: {x: 0.02637508, y: -0.000003140552, z: 0.00000024192715} + m_LocalScale: {x: 1, y: 1, z: 1.0000001} + m_Children: + - {fileID: 924884950} + m_Father: {fileID: 1827566768} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &671216320 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010439537112, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 671216321} + m_Layer: 0 + m_Name: hands:b_r_ring2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &671216321 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014138112998, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 671216320} + m_LocalRotation: {x: 0.00000003873586, y: 0.00000004148523, z: -0.20290461, w: 0.9791986} + m_LocalPosition: {x: 0.038571976, y: 0.000000016822588, z: -0.00000011697061} + m_LocalScale: {x: 0.9999999, y: 1, z: 1} + m_Children: + - {fileID: 936747930} + m_Father: {fileID: 445516544} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &753461663 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + serializedVersion: 5 + m_Component: + - component: {fileID: 753461666} + - component: {fileID: 753461665} + - component: {fileID: 753461664} + m_Layer: 0 + m_Name: OVRCameraRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &753461664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 753461663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + _trackingOriginType: 1 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 0 +--- !u!114 &753461665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400010, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 753461663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df9f338034892c44ebb62d97894772f1, type: 3} + m_Name: + m_EditorClassIdentifier: + usePerEyeCameras: 0 + useFixedUpdateForTracking: 0 +--- !u!4 &753461666 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 753461663} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1080567925} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &758256567 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010924450336, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 758256568} + m_Layer: 0 + m_Name: hands:b_l_hand_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &758256568 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010716107878, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 758256567} + m_LocalRotation: {x: 0.22704251, y: 0.00000008674858, z: -0.000000018270624, w: 0.9738849} + m_LocalPosition: {x: 0.13611393, y: 0.000000015238625, z: -0.00000001802008} + m_LocalScale: {x: 1, y: 1.0000001, z: 0.9999999} + m_Children: [] + m_Father: {fileID: 313519822} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &800529965 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010381448528, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 800529966} + m_Layer: 0 + m_Name: hands:b_l_thumb_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &800529966 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012002987360, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 800529965} + m_LocalRotation: {x: -0.0000000013989427, y: -0.000000008504275, z: 0.000000004478251, + w: 1} + m_LocalPosition: {x: -0.03407956, y: 0.000000008410045, z: 0.000000006773969} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1196414139} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &843058191 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011070112746, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 843058192} + m_Layer: 0 + m_Name: hands:b_r_index_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &843058192 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010575000096, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 843058191} + m_LocalRotation: {x: 0.0000000020884363, y: 0.000000003619726, z: 0.000000009402631, + w: 1} + m_LocalPosition: {x: 0.029121779, y: 0.0000002786395, z: 0.0000010442106} + m_LocalScale: {x: 1, y: 1, z: 0.99999994} + m_Children: [] + m_Father: {fileID: 329783418} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &870347745 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013661276380, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 870347746} + m_Layer: 0 + m_Name: hands:b_l_index1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &870347746 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014155328254, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 870347745} + m_LocalRotation: {x: -0.010945108, y: -0.7329413, z: -0.66095215, w: -0.16068432} + m_LocalPosition: {x: 0.087078705, y: -0.0350999, z: -0.006813981} + m_LocalScale: {x: 1.0000002, y: 1.0000001, z: 1.0000002} + m_Children: + - {fileID: 1976326465} + m_Father: {fileID: 313519822} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &914695921 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012093083856, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 914695922} + m_Layer: 0 + m_Name: hands:b_r_pinky0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &914695922 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012203521522, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 914695921} + m_LocalRotation: {x: -0.4693215, y: -0.08311145, z: 0.0867284, w: 0.87481886} + m_LocalPosition: {x: -0.03127473, y: -0.019069267, z: -0.011509162} + m_LocalScale: {x: 1.0000001, y: 0.9999999, z: 1.0000001} + m_Children: + - {fileID: 600624810} + m_Father: {fileID: 256016476} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &924884949 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010806359444, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 924884950} + m_Layer: 0 + m_Name: hands:b_r_thumb_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &924884950 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010251195448, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 924884949} + m_LocalRotation: {x: -0.000000007437272, y: -0.000000005285605, z: 0.000000003233399, + w: 1} + m_LocalPosition: {x: 0.034079228, y: 0.00000027135118, z: 0.00000011445174} + m_LocalScale: {x: 0.99999994, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 665325993} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &936747929 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012016441122, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 936747930} + m_Layer: 0 + m_Name: hands:b_r_ring3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &936747930 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013519291214, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 936747929} + m_LocalRotation: {x: 0.00000002538091, y: -0.000000057510338, z: -0.08394359, w: 0.9964705} + m_LocalPosition: {x: 0.025775367, y: 0.00000023426949, z: 0.00000026900074} + m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} + m_Children: + - {fileID: 1343741283} + m_Father: {fileID: 671216321} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1080567924 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 159718, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + serializedVersion: 5 + m_Component: + - component: {fileID: 1080567925} + m_Layer: 0 + m_Name: TrackingSpace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1080567925 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 459718, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 1080567924} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 390448549} + - {fileID: 53342042} + - {fileID: 56120626} + - {fileID: 1754791342} + - {fileID: 1162487503} + - {fileID: 2098184029} + m_Father: {fileID: 753461666} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1162487502 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 109308, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + serializedVersion: 5 + m_Component: + - component: {fileID: 1162487503} + m_Layer: 0 + m_Name: LeftHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1162487503 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 482130, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 1162487502} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1196414138 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013418442184, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1196414139} + m_Layer: 0 + m_Name: hands:b_l_thumb3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1196414139 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013478150618, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1196414138} + m_LocalRotation: {x: 0.000000010835937, y: 0.000000105541446, z: 0.008720753, w: 0.99996203} + m_LocalPosition: {x: -0.026371535, y: 0.0000000039149337, z: 0.000000001525968} + m_LocalScale: {x: 1.0000002, y: 1.0000002, z: 1.0000001} + m_Children: + - {fileID: 800529966} + m_Father: {fileID: 1553253457} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1208440874 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011109095410, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1208440875} + m_Layer: 0 + m_Name: hands:b_r_middle1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1208440875 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011985668308, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1208440874} + m_LocalRotation: {x: -0.03365176, y: 0.6480088, z: 0.7565946, w: 0.08072688} + m_LocalPosition: {x: -0.09142203, y: 0.009532631, z: 0.010838809} + m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} + m_Children: + - {fileID: 1470779009} + m_Father: {fileID: 256016476} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1210129109 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010529747302, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1210129110} + m_Layer: 0 + m_Name: hands:b_l_ring_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1210129110 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011977766816, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1210129109} + m_LocalRotation: {x: -0.000000003974666, y: -0.000000007533675, z: 0.000000010893303, + w: 1} + m_LocalPosition: {x: -0.024214901, y: -0.0000000055627396, z: 0.0000000014620534} + m_LocalScale: {x: 0.99999994, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1911745904} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1241509019 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013402618928, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1241509020} + m_Layer: 0 + m_Name: hands:b_r_pinky2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1241509020 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011548096454, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1241509019} + m_LocalRotation: {x: 0.0000000121722445, y: 0.000000037490725, z: -0.16458228, w: 0.98636335} + m_LocalPosition: {x: 0.03335585, y: 0.000000428581, z: 0.00000030260418} + m_LocalScale: {x: 1, y: 0.99999994, z: 1} + m_Children: + - {fileID: 1850704993} + m_Father: {fileID: 600624810} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1343741282 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013261444462, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1343741283} + m_Layer: 0 + m_Name: hands:b_r_ring_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1343741283 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011071277814, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1343741282} + m_LocalRotation: {x: 0.0000000014840815, y: -0.0000000017981829, z: 1.2272992e-10, + w: 1} + m_LocalPosition: {x: 0.024214191, y: -0.000000029371913, z: 0.0000000143947485} + m_LocalScale: {x: 1.0000001, y: 1, z: 1.0000001} + m_Children: [] + m_Father: {fileID: 936747930} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1365922219 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1365922220} + m_Layer: 0 + m_Name: hands_r_hand_world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1365922220 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365922219} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 256016476} + m_Father: {fileID: 34790507} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1420335878 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: _trackingOriginType + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_RootGameObject: {fileID: 753461663} + m_IsPrefabParent: 0 +--- !u!1 &1421016109 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011125779090, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + serializedVersion: 5 + m_Component: + - component: {fileID: 470598175} + - component: {fileID: 1421016110} + m_Layer: 0 + m_Name: hand_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1421016110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000011404857786, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 1421016109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1426033521 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013069185110, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1426033522} + m_Layer: 0 + m_Name: hands:b_l_index3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1426033522 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011517012044, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426033521} + m_LocalRotation: {x: -0.00000006855413, y: -0.00000003895668, z: -0.059595995, w: 0.99822265} + m_LocalPosition: {x: -0.022153001, y: -0.0000000014452477, z: 7.970192e-10} + m_LocalScale: {x: 0.99999976, y: 0.9999999, z: 0.99999994} + m_Children: + - {fileID: 2132552193} + m_Father: {fileID: 1976326465} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1436046663 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 157742, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1658856030} + serializedVersion: 5 + m_Component: + - component: {fileID: 1436046665} + - component: {fileID: 1436046664} + m_Layer: 0 + m_Name: controller_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1436046664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11477770, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 1436046663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1436046665 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 448722, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 1436046663} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1436277363 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012325767376, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1436277364} + m_Layer: 0 + m_Name: hands:b_l_ring1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1436277364 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013865548944, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1436277363} + m_LocalRotation: {x: -0.101800956, y: 0.5692993, z: 0.8152097, w: 0.031114716} + m_LocalPosition: {x: 0.089531735, y: 0.01271399, z: -0.0018533365} + m_LocalScale: {x: 1.0000001, y: 0.9999999, z: 1} + m_Children: + - {fileID: 188612934} + m_Father: {fileID: 313519822} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1448414925 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012515651468, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1448414926} + m_Layer: 0 + m_Name: hands:b_r_hand_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1448414926 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010358949252, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1448414925} + m_LocalRotation: {x: 0.2270425, y: 0.00000013696271, z: 0.000000027668817, w: 0.9738849} + m_LocalPosition: {x: -0.1361133, y: 0.00000039348112, z: 0.0000007092745} + m_LocalScale: {x: 1.0000002, y: 1, z: 1.0000001} + m_Children: [] + m_Father: {fileID: 256016476} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1470779008 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012334489350, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1470779009} + m_Layer: 0 + m_Name: hands:b_r_middle2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1470779009 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010279714204, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470779008} + m_LocalRotation: {x: 0.00000006068312, y: 0.00000001414483, z: -0.23558186, w: 0.9718545} + m_LocalPosition: {x: 0.045967016, y: 0.000000011164765, z: -0.00000003823086} + m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 0.9999999} + m_Children: + - {fileID: 316040182} + m_Father: {fileID: 1208440875} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1553253456 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011349760634, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1553253457} + m_Layer: 0 + m_Name: hands:b_l_thumb2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1553253457 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011106244114, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1553253456} + m_LocalRotation: {x: -0.000000022563794, y: -0.000000076783515, z: -0.14235, w: 0.9898164} + m_LocalPosition: {x: -0.03258823, y: 0.000000008250139, z: 0.0000000063271166} + m_LocalScale: {x: 1, y: 1, z: 0.9999999} + m_Children: + - {fileID: 1196414139} + m_Father: {fileID: 1601188193} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1601188192 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000014187544400, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1601188193} + m_Layer: 0 + m_Name: hands:b_l_thumb1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1601188193 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011390348006, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1601188192} + m_LocalRotation: {x: -0.24596234, y: -0.945037, z: 0.031994298, w: -0.2130351} + m_LocalPosition: {x: 0.026298413, y: -0.041470293, z: 0.020564139} + m_LocalScale: {x: 1.0000001, y: 1, z: 1.0000001} + m_Children: + - {fileID: 1553253457} + m_Father: {fileID: 313519822} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1654041717 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012026592076, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + serializedVersion: 5 + m_Component: + - component: {fileID: 1654041719} + - component: {fileID: 1654041718} + m_Layer: 0 + m_Name: body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1654041718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000012186362028, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 1654041717} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb7a6650b6cb46545967d3b380b7396c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1654041719 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014100970646, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 1654041717} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 30936217} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1658856030 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114000011404857786, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + propertyPath: customPose + value: + objectReference: {fileID: 0} + - target: {fileID: 114000010372160784, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + propertyPath: customPose + value: + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: LeftHandCustomPose + value: + objectReference: {fileID: 585168899} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: RightHandCustomPose + value: + objectReference: {fileID: 1365922220} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_RootGameObject: {fileID: 30936213} + m_IsPrefabParent: 0 +--- !u!1 &1677342975 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010844843470, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1677342976} + m_Layer: 0 + m_Name: hands:b_r_thumb1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1677342976 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012946508074, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1677342975} + m_LocalRotation: {x: -0.24596235, y: -0.945037, z: 0.031994287, w: -0.2130352} + m_LocalPosition: {x: -0.026297217, y: 0.041471086, z: -0.020563856} + m_LocalScale: {x: 1.0000002, y: 1, z: 1.0000002} + m_Children: + - {fileID: 1827566768} + m_Father: {fileID: 256016476} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1690781230 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012931321476, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1690781231} + m_Layer: 0 + m_Name: hands:b_r_index1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1690781231 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011479365644, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1690781230} + m_LocalRotation: {x: -0.010945086, y: -0.73294145, z: -0.6609521, w: -0.16068438} + m_LocalPosition: {x: -0.087077975, y: 0.03509997, z: 0.0068147373} + m_LocalScale: {x: 1.0000002, y: 1.0000002, z: 1.0000001} + m_Children: + - {fileID: 376675011} + m_Father: {fileID: 256016476} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1754791341 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 168682, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + serializedVersion: 5 + m_Component: + - component: {fileID: 1754791342} + m_Layer: 0 + m_Name: TrackerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1754791342 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 468682, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 1754791341} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1827566767 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010590504850, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1827566768} + m_Layer: 0 + m_Name: hands:b_r_thumb2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1827566768 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012527699014, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1827566767} + m_LocalRotation: {x: 0.0000000097368815, y: 0.00000006591119, z: -0.14235, w: 0.9898164} + m_LocalPosition: {x: 0.03258561, y: 0.0000027121296, z: -0.00000029114267} + m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 0.99999994} + m_Children: + - {fileID: 665325993} + m_Father: {fileID: 1677342976} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1843625168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010482306814, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + serializedVersion: 5 + m_Component: + - component: {fileID: 1906766866} + - component: {fileID: 1843625169} + m_Layer: 0 + m_Name: hand_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1843625169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000010372160784, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 1843625168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1850704992 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011760721852, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1850704993} + m_Layer: 0 + m_Name: hands:b_r_pinky3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1850704993 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013780580014, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1850704992} + m_LocalRotation: {x: 5.749046e-10, y: -0.000000062709326, z: -0.046993963, w: 0.9988952} + m_LocalPosition: {x: 0.017418418, y: -0.0000004882774, z: -0.00000079565086} + m_LocalScale: {x: 0.99999994, y: 1.0000001, z: 1} + m_Children: + - {fileID: 1956390914} + m_Father: {fileID: 1241509020} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1903904372 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013538305188, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1903904373} + m_Layer: 0 + m_Name: hands:b_l_middle3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1903904373 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014050872134, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1903904372} + m_LocalRotation: {x: -0.000000028111124, y: -0.000000020147448, z: -0.06577558, + w: 0.99783444} + m_LocalPosition: {x: -0.029590594, y: -0.000000002521893, z: 0.000000006982977} + m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 1} + m_Children: + - {fileID: 491546332} + m_Father: {fileID: 239467253} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &1906766866 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011212216358, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1658856030} + m_GameObject: {fileID: 1843625168} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 34790507} + m_Father: {fileID: 30936217} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1911745903 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013162173792, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1911745904} + m_Layer: 0 + m_Name: hands:b_l_ring3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1911745904 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012482291932, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1911745903} + m_LocalRotation: {x: -0.00000002929157, y: -0.000000028796071, z: -0.08394354, w: 0.9964705} + m_LocalPosition: {x: -0.02577529, y: -0.000000009610838, z: 6.700984e-11} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1210129110} + m_Father: {fileID: 188612934} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1924116397 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012660963546, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1924116398} + m_Layer: 0 + m_Name: hands:b_l_pinky0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1924116398 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011221533814, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1924116397} + m_LocalRotation: {x: -0.46932158, y: -0.083111465, z: 0.086728446, w: 0.8748188} + m_LocalPosition: {x: 0.03127151, y: 0.019068034, z: 0.01150759} + m_LocalScale: {x: 1, y: 0.9999998, z: 1} + m_Children: + - {fileID: 56595421} + m_Father: {fileID: 313519822} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1934855144 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011317487948, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1934855145} + m_Layer: 0 + m_Name: hands:b_l_pinky3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1934855145 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010957509028, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1934855144} + m_LocalRotation: {x: -0.00000003786612, y: -0.000000019554271, z: -0.046994086, + w: 0.99889517} + m_LocalPosition: {x: -0.017418226, y: 1.6851232e-10, z: 0.0000000028433322} + m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 1} + m_Children: + - {fileID: 363627944} + m_Father: {fileID: 136091887} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1956390913 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013571305894, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1956390914} + m_Layer: 0 + m_Name: hands:b_r_pinky_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1956390914 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011129579048, guid: 1c855b4191df5b34881d54b2ecbd9599, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1956390913} + m_LocalRotation: {x: 0.000000002543885, y: -0.000000019746642, z: -0.0000000045765707, + w: 1} + m_LocalPosition: {x: 0.019441077, y: 0.00000018885824, z: 0.00000068496325} + m_LocalScale: {x: 1, y: 0.99999994, z: 1} + m_Children: [] + m_Father: {fileID: 1850704993} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1976326464 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013780635352, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1976326465} + m_Layer: 0 + m_Name: hands:b_l_index2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1976326465 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012632991036, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1976326464} + m_LocalRotation: {x: 0.00000009011916, y: -0.000000039812484, z: -0.1862468, w: 0.98250306} + m_LocalPosition: {x: -0.04157472, y: 2.9479105e-10, z: 0.0000000031051308} + m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1} + m_Children: + - {fileID: 1426033522} + m_Father: {fileID: 870347746} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2098184028 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 113768, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + serializedVersion: 5 + m_Component: + - component: {fileID: 2098184029} + m_Layer: 0 + m_Name: RightHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2098184029 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 487254, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1420335878} + m_GameObject: {fileID: 2098184028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080567925} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2132552192 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011846866994, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2132552193} + m_Layer: 0 + m_Name: hands:b_l_index_ignore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2132552193 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011988422824, guid: c72434349284925498bb2d7214b00161, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2132552192} + m_LocalRotation: {x: 0.000000007592371, y: 0.0000000031128744, z: -0.0000000021318365, + w: 1} + m_LocalPosition: {x: -0.029121812, y: -0.000000009164141, z: 0.0000000021545208} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1426033522} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Oculus/Avatar/Samples/GripPoses/GripPoses.unity.meta b/Assets/Oculus/Avatar/Samples/GripPoses/GripPoses.unity.meta new file mode 100644 index 0000000..0993774 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/GripPoses/GripPoses.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 697c6df5e1eddad40b634d311b0bb2e5 +timeCreated: 1477966491 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/GripPoses/Scripts.meta b/Assets/Oculus/Avatar/Samples/GripPoses/Scripts.meta new file mode 100644 index 0000000..1d671f8 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/GripPoses/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 85678699140c6c3429a87f4d679b1a17 +folderAsset: yes +timeCreated: 1477957292 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/GripPoses/Scripts/PoseEditHelper.cs b/Assets/Oculus/Avatar/Samples/GripPoses/Scripts/PoseEditHelper.cs new file mode 100644 index 0000000..f00ee91 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/GripPoses/Scripts/PoseEditHelper.cs @@ -0,0 +1,31 @@ +using UnityEngine; +using System.Collections; +using System; + +public class PoseEditHelper : MonoBehaviour { + + public Transform poseRoot; + + void OnDrawGizmos() + { + if (poseRoot != null) + { + DrawJoints(poseRoot); + } + } + + private void DrawJoints(Transform joint) + { + Gizmos.DrawWireSphere(joint.position, 0.005f); + for (int i = 0; i < joint.childCount; ++i) + { + Transform child = joint.GetChild(i); + if (child.name.EndsWith("_grip") || child.name.EndsWith("hand_ignore")) + { + continue; + } + Gizmos.DrawLine(joint.position, child.position); + DrawJoints(child); + } + } +} diff --git a/Assets/Oculus/Avatar/Samples/GripPoses/Scripts/PoseEditHelper.cs.meta b/Assets/Oculus/Avatar/Samples/GripPoses/Scripts/PoseEditHelper.cs.meta new file mode 100644 index 0000000..15ec7ac --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/GripPoses/Scripts/PoseEditHelper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6bc5b4ba964e02b4ea773b2aaca7dc67 +timeCreated: 1477957304 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/LocalAvatar.meta b/Assets/Oculus/Avatar/Samples/LocalAvatar.meta new file mode 100644 index 0000000..20dd2bc --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/LocalAvatar.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2883b756c033a864ca988b3f522f3339 +folderAsset: yes +timeCreated: 1467313725 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/LocalAvatar/LocalAvatar.unity b/Assets/Oculus/Avatar/Samples/LocalAvatar/LocalAvatar.unity new file mode 100644 index 0000000..2ad6290 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/LocalAvatar/LocalAvatar.unity @@ -0,0 +1,501 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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_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.18053587, g: 0.22601774, b: 0.30718702, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666667 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!4 &369561663 stripped +Transform: + m_PrefabParentObject: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 395836775} +--- !u!1001 &395836775 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1310461517} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000016292068 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LittleAvatar + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: -180 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 8254050, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &957641525 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 957641529} + - 33: {fileID: 957641528} + - 65: {fileID: 957641527} + - 23: {fileID: 957641526} + m_Layer: 0 + m_Name: MediumPedestal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!23 &957641526 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &957641527 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &957641528 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &957641529 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 2, y: 4, z: 2} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!1001 &1239677853 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: _trackingOriginType + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1310461516 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1310461517} + - 33: {fileID: 1310461520} + - 65: {fileID: 1310461519} + - 23: {fileID: 1310461518} + m_Layer: 0 + m_Name: LittlePedestal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1310461517 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1310461516} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.5, z: 0.5} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 369561663} + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!23 &1310461518 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1310461516} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1310461519 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1310461516} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1310461520 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1310461516} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1658970730 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1658970732} + - 108: {fileID: 1658970731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1658970731 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1658970730} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 0.5955882, g: 0.5955882, b: 0.5955882, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1658970732 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1658970730} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1001 &2053404217 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_IsPrefabParent: 0 diff --git a/Assets/Oculus/Avatar/Samples/LocalAvatar/LocalAvatar.unity.meta b/Assets/Oculus/Avatar/Samples/LocalAvatar/LocalAvatar.unity.meta new file mode 100644 index 0000000..8733076 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/LocalAvatar/LocalAvatar.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c65ef87480e70eb43931036c9c66d08d +timeCreated: 1466730185 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/RemoteLoopback.meta b/Assets/Oculus/Avatar/Samples/RemoteLoopback.meta new file mode 100644 index 0000000..a724a74 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/RemoteLoopback.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f26892c9951b6f54c82a5f1bf34e8d8a +folderAsset: yes +timeCreated: 1468000039 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/RemoteLoopback/RemoteLoopback.unity b/Assets/Oculus/Avatar/Samples/RemoteLoopback/RemoteLoopback.unity new file mode 100644 index 0000000..e90f4e1 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/RemoteLoopback/RemoteLoopback.unity @@ -0,0 +1,2920 @@ +%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: 8 + 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.44657898, g: 0.4964133, b: 0.5748178, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + 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: 8 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + 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_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !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 + m_NavMeshData: {fileID: 0} +--- !u!1 &17753369 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1098047352992398, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 17753371} + - component: {fileID: 17753370} + m_Layer: 0 + m_Name: DefaultBodyMaterialManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &17753370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114949324920430652, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 17753369} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a139d83bf6796734db220df8a5bfacbd, type: 3} + m_Name: + m_EditorClassIdentifier: + DiffuseFallbacks: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: b3e87b1024f5fa8408d004b398e7b0c0, type: 3} + NormalFallbacks: + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 22a046c12fc7f3c4d98a98add109fa96, type: 3} + BodyColorTints: + - {r: 0.9764706, g: 0.8509804, b: 0.6862745, a: 1} + - {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + - {r: 0.9764706, g: 0.9019608, b: 0.6745098, a: 1} + - {r: 0.7647059, g: 0.6039216, b: 0.2509804, a: 1} + - {r: 0.45490196, g: 0.1882353, b: 0, a: 1} + - {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + LocalAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.86, b: 0.77, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.3 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.6235, g: 0.4627, b: 0.3412, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: -5.3487954e+9, g: 771.1758, b: -5.6686517e+23, a: 4.9667446e-34} + Textures: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 1, y: 0.86, z: 0.77, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 0.6235, y: 0.4627, z: 0.3412, w: 1} + - {x: -0.025753247, y: -2.0311036e-13, z: -6.2685677e-31, w: -2.0021067e+22} + DiffuseIntensities: + - 0.3 + - 0.1 + - 0 + - 0.15 + - 0.15 + RimIntensities: + - 5 + - 2 + - 2.84 + - 4 + - 4 + BacklightIntensities: + - 1 + - 0.7 + - 0.7 + - 0.7 + - 0.7 + ReflectionIntensities: + - 0 + - 0.3 + - 0.4 + - 0 + - 0 + DefaultAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.86, b: 0.77, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.3 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.6235, g: 0.4627, b: 0.3412, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: -5.3487954e+9, g: 771.1758, b: -5.6686517e+23, a: 4.9667446e-34} + Textures: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 1, y: 0.86, z: 0.77, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 0.6235, y: 0.4627, z: 0.3412, w: 1} + - {x: -0.025753247, y: -2.0311036e-13, z: -6.2685677e-31, w: -2.0021067e+22} + DiffuseIntensities: + - 0.3 + - 0.1 + - 0 + - 0.15 + - 0.15 + RimIntensities: + - 5 + - 2 + - 2.84 + - 4 + - 4 + BacklightIntensities: + - 1 + - 0.7 + - 0.7 + - 0.7 + - 0.7 + ReflectionIntensities: + - 0 + - 0.3 + - 0.4 + - 0 + - 0 +--- !u!4 &17753371 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4581494204247758, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 17753369} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294178692} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &131845959 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 157742, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 131845961} + - component: {fileID: 131845960} + m_Layer: 0 + m_Name: controller_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &131845960 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11477770, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 131845959} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &131845961 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 448722, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 131845959} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294178692} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &138730797 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 168682, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + serializedVersion: 5 + m_Component: + - component: {fileID: 138730798} + m_Layer: 0 + m_Name: TrackerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &138730798 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 468682, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 138730797} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1013109275} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &150279911 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1231602751420816, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 150279913} + - component: {fileID: 150279912} + m_Layer: 0 + m_Name: DefaultHandMaterialManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &150279912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114029231360713414, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 150279911} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a139d83bf6796734db220df8a5bfacbd, type: 3} + m_Name: + m_EditorClassIdentifier: + DiffuseFallbacks: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: b3e87b1024f5fa8408d004b398e7b0c0, type: 3} + NormalFallbacks: + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 22a046c12fc7f3c4d98a98add109fa96, type: 3} + BodyColorTints: + - {r: 0.9764706, g: 0.8509804, b: 0.6862745, a: 1} + - {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + - {r: 0.9764706, g: 0.9019608, b: 0.6745098, a: 1} + - {r: 0.7647059, g: 0.6039216, b: 0.2509804, a: 1} + - {r: 0.45490196, g: 0.1882353, b: 0, a: 1} + - {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + LocalAvatarConfig: + ComponentMaterialProperties: [] + MaterialPropertyBlock: + Colors: [] + DiffuseIntensities: [] + RimIntensities: [] + BacklightIntensities: [] + ReflectionIntensities: [] + DefaultAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + Textures: [] + DiffuseIntensity: 0.301 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: [] + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 0.80784315, g: 0.80784315, b: 0.80784315, a: 1} + Textures: [] + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.22352941, g: 0.11372549, b: 0, a: 1} + Textures: [] + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + Textures: [] + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + DiffuseIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + RimIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + BacklightIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + ReflectionIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 +--- !u!4 &150279913 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4468369968689664, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 150279911} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1202279117} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &171521067 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 113768, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + serializedVersion: 5 + m_Component: + - component: {fileID: 171521068} + m_Layer: 0 + m_Name: RightHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &171521068 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 487254, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 171521067} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 397287355} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &175213101 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + serializedVersion: 5 + m_Component: + - component: {fileID: 175213102} + - component: {fileID: 175213103} + m_Layer: 0 + m_Name: RightEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &175213102 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 175213101} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 397287355} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &175213103 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000010189485334, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 175213101} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &197247450 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010482306814, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 197247452} + - component: {fileID: 197247451} + m_Layer: 0 + m_Name: hand_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &197247451 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000010372160784, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 197247450} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &197247452 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011212216358, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 197247450} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294178692} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &268270709 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100002, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + serializedVersion: 5 + m_Component: + - component: {fileID: 268270710} + - component: {fileID: 268270712} + - component: {fileID: 268270711} + m_Layer: 0 + m_Name: CenterEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &268270710 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400002, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 268270709} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1013109275} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &268270711 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2037080, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 268270709} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 90 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!81 &268270712 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 268270709} + m_Enabled: 1 +--- !u!1 &294178688 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 294178692} + - component: {fileID: 294178691} + - component: {fileID: 294178690} + - component: {fileID: 294178689} + m_Layer: 0 + m_Name: LocalAvatar (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &294178689 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11441414, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 294178688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac27124318cf8e84aa7350c2ac1cdb80, type: 3} + m_Name: + m_EditorClassIdentifier: + Mode: 0 +--- !u!82 &294178690 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8254050, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 294178688} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &294178691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 294178688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00f3402a2ea5bff4880c0313515240cd, type: 3} + m_Name: + m_EditorClassIdentifier: + DefaultBodyMaterialManager: {fileID: 17753370} + DefaultHandMaterialManager: {fileID: 373740623} + Driver: {fileID: 294178689} + Base: {fileID: 1329503002} + Body: {fileID: 1437741096} + ControllerLeft: {fileID: 1358492916} + ControllerRight: {fileID: 131845960} + HandLeft: {fileID: 1617907520} + HandRight: {fileID: 197247451} + RecordPackets: 0 + UseSDKPackets: 1 + StartWithControllers: 0 + FirstPersonLayer: + layerIndex: 0 + ThirdPersonLayer: + layerIndex: 0 + ShowFirstPerson: 0 + ShowThirdPerson: 1 + Capabilities: -1 + SurfaceShader: {fileID: 4800000, guid: 73f67c4e7bf718b4385aa6b1f8a06591, type: 3} + SurfaceShaderSelfOccluding: {fileID: 4800000, guid: 69f342b79d37541489919a19cfd8a924, + type: 3} + SurfaceShaderPBS: {fileID: 4800000, guid: 5e52aa58207bbf24d8eb8ec969e9ae88, type: 3} + SurfaceShaderPBSV2Single: {fileID: 4800000, guid: c26fc51e445dcfd4db09305d861dc11c, + type: 3} + SurfaceShaderPBSV2Combined: {fileID: 4800000, guid: 37d2b8298f61cd2469465fc36108675d, + type: 3} + SurfaceShaderPBSV2Simple: {fileID: 4800000, guid: 36b8b481cf607814a8cec318f0148d63, + type: 3} + SurfaceShaderPBSV2Loading: {fileID: 4800000, guid: 822f5e641dc5dd54ca9555b727b3277f, + type: 3} + oculusUserID: 1727176100935614 + LeftHandCustomPose: {fileID: 0} + RightHandCustomPose: {fileID: 0} + PacketSettings: + UpdateRate: 0.033333335 + VoiceAmplitude: 0 + EnableMouthVertexAnimation: 0 +--- !u!4 &294178692 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 294178688} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1329503003} + - {fileID: 1437741097} + - {fileID: 1617907521} + - {fileID: 1358492917} + - {fileID: 197247452} + - {fileID: 131845961} + - {fileID: 17753371} + - {fileID: 373740624} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!1 &308398286 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100006, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + serializedVersion: 5 + m_Component: + - component: {fileID: 308398287} + - component: {fileID: 308398288} + m_Layer: 0 + m_Name: LeftEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &308398287 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400006, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 308398286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1013109275} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &308398288 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000012175207052, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 308398286} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1001 &344808318 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1202279117} + m_Modifications: + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: usePositionTracking + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: _trackingOriginType + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_RootGameObject: {fileID: 777067216} + m_IsPrefabParent: 0 +--- !u!1 &373740622 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1231602751420816, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 373740624} + - component: {fileID: 373740623} + m_Layer: 0 + m_Name: DefaultHandMaterialManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &373740623 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114029231360713414, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 373740622} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a139d83bf6796734db220df8a5bfacbd, type: 3} + m_Name: + m_EditorClassIdentifier: + DiffuseFallbacks: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: b3e87b1024f5fa8408d004b398e7b0c0, type: 3} + NormalFallbacks: + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 22a046c12fc7f3c4d98a98add109fa96, type: 3} + BodyColorTints: + - {r: 0.9764706, g: 0.8509804, b: 0.6862745, a: 1} + - {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + - {r: 0.9764706, g: 0.9019608, b: 0.6745098, a: 1} + - {r: 0.7647059, g: 0.6039216, b: 0.2509804, a: 1} + - {r: 0.45490196, g: 0.1882353, b: 0, a: 1} + - {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + LocalAvatarConfig: + ComponentMaterialProperties: [] + MaterialPropertyBlock: + Colors: [] + DiffuseIntensities: [] + RimIntensities: [] + BacklightIntensities: [] + ReflectionIntensities: [] + DefaultAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + Textures: [] + DiffuseIntensity: 0.301 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: [] + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 0.80784315, g: 0.80784315, b: 0.80784315, a: 1} + Textures: [] + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.22352941, g: 0.11372549, b: 0, a: 1} + Textures: [] + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + Textures: [] + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + - {x: 0, y: 0, z: 0, w: 0} + DiffuseIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + RimIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + BacklightIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 + ReflectionIntensities: + - 0 + - 0 + - 0 + - 0 + - 0 +--- !u!4 &373740624 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4468369968689664, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 373740622} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294178692} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &391167544 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + serializedVersion: 5 + m_Component: + - component: {fileID: 391167545} + - component: {fileID: 391167546} + m_Layer: 0 + m_Name: RightEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &391167545 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 391167544} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1013109275} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &391167546 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000010189485334, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 391167544} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &397287354 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 159718, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + serializedVersion: 5 + m_Component: + - component: {fileID: 397287355} + m_Layer: 0 + m_Name: TrackingSpace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &397287355 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 459718, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 397287354} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1892901576} + - {fileID: 1227517733} + - {fileID: 175213102} + - {fileID: 1934788895} + - {fileID: 467948675} + - {fileID: 171521068} + m_Father: {fileID: 1826797345} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &467948674 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 109308, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + serializedVersion: 5 + m_Component: + - component: {fileID: 467948675} + m_Layer: 0 + m_Name: LeftHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &467948675 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 482130, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 467948674} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 397287355} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &562909166 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010910743596, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 562909168} + - component: {fileID: 562909167} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &562909167 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000010884708534, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 562909166} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a0e33623ec5372748b5703f61a4df82d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &562909168 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010416372058, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 562909166} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1202279117} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &598885955 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 184120, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 598885957} + - component: {fileID: 598885956} + m_Layer: 0 + m_Name: controller_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &598885956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11405130, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 598885955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &598885957 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400938, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 598885955} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1202279117} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &673621216 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 109308, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + serializedVersion: 5 + m_Component: + - component: {fileID: 673621217} + m_Layer: 0 + m_Name: LeftHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &673621217 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 482130, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 673621216} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1013109275} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &682638372 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 157742, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 682638374} + - component: {fileID: 682638373} + m_Layer: 0 + m_Name: controller_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &682638373 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11477770, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 682638372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &682638374 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 448722, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 682638372} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1202279117} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &777067216 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + serializedVersion: 5 + m_Component: + - component: {fileID: 777067217} + - component: {fileID: 777067219} + - component: {fileID: 777067218} + m_Layer: 0 + m_Name: OVRCameraRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &777067217 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 777067216} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1013109275} + m_Father: {fileID: 1202279117} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &777067218 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 777067216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + _trackingOriginType: 1 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 0 +--- !u!114 &777067219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400010, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 777067216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df9f338034892c44ebb62d97894772f1, type: 3} + m_Name: + m_EditorClassIdentifier: + usePerEyeCameras: 0 + useFixedUpdateForTracking: 0 +--- !u!1 &957641525 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 957641529} + - component: {fileID: 957641528} + - component: {fileID: 957641527} + - component: {fileID: 957641526} + m_Layer: 0 + m_Name: Floor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!23 &957641526 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + 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: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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!65 &957641527 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &957641528 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &957641529 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 957641525} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.5, z: 0} + m_LocalScale: {x: 10, y: 1, z: 10} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &959241969 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_Name + value: LocalAvatar (1) + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 1727176100935614 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowFirstPerson + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: ShowThirdPerson + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_RootGameObject: {fileID: 294178688} + m_IsPrefabParent: 0 +--- !u!1 &960813540 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1098047352992398, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 960813542} + - component: {fileID: 960813541} + m_Layer: 0 + m_Name: DefaultBodyMaterialManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &960813541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114949324920430652, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 960813540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a139d83bf6796734db220df8a5bfacbd, type: 3} + m_Name: + m_EditorClassIdentifier: + DiffuseFallbacks: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: b3e87b1024f5fa8408d004b398e7b0c0, type: 3} + NormalFallbacks: + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 22a046c12fc7f3c4d98a98add109fa96, type: 3} + BodyColorTints: + - {r: 0.9764706, g: 0.8509804, b: 0.6862745, a: 1} + - {r: 1, g: 0.9529412, b: 0.92156863, a: 1} + - {r: 0.9764706, g: 0.9019608, b: 0.6745098, a: 1} + - {r: 0.7647059, g: 0.6039216, b: 0.2509804, a: 1} + - {r: 0.45490196, g: 0.1882353, b: 0, a: 1} + - {r: 0.22352941, g: 0.023529412, b: 0.011764706, a: 1} + LocalAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.86, b: 0.77, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.3 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.6235, g: 0.4627, b: 0.3412, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: -5.3487954e+9, g: 771.1758, b: -5.6686517e+23, a: 4.9667446e-34} + Textures: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 1, y: 0.86, z: 0.77, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 0.6235, y: 0.4627, z: 0.3412, w: 1} + - {x: -0.025753247, y: -2.0311036e-13, z: -6.2685677e-31, w: -2.0021067e+22} + DiffuseIntensities: + - 0.3 + - 0.1 + - 0 + - 0.15 + - 0.15 + RimIntensities: + - 5 + - 2 + - 2.84 + - 4 + - 4 + BacklightIntensities: + - 1 + - 0.7 + - 0.7 + - 0.7 + - 0.7 + ReflectionIntensities: + - 0 + - 0.3 + - 0.4 + - 0 + - 0 + DefaultAvatarConfig: + ComponentMaterialProperties: + - TypeIndex: 0 + Color: {r: 1, g: 0.86, b: 0.77, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.3 + RimIntensity: 5 + BacklightIntensity: 1 + ReflectionIntensity: 0 + - TypeIndex: 1 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.1 + RimIntensity: 2 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.3 + - TypeIndex: 2 + Color: {r: 1, g: 1, b: 1, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0 + RimIntensity: 2.84 + BacklightIntensity: 0.7 + ReflectionIntensity: 0.4 + - TypeIndex: 3 + Color: {r: 0.6235, g: 0.4627, b: 0.3412, a: 1} + Textures: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + - TypeIndex: 4 + Color: {r: -5.3487954e+9, g: 771.1758, b: -5.6686517e+23, a: 4.9667446e-34} + Textures: + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + - {fileID: 2800000, guid: 9fb4a3be60417d043865e457a9d51e63, type: 3} + - {fileID: 2800000, guid: 502d438d2584976448c3cdb146ed836d, type: 3} + DiffuseIntensity: 0.15 + RimIntensity: 4 + BacklightIntensity: 0.7 + ReflectionIntensity: 0 + MaterialPropertyBlock: + Colors: + - {x: 1, y: 0.86, z: 0.77, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 1, y: 1, z: 1, w: 1} + - {x: 0.6235, y: 0.4627, z: 0.3412, w: 1} + - {x: -0.025753247, y: -2.0311036e-13, z: -6.2685677e-31, w: -2.0021067e+22} + DiffuseIntensities: + - 0.3 + - 0.1 + - 0 + - 0.15 + - 0.15 + RimIntensities: + - 5 + - 2 + - 2.84 + - 4 + - 4 + BacklightIntensities: + - 1 + - 0.7 + - 0.7 + - 0.7 + - 0.7 + ReflectionIntensities: + - 0 + - 0.3 + - 0.4 + - 0 + - 0 +--- !u!4 &960813542 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4581494204247758, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 960813540} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1202279117} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1013109274 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 159718, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + serializedVersion: 5 + m_Component: + - component: {fileID: 1013109275} + m_Layer: 0 + m_Name: TrackingSpace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1013109275 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 459718, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 1013109274} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 308398287} + - {fileID: 268270710} + - {fileID: 391167545} + - {fileID: 138730798} + - {fileID: 673621217} + - {fileID: 1663001939} + m_Father: {fileID: 777067217} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1174003223 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 158226, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 1202279117} + - component: {fileID: 1174003226} + - component: {fileID: 1174003225} + - component: {fileID: 1174003224} + m_Layer: 0 + m_Name: LocalAvatar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1174003224 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11441414, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 1174003223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac27124318cf8e84aa7350c2ac1cdb80, type: 3} + m_Name: + m_EditorClassIdentifier: + Mode: 0 +--- !u!82 &1174003225 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8254050, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 1174003223} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &1174003226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 1174003223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00f3402a2ea5bff4880c0313515240cd, type: 3} + m_Name: + m_EditorClassIdentifier: + DefaultBodyMaterialManager: {fileID: 960813541} + DefaultHandMaterialManager: {fileID: 150279912} + Driver: {fileID: 1174003224} + Base: {fileID: 562909167} + Body: {fileID: 2127858357} + ControllerLeft: {fileID: 598885956} + ControllerRight: {fileID: 682638373} + HandLeft: {fileID: 1591749837} + HandRight: {fileID: 2116318179} + RecordPackets: 0 + UseSDKPackets: 1 + StartWithControllers: 0 + FirstPersonLayer: + layerIndex: 0 + ThirdPersonLayer: + layerIndex: 0 + ShowFirstPerson: 1 + ShowThirdPerson: 0 + Capabilities: -1 + SurfaceShader: {fileID: 4800000, guid: 73f67c4e7bf718b4385aa6b1f8a06591, type: 3} + SurfaceShaderSelfOccluding: {fileID: 4800000, guid: 69f342b79d37541489919a19cfd8a924, + type: 3} + SurfaceShaderPBS: {fileID: 4800000, guid: 5e52aa58207bbf24d8eb8ec969e9ae88, type: 3} + SurfaceShaderPBSV2Single: {fileID: 4800000, guid: c26fc51e445dcfd4db09305d861dc11c, + type: 3} + SurfaceShaderPBSV2Combined: {fileID: 4800000, guid: 37d2b8298f61cd2469465fc36108675d, + type: 3} + SurfaceShaderPBSV2Simple: {fileID: 4800000, guid: 36b8b481cf607814a8cec318f0148d63, + type: 3} + SurfaceShaderPBSV2Loading: {fileID: 4800000, guid: 822f5e641dc5dd54ca9555b727b3277f, + type: 3} + oculusUserID: 1727176100935614 + LeftHandCustomPose: {fileID: 0} + RightHandCustomPose: {fileID: 0} + PacketSettings: + UpdateRate: 0.033333335 + VoiceAmplitude: 0 + EnableMouthVertexAnimation: 0 +--- !u!4 &1202279117 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 1174003223} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 562909168} + - {fileID: 2127858358} + - {fileID: 1591749838} + - {fileID: 777067217} + - {fileID: 598885957} + - {fileID: 2116318180} + - {fileID: 682638374} + - {fileID: 960813542} + - {fileID: 150279913} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1221294548 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: _trackingOriginType + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_RootGameObject: {fileID: 1826797342} + m_IsPrefabParent: 0 +--- !u!1 &1227517732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100002, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + serializedVersion: 5 + m_Component: + - component: {fileID: 1227517733} + - component: {fileID: 1227517735} + - component: {fileID: 1227517734} + m_Layer: 0 + m_Name: CenterEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1227517733 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400002, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1227517732} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 397287355} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &1227517734 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2037080, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1227517732} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 90 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!81 &1227517735 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1227517732} + m_Enabled: 1 +--- !u!1 &1329503001 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010910743596, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 1329503003} + - component: {fileID: 1329503002} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1329503002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000010884708534, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 1329503001} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a0e33623ec5372748b5703f61a4df82d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1329503003 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000010416372058, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 1329503001} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294178692} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1358492915 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 184120, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 1358492917} + - component: {fileID: 1358492916} + m_Layer: 0 + m_Name: controller_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1358492916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11405130, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 1358492915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 77e19ec58d4a9e844970103e5bd8946a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1358492917 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400938, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 1358492915} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294178692} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1437741095 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012026592076, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 1437741097} + - component: {fileID: 1437741096} + m_Layer: 0 + m_Name: body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1437741096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000012186362028, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 1437741095} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb7a6650b6cb46545967d3b380b7396c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1437741097 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014100970646, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 1437741095} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294178692} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1591749836 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011125779090, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 1591749838} + - component: {fileID: 1591749837} + m_Layer: 0 + m_Name: hand_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1591749837 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000011404857786, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 1591749836} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1591749838 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013364346644, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 1591749836} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1202279117} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1617907519 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000011125779090, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + serializedVersion: 5 + m_Component: + - component: {fileID: 1617907521} + - component: {fileID: 1617907520} + m_Layer: 0 + m_Name: hand_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1617907520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000011404857786, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 1617907519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1617907521 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013364346644, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 959241969} + m_GameObject: {fileID: 1617907519} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294178692} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1658970730 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1658970732} + - component: {fileID: 1658970731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1658970731 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1658970730} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 0.5955882, g: 0.5955882, b: 0.5955882, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1658970732 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1658970730} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1663001938 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 113768, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + serializedVersion: 5 + m_Component: + - component: {fileID: 1663001939} + m_Layer: 0 + m_Name: RightHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1663001939 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 487254, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 344808318} + m_GameObject: {fileID: 1663001938} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1013109275} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1742914067 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalPosition.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 463470, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + propertyPath: oculusUserID + value: 1727176100935614 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + m_RootGameObject: {fileID: 1174003223} + m_IsPrefabParent: 0 +--- !u!1 &1826797342 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + serializedVersion: 5 + m_Component: + - component: {fileID: 1826797345} + - component: {fileID: 1826797344} + - component: {fileID: 1826797343} + m_Layer: 0 + m_Name: OVRCameraRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1826797343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400000, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1826797342} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + _trackingOriginType: 1 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 0 +--- !u!114 &1826797344 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400010, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1826797342} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df9f338034892c44ebb62d97894772f1, type: 3} + m_Name: + m_EditorClassIdentifier: + usePerEyeCameras: 0 + useFixedUpdateForTracking: 0 +--- !u!4 &1826797345 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1826797342} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 397287355} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1892901575 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100006, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + serializedVersion: 5 + m_Component: + - component: {fileID: 1892901576} + - component: {fileID: 1892901577} + m_Layer: 0 + m_Name: LeftEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1892901576 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400006, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1892901575} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 397287355} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &1892901577 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000012175207052, guid: 126d619cf4daa52469682f85c1378b4a, + type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1892901575} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &1934788894 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 168682, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + serializedVersion: 5 + m_Component: + - component: {fileID: 1934788895} + m_Layer: 0 + m_Name: TrackerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1934788895 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 468682, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_PrefabInternal: {fileID: 1221294548} + m_GameObject: {fileID: 1934788894} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 397287355} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2116318178 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000010482306814, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 2116318180} + - component: {fileID: 2116318179} + m_Layer: 0 + m_Name: hand_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2116318179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000010372160784, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 2116318178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e53b07ad62d980a4da9fffff0b05fd2e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &2116318180 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000011212216358, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 2116318178} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.15, y: 1.221, z: 0.282} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1202279117} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2127858356 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012026592076, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + serializedVersion: 5 + m_Component: + - component: {fileID: 2127858358} + - component: {fileID: 2127858357} + m_Layer: 0 + m_Name: body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2127858357 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114000012186362028, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 2127858356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb7a6650b6cb46545967d3b380b7396c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &2127858358 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000014100970646, guid: 84c8b8609f9bb434eaf5248f17ff1293, + type: 2} + m_PrefabInternal: {fileID: 1742914067} + m_GameObject: {fileID: 2127858356} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1202279117} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Oculus/Avatar/Samples/RemoteLoopback/RemoteLoopback.unity.meta b/Assets/Oculus/Avatar/Samples/RemoteLoopback/RemoteLoopback.unity.meta new file mode 100644 index 0000000..5566f8c --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/RemoteLoopback/RemoteLoopback.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa35ff5ba76fb384d839383c84209da9 +timeCreated: 1468000130 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts.meta b/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts.meta new file mode 100644 index 0000000..609a646 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: edf34aa3892fd9f4eb0795663f7e3ffc +folderAsset: yes +timeCreated: 1468000607 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts/RemoteLoopbackManager.cs b/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts/RemoteLoopbackManager.cs new file mode 100644 index 0000000..ae501eb --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts/RemoteLoopbackManager.cs @@ -0,0 +1,155 @@ +using UnityEngine; +using System.Collections; +using System; +using System.IO; +using Oculus.Avatar; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +public class RemoteLoopbackManager : MonoBehaviour +{ + class PacketLatencyPair + { + public byte[] PacketData; + public float FakeLatency; + }; + + public OvrAvatar LocalAvatar; + public OvrAvatar LoopbackAvatar; + + [System.Serializable] + public class SimulatedLatencySettings + { + [Range(0.0f, 0.5f)] + public float FakeLatencyMax = 0.25f; //250 ms max latency + + [Range(0.0f, 0.5f)] + public float FakeLatencyMin = 0.002f; //2ms min latency + + [Range(0.0f, 1.0f)] + public float LatencyWeight = 0.25f; // How much the latest sample impacts the current latency + + [Range(0,10)] + public int MaxSamples = 4; //How many samples in our window + + internal float AverageWindow = 0f; + internal float LatencySum = 0f; + internal LinkedList LatencyValues = new LinkedList(); + + public float NextValue() + { + AverageWindow = LatencySum / (float)LatencyValues.Count; + float RandomLatency = UnityEngine.Random.Range(FakeLatencyMin, FakeLatencyMax); + float FakeLatency = AverageWindow * (1f - LatencyWeight) + LatencyWeight * RandomLatency; + + if (LatencyValues.Count >= MaxSamples) + { + LatencySum -= LatencyValues.First.Value; + LatencyValues.RemoveFirst(); + } + + LatencySum += FakeLatency; + LatencyValues.AddLast(FakeLatency); + + return FakeLatency; + } + }; + + public SimulatedLatencySettings LatencySettings = new SimulatedLatencySettings(); + + private int PacketSequence = 0; + + LinkedList packetQueue = new LinkedList(); + + void Start() + { + LocalAvatar.RecordPackets = true; + LocalAvatar.PacketRecorded += OnLocalAvatarPacketRecorded; + float FirstValue = UnityEngine.Random.Range(LatencySettings.FakeLatencyMin, LatencySettings.FakeLatencyMax); + LatencySettings.LatencyValues.AddFirst(FirstValue); + LatencySettings.LatencySum += FirstValue; + } + + void OnLocalAvatarPacketRecorded(object sender, OvrAvatar.PacketEventArgs args) + { + using (MemoryStream outputStream = new MemoryStream()) + { + BinaryWriter writer = new BinaryWriter(outputStream); + + if (LocalAvatar.UseSDKPackets) + { + var size = CAPI.ovrAvatarPacket_GetSize(args.Packet.ovrNativePacket); + byte[] data = new byte[size]; + CAPI.ovrAvatarPacket_Write(args.Packet.ovrNativePacket, size, data); + + writer.Write(PacketSequence++); + writer.Write(size); + writer.Write(data); + } + else + { + writer.Write(PacketSequence++); + args.Packet.Write(outputStream); + } + + SendPacketData(outputStream.ToArray()); + } + } + + void Update() + { + if (packetQueue.Count > 0) + { + List deadList = new List(); + foreach (var packet in packetQueue) + { + packet.FakeLatency -= Time.deltaTime; + + if (packet.FakeLatency < 0f) + { + ReceivePacketData(packet.PacketData); + deadList.Add(packet); + } + } + + foreach (var packet in deadList) + { + packetQueue.Remove(packet); + } + } + } + + void SendPacketData(byte[] data) + { + PacketLatencyPair PacketPair = new PacketLatencyPair(); + PacketPair.PacketData = data; + PacketPair.FakeLatency = LatencySettings.NextValue(); + + packetQueue.AddLast(PacketPair); + } + + void ReceivePacketData(byte[] data) + { + using (MemoryStream inputStream = new MemoryStream(data)) + { + BinaryReader reader = new BinaryReader(inputStream); + int sequence = reader.ReadInt32(); + + OvrAvatarPacket avatarPacket; + if (LoopbackAvatar.UseSDKPackets) + { + int size = reader.ReadInt32(); + byte[] sdkData = reader.ReadBytes(size); + + IntPtr packet = CAPI.ovrAvatarPacket_Read((UInt32)data.Length, sdkData); + avatarPacket = new OvrAvatarPacket { ovrNativePacket = packet }; + } + else + { + avatarPacket = OvrAvatarPacket.Read(inputStream); + } + + LoopbackAvatar.GetComponent().QueuePacket(sequence, avatarPacket); + } + } +} diff --git a/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts/RemoteLoopbackManager.cs.meta b/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts/RemoteLoopbackManager.cs.meta new file mode 100644 index 0000000..d828c99 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/RemoteLoopback/Scripts/RemoteLoopbackManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1675d6690178fd0459887aed66409f70 +timeCreated: 1468000639 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter.meta b/Assets/Oculus/Avatar/Samples/SocialStarter.meta new file mode 100644 index 0000000..88a73e6 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0a4d3ea1f23c09f4594a99508091bd1a +folderAsset: yes +timeCreated: 1520618017 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets.meta new file mode 100644 index 0000000..bc96f81 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2946f922e51b0d347bf529b7a7e2667e +folderAsset: yes +timeCreated: 1520618026 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/MainScene.unity b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/MainScene.unity new file mode 100644 index 0000000..de06582 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/MainScene.unity @@ -0,0 +1,771 @@ +%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: 8 + 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.44657898, g: 0.4964133, b: 0.5748178, a: 1} +--- !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: 9 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 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!1 &8653650 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 8653655} + - component: {fileID: 8653654} + - component: {fileID: 8653653} + - component: {fileID: 8653652} + - component: {fileID: 8653651} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &8653651 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 8653650} + m_Enabled: 0 +--- !u!124 &8653652 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 8653650} + m_Enabled: 1 +--- !u!92 &8653653 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 8653650} + m_Enabled: 1 +--- !u!20 &8653654 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 8653650} + 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: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &8653655 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 8653650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &206856059 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 206856064} + - component: {fileID: 206856063} + - component: {fileID: 206856062} + - component: {fileID: 206856061} + - component: {fileID: 206856060} + m_Layer: 0 + m_Name: RoomCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &206856060 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206856059} + m_Enabled: 1 +--- !u!92 &206856061 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206856059} + m_Enabled: 1 +--- !u!124 &206856062 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206856059} + m_Enabled: 1 +--- !u!20 &206856063 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206856059} + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &206856064 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206856059} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: -9.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &780482174 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 780482176} + - component: {fileID: 780482175} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &780482175 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 780482174} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &780482176 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 780482174} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &840719025 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 840719029} + - component: {fileID: 840719028} + - component: {fileID: 840719027} + - component: {fileID: 840719026} + m_Layer: 0 + m_Name: HelpPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &840719026 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 840719025} + 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: 4c18da23435024b43a2b78449cbb6ed0, 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!64 &840719027 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 840719025} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 14 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &840719028 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 840719025} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &840719029 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 840719025} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1390249324 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 100014, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_TagString + value: MainCamera + objectReference: {fileID: 0} + - target: {fileID: 100010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_TagString + value: MainCamera + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: _trackingOriginType + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1390249325 stripped +GameObject: + m_PrefabParentObject: {fileID: 100014, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 1390249324} +--- !u!1 &1390249326 stripped +GameObject: + m_PrefabParentObject: {fileID: 100010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 1390249324} +--- !u!20 &1390249327 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1390249325} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!20 &1390249328 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1390249326} + m_Enabled: 0 + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &1390249329 stripped +GameObject: + m_PrefabParentObject: {fileID: 100008, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 1390249324} +--- !u!114 &1390249330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1390249329} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 043fbfd0ae7027742bace7a3691feb13, type: 3} + m_Name: + m_EditorClassIdentifier: + localAvatarPrefab: {fileID: 11437430, guid: 84c8b8609f9bb434eaf5248f17ff1293, type: 2} + remoteAvatarPrefab: {fileID: 11464902, guid: 90bf33f968e6bb44ea0208fc82c90a44, type: 2} + helpPanel: {fileID: 840719025} + riftMaterial: {fileID: 2100000, guid: 3480b18dc3be4c2498fb60a71184a4d1, type: 2} + gearMaterial: {fileID: 2100000, guid: ce189bc65dde82740a5f34ef75bf87aa, type: 2} + roomSphere: {fileID: 1902705651} + roomFloor: {fileID: 2115777246} + spyCamera: {fileID: 206856063} +--- !u!1 &1902705651 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1902705655} + - component: {fileID: 1902705654} + - component: {fileID: 1902705653} + - component: {fileID: 1902705652} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1902705652 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902705651} + 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: 296de5be1228bf34380061dd6e6b0f49, 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!135 &1902705653 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902705651} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1902705654 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902705651} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1902705655 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902705651} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 6, z: 3} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2115777246 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2115777250} + - component: {fileID: 2115777249} + - component: {fileID: 2115777248} + - component: {fileID: 2115777247} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2115777247 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2115777246} + 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: c466b89bb972b8a42bd266c102f8f2cb, 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!64 &2115777248 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2115777246} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 14 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &2115777249 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2115777246} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2115777250 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2115777246} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 7, y: 1, z: 7} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/MainScene.unity.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/MainScene.unity.meta new file mode 100644 index 0000000..bd5cdd7 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/MainScene.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 236a5f96528802e47a70d6e47ebd3c16 +timeCreated: 1496779803 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials.meta new file mode 100644 index 0000000..aa29445 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 777b874d432a52044991fe1a0210200c +folderAsset: yes +timeCreated: 1496779985 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/GearHelp.mat b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/GearHelp.mat new file mode 100644 index 0000000..85aa24d --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/GearHelp.mat @@ -0,0 +1,127 @@ +%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: GearHelp + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + 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: 2800000, guid: 0453138effcc80349b11371805f72f5b, type: 3} + 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: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/GearHelp.mat.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/GearHelp.mat.meta new file mode 100644 index 0000000..fb52e95 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/GearHelp.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 09c03a3c5049d234590b91bbc6e84462 +timeCreated: 1497549036 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Help.mat b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Help.mat new file mode 100644 index 0000000..3567c11 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Help.mat @@ -0,0 +1,127 @@ +%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: Help + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + 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: 2800000, guid: c8f5462cc092d0c40ad71773132863e0, type: 3} + 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: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Help.mat.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Help.mat.meta new file mode 100644 index 0000000..ca7a270 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Help.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c18da23435024b43a2b78449cbb6ed0 +timeCreated: 1496780065 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Offline_Mat.mat b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Offline_Mat.mat new file mode 100644 index 0000000..024cfe0 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Offline_Mat.mat @@ -0,0 +1,127 @@ +%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: Offline_Mat + 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} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Offline_Mat.mat.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Offline_Mat.mat.meta new file mode 100644 index 0000000..6c35a95 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Offline_Mat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 296de5be1228bf34380061dd6e6b0f49 +timeCreated: 1496780100 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Plane_Mat.mat b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Plane_Mat.mat new file mode 100644 index 0000000..5273be2 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Plane_Mat.mat @@ -0,0 +1,127 @@ +%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: Plane_Mat + 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.25517225, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Plane_Mat.mat.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Plane_Mat.mat.meta new file mode 100644 index 0000000..dbefb45 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Materials/Plane_Mat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c466b89bb972b8a42bd266c102f8f2cb +timeCreated: 1496780131 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts.meta new file mode 100644 index 0000000..84dee1a --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f05e47c366870a44ab2b3b5a8a64e107 +folderAsset: yes +timeCreated: 1496780004 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/P2PManager.cs b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/P2PManager.cs new file mode 100644 index 0000000..db28da2 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/P2PManager.cs @@ -0,0 +1,231 @@ +using UnityEngine; +using System; +using Oculus.Platform; +using Oculus.Platform.Models; + +// Helper class to manage a Peer-to-Peer connection to the other user. +// The connection is used to send and received the Transforms for the +// Avatars. The Transforms are sent via unreliable UDP at a fixed +// frequency. +public class P2PManager +{ + // packet header is a message type byte + private enum MessageType : byte + { + Update = 1, + }; + + public P2PManager() + { + Net.SetPeerConnectRequestCallback(PeerConnectRequestCallback); + Net.SetConnectionStateChangedCallback(ConnectionStateChangedCallback); + } + + #region Connection Management + + public void ConnectTo(ulong userID) + { + // ID comparison is used to decide who calls Connect and who calls Accept + if (SocialPlatformManager.MyID < userID) + { + Net.Connect(userID); + SocialPlatformManager.LogOutput("P2P connect to " + userID); + } + } + + public void Disconnect(ulong userID) + { + if (userID != 0) + { + Net.Close(userID); + + RemotePlayer remote = SocialPlatformManager.GetRemoteUser(userID); + if (remote != null) + { + remote.p2pConnectionState = PeerConnectionState.Unknown; + } + } + } + + void PeerConnectRequestCallback(Message msg) + { + SocialPlatformManager.LogOutput("P2P request from " + msg.Data.ID); + + RemotePlayer remote = SocialPlatformManager.GetRemoteUser(msg.Data.ID); + if (remote != null) + { + SocialPlatformManager.LogOutput("P2P request accepted from " + msg.Data.ID); + Net.Accept(msg.Data.ID); + } + } + + void ConnectionStateChangedCallback(Message msg) + { + SocialPlatformManager.LogOutput("P2P state to " + msg.Data.ID + " changed to " + msg.Data.State); + + RemotePlayer remote = SocialPlatformManager.GetRemoteUser(msg.Data.ID); + if (remote != null) + { + remote.p2pConnectionState = msg.Data.State; + + if (msg.Data.State == PeerConnectionState.Timeout && + // ID comparison is used to decide who calls Connect and who calls Accept + SocialPlatformManager.MyID < msg.Data.ID) + { + // keep trying until hangup! + Net.Connect(msg.Data.ID); + SocialPlatformManager.LogOutput("P2P re-connect to " + msg.Data.ID); + } + } + } + + #endregion + + #region Message Sending + + public void SendAvatarUpdate(ulong userID, Transform bodyTransform, UInt32 sequence, byte[] avatarPacket) + { + const int UPDATE_DATA_LENGTH = 41; + byte[] sendBuffer = new byte[avatarPacket.Length + UPDATE_DATA_LENGTH]; + + int offset = 0; + PackByte((byte)MessageType.Update, sendBuffer, ref offset); + + PackULong(SocialPlatformManager.MyID, sendBuffer, ref offset); + + PackFloat(bodyTransform.localPosition.x, sendBuffer, ref offset); + PackFloat(bodyTransform.localPosition.y, sendBuffer, ref offset); + PackFloat(bodyTransform.localPosition.z, sendBuffer, ref offset); + PackFloat(bodyTransform.localRotation.x, sendBuffer, ref offset); + PackFloat(bodyTransform.localRotation.y, sendBuffer, ref offset); + PackFloat(bodyTransform.localRotation.z, sendBuffer, ref offset); + PackFloat(bodyTransform.localRotation.w, sendBuffer, ref offset); + + PackUInt32(sequence, sendBuffer, ref offset); + + Debug.Assert(offset == UPDATE_DATA_LENGTH); + + Buffer.BlockCopy(avatarPacket, 0, sendBuffer, offset, avatarPacket.Length); + Net.SendPacket(userID, sendBuffer, SendPolicy.Unreliable); + } + #endregion + + #region Message Receiving + + public void GetRemotePackets() + { + Packet packet; + + while ((packet = Net.ReadPacket()) != null) + { + byte[] receiveBuffer = new byte[packet.Size]; + packet.ReadBytes(receiveBuffer); + + int offset = 0; + MessageType messageType = (MessageType)ReadByte(receiveBuffer, ref offset); + + ulong remoteUserID = ReadULong(receiveBuffer, ref offset); + RemotePlayer remote = SocialPlatformManager.GetRemoteUser(remoteUserID); + if (remote == null) + { + SocialPlatformManager.LogOutput("Unknown remote player: " + remoteUserID); + continue; + } + + if (messageType == MessageType.Update) + { + processAvatarPacket(remote, ref receiveBuffer, ref offset); + } + else + { + SocialPlatformManager.LogOutput("Invalid packet type: " + packet.Size); + continue; + } + + } + } + + public void processAvatarPacket(RemotePlayer remote, ref byte[] packet, ref int offset) + { + if (remote == null) + return; + + remote.receivedBodyPositionPrior = remote.receivedBodyPosition; + remote.receivedBodyPosition.x = ReadFloat(packet, ref offset); + remote.receivedBodyPosition.y = ReadFloat(packet, ref offset); + remote.receivedBodyPosition.z = ReadFloat(packet, ref offset); + + remote.receivedBodyRotationPrior = remote.receivedBodyRotation; + remote.receivedBodyRotation.x = ReadFloat(packet, ref offset); + remote.receivedBodyRotation.y = ReadFloat(packet, ref offset); + remote.receivedBodyRotation.z = ReadFloat(packet, ref offset); + remote.receivedBodyRotation.w = ReadFloat(packet, ref offset); + + remote.RemoteAvatar.transform.localPosition = remote.receivedBodyPosition; + remote.RemoteAvatar.transform.localRotation = remote.receivedBodyRotation; + + // forward the remaining data to the avatar system + int sequence = (int)ReadUInt32(packet, ref offset); + + byte[] remainingAvatarBuffer = new byte[packet.Length - offset]; + Buffer.BlockCopy(packet, offset, remainingAvatarBuffer, 0, remainingAvatarBuffer.Length); + + IntPtr avatarPacket = Oculus.Avatar.CAPI.ovrAvatarPacket_Read((UInt32)remainingAvatarBuffer.Length, remainingAvatarBuffer); + + var ovravatarPacket = new OvrAvatarPacket { ovrNativePacket = avatarPacket }; + remote.RemoteAvatar.GetComponent().QueuePacket(sequence, ovravatarPacket); + } + #endregion + + #region Serialization + + void PackByte(byte b, byte[] buf, ref int offset) + { + buf[offset] = b; + offset += sizeof(byte); + } + byte ReadByte(byte[] buf, ref int offset) + { + byte val = buf[offset]; + offset += sizeof(byte); + return val; + } + + void PackFloat(float f, byte[] buf, ref int offset) + { + Buffer.BlockCopy(BitConverter.GetBytes(f), 0, buf, offset, sizeof(float)); + offset += sizeof(float); + } + float ReadFloat(byte[] buf, ref int offset) + { + float val = BitConverter.ToSingle(buf, offset); + offset += sizeof(float); + return val; + } + + void PackULong(ulong u, byte[] buf, ref int offset) + { + Buffer.BlockCopy(BitConverter.GetBytes(u), 0, buf, offset, sizeof(ulong)); + offset += sizeof(ulong); + } + ulong ReadULong(byte[] buf, ref int offset) + { + ulong val = BitConverter.ToUInt64(buf, offset); + offset += sizeof(ulong); + return val; + } + + void PackUInt32(UInt32 u, byte[] buf, ref int offset) + { + Buffer.BlockCopy(BitConverter.GetBytes(u), 0, buf, offset, sizeof(UInt32)); + offset += sizeof(UInt32); + } + UInt32 ReadUInt32(byte[] buf, ref int offset) + { + UInt32 val = BitConverter.ToUInt32(buf, offset); + offset += sizeof(UInt32); + return val; + } + + #endregion +} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/P2PManager.cs.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/P2PManager.cs.meta new file mode 100644 index 0000000..250606c --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/P2PManager.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e5d77a60e86b5bd4a999ef6c83f9e651 +timeCreated: 1521151723 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/PlayerController.cs b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/PlayerController.cs new file mode 100644 index 0000000..991b7ee --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/PlayerController.cs @@ -0,0 +1,101 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +using Oculus.Platform; +using Oculus.Platform.Models; + +public class PlayerController : SocialPlatformManager +{ + + // Secondary camera to debug and view the whole scene from above + public Camera spyCamera; + + // The OVRCameraRig for the main player so we can disable it + private GameObject cameraRig; + + private bool showUI = true; + + public override void Awake() + { + base.Awake(); + cameraRig = localPlayerHead.gameObject; + } + + // Use this for initialization + public override void Start() + { + base.Start(); + spyCamera.enabled = false; + } + + // Update is called once per frame + public override void Update() + { + base.Update(); + checkInput(); + } + + // Check for input from the touch controllers + void checkInput() + { + if (UnityEngine.Application.platform == RuntimePlatform.Android) + { + // GearVR Controller + + // Bring up friend invite list + if (OVRInput.GetDown(OVRInput.Button.Back)) + { + Rooms.LaunchInvitableUserFlow(roomManager.roomID); + } + + // Toggle Camera + if (OVRInput.GetDown(OVRInput.Button.PrimaryTouchpad)) + { + ToggleCamera(); + } + + // Toggle Help UI + if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger)) + { + ToggleUI(); + } + } + else + { + // PC Touch + + // Bring up friend invite list + if (OVRInput.GetDown(OVRInput.Button.Three)) + { + Rooms.LaunchInvitableUserFlow (roomManager.roomID); + } + + // Toggle Camera + if (OVRInput.GetDown(OVRInput.Button.Four)) + { + ToggleCamera(); + } + + // Toggle Help UI + if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstick)) + { + ToggleUI(); + } + } + } + + void ToggleCamera() + { + spyCamera.enabled = !spyCamera.enabled; + localAvatar.ShowThirdPerson = !localAvatar.ShowThirdPerson; + cameraRig.SetActive(!cameraRig.activeSelf); + } + + void ToggleUI() + { + showUI = !showUI; + helpPanel.SetActive(showUI); + localAvatar.ShowLeftController(showUI); + } +} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/PlayerController.cs.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/PlayerController.cs.meta new file mode 100644 index 0000000..51298cd --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/PlayerController.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 043fbfd0ae7027742bace7a3691feb13 +timeCreated: 1521151723 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RemotePlayer.cs b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RemotePlayer.cs new file mode 100644 index 0000000..a523b16 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RemotePlayer.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Oculus.Platform; + +public class RemotePlayer +{ + public ulong remoteUserID; + public bool stillInRoom; + + // the result of the last connection state update message + public PeerConnectionState p2pConnectionState; + // the last reported state of the VOIP connection + public PeerConnectionState voipConnectionState; + + public OvrAvatar RemoteAvatar; + + // the last received position updates + public Vector3 receivedBodyPosition; + + // the previous received positions to interpolate from + public Vector3 receivedBodyPositionPrior; + + // the last received rotation updates + public Quaternion receivedBodyRotation; + + // the previous received rotations to interpolate from + public Quaternion receivedBodyRotationPrior; + + // the voip tracker for the player + public VoipAudioSourceHiLevel voipSource; +} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RemotePlayer.cs.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RemotePlayer.cs.meta new file mode 100644 index 0000000..f4fc8da --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RemotePlayer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e5bc955e8176ef1478360f25ef5ccc8a +timeCreated: 1521151723 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RoomManager.cs b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RoomManager.cs new file mode 100644 index 0000000..fb8f143 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RoomManager.cs @@ -0,0 +1,225 @@ +using UnityEngine; +using System; +using System.Collections.Generic; +using Oculus.Platform; +using Oculus.Platform.Models; + +// Helper class to manage Room creation, membership and invites. +// Rooms are a mechanism to help Oculus users create a shared experience. +// Users can only be in one Room at a time. If the Owner of a room +// leaves, then ownership is transferred to some other member. +// Here we use rooms to create the notion of a 'call' to help us +// invite a Friend and establish a VOIP and P2P connection. +public class RoomManager +{ + // the ID of the Room that I'm in + public ulong roomID; + + // the ID of the Room that I'm invited to + private ulong invitedRoomID; + + // Am I the server? + private bool amIServer; + + // Have we already gone through the startup? + private bool startupDone; + + public RoomManager() + { + amIServer = false; + startupDone = false; + Rooms.SetRoomInviteAcceptedNotificationCallback(AcceptingInviteCallback); + Rooms.SetUpdateNotificationCallback(RoomUpdateCallback); + } + + #region Launched Application from Accepting Invite + + // Callback to check whether the User accepted an invite + void AcceptingInviteCallback(Message msg) + { + if (msg.IsError) + { + SocialPlatformManager.TerminateWithError(msg); + return; + } + + SocialPlatformManager.LogOutput("Launched Invite to join Room: " + msg.Data); + + invitedRoomID = Convert.ToUInt64(msg.GetString()); + + if (startupDone) + { + CheckForInvite(); + } + } + + // Check to see if the App was launched by accepting the Notication from the main Oculus app. + // If so, we can directly join that room. (If it's still available.) + public bool CheckForInvite() + { + startupDone = true; + + if (invitedRoomID != 0) + { + JoinExistingRoom(invitedRoomID); + return true; + } + else + { + return false; + } + } + + #endregion + + #region Create a Room and Invite Friend(s) from the Oculus Universal Menu + + public void CreateRoom() + { + Rooms.CreateAndJoinPrivate(RoomJoinPolicy.FriendsOfOwner, 4, true) + .OnComplete(CreateAndJoinPrivateRoomCallback); + } + + void CreateAndJoinPrivateRoomCallback(Message msg) + { + if (msg.IsError) + { + SocialPlatformManager.TerminateWithError(msg); + return; + } + + roomID = msg.Data.ID; + + if (msg.Data.OwnerOptional != null && msg.Data.OwnerOptional.ID == SocialPlatformManager.MyID) + { + amIServer = true; + } + else + { + amIServer = false; + } + + SocialPlatformManager.TransitionToState(SocialPlatformManager.State.WAITING_IN_A_ROOM); + SocialPlatformManager.SetFloorColorForState(amIServer); + } + + void OnLaunchInviteWorkflowComplete(Message msg) + { + if (msg.IsError) + { + SocialPlatformManager.TerminateWithError(msg); + return; + } + } + + #endregion + + #region Accept Invite + + public void JoinExistingRoom(ulong roomID) + { + SocialPlatformManager.TransitionToState(SocialPlatformManager.State.JOINING_A_ROOM); + Rooms.Join(roomID, true).OnComplete(JoinRoomCallback); + } + + void JoinRoomCallback(Message msg) + { + if (msg.IsError) + { + // is reasonable if caller called more than 1 person, and I didn't answer first + return; + } + + var ownerOculusId = msg.Data.OwnerOptional != null ? msg.Data.OwnerOptional.OculusID : "null"; + var userCount = msg.Data.UsersOptional != null ? msg.Data.UsersOptional.Count : 0; + + SocialPlatformManager.LogOutput("Joined Room " + msg.Data.ID + " owner: " + ownerOculusId + " count: " + userCount); + roomID = msg.Data.ID; + ProcessRoomData(msg); + } + + #endregion + + #region Room Updates + + void RoomUpdateCallback(Message msg) + { + if (msg.IsError) + { + SocialPlatformManager.TerminateWithError(msg); + return; + } + + var ownerOculusId = msg.Data.OwnerOptional != null ? msg.Data.OwnerOptional.OculusID : "null"; + var userCount = msg.Data.UsersOptional != null ? msg.Data.UsersOptional.Count : 0; + + SocialPlatformManager.LogOutput("Room Update " + msg.Data.ID + " owner: " + ownerOculusId + " count: " + userCount); + ProcessRoomData(msg); + } + + #endregion + + #region Room Exit + + public void LeaveCurrentRoom() + { + if (roomID != 0) + { + Rooms.Leave(roomID); + roomID = 0; + } + SocialPlatformManager.TransitionToState(SocialPlatformManager.State.LEAVING_A_ROOM); + } + + #endregion + + #region Process Room Data + + void ProcessRoomData(Message msg) + { + if (msg.Data.OwnerOptional != null && msg.Data.OwnerOptional.ID == SocialPlatformManager.MyID) + { + amIServer = true; + } + else + { + amIServer = false; + } + + // if the caller left while I was in the process of joining, just use that as our new room + if (msg.Data.UsersOptional != null && msg.Data.UsersOptional.Count == 1) + { + SocialPlatformManager.TransitionToState(SocialPlatformManager.State.WAITING_IN_A_ROOM); + } + else + { + SocialPlatformManager.TransitionToState(SocialPlatformManager.State.CONNECTED_IN_A_ROOM); + } + + // Look for users that left + SocialPlatformManager.MarkAllRemoteUsersAsNotInRoom(); + + if (msg.Data.UsersOptional != null) + { + foreach (User user in msg.Data.UsersOptional) + { + if (user.ID != SocialPlatformManager.MyID) + { + if (!SocialPlatformManager.IsUserInRoom(user.ID)) + { + SocialPlatformManager.AddRemoteUser(user.ID); + } + else + { + SocialPlatformManager.MarkRemoteUserInRoom(user.ID); + } + } + } + } + + SocialPlatformManager.ForgetRemoteUsersNotInRoom(); + SocialPlatformManager.SetFloorColorForState(amIServer); + } + + #endregion +} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RoomManager.cs.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RoomManager.cs.meta new file mode 100644 index 0000000..a2aa926 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/RoomManager.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 923f57b3cf1990047b2e448680c8d5b8 +timeCreated: 1521151723 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/SocialPlatformManager.cs b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/SocialPlatformManager.cs new file mode 100644 index 0000000..a5b5a9d --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/SocialPlatformManager.cs @@ -0,0 +1,556 @@ +using UnityEngine; +using System; +using System.IO; +using System.Collections.Generic; +using Oculus.Avatar; +using Oculus.Platform; +using Oculus.Platform.Models; + + +// This class coordinates communication with the Oculus Platform +// Service running in your device. +public class SocialPlatformManager : MonoBehaviour +{ + private static readonly Vector3 START_ROTATION_ONE = new Vector3(0, 180, 0); + private static readonly Vector3 START_POSITION_ONE = new Vector3(0, 4, 5); + + private static readonly Vector3 START_ROTATION_TWO = new Vector3(0, 0, 0); + private static readonly Vector3 START_POSITION_TWO = new Vector3(0, 4, -5); + + private static readonly Vector3 START_ROTATION_THREE = new Vector3(0, 270, 0); + private static readonly Vector3 START_POSITION_THREE = new Vector3(5, 4, 0); + + private static readonly Vector3 START_ROTATION_FOUR = new Vector3(0, 90, 0); + private static readonly Vector3 START_POSITION_FOUR = new Vector3(-5, 4, 0); + + private static readonly Color BLACK = new Color(0.0f, 0.0f, 0.0f); + private static readonly Color WHITE = new Color(1.0f, 1.0f, 1.0f); + private static readonly Color CYAN = new Color(0.0f, 1.0f, 1.0f); + private static readonly Color BLUE = new Color(0.0f, 0.0f, 1.0f); + private static readonly Color GREEN = new Color(0.0f, 1.0f, 0.0f); + + public Oculus.Platform.CAPI.FilterCallback micFilterDelegate = new Oculus.Platform.CAPI.FilterCallback(SocialPlatformManager.MicFilter); + private float voiceCurrent = 0.0f; + + // Local player + private UInt32 packetSequence = 0; + + public OvrAvatar localAvatarPrefab; + public OvrAvatar remoteAvatarPrefab; + + public GameObject helpPanel; + protected MeshRenderer helpMesh; + public Material riftMaterial; + public Material gearMaterial; + + protected OvrAvatar localAvatar; + protected GameObject localTrackingSpace; + protected GameObject localPlayerHead; + + // Remote players + protected Dictionary remoteUsers = new Dictionary(); + + // GameObject that represents the center sphere as a visual status indicator of the room + public GameObject roomSphere; + protected MeshRenderer sphereMesh; + public GameObject roomFloor; + protected MeshRenderer floorMesh; + + protected State currentState; + + protected static SocialPlatformManager s_instance = null; + protected RoomManager roomManager; + protected P2PManager p2pManager; + protected VoipManager voipManager; + + // my Application-scoped Oculus ID + protected ulong myID; + + // my Oculus user name + protected string myOculusID; + + + // animating the mouth for voip + public static readonly float VOIP_SCALE = 2f; + + public virtual void Update() + { + // Look for updates from remote users + p2pManager.GetRemotePackets(); + + // update avatar mouths to match voip volume + foreach (KeyValuePair kvp in remoteUsers) + { + float remoteVoiceCurrent = Mathf.Clamp(kvp.Value.voipSource.peakAmplitude * VOIP_SCALE, 0f, 1f); + kvp.Value.RemoteAvatar.VoiceAmplitude = remoteVoiceCurrent; + } + + if (localAvatar != null) + { + localAvatar.VoiceAmplitude = Mathf.Clamp(voiceCurrent * VOIP_SCALE, 0f, 1f); + } + } + + #region Initialization and Shutdown + + public virtual void Awake() + { + LogOutputLine("Start Log."); + + // Grab the MeshRenderers. We'll be using the material colour to visually show status + helpMesh = helpPanel.GetComponent(); + sphereMesh = roomSphere.GetComponent(); + floorMesh = roomFloor.GetComponent(); + + // Set up the local player + localTrackingSpace = this.transform.Find("OVRCameraRig/TrackingSpace").gameObject; + localPlayerHead = this.transform.Find("OVRCameraRig/TrackingSpace/CenterEyeAnchor").gameObject; + + // make sure only one instance of this manager ever exists + if (s_instance != null) + { + Destroy(gameObject); + return; + } + + s_instance = this; + DontDestroyOnLoad(gameObject); + + TransitionToState(State.INITIALIZING); + + Core.Initialize(); + + roomManager = new RoomManager(); + p2pManager = new P2PManager(); + voipManager = new VoipManager(); + } + + public virtual void Start() + { + // First thing we should do is perform an entitlement check to make sure + // we successfully connected to the Oculus Platform Service. + Entitlements.IsUserEntitledToApplication().OnComplete(IsEntitledCallback); + Oculus.Platform.Request.RunCallbacks(); + } + + void IsEntitledCallback(Message msg) + { + if (msg.IsError) + { + TerminateWithError(msg); + return; + } + + // Next get the identity of the user that launched the Application. + Users.GetLoggedInUser().OnComplete(GetLoggedInUserCallback); + Oculus.Platform.Request.RunCallbacks(); + } + + void GetLoggedInUserCallback(Message msg) + { + if (msg.IsError) + { + TerminateWithError(msg); + return; + } + + myID = msg.Data.ID; + myOculusID = msg.Data.OculusID; + + localAvatar = Instantiate(localAvatarPrefab); + localTrackingSpace = this.transform.Find("OVRCameraRig/TrackingSpace").gameObject; + + localAvatar.transform.SetParent(localTrackingSpace.transform, false); + localAvatar.transform.localPosition = new Vector3(0, 0, 0); + localAvatar.transform.localRotation = Quaternion.identity; + + if (UnityEngine.Application.platform == RuntimePlatform.Android) + { + helpPanel.transform.SetParent(localAvatar.transform.Find("body"), false); + helpPanel.transform.localPosition = new Vector3(0, 1.0f, 1.0f); + helpMesh.material = gearMaterial; + } + else + { + helpPanel.transform.SetParent(localAvatar.transform.Find("hand_left"), false); + helpPanel.transform.localPosition = new Vector3(0, 0.2f, 0.2f); + helpMesh.material = riftMaterial; + } + + localAvatar.oculusUserID = myID.ToString(); + localAvatar.RecordPackets = true; + localAvatar.PacketRecorded += OnLocalAvatarPacketRecorded; + localAvatar.EnableMouthVertexAnimation = true; + + Quaternion rotation = Quaternion.identity; + + switch (UnityEngine.Random.Range(0, 4)) + { + case 0: + rotation.eulerAngles = START_ROTATION_ONE; + this.transform.localPosition = START_POSITION_ONE; + this.transform.localRotation = rotation; + break; + + case 1: + rotation.eulerAngles = START_ROTATION_TWO; + this.transform.localPosition = START_POSITION_TWO; + this.transform.localRotation = rotation; + break; + + case 2: + rotation.eulerAngles = START_ROTATION_THREE; + this.transform.localPosition = START_POSITION_THREE; + this.transform.localRotation = rotation; + break; + + case 3: + default: + rotation.eulerAngles = START_ROTATION_FOUR; + this.transform.localPosition = START_POSITION_FOUR; + this.transform.localRotation = rotation; + break; + } + + TransitionToState(State.CHECKING_LAUNCH_STATE); + + // If the user launched the app by accepting the notification, then we want to + // join that room. If not, try to find a friend's room to join + if (!roomManager.CheckForInvite()) + { + SocialPlatformManager.LogOutput("No invite on launch, looking for a friend to join."); + Users.GetLoggedInUserFriendsAndRooms() + .OnComplete(GetLoggedInUserFriendsAndRoomsCallback); + } + Voip.SetMicrophoneFilterCallback(micFilterDelegate); + } + + void GetLoggedInUserFriendsAndRoomsCallback(Message msg) + { + if (msg.IsError) + { + return; + } + + foreach (UserAndRoom el in msg.Data) + { + // see if any friends are in a joinable room + if (el.User == null) continue; + if (el.RoomOptional == null) continue; + if (el.RoomOptional.IsMembershipLocked == true) continue; + if (el.RoomOptional.Joinability != RoomJoinability.CanJoin) continue; + if (el.RoomOptional.JoinPolicy == RoomJoinPolicy.None) continue; + + SocialPlatformManager.LogOutput("Trying to join room " + el.RoomOptional.ID + ", friend " + el.User.OculusID); + roomManager.JoinExistingRoom(el.RoomOptional.ID); + return; + } + + SocialPlatformManager.LogOutput("No friend to join. Creating my own room."); + // didn't find any open rooms, start a new room + roomManager.CreateRoom(); + TransitionToState(State.CREATING_A_ROOM); + } + + public void OnLocalAvatarPacketRecorded(object sender, OvrAvatar.PacketEventArgs args) + { + var size = Oculus.Avatar.CAPI.ovrAvatarPacket_GetSize(args.Packet.ovrNativePacket); + byte[] toSend = new byte[size]; + + Oculus.Avatar.CAPI.ovrAvatarPacket_Write(args.Packet.ovrNativePacket, size, toSend); + + foreach (KeyValuePair kvp in remoteUsers) + { + //LogOutputLine("Sending avatar Packet to " + kvp.Key); + p2pManager.SendAvatarUpdate(kvp.Key, this.localAvatar.transform, packetSequence, toSend); + } + + packetSequence++; + } + + public void OnApplicationQuit() + { + roomManager.LeaveCurrentRoom(); + + foreach (KeyValuePair kvp in remoteUsers) + { + p2pManager.Disconnect(kvp.Key); + voipManager.Disconnect(kvp.Key); + } + LogOutputLine("End Log."); + } + + public void AddUser(ulong userID, ref RemotePlayer remoteUser) + { + remoteUsers.Add(userID, remoteUser); + } + + public void LogOutputLine(string line) + { + Debug.Log(Time.time + ": " + line); + } + + // For most errors we terminate the Application since this example doesn't make + // sense if the user is disconnected. + public static void TerminateWithError(Message msg) + { + s_instance.LogOutputLine("Error: " + msg.GetError().Message); + UnityEngine.Application.Quit(); + } + + #endregion + + #region Properties + + public static State CurrentState + { + get + { + return s_instance.currentState; + } + } + + public static ulong MyID + { + get + { + if (s_instance != null) + { + return s_instance.myID; + } + else + { + return 0; + } + } + } + + public static string MyOculusID + { + get + { + if (s_instance != null && s_instance.myOculusID != null) + { + return s_instance.myOculusID; + } + else + { + return string.Empty; + } + } + } + + #endregion + + #region State Management + + public enum State + { + // loading platform library, checking application entitlement, + // getting the local user info + INITIALIZING, + + // Checking to see if we were launched from an invite + CHECKING_LAUNCH_STATE, + + // Creating a room to join + CREATING_A_ROOM, + + // in this state we've create a room, and hopefully + // sent some invites, and we're waiting people to join + WAITING_IN_A_ROOM, + + // in this state we're attempting to join a room from an invite + JOINING_A_ROOM, + + // we're in a room with others + CONNECTED_IN_A_ROOM, + + // Leaving a room + LEAVING_A_ROOM, + + // shutdown any connections and leave the current room + SHUTDOWN, + }; + + public static void TransitionToState(State newState) + { + if (s_instance) + { + s_instance.LogOutputLine("State " + s_instance.currentState + " -> " + newState); + } + + if (s_instance && s_instance.currentState != newState) + { + s_instance.currentState = newState; + + // state transition logic + switch (newState) + { + case State.SHUTDOWN: + s_instance.OnApplicationQuit(); + break; + + default: + break; + } + } + + SetSphereColorForState(); + } + + private static void SetSphereColorForState() + { + switch (s_instance.currentState) + { + case State.INITIALIZING: + case State.SHUTDOWN: + s_instance.sphereMesh.material.color = BLACK; + break; + + case State.WAITING_IN_A_ROOM: + s_instance.sphereMesh.material.color = WHITE; + break; + + case State.CONNECTED_IN_A_ROOM: + s_instance.sphereMesh.material.color = CYAN; + break; + + default: + break; + } + } + + public static void SetFloorColorForState(bool host) + { + if (host) + { + s_instance.floorMesh.material.color = BLUE; + } + else + { + s_instance.floorMesh.material.color = GREEN; + } + } + + public static void MarkAllRemoteUsersAsNotInRoom() + { + foreach (KeyValuePair kvp in s_instance.remoteUsers) + { + kvp.Value.stillInRoom = false; + } + } + + public static void MarkRemoteUserInRoom(ulong userID) + { + RemotePlayer remoteUser = new RemotePlayer(); + + if (s_instance.remoteUsers.TryGetValue(userID, out remoteUser)) + { + remoteUser.stillInRoom = true; + } + } + + public static void ForgetRemoteUsersNotInRoom() + { + List toPurge = new List(); + + foreach (KeyValuePair kvp in s_instance.remoteUsers) + { + if (kvp.Value.stillInRoom == false) + { + toPurge.Add(kvp.Key); + } + } + + foreach (ulong key in toPurge) + { + RemoveRemoteUser(key); + } + } + + public static void LogOutput(string line) + { + s_instance.LogOutputLine(Time.time + ": " + line); + } + + public static bool IsUserInRoom(ulong userID) + { + return s_instance.remoteUsers.ContainsKey(userID); + } + + public static void AddRemoteUser(ulong userID) + { + RemotePlayer remoteUser = new RemotePlayer(); + + remoteUser.RemoteAvatar = Instantiate(s_instance.remoteAvatarPrefab); + remoteUser.RemoteAvatar.oculusUserID = userID.ToString(); + remoteUser.RemoteAvatar.ShowThirdPerson = true; + remoteUser.RemoteAvatar.EnableMouthVertexAnimation = true; + remoteUser.p2pConnectionState = PeerConnectionState.Unknown; + remoteUser.voipConnectionState = PeerConnectionState.Unknown; + remoteUser.stillInRoom = true; + remoteUser.remoteUserID = userID; + + s_instance.AddUser(userID, ref remoteUser); + s_instance.p2pManager.ConnectTo(userID); + s_instance.voipManager.ConnectTo(userID); + + remoteUser.voipSource = remoteUser.RemoteAvatar.gameObject.AddComponent(); + remoteUser.voipSource.senderID = userID; + + s_instance.LogOutputLine("Adding User " + userID); + } + + public static void RemoveRemoteUser(ulong userID) + { + RemotePlayer remoteUser = new RemotePlayer(); + + if (s_instance.remoteUsers.TryGetValue(userID, out remoteUser)) + { + Destroy(remoteUser.RemoteAvatar.GetComponent(), 0); + Destroy(remoteUser.RemoteAvatar.gameObject, 0); + s_instance.remoteUsers.Remove(userID); + + s_instance.LogOutputLine("Removing User " + userID); + } + } + + public void UpdateVoiceData(short[] pcmData) + { + float voiceMax = 0.0f; + float[] floats = new float[pcmData.Length]; + for (int n = 0; n < pcmData.Length; n++) + { + float cur = floats[n] = (float)pcmData[n] / (float)short.MaxValue; + if (cur > voiceMax) + { + voiceMax = cur; + } + } + voiceCurrent = voiceMax; + } + + public static void MicFilter(short[] pcmData, System.UIntPtr pcmDataLength, int frequency, int numChannels) + { + s_instance.UpdateVoiceData(pcmData); + } + + + public static RemotePlayer GetRemoteUser(ulong userID) + { + RemotePlayer remoteUser = new RemotePlayer(); + + if (s_instance.remoteUsers.TryGetValue(userID, out remoteUser)) + { + return remoteUser; + } + else + { + return null; + } + } + + #endregion + +} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/SocialPlatformManager.cs.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/SocialPlatformManager.cs.meta new file mode 100644 index 0000000..e34a65d --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/SocialPlatformManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 61a76ada1a1960647bf44fc08c5d5743 +timeCreated: 1536104814 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/VoipManager.cs b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/VoipManager.cs new file mode 100644 index 0000000..13ff185 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/VoipManager.cs @@ -0,0 +1,72 @@ +using UnityEngine; +using System.Collections; + +using Oculus.Platform; +using Oculus.Platform.Models; + +// Helper class to manage the Voice-over-IP connection to the +// remote users +public class VoipManager +{ + public VoipManager() + { + Voip.SetVoipConnectRequestCallback(VoipConnectRequestCallback); + Voip.SetVoipStateChangeCallback(VoipStateChangedCallback); + } + + public void ConnectTo(ulong userID) + { + // ID comparison is used to decide who initiates and who gets the Callback + if (SocialPlatformManager.MyID < userID) + { + Voip.Start(userID); + SocialPlatformManager.LogOutput("Voip connect to " + userID); + } + } + + + public void Disconnect(ulong userID) + { + if (userID != 0) + { + Voip.Stop(userID); + + RemotePlayer remote = SocialPlatformManager.GetRemoteUser(userID); + if (remote != null) + { + remote.voipConnectionState = PeerConnectionState.Unknown; + } + } + } + + void VoipConnectRequestCallback(Message msg) + { + SocialPlatformManager.LogOutput("Voip request from " + msg.Data.ID); + + RemotePlayer remote = SocialPlatformManager.GetRemoteUser(msg.Data.ID); + if (remote != null) + { + SocialPlatformManager.LogOutput("Voip request accepted from " + msg.Data.ID); + Voip.Accept(msg.Data.ID); + } + } + + void VoipStateChangedCallback(Message msg) + { + SocialPlatformManager.LogOutput("Voip state to " + msg.Data.ID + " changed to " + msg.Data.State); + + RemotePlayer remote = SocialPlatformManager.GetRemoteUser(msg.Data.ID); + if (remote != null) + { + remote.voipConnectionState = msg.Data.State; + + // ID comparison is used to decide who initiates and who gets the Callback + if (msg.Data.State == PeerConnectionState.Timeout && SocialPlatformManager.MyID < msg.Data.ID) + { + // keep trying until hangup! + Voip.Start(msg.Data.ID); + SocialPlatformManager.LogOutput("Voip re-connect to " + msg.Data.ID); + } + } + } +} diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/VoipManager.cs.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/VoipManager.cs.meta new file mode 100644 index 0000000..c2dbb41 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/VoipManager.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d22b9da5532b0224f82207825f9f6a65 +timeCreated: 1521151723 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures.meta new file mode 100644 index 0000000..5119448 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fc164fe2aad000b40a6f426b477793aa +folderAsset: yes +timeCreated: 1496779994 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/GearHelp.png b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/GearHelp.png new file mode 100644 index 0000000..a1b1577 Binary files /dev/null and b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/GearHelp.png differ diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/GearHelp.png.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/GearHelp.png.meta new file mode 100644 index 0000000..9eea27c --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/GearHelp.png.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 0453138effcc80349b11371805f72f5b +timeCreated: 1497548991 +licenseType: Store +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: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 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 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/Help.png b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/Help.png new file mode 100644 index 0000000..9f93e8a Binary files /dev/null and b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/Help.png differ diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/Help.png.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/Help.png.meta new file mode 100644 index 0000000..90fa1b6 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Textures/Help.png.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: c8f5462cc092d0c40ad71773132863e0 +timeCreated: 1496780052 +licenseType: Store +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: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 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 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/README.txt b/Assets/Oculus/Avatar/Samples/SocialStarter/README.txt new file mode 100644 index 0000000..095662d --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/README.txt @@ -0,0 +1,29 @@ +The SocialStarter sample is meant to show how to leverage the Oculus Avatars and Oculus platform features together to make a very basic networked social experience. + +Steps to run the sample: + +1. Import the Oculus Unity Utilities Package if you don't already have it included in your project. This will provide you with all of the necessary general Oculus Prefabs. +2. Import the Oculus Avatar SDK Unity Package if you don't already have it included in your project. This will provide you with all of the necessary Avatar Prefabs. +3. Import the Oculus Platform SDK Unity Package if you don't already have it included in your project. This will provide all of the C# interfaces to the Oculus Platform features. +4. In the Unity editor menus select "Oculus Avatars > Edit Configuration". Place your AppID in the two fields for Rift AppID and Gear AppID. +5. In the Unity editor menus select "Oculus Platform > Edit Settings". Place your AppID in the two fields for Rift AppID and Gear AppID. +6. Make sure the prefabs are set correctly. Select the OVRPlayerController object in the MainScene: +a) Local Avatar Prefab should be set to the "LocalAvatar (OvrAvatar)" prefab found in the Avatar SDK under "OvrAvatar > Content > Prefabs". +b) Remote Avatar Prefab should be set to the "RemoteAvatar (OvrAvatar)" prefab found in the Avatar SDK under "OvrAvatar > Content > Prefabs". + +How to use + +1. When you first start up the sample you are placed in both a virtual room and an online room. In the virtual room the colour of both the floor and the sphere in the middle are used as state indicators: + +a) The sphere colour indicates if you are successfully in an online room. Black means the room creation/join failed for some reason, White means you are in an online room. +b) The floor colour is blue if you are the owner of the room or green if you are just a member of the room. + +2. Your left hand should be holding the instructions UI: + +Button X: Send an Invite - This will bring up the Oculus Universal Menu which will show a list of your friends that you can invite. This may take a second or two to pop up. +Button Y: Toggle the sky camera - This allows you to view the scene from a static 3rd person camera. +Click left Stick: Toggle showing the instructions UI +Left Stick Analog: Move around the space +Right Stick Analog: Rotate + +3. When a user joins your room a VoIP connection and a P2P connection will be setup. The P2P connection is used to send Avatar updates as well as positional updates. diff --git a/Assets/Oculus/Avatar/Samples/SocialStarter/README.txt.meta b/Assets/Oculus/Avatar/Samples/SocialStarter/README.txt.meta new file mode 100644 index 0000000..09e2c72 --- /dev/null +++ b/Assets/Oculus/Avatar/Samples/SocialStarter/README.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a7a78d98ba50c73429cf004f1635d521 +timeCreated: 1517510514 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts.meta b/Assets/Oculus/Avatar/Scripts.meta new file mode 100644 index 0000000..4ccec1c --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1eb18b8db6c77f04c96874806a37143d +folderAsset: yes +timeCreated: 1466714102 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatar.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatar.cs new file mode 100644 index 0000000..1da3dd9 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatar.cs @@ -0,0 +1,946 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Linq; +using Oculus.Avatar; +using System.Runtime.InteropServices; +using System.Collections.Generic; +using UnityEngine.Events; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +[System.Serializable] +public class AvatarLayer +{ + public int layerIndex; +} + +#if UNITY_EDITOR +[CustomPropertyDrawer(typeof(AvatarLayer))] +public class AvatarLayerPropertyDrawer : PropertyDrawer +{ + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, GUIContent.none, property); + SerializedProperty layerIndex = property.FindPropertyRelative("layerIndex"); + position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); + layerIndex.intValue = EditorGUI.LayerField(position, layerIndex.intValue); + EditorGUI.EndProperty(); + } +} +#endif + +[System.Serializable] +public class PacketRecordSettings +{ + internal bool RecordingFrames = false; + public float UpdateRate = 1f / 30f; // 30 hz update of packets + internal float AccumulatedTime; +}; + +public class OvrAvatar : MonoBehaviour +{ + public OvrAvatarMaterialManager DefaultBodyMaterialManager; + public OvrAvatarMaterialManager DefaultHandMaterialManager; + + public OvrAvatarDriver Driver; + public OvrAvatarBase Base; + public OvrAvatarBody Body; + public OvrAvatarTouchController ControllerLeft; + public OvrAvatarTouchController ControllerRight; + public OvrAvatarHand HandLeft; + public OvrAvatarHand HandRight; + public bool RecordPackets; + public bool UseSDKPackets = true; + + public bool StartWithControllers; + public AvatarLayer FirstPersonLayer; + public AvatarLayer ThirdPersonLayer; + public bool ShowFirstPerson = true; + public bool ShowThirdPerson; + public ovrAvatarCapabilities Capabilities = ovrAvatarCapabilities.All; + public Shader SurfaceShader; + public Shader SurfaceShaderSelfOccluding; + public Shader SurfaceShaderPBS; + public Shader SurfaceShaderPBSV2Single; + public Shader SurfaceShaderPBSV2Combined; + public Shader SurfaceShaderPBSV2Simple; + public Shader SurfaceShaderPBSV2Loading; + + int renderPartCount = 0; + bool showLeftController; + bool showRightController; + List voiceUpdates = new List(); + + public string oculusUserID; + internal UInt64 oculusUserIDInternal; + +#if UNITY_ANDROID && UNITY_5_5_OR_NEWER && !UNITY_EDITOR + bool CombineMeshes = true; +#else + bool CombineMeshes = false; +#endif + +#if UNITY_EDITOR && UNITY_ANDROID + bool ForceMobileTextureFormat = true; +#else + bool ForceMobileTextureFormat = false; + +#endif + + private bool WaitingForCombinedMesh = false; + + public IntPtr sdkAvatar = IntPtr.Zero; + private HashSet assetLoadingIds = new HashSet(); + private Dictionary trackedComponents = + new Dictionary(); + + private UnityEvent AssetsDoneLoading = new UnityEvent(); + bool assetsFinishedLoading = false; + + public Transform LeftHandCustomPose; + public Transform RightHandCustomPose; + Transform cachedLeftHandCustomPose; + Transform[] cachedCustomLeftHandJoints; + ovrAvatarTransform[] cachedLeftHandTransforms; + Transform cachedRightHandCustomPose; + Transform[] cachedCustomRightHandJoints; + ovrAvatarTransform[] cachedRightHandTransforms; + + + private Vector4 clothingAlphaOffset = new Vector4(0f, 0f, 0f, 1f); + private UInt64 clothingAlphaTexture = 0; + + public class PacketEventArgs : EventArgs + { + public readonly OvrAvatarPacket Packet; + public PacketEventArgs(OvrAvatarPacket packet) + { + Packet = packet; + } + } + + public PacketRecordSettings PacketSettings = new PacketRecordSettings(); + + OvrAvatarPacket CurrentUnityPacket; + + public enum HandType + { + Right, + Left, + + Max + }; + + public enum HandJoint + { + HandBase, + IndexBase, + IndexTip, + ThumbBase, + ThumbTip, + + Max, + } + + private static string[,] HandJoints = new string[(int)HandType.Max, (int)HandJoint.Max] + { + { + "hands:r_hand_world", + "hands:r_hand_world/hands:b_r_hand/hands:b_r_index1", + "hands:r_hand_world/hands:b_r_hand/hands:b_r_index1/hands:b_r_index2/hands:b_r_index3/hands:b_r_index_ignore", + "hands:r_hand_world/hands:b_r_hand/hands:b_r_thumb1/hands:b_r_thumb2", + "hands:r_hand_world/hands:b_r_hand/hands:b_r_thumb1/hands:b_r_thumb2/hands:b_r_thumb3/hands:b_r_thumb_ignore" + }, + { + "hands:l_hand_world", + "hands:l_hand_world/hands:b_l_hand/hands:b_l_index1", + "hands:l_hand_world/hands:b_l_hand/hands:b_l_index1/hands:b_l_index2/hands:b_l_index3/hands:b_l_index_ignore", + "hands:l_hand_world/hands:b_l_hand/hands:b_l_thumb1/hands:b_l_thumb2", + "hands:l_hand_world/hands:b_l_hand/hands:b_l_thumb1/hands:b_l_thumb2/hands:b_l_thumb3/hands:b_l_thumb_ignore" + } + }; + +#if UNITY_ANDROID + internal ovrAvatarAssetLevelOfDetail LevelOfDetail = ovrAvatarAssetLevelOfDetail.Medium; +#else + internal ovrAvatarAssetLevelOfDetail LevelOfDetail = ovrAvatarAssetLevelOfDetail.Highest; +#endif + + void OnDestroy() + { + if (sdkAvatar != IntPtr.Zero) + { + CAPI.ovrAvatar_Destroy(sdkAvatar); + } + } + + public EventHandler PacketRecorded; + + public void AssetLoadedCallback(OvrAvatarAsset asset) + { + assetLoadingIds.Remove(asset.assetID); + } + + public void CombinedMeshLoadedCallback(IntPtr assetPtr) + { + if (!WaitingForCombinedMesh) + { + return; + } + + var meshIDs = CAPI.ovrAvatarAsset_GetCombinedMeshIDs(assetPtr); + foreach (var id in meshIDs) + { + assetLoadingIds.Remove(id); + } + + CAPI.ovrAvatar_GetCombinedMeshAlphaData(sdkAvatar, ref clothingAlphaTexture, ref clothingAlphaOffset); + + WaitingForCombinedMesh = false; + } + + private void AddAvatarComponent(GameObject componentObject, ovrAvatarComponent component) + { + OvrAvatarComponent ovrComponent = componentObject.AddComponent(); + trackedComponents.Add(component.name, ovrComponent); + + if (ovrComponent.name == "body") + { + ovrComponent.ClothingAlphaOffset = clothingAlphaOffset; + ovrComponent.ClothingAlphaTexture = clothingAlphaTexture; + } + + AddRenderParts(ovrComponent, component, componentObject.transform); + } + + private OvrAvatarSkinnedMeshRenderComponent AddSkinnedMeshRenderComponent(GameObject gameObject, ovrAvatarRenderPart_SkinnedMeshRender skinnedMeshRender) + { + OvrAvatarSkinnedMeshRenderComponent skinnedMeshRenderer = gameObject.AddComponent(); + skinnedMeshRenderer.Initialize(skinnedMeshRender, SurfaceShader, SurfaceShaderSelfOccluding, ThirdPersonLayer.layerIndex, FirstPersonLayer.layerIndex, renderPartCount++); + return skinnedMeshRenderer; + } + + private OvrAvatarSkinnedMeshRenderPBSComponent AddSkinnedMeshRenderPBSComponent(GameObject gameObject, ovrAvatarRenderPart_SkinnedMeshRenderPBS skinnedMeshRenderPBS) + { + OvrAvatarSkinnedMeshRenderPBSComponent skinnedMeshRenderer = gameObject.AddComponent(); + skinnedMeshRenderer.Initialize(skinnedMeshRenderPBS, SurfaceShaderPBS, ThirdPersonLayer.layerIndex, FirstPersonLayer.layerIndex, renderPartCount++); + return skinnedMeshRenderer; + } + + private OvrAvatarSkinnedMeshPBSV2RenderComponent AddSkinnedMeshRenderPBSV2Component( + IntPtr renderPart, + GameObject gameObject, + ovrAvatarRenderPart_SkinnedMeshRenderPBS_V2 skinnedMeshRenderPBSV2, + OvrAvatarMaterialManager materialManager) + { + OvrAvatarSkinnedMeshPBSV2RenderComponent skinnedMeshRenderer = gameObject.AddComponent(); + skinnedMeshRenderer.Initialize( + renderPart, + skinnedMeshRenderPBSV2, + materialManager, + ThirdPersonLayer.layerIndex, + FirstPersonLayer.layerIndex, + renderPartCount++, + gameObject.name.Contains("body") && CombineMeshes, + LevelOfDetail); + + return skinnedMeshRenderer; + } + + private OvrAvatarProjectorRenderComponent AddProjectorRenderComponent(GameObject gameObject, ovrAvatarRenderPart_ProjectorRender projectorRender) + { + ovrAvatarComponent component = CAPI.ovrAvatarComponent_Get(sdkAvatar, projectorRender.componentIndex); + OvrAvatarComponent ovrComponent; + if (trackedComponents.TryGetValue(component.name, out ovrComponent)) + { + if (projectorRender.renderPartIndex < ovrComponent.RenderParts.Count) + { + OvrAvatarRenderComponent targetRenderPart = ovrComponent.RenderParts[(int)projectorRender.renderPartIndex]; + OvrAvatarProjectorRenderComponent projectorComponent = gameObject.AddComponent(); + projectorComponent.InitializeProjectorRender(projectorRender, SurfaceShader, targetRenderPart); + return projectorComponent; + } + } + return null; + } + + static public IntPtr GetRenderPart(ovrAvatarComponent component, UInt32 renderPartIndex) + { + long offset = Marshal.SizeOf(typeof(IntPtr)) * renderPartIndex; + IntPtr marshalPtr = new IntPtr(component.renderParts.ToInt64() + offset); + return (IntPtr)Marshal.PtrToStructure(marshalPtr, typeof(IntPtr)); + } + + private void UpdateAvatarComponent(ovrAvatarComponent component) + { + OvrAvatarComponent ovrComponent; + if (!trackedComponents.TryGetValue(component.name, out ovrComponent)) + { + throw new Exception(string.Format("trackedComponents didn't have {0}", component.name)); + } + + ovrComponent.UpdateAvatar(component, this); + } + + private static string GetRenderPartName(ovrAvatarComponent component, uint renderPartIndex) + { + return component.name + "_renderPart_" + (int)renderPartIndex; + } + + internal static void ConvertTransform(ovrAvatarTransform transform, Transform target) + { + Vector3 position = transform.position; + position.z = -position.z; + Quaternion orientation = transform.orientation; + orientation.x = -orientation.x; + orientation.y = -orientation.y; + target.localPosition = position; + target.localRotation = orientation; + target.localScale = transform.scale; + } + + public static ovrAvatarTransform CreateOvrAvatarTransform(Vector3 position, Quaternion orientation) + { + return new ovrAvatarTransform + { + position = new Vector3(position.x, position.y, -position.z), + orientation = new Quaternion(-orientation.x, -orientation.y, orientation.z, orientation.w), + scale = Vector3.one + }; + } + + private void RemoveAvatarComponent(string name) + { + OvrAvatarComponent componentObject; + trackedComponents.TryGetValue(name, out componentObject); + Destroy(componentObject.gameObject); + trackedComponents.Remove(name); + } + + private void UpdateSDKAvatarUnityState() + { + //Iterate through all the render components + UInt32 componentCount = CAPI.ovrAvatarComponent_Count(sdkAvatar); + HashSet componentsThisRun = new HashSet(); + for (UInt32 i = 0; i < componentCount; i++) + { + IntPtr ptr = CAPI.ovrAvatarComponent_Get_Native(sdkAvatar, i); + ovrAvatarComponent component = (ovrAvatarComponent)Marshal.PtrToStructure(ptr, typeof(ovrAvatarComponent)); + componentsThisRun.Add(component.name); + if (!trackedComponents.ContainsKey(component.name)) + { + GameObject componentObject = null; + Type specificType = null; + if ((Capabilities & ovrAvatarCapabilities.Base) != 0) + { + ovrAvatarBaseComponent? baseComponent = CAPI.ovrAvatarPose_GetBaseComponent(sdkAvatar); + if (baseComponent.HasValue && ptr == baseComponent.Value.renderComponent) + { + specificType = typeof(OvrAvatarBase); + if (Base != null) + { + componentObject = Base.gameObject; + } + } + } + + if (specificType == null && (Capabilities & ovrAvatarCapabilities.Body) != 0) + { + ovrAvatarBodyComponent? bodyComponent = CAPI.ovrAvatarPose_GetBodyComponent(sdkAvatar); + if (bodyComponent.HasValue && ptr == bodyComponent.Value.renderComponent) + { + specificType = typeof(OvrAvatarBody); + if (Body != null) + { + componentObject = Body.gameObject; + } + } + } + + if (specificType == null && (Capabilities & ovrAvatarCapabilities.Hands) != 0) + { + ovrAvatarControllerComponent? controllerComponent = CAPI.ovrAvatarPose_GetLeftControllerComponent(sdkAvatar); + if (specificType == null && controllerComponent.HasValue && ptr == controllerComponent.Value.renderComponent) + { + specificType = typeof(OvrAvatarTouchController); + if (ControllerLeft != null) + { + componentObject = ControllerLeft.gameObject; + } + } + + controllerComponent = CAPI.ovrAvatarPose_GetRightControllerComponent(sdkAvatar); + if (specificType == null && controllerComponent.HasValue && ptr == controllerComponent.Value.renderComponent) + { + specificType = typeof(OvrAvatarTouchController); + if (ControllerRight != null) + { + componentObject = ControllerRight.gameObject; + } + } + + ovrAvatarHandComponent? handComponent = CAPI.ovrAvatarPose_GetLeftHandComponent(sdkAvatar); + if (specificType == null && handComponent.HasValue && ptr == handComponent.Value.renderComponent) + { + specificType = typeof(OvrAvatarHand); + if (HandLeft != null) + { + componentObject = HandLeft.gameObject; + } + } + + handComponent = CAPI.ovrAvatarPose_GetRightHandComponent(sdkAvatar); + if (specificType == null && handComponent.HasValue && ptr == handComponent.Value.renderComponent) + { + specificType = typeof(OvrAvatarHand); + if (HandRight != null) + { + componentObject = HandRight.gameObject; + } + } + } + + // If this is an unknown type, just create an object for the rendering + if (componentObject == null && specificType == null) + { + componentObject = new GameObject(); + componentObject.name = component.name; + componentObject.transform.SetParent(transform); + } + if (componentObject != null) + { + AddAvatarComponent(componentObject, component); + } + } + UpdateAvatarComponent(component); + } + HashSet deletableNames = new HashSet(trackedComponents.Keys); + deletableNames.ExceptWith(componentsThisRun); + //deletableNames contains the name of all components which are tracked and were + //not present in this run + foreach (var name in deletableNames) + { + RemoveAvatarComponent(name); + } + + UpdateVoiceBehavior(); + } + + void UpdateCustomPoses() + { + // Check to see if the pose roots changed + if (UpdatePoseRoot(LeftHandCustomPose, ref cachedLeftHandCustomPose, ref cachedCustomLeftHandJoints, ref cachedLeftHandTransforms)) + { + if (cachedLeftHandCustomPose == null && sdkAvatar != IntPtr.Zero) + { + CAPI.ovrAvatar_SetLeftHandGesture(sdkAvatar, ovrAvatarHandGesture.Default); + } + } + if (UpdatePoseRoot(RightHandCustomPose, ref cachedRightHandCustomPose, ref cachedCustomRightHandJoints, ref cachedRightHandTransforms)) + { + if (cachedRightHandCustomPose == null && sdkAvatar != IntPtr.Zero) + { + CAPI.ovrAvatar_SetRightHandGesture(sdkAvatar, ovrAvatarHandGesture.Default); + } + } + + // Check to see if the custom gestures need to be updated + if (sdkAvatar != IntPtr.Zero) + { + if (cachedLeftHandCustomPose != null && UpdateTransforms(cachedCustomLeftHandJoints, cachedLeftHandTransforms)) + { + CAPI.ovrAvatar_SetLeftHandCustomGesture(sdkAvatar, (uint)cachedLeftHandTransforms.Length, cachedLeftHandTransforms); + } + if (cachedRightHandCustomPose != null && UpdateTransforms(cachedCustomRightHandJoints, cachedRightHandTransforms)) + { + CAPI.ovrAvatar_SetRightHandCustomGesture(sdkAvatar, (uint)cachedRightHandTransforms.Length, cachedRightHandTransforms); + } + } + } + + static bool UpdatePoseRoot(Transform poseRoot, ref Transform cachedPoseRoot, ref Transform[] cachedPoseJoints, ref ovrAvatarTransform[] transforms) + { + if (poseRoot == cachedPoseRoot) + { + return false; + } + + if (!poseRoot) + { + cachedPoseRoot = null; + cachedPoseJoints = null; + transforms = null; + } + else + { + List joints = new List(); + OrderJoints(poseRoot, joints); + cachedPoseRoot = poseRoot; + cachedPoseJoints = joints.ToArray(); + transforms = new ovrAvatarTransform[joints.Count]; + } + return true; + } + + static bool UpdateTransforms(Transform[] joints, ovrAvatarTransform[] transforms) + { + bool updated = false; + for (int i = 0; i < joints.Length; ++i) + { + Transform joint = joints[i]; + ovrAvatarTransform transform = CreateOvrAvatarTransform(joint.localPosition, joint.localRotation); + if (transform.position != transforms[i].position || transform.orientation != transforms[i].orientation) + { + transforms[i] = transform; + updated = true; + } + } + return updated; + } + + + private static void OrderJoints(Transform transform, List joints) + { + joints.Add(transform); + for (int i = 0; i < transform.childCount; ++i) + { + Transform child = transform.GetChild(i); + OrderJoints(child, joints); + } + } + + void AvatarSpecificationCallback(IntPtr avatarSpecification) + { +#if UNITY_ANDROID + Capabilities &= ~ovrAvatarCapabilities.BodyTilt; +#endif + sdkAvatar = CAPI.ovrAvatar_Create(avatarSpecification, Capabilities); + ShowLeftController(showLeftController); + ShowRightController(showRightController); + + //Fetch all the assets that this avatar uses. + UInt32 assetCount = CAPI.ovrAvatar_GetReferencedAssetCount(sdkAvatar); + for (UInt32 i = 0; i < assetCount; ++i) + { + UInt64 id = CAPI.ovrAvatar_GetReferencedAsset(sdkAvatar, i); + if (OvrAvatarSDKManager.Instance.GetAsset(id) == null) + { + OvrAvatarSDKManager.Instance.BeginLoadingAsset( + id, + LevelOfDetail, + AssetLoadedCallback); + + assetLoadingIds.Add(id); + } + } + + if (CombineMeshes) + { + OvrAvatarSDKManager.Instance.RegisterCombinedMeshCallback( + sdkAvatar, + CombinedMeshLoadedCallback); + } + } + + void Start() + { +#if !UNITY_ANDROID + if (CombineMeshes) + { + CombineMeshes = false; + AvatarLogger.Log("Combine Meshes Currently Only Supported On Android"); + } +#endif + +#if !UNITY_5_5_OR_NEWER + if (CombineMeshes) + { + CombineMeshes = false; + AvatarLogger.LogWarning("Unity Version too old to use Combined Mesh Shader, required 5.5.0+"); + } +#endif + + try + { + oculusUserIDInternal = UInt64.Parse(oculusUserID); + } + catch (Exception) + { + oculusUserIDInternal = 0; + + AvatarLogger.LogWarning("Invalid Oculus User ID Format"); + } + + AvatarLogger.Log("Starting OvrAvatar " + gameObject.name); + AvatarLogger.Log(AvatarLogger.Tab + "LOD: " + LevelOfDetail.ToString()); + AvatarLogger.Log(AvatarLogger.Tab + "Combine Meshes: " + CombineMeshes); + AvatarLogger.Log(AvatarLogger.Tab + "Force Mobile Textures: " + ForceMobileTextureFormat); + AvatarLogger.Log(AvatarLogger.Tab + "Oculus User ID: " + oculusUserIDInternal); + + ShowLeftController(StartWithControllers); + ShowRightController(StartWithControllers); + OvrAvatarSDKManager.Instance.RequestAvatarSpecification( + oculusUserIDInternal, + this.AvatarSpecificationCallback, + CombineMeshes, + LevelOfDetail, + ForceMobileTextureFormat); + + WaitingForCombinedMesh = CombineMeshes; + Driver.Mode = UseSDKPackets ? OvrAvatarDriver.PacketMode.SDK : OvrAvatarDriver.PacketMode.Unity; + } + + void Update() + { + if (sdkAvatar == IntPtr.Zero) + { + return; + } + + if (Driver != null) + { + Driver.UpdateTransforms(sdkAvatar); + + foreach (float[] voiceUpdate in voiceUpdates) + { + CAPI.ovrAvatarPose_UpdateVoiceVisualization(sdkAvatar, voiceUpdate); + } + + voiceUpdates.Clear(); + + CAPI.ovrAvatarPose_Finalize(sdkAvatar, Time.deltaTime); + } + + if (RecordPackets) + { + RecordFrame(); + } + + if (assetLoadingIds.Count == 0) + { + UpdateSDKAvatarUnityState(); + UpdateCustomPoses(); + + if (!assetsFinishedLoading) + { + AssetsDoneLoading.Invoke(); + assetsFinishedLoading = true; + } + } + } + + public static ovrAvatarHandInputState CreateInputState(ovrAvatarTransform transform, OvrAvatarDriver.ControllerPose pose) + { + ovrAvatarHandInputState inputState = new ovrAvatarHandInputState(); + inputState.transform = transform; + inputState.buttonMask = pose.buttons; + inputState.touchMask = pose.touches; + inputState.joystickX = pose.joystickPosition.x; + inputState.joystickY = pose.joystickPosition.y; + inputState.indexTrigger = pose.indexTrigger; + inputState.handTrigger = pose.handTrigger; + inputState.isActive = pose.isActive; + return inputState; + } + + public void ShowControllers(bool show) + { + ShowLeftController(show); + ShowRightController(show); + } + + public void ShowLeftController(bool show) + { + if (sdkAvatar != IntPtr.Zero) + { + CAPI.ovrAvatar_SetLeftControllerVisibility(sdkAvatar, show); + } + showLeftController = show; + } + + public void ShowRightController(bool show) + { + if (sdkAvatar != IntPtr.Zero) + { + CAPI.ovrAvatar_SetRightControllerVisibility(sdkAvatar, show); + } + showRightController = show; + } + + public void UpdateVoiceVisualization(float[] voiceSamples) + { + voiceUpdates.Add(voiceSamples); + } + + void RecordFrame() + { + if(UseSDKPackets) + { + RecordSDKFrame(); + } + else + { + RecordUnityFrame(); + } + } + + // Meant to be used mutually exclusively with RecordSDKFrame to give user more options to optimize or tweak packet data + private void RecordUnityFrame() + { + var deltaSeconds = Time.deltaTime; + var frame = Driver.GetCurrentPose(); + // If this is our first packet, store the pose as the initial frame + if (CurrentUnityPacket == null) + { + CurrentUnityPacket = new OvrAvatarPacket(frame); + deltaSeconds = 0; + } + + float recordedSeconds = 0; + while (recordedSeconds < deltaSeconds) + { + float remainingSeconds = deltaSeconds - recordedSeconds; + float remainingPacketSeconds = PacketSettings.UpdateRate - CurrentUnityPacket.Duration; + + // If we're not going to fill the packet, just add the frame + if (remainingSeconds < remainingPacketSeconds) + { + CurrentUnityPacket.AddFrame(frame, remainingSeconds); + recordedSeconds += remainingSeconds; + } + + // If we're going to fill the packet, interpolate the pose, send the packet, + // and open a new one + else + { + // Interpolate between the packet's last frame and our target pose + // to compute a pose at the end of the packet time. + OvrAvatarDriver.PoseFrame a = CurrentUnityPacket.FinalFrame; + OvrAvatarDriver.PoseFrame b = frame; + float t = remainingPacketSeconds / remainingSeconds; + OvrAvatarDriver.PoseFrame intermediatePose = OvrAvatarDriver.PoseFrame.Interpolate(a, b, t); + CurrentUnityPacket.AddFrame(intermediatePose, remainingPacketSeconds); + recordedSeconds += remainingPacketSeconds; + + // Broadcast the recorded packet + if (PacketRecorded != null) + { + PacketRecorded(this, new PacketEventArgs(CurrentUnityPacket)); + } + + // Open a new packet + CurrentUnityPacket = new OvrAvatarPacket(intermediatePose); + } + } + } + + private void RecordSDKFrame() + { + if (sdkAvatar == IntPtr.Zero) + { + return; + } + + if (!PacketSettings.RecordingFrames) + { + CAPI.ovrAvatarPacket_BeginRecording(sdkAvatar); + PacketSettings.AccumulatedTime = 0.0f; + PacketSettings.RecordingFrames = true; + } + + PacketSettings.AccumulatedTime += Time.deltaTime; + + if (PacketSettings.AccumulatedTime >= PacketSettings.UpdateRate) + { + PacketSettings.AccumulatedTime = 0.0f; + var packet = CAPI.ovrAvatarPacket_EndRecording(sdkAvatar); + CAPI.ovrAvatarPacket_BeginRecording(sdkAvatar); + + if (PacketRecorded != null) + { + PacketRecorded(this, new PacketEventArgs(new OvrAvatarPacket { ovrNativePacket = packet })); + } + + CAPI.ovrAvatarPacket_Free(packet); + } + } + + private void AddRenderParts( + OvrAvatarComponent ovrComponent, + ovrAvatarComponent component, + Transform parent) + { + for (UInt32 renderPartIndex = 0; renderPartIndex < component.renderPartCount; renderPartIndex++) + { + GameObject renderPartObject = new GameObject(); + renderPartObject.name = GetRenderPartName(component, renderPartIndex); + renderPartObject.transform.SetParent(parent); + IntPtr renderPart = GetRenderPart(component, renderPartIndex); + ovrAvatarRenderPartType type = CAPI.ovrAvatarRenderPart_GetType(renderPart); + OvrAvatarRenderComponent ovrRenderPart; + switch (type) + { + case ovrAvatarRenderPartType.SkinnedMeshRender: + ovrRenderPart = AddSkinnedMeshRenderComponent(renderPartObject, CAPI.ovrAvatarRenderPart_GetSkinnedMeshRender(renderPart)); + break; + case ovrAvatarRenderPartType.SkinnedMeshRenderPBS: + ovrRenderPart = AddSkinnedMeshRenderPBSComponent(renderPartObject, CAPI.ovrAvatarRenderPart_GetSkinnedMeshRenderPBS(renderPart)); + break; + case ovrAvatarRenderPartType.ProjectorRender: + ovrRenderPart = AddProjectorRenderComponent(renderPartObject, CAPI.ovrAvatarRenderPart_GetProjectorRender(renderPart)); + break; + case ovrAvatarRenderPartType.SkinnedMeshRenderPBS_V2: + { + OvrAvatarMaterialManager materialManager = null; + + if (ovrComponent.name == "body") + { + materialManager = DefaultBodyMaterialManager; + } + else if( ovrComponent.name.Contains("hand")) + { + materialManager = DefaultHandMaterialManager; + } + + ovrRenderPart = AddSkinnedMeshRenderPBSV2Component( + renderPart, + renderPartObject, + CAPI.ovrAvatarRenderPart_GetSkinnedMeshRenderPBSV2(renderPart), + materialManager); + } + break; + default: + throw new NotImplementedException(string.Format("Unsupported render part type: {0}", type.ToString())); + } + + ovrComponent.RenderParts.Add(ovrRenderPart); + } + } + + public void RefreshBodyParts() + { + OvrAvatarComponent component; + if (trackedComponents.TryGetValue("body", out component) && Body != null) + { + foreach (var part in component.RenderParts) + { + Destroy(part.gameObject); + } + + component.RenderParts.Clear(); + + ovrAvatarBodyComponent? sdkBodyComponent = CAPI.ovrAvatarPose_GetBodyComponent(sdkAvatar); + if (sdkBodyComponent != null) + { + ovrAvatarComponent sdKComponent = (ovrAvatarComponent)Marshal.PtrToStructure(sdkBodyComponent.Value.renderComponent, typeof(ovrAvatarComponent)); + AddRenderParts(component, sdKComponent, Body.gameObject.transform); + } + else + { + throw new Exception("Destroyed the body component, but didn't find a new one in the SDK"); + } + } + } + + public ovrAvatarBodyComponent? GetBodyComponent() + { + return CAPI.ovrAvatarPose_GetBodyComponent(sdkAvatar); + } + + + public Transform GetHandTransform(HandType hand, HandJoint joint) + { + if (hand >= HandType.Max || joint >= HandJoint.Max) + { + return null; + } + + var HandObject = hand == HandType.Left ? HandLeft : HandRight; + + if (HandObject != null) + { + var AvatarComponent = HandObject.GetComponent(); + if (AvatarComponent != null && AvatarComponent.RenderParts.Count > 0) + { + var SkinnedMesh = AvatarComponent.RenderParts[0]; + return SkinnedMesh.transform.Find(HandJoints[(int)hand, (int)joint]); + } + } + + return null; + } + + public void GetPointingDirection(HandType hand, ref Vector3 forward, ref Vector3 up) + { + Transform handBase = GetHandTransform(hand, HandJoint.HandBase); + + if (handBase != null) + { + forward = handBase.forward; + up = handBase.up; + } + } + + public Transform GetMouthTransform() + { + OvrAvatarComponent component; + if (trackedComponents.TryGetValue("voice", out component)) + { + if (component.RenderParts.Count > 0) + { + return component.RenderParts[0].transform; + } + } + + return null; + } + + static Vector3 MOUTH_POSITION_OFFSET = new Vector3(0, -0.018f, 0.1051f); + static string VOICE_PROPERTY = "_Voice"; + static string MOUTH_POSITION_PROPERTY = "_MouthPosition"; + static string MOUTH_DIRECTION_PROPERTY = "_MouthDirection"; + static string MOUTH_SCALE_PROPERTY = "_MouthEffectScale"; + + static float MOUTH_SCALE_GLOBAL = 0.007f; + static float MOUTH_MAX_GLOBAL = 0.007f; + static string NECK_JONT = "root_JNT/body_JNT/chest_JNT/neckBase_JNT/neck_JNT"; + + public float VoiceAmplitude = 0f; + public bool EnableMouthVertexAnimation = false; + + private void UpdateVoiceBehavior() + { + if (!EnableMouthVertexAnimation) + { + return; + } + + OvrAvatarComponent component; + if (trackedComponents.TryGetValue("body", out component)) + { + VoiceAmplitude = Mathf.Clamp(VoiceAmplitude, 0f, 1f); + + if (component.RenderParts.Count > 0) + { + var material = component.RenderParts[0].mesh.sharedMaterial; + var neckJoint = component.RenderParts[0].mesh.transform.Find(NECK_JONT); + var scaleDiff = neckJoint.TransformPoint(Vector3.up) - neckJoint.position; + + material.SetFloat(MOUTH_SCALE_PROPERTY, scaleDiff.magnitude); + + material.SetFloat( + VOICE_PROPERTY, + Mathf.Min(scaleDiff.magnitude * MOUTH_MAX_GLOBAL, scaleDiff.magnitude * VoiceAmplitude * MOUTH_SCALE_GLOBAL)); + + material.SetVector( + MOUTH_POSITION_PROPERTY, + neckJoint.TransformPoint(MOUTH_POSITION_OFFSET)); + + material.SetVector(MOUTH_DIRECTION_PROPERTY, neckJoint.up); + } + } + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatar.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatar.cs.meta new file mode 100644 index 0000000..c184790 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatar.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 00f3402a2ea5bff4880c0313515240cd +timeCreated: 1464046614 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarAsset.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarAsset.cs new file mode 100644 index 0000000..ba1238a --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarAsset.cs @@ -0,0 +1,5 @@ +using System; + +public class OvrAvatarAsset { + public UInt64 assetID; +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarAsset.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarAsset.cs.meta new file mode 100644 index 0000000..b7f6d51 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarAsset.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a7045bb39115f484a89ecaa778a2a60f +timeCreated: 1475521356 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetMesh.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetMesh.cs new file mode 100644 index 0000000..c3d05e6 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetMesh.cs @@ -0,0 +1,219 @@ +using System; +using Oculus.Avatar; +using UnityEngine; +using System.Runtime.InteropServices; + +public class OvrAvatarAssetMesh : OvrAvatarAsset +{ + public Mesh mesh; + private ovrAvatarSkinnedMeshPose skinnedBindPose; + public string[] jointNames; + + public OvrAvatarAssetMesh(UInt64 _assetId, IntPtr asset, ovrAvatarAssetType meshType) + { + assetID = _assetId; + mesh = new Mesh(); + mesh.name = "Procedural Geometry for asset " + _assetId; + + switch (meshType) + { + case ovrAvatarAssetType.Mesh: + { + ovrAvatarMeshAssetData meshAssetData = CAPI.ovrAvatarAsset_GetMeshData(asset); + + AvatarLogger.Log( + "OvrAvatarAssetMesh: " + + _assetId + + " " + + meshType.ToString() + + " VertexCount:" + + meshAssetData.vertexCount); + + + long vertexCount = (long)meshAssetData.vertexCount; + Vector3[] vertices = new Vector3[vertexCount]; + Vector3[] normals = new Vector3[vertexCount]; + Vector4[] tangents = new Vector4[vertexCount]; + Vector2[] uv = new Vector2[vertexCount]; + Color[] colors = new Color[vertexCount]; + BoneWeight[] boneWeights = new BoneWeight[vertexCount]; + + long vertexSize = (long)Marshal.SizeOf(typeof(ovrAvatarMeshVertex)); + long vertexBufferStart = meshAssetData.vertexBuffer.ToInt64(); + + for (long i = 0; i < vertexCount; i++) + { + long offset = vertexSize * i; + + ovrAvatarMeshVertex vertex = (ovrAvatarMeshVertex)Marshal.PtrToStructure(new IntPtr(vertexBufferStart + offset), typeof(ovrAvatarMeshVertex)); + vertices[i] = new Vector3(vertex.x, vertex.y, -vertex.z); + normals[i] = new Vector3(vertex.nx, vertex.ny, -vertex.nz); + tangents[i] = new Vector4(vertex.tx, vertex.ty, -vertex.tz, vertex.tw); + uv[i] = new Vector2(vertex.u, vertex.v); + colors[i] = new Color(0, 0, 0, 1); + + boneWeights[i].boneIndex0 = vertex.blendIndices[0]; + boneWeights[i].boneIndex1 = vertex.blendIndices[1]; + boneWeights[i].boneIndex2 = vertex.blendIndices[2]; + boneWeights[i].boneIndex3 = vertex.blendIndices[3]; + boneWeights[i].weight0 = vertex.blendWeights[0]; + boneWeights[i].weight1 = vertex.blendWeights[1]; + boneWeights[i].weight2 = vertex.blendWeights[2]; + boneWeights[i].weight3 = vertex.blendWeights[3]; + } + + mesh.vertices = vertices; + mesh.normals = normals; + mesh.uv = uv; + mesh.tangents = tangents; + mesh.boneWeights = boneWeights; + mesh.colors = colors; + + skinnedBindPose = meshAssetData.skinnedBindPose; + + ulong indexCount = meshAssetData.indexCount; + Int16[] indices = new Int16[indexCount]; + IntPtr indexBufferPtr = meshAssetData.indexBuffer; + Marshal.Copy(indexBufferPtr, indices, 0, (int)indexCount); + Int32[] triangles = new Int32[indexCount]; + for (ulong i = 0; i < indexCount; i += 3) + { + triangles[i + 2] = (Int32)indices[i]; + triangles[i + 1] = (Int32)indices[i + 1]; + triangles[i] = (Int32)indices[i + 2]; + } + mesh.triangles = triangles; + + UInt32 jointCount = skinnedBindPose.jointCount; + jointNames = new string[jointCount]; + for (UInt32 i = 0; i < jointCount; i++) + { + jointNames[i] = Marshal.PtrToStringAnsi(skinnedBindPose.jointNames[i]); + } + } + break; + + case ovrAvatarAssetType.CombinedMesh: + { + ovrAvatarMeshAssetDataV2 meshAssetData = CAPI.ovrAvatarAsset_GetCombinedMeshData(asset); + + AvatarLogger.Log( + "OvrAvatarAssetMesh: " + + _assetId + + " " + + meshType.ToString() + + " VertexCount:" + + meshAssetData.vertexCount); + + long vertexCount = (long)meshAssetData.vertexCount; + Vector3[] vertices = new Vector3[vertexCount]; + Vector3[] normals = new Vector3[vertexCount]; + Vector4[] tangents = new Vector4[vertexCount]; + Vector2[] uv = new Vector2[vertexCount]; + Color[] colors = new Color[vertexCount]; + BoneWeight[] boneWeights = new BoneWeight[vertexCount]; + + long vertexSize = (long)Marshal.SizeOf(typeof(ovrAvatarMeshVertexV2)); + long vertexBufferStart = meshAssetData.vertexBuffer.ToInt64(); + + for (long i = 0; i < vertexCount; i++) + { + long offset = vertexSize * i; + + ovrAvatarMeshVertexV2 vertex = (ovrAvatarMeshVertexV2)Marshal.PtrToStructure(new IntPtr(vertexBufferStart + offset), typeof(ovrAvatarMeshVertexV2)); + vertices[i] = new Vector3(vertex.x, vertex.y, -vertex.z); + normals[i] = new Vector3(vertex.nx, vertex.ny, -vertex.nz); + tangents[i] = new Vector4(vertex.tx, vertex.ty, -vertex.tz, vertex.tw); + uv[i] = new Vector2(vertex.u, vertex.v); + colors[i] = new Color(vertex.r, vertex.g, vertex.b, vertex.a); + + boneWeights[i].boneIndex0 = vertex.blendIndices[0]; + boneWeights[i].boneIndex1 = vertex.blendIndices[1]; + boneWeights[i].boneIndex2 = vertex.blendIndices[2]; + boneWeights[i].boneIndex3 = vertex.blendIndices[3]; + boneWeights[i].weight0 = vertex.blendWeights[0]; + boneWeights[i].weight1 = vertex.blendWeights[1]; + boneWeights[i].weight2 = vertex.blendWeights[2]; + boneWeights[i].weight3 = vertex.blendWeights[3]; + } + + mesh.vertices = vertices; + mesh.normals = normals; + mesh.uv = uv; + mesh.tangents = tangents; + mesh.boneWeights = boneWeights; + mesh.colors = colors; + + skinnedBindPose = meshAssetData.skinnedBindPose; + + ulong indexCount = meshAssetData.indexCount; + Int16[] indices = new Int16[indexCount]; + IntPtr indexBufferPtr = meshAssetData.indexBuffer; + Marshal.Copy(indexBufferPtr, indices, 0, (int)indexCount); + Int32[] triangles = new Int32[indexCount]; + for (ulong i = 0; i < indexCount; i += 3) + { + triangles[i + 2] = (Int32)indices[i]; + triangles[i + 1] = (Int32)indices[i + 1]; + triangles[i] = (Int32)indices[i + 2]; + } + mesh.triangles = triangles; + + UInt32 jointCount = skinnedBindPose.jointCount; + jointNames = new string[jointCount]; + for (UInt32 i = 0; i < jointCount; i++) + { + jointNames[i] = Marshal.PtrToStringAnsi(skinnedBindPose.jointNames[i]); + } + } + break; + + default: + throw new Exception("Bad Mesh Asset Type"); + } + } + + public SkinnedMeshRenderer CreateSkinnedMeshRendererOnObject(GameObject target) + { + SkinnedMeshRenderer skinnedMeshRenderer = target.AddComponent(); + skinnedMeshRenderer.sharedMesh = mesh; + mesh.name = "AvatarMesh_" + assetID; + UInt32 jointCount = skinnedBindPose.jointCount; + GameObject[] bones = new GameObject[jointCount]; + Transform[] boneTransforms = new Transform[jointCount]; + Matrix4x4[] bindPoses = new Matrix4x4[jointCount]; + for (UInt32 i = 0; i < jointCount; i++) + { + bones[i] = new GameObject(); + boneTransforms[i] = bones[i].transform; + bones[i].name = jointNames[i]; + int parentIndex = skinnedBindPose.jointParents[i]; + if (parentIndex == -1) + { + bones[i].transform.parent = skinnedMeshRenderer.transform; + skinnedMeshRenderer.rootBone = bones[i].transform; + } + else + { + bones[i].transform.parent = bones[parentIndex].transform; + } + + // Set the position relative to the parent + Vector3 position = skinnedBindPose.jointTransform[i].position; + position.z = -position.z; + bones[i].transform.localPosition = position; + + Quaternion orientation = skinnedBindPose.jointTransform[i].orientation; + orientation.x = -orientation.x; + orientation.y = -orientation.y; + bones[i].transform.localRotation = orientation; + + bones[i].transform.localScale = skinnedBindPose.jointTransform[i].scale; + + bindPoses[i] = bones[i].transform.worldToLocalMatrix * skinnedMeshRenderer.transform.localToWorldMatrix; + } + skinnedMeshRenderer.bones = boneTransforms; + mesh.bindposes = bindPoses; + return skinnedMeshRenderer; + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetMesh.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetMesh.cs.meta new file mode 100644 index 0000000..dbd05ea --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetMesh.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 80be643e69fa4a4478a5cb27a190bbd2 +timeCreated: 1475522461 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetTexture.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetTexture.cs new file mode 100644 index 0000000..4026b08 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetTexture.cs @@ -0,0 +1,58 @@ +using System; +using Oculus.Avatar; +using UnityEngine; + +public class OvrAvatarAssetTexture : OvrAvatarAsset { + public Texture2D texture; + + private const int ASTCHeaderSize = 16; + + public OvrAvatarAssetTexture(UInt64 _assetId, IntPtr asset) { + assetID = _assetId; + ovrAvatarTextureAssetData textureAssetData = CAPI.ovrAvatarAsset_GetTextureData(asset); + TextureFormat format; + IntPtr textureData = textureAssetData.textureData; + int textureDataSize = (int)textureAssetData.textureDataSize; + + AvatarLogger.Log( + "OvrAvatarAssetTexture - " + + _assetId + + ": " + + textureAssetData.format.ToString() + + " " + + textureAssetData.sizeX + + "x" + + textureAssetData.sizeY); + + switch (textureAssetData.format) + { + case ovrAvatarTextureFormat.RGB24: + format = TextureFormat.RGB24; + break; + case ovrAvatarTextureFormat.DXT1: + format = TextureFormat.DXT1; + break; + case ovrAvatarTextureFormat.DXT5: + format = TextureFormat.DXT5; + break; + case ovrAvatarTextureFormat.ASTC_RGB_6x6: + format = TextureFormat.ASTC_RGB_6x6; + textureData = new IntPtr(textureData.ToInt64() + ASTCHeaderSize); + textureDataSize -= ASTCHeaderSize; + break; + case ovrAvatarTextureFormat.ASTC_RGB_6x6_MIPMAPS: + format = TextureFormat.ASTC_RGB_6x6; + break; + default: + throw new NotImplementedException( + string.Format("Unsupported texture format {0}", + textureAssetData.format.ToString())); + } + texture = new Texture2D( + (int)textureAssetData.sizeX, (int)textureAssetData.sizeY, + format, textureAssetData.mipCount > 1, + QualitySettings.activeColorSpace == ColorSpace.Gamma ? false : true); + texture.LoadRawTextureData(textureData, textureDataSize); + texture.Apply(true, false); + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetTexture.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetTexture.cs.meta new file mode 100644 index 0000000..d67df96 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarAssetTexture.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8a3167eed50e56346be5b1cc65ad7226 +timeCreated: 1475522480 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarBase.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarBase.cs new file mode 100644 index 0000000..8559fc1 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarBase.cs @@ -0,0 +1,8 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +public class OvrAvatarBase : MonoBehaviour +{ +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarBase.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarBase.cs.meta new file mode 100644 index 0000000..aed70e9 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a0e33623ec5372748b5703f61a4df82d +timeCreated: 1477606822 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarBody.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarBody.cs new file mode 100644 index 0000000..3e66aef --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarBody.cs @@ -0,0 +1,11 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +public class OvrAvatarBody : MonoBehaviour +{ + public virtual void UpdatePose(float voiceAmplitude) + { + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarBody.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarBody.cs.meta new file mode 100644 index 0000000..ccb2165 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarBody.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eb7a6650b6cb46545967d3b380b7396c +timeCreated: 1466814542 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarComponent.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarComponent.cs new file mode 100644 index 0000000..38cd6c7 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarComponent.cs @@ -0,0 +1,153 @@ +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Oculus.Avatar; +using System.Threading; + +public class OvrAvatarComponent : MonoBehaviour +{ + + public static readonly string[] LayerKeywords = new[] { "LAYERS_0", "LAYERS_1", "LAYERS_2", "LAYERS_3", "LAYERS_4", "LAYERS_5", "LAYERS_6", "LAYERS_7", "LAYERS_8", }; + public static readonly string[] LayerSampleModeParameters = new[] { "_LayerSampleMode0", "_LayerSampleMode1", "_LayerSampleMode2", "_LayerSampleMode3", "_LayerSampleMode4", "_LayerSampleMode5", "_LayerSampleMode6", "_LayerSampleMode7", }; + public static readonly string[] LayerBlendModeParameters = new[] { "_LayerBlendMode0", "_LayerBlendMode1", "_LayerBlendMode2", "_LayerBlendMode3", "_LayerBlendMode4", "_LayerBlendMode5", "_LayerBlendMode6", "_LayerBlendMode7", }; + public static readonly string[] LayerMaskTypeParameters = new[] { "_LayerMaskType0", "_LayerMaskType1", "_LayerMaskType2", "_LayerMaskType3", "_LayerMaskType4", "_LayerMaskType5", "_LayerMaskType6", "_LayerMaskType7", }; + public static readonly string[] LayerColorParameters = new[] { "_LayerColor0", "_LayerColor1", "_LayerColor2", "_LayerColor3", "_LayerColor4", "_LayerColor5", "_LayerColor6", "_LayerColor7", }; + public static readonly string[] LayerSurfaceParameters = new[] { "_LayerSurface0", "_LayerSurface1", "_LayerSurface2", "_LayerSurface3", "_LayerSurface4", "_LayerSurface5", "_LayerSurface6", "_LayerSurface7", }; + public static readonly string[] LayerSampleParametersParameters = new[] { "_LayerSampleParameters0", "_LayerSampleParameters1", "_LayerSampleParameters2", "_LayerSampleParameters3", "_LayerSampleParameters4", "_LayerSampleParameters5", "_LayerSampleParameters6", "_LayerSampleParameters7", }; + public static readonly string[] LayerMaskParametersParameters = new[] { "_LayerMaskParameters0", "_LayerMaskParameters1", "_LayerMaskParameters2", "_LayerMaskParameters3", "_LayerMaskParameters4", "_LayerMaskParameters5", "_LayerMaskParameters6", "_LayerMaskParameters7", }; + public static readonly string[] LayerMaskAxisParameters = new[] { "_LayerMaskAxis0", "_LayerMaskAxis1", "_LayerMaskAxis2", "_LayerMaskAxis3", "_LayerMaskAxis4", "_LayerMaskAxis5", "_LayerMaskAxis6", "_LayerMaskAxis7", }; + + private Dictionary materialStates = new Dictionary(); + public List RenderParts = new List(); + + private bool DrawSkeleton = false; + private bool FirstMaterialUpdate = true; + + public ulong ClothingAlphaTexture = 0; + public Vector4 ClothingAlphaOffset; + + public void UpdateAvatar(ovrAvatarComponent component, OvrAvatar avatar) + { + OvrAvatar.ConvertTransform(component.transform, transform); + + for (UInt32 renderPartIndex = 0; renderPartIndex < component.renderPartCount; renderPartIndex++) + { + if (RenderParts.Count <= renderPartIndex) + { + break; + } + + OvrAvatarRenderComponent renderComponent = RenderParts[(int)renderPartIndex]; + IntPtr renderPart = OvrAvatar.GetRenderPart(component, renderPartIndex); + ovrAvatarRenderPartType type = CAPI.ovrAvatarRenderPart_GetType(renderPart); + switch (type) + { + case ovrAvatarRenderPartType.SkinnedMeshRender: + ((OvrAvatarSkinnedMeshRenderComponent)renderComponent).UpdateSkinnedMeshRender(this, avatar, renderPart); + break; + case ovrAvatarRenderPartType.SkinnedMeshRenderPBS: + ((OvrAvatarSkinnedMeshRenderPBSComponent)renderComponent).UpdateSkinnedMeshRenderPBS(avatar, renderPart, renderComponent.mesh.sharedMaterial); + break; + case ovrAvatarRenderPartType.ProjectorRender: + ((OvrAvatarProjectorRenderComponent)renderComponent).UpdateProjectorRender(this, CAPI.ovrAvatarRenderPart_GetProjectorRender(renderPart)); + break; + case ovrAvatarRenderPartType.SkinnedMeshRenderPBS_V2: + ((OvrAvatarSkinnedMeshPBSV2RenderComponent)renderComponent).UpdateSkinnedMeshRender(this, avatar, renderPart); + break; + default: + break; + } + } + } + + protected void UpdateActive(OvrAvatar avatar, ovrAvatarVisibilityFlags mask) + { + bool active = avatar.ShowFirstPerson && (mask & ovrAvatarVisibilityFlags.FirstPerson) != 0; + active |= avatar.ShowThirdPerson && (mask & ovrAvatarVisibilityFlags.ThirdPerson) != 0; + this.gameObject.SetActive(active); + } + + public void UpdateAvatarMaterial(Material mat, ovrAvatarMaterialState matState) + { + mat.SetColor("_BaseColor", matState.baseColor); + mat.SetInt("_BaseMaskType", (int)matState.baseMaskType); + mat.SetVector("_BaseMaskParameters", matState.baseMaskParameters); + mat.SetVector("_BaseMaskAxis", matState.baseMaskAxis); + + if (matState.alphaMaskTextureID != 0) + { + mat.SetTexture("_AlphaMask", GetLoadedTexture(matState.alphaMaskTextureID)); + mat.SetTextureScale("_AlphaMask", new Vector2(matState.alphaMaskScaleOffset.x, matState.alphaMaskScaleOffset.y)); + mat.SetTextureOffset("_AlphaMask", new Vector2(matState.alphaMaskScaleOffset.z, matState.alphaMaskScaleOffset.w)); + } + + if (ClothingAlphaTexture != 0) + { + mat.EnableKeyword("VERTALPHA_ON"); + mat.SetTexture("_AlphaMask2", GetLoadedTexture(ClothingAlphaTexture)); + mat.SetTextureScale("_AlphaMask2", new Vector2(ClothingAlphaOffset.x, ClothingAlphaOffset.y)); + mat.SetTextureOffset("_AlphaMask2", new Vector2(ClothingAlphaOffset.z, ClothingAlphaOffset.w)); + } + + if (matState.normalMapTextureID != 0) + { + mat.EnableKeyword("NORMAL_MAP_ON"); + mat.SetTexture("_NormalMap", GetLoadedTexture(matState.normalMapTextureID)); + mat.SetTextureScale("_NormalMap", new Vector2(matState.normalMapScaleOffset.x, matState.normalMapScaleOffset.y)); + mat.SetTextureOffset("_NormalMap", new Vector2(matState.normalMapScaleOffset.z, matState.normalMapScaleOffset.w)); + } + if (matState.parallaxMapTextureID != 0) + { + mat.SetTexture("_ParallaxMap", GetLoadedTexture(matState.parallaxMapTextureID)); + mat.SetTextureScale("_ParallaxMap", new Vector2(matState.parallaxMapScaleOffset.x, matState.parallaxMapScaleOffset.y)); + mat.SetTextureOffset("_ParallaxMap", new Vector2(matState.parallaxMapScaleOffset.z, matState.parallaxMapScaleOffset.w)); + } + if (matState.roughnessMapTextureID != 0) + { + mat.EnableKeyword("ROUGHNESS_ON"); + mat.SetTexture("_RoughnessMap", GetLoadedTexture(matState.roughnessMapTextureID)); + mat.SetTextureScale("_RoughnessMap", new Vector2(matState.roughnessMapScaleOffset.x, matState.roughnessMapScaleOffset.y)); + mat.SetTextureOffset("_RoughnessMap", new Vector2(matState.roughnessMapScaleOffset.z, matState.roughnessMapScaleOffset.w)); + } + mat.EnableKeyword(LayerKeywords[matState.layerCount]); + for (ulong layerIndex = 0; layerIndex < matState.layerCount; layerIndex++) + { + ovrAvatarMaterialLayerState layer = matState.layers[layerIndex]; + + mat.SetInt(LayerSampleModeParameters[layerIndex], (int)layer.sampleMode); + mat.SetInt(LayerBlendModeParameters[layerIndex], (int)layer.blendMode); + mat.SetInt(LayerMaskTypeParameters[layerIndex], (int)layer.maskType); + mat.SetColor(LayerColorParameters[layerIndex], layer.layerColor); + if (layer.sampleMode != ovrAvatarMaterialLayerSampleMode.Color) + { + string surfaceProperty = LayerSurfaceParameters[layerIndex]; + mat.SetTexture(surfaceProperty, GetLoadedTexture(layer.sampleTexture)); + mat.SetTextureScale(surfaceProperty, new Vector2(layer.sampleScaleOffset.x, layer.sampleScaleOffset.y)); + mat.SetTextureOffset(surfaceProperty, new Vector2(layer.sampleScaleOffset.z, layer.sampleScaleOffset.w)); + } + + if (layer.sampleMode == ovrAvatarMaterialLayerSampleMode.Parallax) + { + mat.EnableKeyword("PARALLAX_ON"); + } + + mat.SetColor(LayerSampleParametersParameters[layerIndex], layer.sampleParameters); + mat.SetColor(LayerMaskParametersParameters[layerIndex], layer.maskParameters); + mat.SetColor(LayerMaskAxisParameters[layerIndex], layer.maskAxis); + } + + materialStates[mat] = matState; + } + + public static Texture2D GetLoadedTexture(UInt64 assetId) + { + OvrAvatarAssetTexture tex = (OvrAvatarAssetTexture)OvrAvatarSDKManager.Instance.GetAsset(assetId); + if (tex == null) + { + return null; + } + + return tex.texture; + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarComponent.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarComponent.cs.meta new file mode 100644 index 0000000..7af794e --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarComponent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4d8af585c6ed18849905454f83194043 +timeCreated: 1479155378 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarDriver.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarDriver.cs new file mode 100644 index 0000000..574fc7c --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarDriver.cs @@ -0,0 +1,103 @@ +using UnityEngine; +using System.Collections; +using System; +using Oculus.Avatar; + +public abstract class OvrAvatarDriver : MonoBehaviour { + + public enum PacketMode + { + SDK, + Unity + }; + + + public PacketMode Mode; + protected PoseFrame CurrentPose; + public PoseFrame GetCurrentPose() { return CurrentPose; } + public abstract void UpdateTransforms(IntPtr sdkAvatar); + + public struct ControllerPose + { + public ovrAvatarButton buttons; + public ovrAvatarTouch touches; + public Vector2 joystickPosition; + public float indexTrigger; + public float handTrigger; + public bool isActive; + + public static ControllerPose Interpolate(ControllerPose a, ControllerPose b, float t) + { + return new ControllerPose + { + buttons = t < 0.5f ? a.buttons : b.buttons, + touches = t < 0.5f ? a.touches : b.touches, + joystickPosition = Vector2.Lerp(a.joystickPosition, b.joystickPosition, t), + indexTrigger = Mathf.Lerp(a.indexTrigger, b.indexTrigger, t), + handTrigger = Mathf.Lerp(a.handTrigger, b.handTrigger, t), + isActive = t < 0.5f ? a.isActive : b.isActive, + }; + } + } + + public struct PoseFrame + { + public Vector3 headPosition; + public Quaternion headRotation; + public Vector3 handLeftPosition; + public Quaternion handLeftRotation; + public Vector3 handRightPosition; + public Quaternion handRightRotation; + public float voiceAmplitude; + + public ControllerPose controllerLeftPose; + public ControllerPose controllerRightPose; + + public static PoseFrame Interpolate(PoseFrame a, PoseFrame b, float t) + { + return new PoseFrame + { + headPosition = Vector3.Lerp(a.headPosition, b.headPosition, t), + headRotation = Quaternion.Slerp(a.headRotation, b.headRotation, t), + handLeftPosition = Vector3.Lerp(a.handLeftPosition, b.handLeftPosition, t), + handLeftRotation = Quaternion.Slerp(a.handLeftRotation, b.handLeftRotation, t), + handRightPosition = Vector3.Lerp(a.handRightPosition, b.handRightPosition, t), + handRightRotation = Quaternion.Slerp(a.handRightRotation, b.handRightRotation, t), + voiceAmplitude = Mathf.Lerp(a.voiceAmplitude, b.voiceAmplitude, t), + controllerLeftPose = ControllerPose.Interpolate(a.controllerLeftPose, b.controllerLeftPose, t), + controllerRightPose = ControllerPose.Interpolate(a.controllerRightPose, b.controllerRightPose, t), + }; + } + }; + + protected void UpdateTransformsFromPose(IntPtr sdkAvatar) + { + if (sdkAvatar != IntPtr.Zero) + { + ovrAvatarTransform bodyTransform = OvrAvatar.CreateOvrAvatarTransform(CurrentPose.headPosition, CurrentPose.headRotation); + ovrAvatarHandInputState inputStateLeft = OvrAvatar.CreateInputState(OvrAvatar.CreateOvrAvatarTransform(CurrentPose.handLeftPosition, CurrentPose.handLeftRotation), CurrentPose.controllerLeftPose); + ovrAvatarHandInputState inputStateRight = OvrAvatar.CreateInputState(OvrAvatar.CreateOvrAvatarTransform(CurrentPose.handRightPosition, CurrentPose.handRightRotation), CurrentPose.controllerRightPose); + + CAPI.ovrAvatarPose_UpdateBody(sdkAvatar, bodyTransform); + + if (GetIsTrackedRemote()) + { + CAPI.ovrAvatarPose_UpdateSDK3DofHands(sdkAvatar, inputStateLeft, inputStateRight, GetRemoteControllerType()); + } + else + { + CAPI.ovrAvatarPose_UpdateHands(sdkAvatar, inputStateLeft, inputStateRight); + } + } + } + + public static bool GetIsTrackedRemote() + { + return OVRInput.IsControllerConnected(OVRInput.Controller.RTrackedRemote) || OVRInput.IsControllerConnected(OVRInput.Controller.LTrackedRemote); + } + + private ovrAvatarControllerType GetRemoteControllerType() + { + return OVRPlugin.productName == "Oculus Go" ? ovrAvatarControllerType.Go : ovrAvatarControllerType.Malibu; + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarDriver.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarDriver.cs.meta new file mode 100644 index 0000000..3bdc633 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarDriver.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b0bda905d6cc47640bc17f99e364a1b9 +timeCreated: 1464049373 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarHand.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarHand.cs new file mode 100644 index 0000000..5544634 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarHand.cs @@ -0,0 +1,8 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +public class OvrAvatarHand : MonoBehaviour +{ +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarHand.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarHand.cs.meta new file mode 100644 index 0000000..e9773e6 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarHand.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e53b07ad62d980a4da9fffff0b05fd2e +timeCreated: 1464054646 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarLocalDriver.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarLocalDriver.cs new file mode 100644 index 0000000..f8fd26b --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarLocalDriver.cs @@ -0,0 +1,108 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Collections.Generic; +using Oculus.Avatar; + +public class OvrAvatarLocalDriver : OvrAvatarDriver { + + ControllerPose GetMalibuControllerPose(OVRInput.Controller controller) + { + ovrAvatarButton buttons = 0; + if (OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger, controller)) buttons |= ovrAvatarButton.One; + + return new ControllerPose + { + buttons = buttons, + touches = OVRInput.Get(OVRInput.Touch.PrimaryTouchpad) ? ovrAvatarTouch.One : 0, + joystickPosition = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad, controller), + indexTrigger = 0f, + handTrigger = 0f, + isActive = (OVRInput.GetActiveController() & controller) != 0, + }; + } + + float voiceAmplitude = 0.0f; + ControllerPose GetControllerPose(OVRInput.Controller controller) + { + ovrAvatarButton buttons = 0; + if (OVRInput.Get(OVRInput.Button.One, controller)) buttons |= ovrAvatarButton.One; + if (OVRInput.Get(OVRInput.Button.Two, controller)) buttons |= ovrAvatarButton.Two; + if (OVRInput.Get(OVRInput.Button.Start, controller)) buttons |= ovrAvatarButton.Three; + if (OVRInput.Get(OVRInput.Button.PrimaryThumbstick, controller)) buttons |= ovrAvatarButton.Joystick; + + ovrAvatarTouch touches = 0; + if (OVRInput.Get(OVRInput.Touch.One, controller)) touches |= ovrAvatarTouch.One; + if (OVRInput.Get(OVRInput.Touch.Two, controller)) touches |= ovrAvatarTouch.Two; + if (OVRInput.Get(OVRInput.Touch.PrimaryThumbstick, controller)) touches |= ovrAvatarTouch.Joystick; + if (OVRInput.Get(OVRInput.Touch.PrimaryThumbRest, controller)) touches |= ovrAvatarTouch.ThumbRest; + if (OVRInput.Get(OVRInput.Touch.PrimaryIndexTrigger, controller)) touches |= ovrAvatarTouch.Index; + if (!OVRInput.Get(OVRInput.NearTouch.PrimaryIndexTrigger, controller)) touches |= ovrAvatarTouch.Pointing; + if (!OVRInput.Get(OVRInput.NearTouch.PrimaryThumbButtons, controller)) touches |= ovrAvatarTouch.ThumbUp; + + return new ControllerPose + { + buttons = buttons, + touches = touches, + joystickPosition = OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick, controller), + indexTrigger = OVRInput.Get(OVRInput.Axis1D.PrimaryIndexTrigger, controller), + handTrigger = OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger, controller), + isActive = (OVRInput.GetActiveController() & controller) != 0, + }; + } + + private void CalculateCurrentPose() + { +#if UNITY_2017_2_OR_NEWER + Vector3 headPos = UnityEngine.XR.InputTracking.GetLocalPosition(UnityEngine.XR.XRNode.CenterEye); +#else + Vector3 headPos = UnityEngine.VR.InputTracking.GetLocalPosition(UnityEngine.VR.VRNode.CenterEye); +#endif + + if (GetIsTrackedRemote()) + { + CurrentPose = new PoseFrame + { + voiceAmplitude = voiceAmplitude, + headPosition = headPos, +#if UNITY_2017_2_OR_NEWER + headRotation = UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.CenterEye), +#else + headRotation = UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.CenterEye), +#endif + handLeftPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.LTrackedRemote), + handLeftRotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.LTrackedRemote), + handRightPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTrackedRemote), + handRightRotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote), + controllerLeftPose = GetMalibuControllerPose(OVRInput.Controller.LTrackedRemote), + controllerRightPose = GetMalibuControllerPose(OVRInput.Controller.RTrackedRemote), + }; + } + else + { + CurrentPose = new PoseFrame + { + voiceAmplitude = voiceAmplitude, + headPosition = headPos, +#if UNITY_2017_2_OR_NEWER + headRotation = UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.CenterEye), +#else + headRotation = UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.CenterEye), +#endif + handLeftPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.LTouch), + handLeftRotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.LTouch), + handRightPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch), + handRightRotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTouch), + controllerLeftPose = GetControllerPose(OVRInput.Controller.LTouch), + controllerRightPose = GetControllerPose(OVRInput.Controller.RTouch), + }; + } + + } + + public override void UpdateTransforms(IntPtr sdkAvatar) + { + CalculateCurrentPose(); + UpdateTransformsFromPose(sdkAvatar); + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarLocalDriver.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarLocalDriver.cs.meta new file mode 100644 index 0000000..798ef51 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarLocalDriver.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ac27124318cf8e84aa7350c2ac1cdb80 +timeCreated: 1464049705 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarLogger.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarLogger.cs new file mode 100644 index 0000000..51f4dc3 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarLogger.cs @@ -0,0 +1,38 @@ +using UnityEngine; + +namespace Oculus.Avatar +{ + public static class AvatarLogger + { + public const string LogAvatar = "[Avatars] - "; + public const string Tab = " "; + + [System.Diagnostics.Conditional("ENABLE_AVATAR_LOGS"), + System.Diagnostics.Conditional("ENABLE_AVATAR_LOG_BASIC")] + public static void Log(string logMsg) + { + Debug.Log(LogAvatar + logMsg); + } + + [System.Diagnostics.Conditional("ENABLE_AVATAR_LOGS"), + System.Diagnostics.Conditional("ENABLE_AVATAR_LOG_BASIC")] + public static void Log(string logMsg, Object context) + { + Debug.Log(LogAvatar + logMsg , context); + } + + [System.Diagnostics.Conditional("ENABLE_AVATAR_LOGS"), + System.Diagnostics.Conditional("ENABLE_AVATAR_LOG_WARNING")] + public static void LogWarning(string logMsg) + { + Debug.LogWarning(LogAvatar + logMsg); + } + + [System.Diagnostics.Conditional("ENABLE_AVATAR_LOGS"), + System.Diagnostics.Conditional("ENABLE_AVATAR_LOG_ERROR")] + public static void LogError(string logMsg) + { + Debug.LogError(LogAvatar + logMsg); + } + }; +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarLogger.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarLogger.cs.meta new file mode 100644 index 0000000..073015a --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarLogger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6d391500bc1e8da42a41ef796dd22ed0 +timeCreated: 1519433181 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarMaterialManager.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarMaterialManager.cs new file mode 100644 index 0000000..d5db298 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarMaterialManager.cs @@ -0,0 +1,354 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using Oculus.Avatar; +using System.Collections; + +public class OvrAvatarMaterialManager : MonoBehaviour +{ + // Set up in the Prefab, and meant to be indexed by LOD + public Texture2D[] DiffuseFallbacks; + public Texture2D[] NormalFallbacks; + + private Renderer TargetRenderer; + private AvatarTextureArrayProperties[] TextureArrays; + + private OvrAvatarTextureCopyManager TextureCopyManager; + + public enum TextureType + { + DiffuseTextures = 0, + NormalMaps, + RoughnessMaps, + + Count + } + // Material properties required to render a single component + [System.Serializable] + public struct AvatarComponentMaterialProperties + { + public ovrAvatarBodyPartType TypeIndex; + public Color Color; + public Texture2D[] Textures; + + [Range(0, 1)] public float DiffuseIntensity; + [Range(0, 10)] public float RimIntensity; + [Range(0, 1)] public float BacklightIntensity; + [Range(0, 1)] public float ReflectionIntensity; + } + + // Texture arrays + [System.Serializable] + public struct AvatarTextureArrayProperties + { + public Texture2D[] Textures; + public Texture2DArray TextureArray; + } + + // Material property arrays that are pushed to the shader + [System.Serializable] + public struct AvatarMaterialPropertyBlock + { + public Vector4[] Colors; + public float[] DiffuseIntensities; + public float[] RimIntensities; + public float[] BacklightIntensities; + public float[] ReflectionIntensities; + } + + private readonly string[] TextureTypeToShaderProperties = + { + "_MainTex", // TextureType.DiffuseTextures = 0 + "_NormalMap", // TextureType.NormalMaps + "_RoughnessMap" // TextureType.RoughnessMaps + }; + + public Color[] BodyColorTints; + public List ReflectionProbes = new List(); + + // Container class for all the data relating to an avatar material description + [System.Serializable] + public class AvatarMaterialConfig + { + public AvatarComponentMaterialProperties[] ComponentMaterialProperties; + public AvatarMaterialPropertyBlock MaterialPropertyBlock; + } + + // Local config that this manager instance will render + public AvatarMaterialConfig LocalAvatarConfig; + // Default avatar config used to initially populate the locally managed avatar config + public AvatarMaterialConfig DefaultAvatarConfig; + + // Property block for pushing to shader + private AvatarMaterialPropertyBlock LocalAvatarMaterialPropertyBlock; + + public static int RENDER_QUEUE = 3640; + + // Shader properties + public static string AVATAR_SHADER_COMBINED = "OvrAvatar/Avatar_Mobile_CombinedMesh"; + public static string AVATAR_SHADER_LOADER = "OvrAvatar/Avatar_Mobile_Loader"; + public static string AVATAR_SHADER_MAINTEX = "_MainTex"; + public static string AVATAR_SHADER_NORMALMAP = "_NormalMap"; + public static string AVATAR_SHADER_ROUGHNESSMAP = "_RoughnessMap"; + public static string AVATAR_SHADER_COLOR = "_BaseColor"; + public static string AVATAR_SHADER_DIFFUSEINTENSITY = "_DiffuseIntensity"; + public static string AVATAR_SHADER_RIMINTENSITY = "_RimIntensity"; + public static string AVATAR_SHADER_BACKLIGHTINTENSITY = "_BacklightIntensity"; + public static string AVATAR_SHADER_REFLECTIONINTENSITY = "_ReflectionIntensity"; + public static string AVATAR_SHADER_CUBEMAP = "_Cubemap"; + public static string AVATAR_SHADER_ALPHA = "_Alpha"; + public static string AVATAR_SHADER_LOADING_DIMMER = "_LoadingDimmer"; + + // Loading animation + private const float LOADING_ANIMATION_AMPLITUDE = 0.5f; + private const float LOADING_ANIMATION_PERIOD = 0.35f; + private const float LOADING_ANIMATION_CURVE_SCALE = 0.25f; + private const float LOADING_ANIMATION_DIMMER_MIN = 0.3f; + + void Awake() + { + TextureCopyManager = gameObject.AddComponent(); + } + + public void CreateTextureArrays() + { + const int componentCount = (int)ovrAvatarBodyPartType.Count; + const int textureTypeCount = (int)TextureType.Count; + + for (int index = 0; index < componentCount; index++) + { + LocalAvatarConfig.ComponentMaterialProperties[index].Textures = new Texture2D[textureTypeCount]; + DefaultAvatarConfig.ComponentMaterialProperties[index].Textures = new Texture2D[textureTypeCount]; + } + + TextureArrays = new AvatarTextureArrayProperties[textureTypeCount]; + } + + public void SetRenderer(Renderer renderer) + { + TargetRenderer = renderer; + TargetRenderer.GetClosestReflectionProbes(ReflectionProbes); + } + + public void OnCombinedMeshReady() + { + InitTextureArrays(); + SetMaterialPropertyBlock(); + StartCoroutine(RunLoadingAnimation()); + } + + // Prepare texture arrays and copy to GPU + public void InitTextureArrays() + { + var localProps = LocalAvatarConfig.ComponentMaterialProperties[0]; + + for (int i = 0; i < TextureArrays.Length && i < localProps.Textures.Length; i++) + { + TextureArrays[i].TextureArray = new Texture2DArray( + localProps.Textures[0].height, localProps.Textures[0].width, + LocalAvatarConfig.ComponentMaterialProperties.Length, + localProps.Textures[0].format, + true, + QualitySettings.activeColorSpace == ColorSpace.Gamma ? false : true + ) { filterMode = FilterMode.Trilinear }; + + TextureArrays[i].Textures + = new Texture2D[LocalAvatarConfig.ComponentMaterialProperties.Length]; + + for (int j = 0; j < LocalAvatarConfig.ComponentMaterialProperties.Length; j++) + { + TextureArrays[i].Textures[j] + = LocalAvatarConfig.ComponentMaterialProperties[j].Textures[i]; + } + + ProcessTexturesWithMips( + TextureArrays[i].Textures, + localProps.Textures[i].height, + TextureArrays[i].TextureArray); + } + } + + private void ProcessTexturesWithMips( + Texture2D[] textures, + int texArrayResolution, + Texture2DArray texArray) + { + for (int i = 0; i < textures.Length; i++) + { + int currentMipSize = texArrayResolution; + int correctNumberOfMips = textures[i].mipmapCount - 1; + + // Add mips to copyTexture queue in low-high order from correctNumberOfMips..0 + for (int mipLevel = correctNumberOfMips; mipLevel >= 0; mipLevel--) + { + int mipSize = texArrayResolution / currentMipSize; + TextureCopyManager.CopyTexture( + textures[i], + texArray, + mipLevel, + mipSize, + i, + true); + + currentMipSize /= 2; + } + } + } + + private void SetMaterialPropertyBlock() + { + if (TargetRenderer != null) + { + for (int i = 0; i < LocalAvatarConfig.ComponentMaterialProperties.Length; i++) + { + LocalAvatarConfig.MaterialPropertyBlock.Colors[i] + = LocalAvatarConfig.ComponentMaterialProperties[i].Color; + LocalAvatarConfig.MaterialPropertyBlock.DiffuseIntensities[i] + = LocalAvatarConfig.ComponentMaterialProperties[i].DiffuseIntensity; + LocalAvatarConfig.MaterialPropertyBlock.RimIntensities[i] + = LocalAvatarConfig.ComponentMaterialProperties[i].RimIntensity; + LocalAvatarConfig.MaterialPropertyBlock.BacklightIntensities[i] + = LocalAvatarConfig.ComponentMaterialProperties[i].BacklightIntensity; + LocalAvatarConfig.MaterialPropertyBlock.ReflectionIntensities[i] + = LocalAvatarConfig.ComponentMaterialProperties[i].ReflectionIntensity; + } + } + } + + private void ApplyMaterialPropertyBlock() + { + MaterialPropertyBlock materialPropertyBlock = new MaterialPropertyBlock(); + materialPropertyBlock.SetVectorArray(AVATAR_SHADER_COLOR, + LocalAvatarConfig.MaterialPropertyBlock.Colors); + materialPropertyBlock.SetFloatArray(AVATAR_SHADER_DIFFUSEINTENSITY, + LocalAvatarConfig.MaterialPropertyBlock.DiffuseIntensities); + materialPropertyBlock.SetFloatArray(AVATAR_SHADER_RIMINTENSITY, + LocalAvatarConfig.MaterialPropertyBlock.RimIntensities); + materialPropertyBlock.SetFloatArray(AVATAR_SHADER_BACKLIGHTINTENSITY, + LocalAvatarConfig.MaterialPropertyBlock.BacklightIntensities); + materialPropertyBlock.SetFloatArray(AVATAR_SHADER_REFLECTIONINTENSITY, + LocalAvatarConfig.MaterialPropertyBlock.ReflectionIntensities); + TargetRenderer.GetClosestReflectionProbes(ReflectionProbes); + + if (ReflectionProbes != null && ReflectionProbes.Count > 0 && ReflectionProbes[0].probe.texture != null) + { + materialPropertyBlock.SetTexture(AVATAR_SHADER_CUBEMAP, ReflectionProbes[0].probe.texture); + } + + for (int i = 0; i < TextureArrays.Length; i++) + { + materialPropertyBlock.SetTexture(TextureTypeToShaderProperties[i], + TextureArrays[(int)(TextureType)i].TextureArray); + } + + TargetRenderer.SetPropertyBlock(materialPropertyBlock); + } + + // Return a component type based on name + public static ovrAvatarBodyPartType GetComponentType(string objectName) + { + if (objectName.Contains("0")) + { + return ovrAvatarBodyPartType.Body; + } + else if (objectName.Contains("1")) + { + return ovrAvatarBodyPartType.Clothing; + } + else if (objectName.Contains("2")) + { + return ovrAvatarBodyPartType.Eyewear; + } + else if (objectName.Contains("3")) + { + return ovrAvatarBodyPartType.Hair; + } + else if (objectName.Contains("4")) + { + return ovrAvatarBodyPartType.Beard; + } + + return ovrAvatarBodyPartType.Count; + } + + public void ValidateTextures() + { + var props = LocalAvatarConfig.ComponentMaterialProperties; + + int[] heights = new int[(int)TextureType.Count]; + TextureFormat[] formats = new TextureFormat[(int)TextureType.Count]; + + for (var propIndex = 0; propIndex < props.Length; propIndex++) + { + for (var index = 0; index < props[propIndex].Textures.Length; index++) + { + if (props[propIndex].Textures[index] == null) + { + throw new System.Exception( + props[propIndex].TypeIndex.ToString() + + "Invalid: " + + ((TextureType)index).ToString()); + } + + heights[index] = props[propIndex].Textures[index].height; + formats[index] = props[propIndex].Textures[index].format; + } + } + + for (int textureIndex = 0; textureIndex < (int)TextureType.Count; textureIndex++) + { + for (var propIndex = 1; propIndex < props.Length; propIndex++) + { + if (props[propIndex - 1].Textures[textureIndex].height + != props[propIndex].Textures[textureIndex].height) + { + throw new System.Exception( + props[propIndex].TypeIndex.ToString() + + " Mismatching Resolutions: " + + ((TextureType)textureIndex).ToString() + + " " + + props[propIndex - 1].Textures[textureIndex].height + + " vs " + + props[propIndex].Textures[textureIndex].height + + " Ensure you are using ASTC texture compression on Android or turn off CombineMeshes"); + } + + if (props[propIndex - 1].Textures[textureIndex].format + != props[propIndex].Textures[textureIndex].format) + { + throw new System.Exception( + props[propIndex].TypeIndex.ToString() + + " Mismatching Formats: " + + ((TextureType)textureIndex).ToString() + + " Ensure you are using ASTC texture compression on Android or turn off CombineMeshes"); + } + } + } + } + + // Loading animation on the Dimmer properyt + // Smooth sine lerp every 0.3 seconds between 0.25 and 0.5 + private IEnumerator RunLoadingAnimation() + { + // Set the material to single component while the avatar loads + int renderQueue = TargetRenderer.sharedMaterial.renderQueue; + TargetRenderer.sharedMaterial.shader = Shader.Find(AVATAR_SHADER_LOADER); + TargetRenderer.sharedMaterial.renderQueue = renderQueue; + TargetRenderer.sharedMaterial.SetColor(AVATAR_SHADER_COLOR, Color.white); + + while (TextureCopyManager.GetTextureCount() > 0) + { + float distance = (LOADING_ANIMATION_AMPLITUDE * Mathf.Sin(Time.timeSinceLevelLoad / LOADING_ANIMATION_PERIOD) + + LOADING_ANIMATION_AMPLITUDE) * (LOADING_ANIMATION_CURVE_SCALE) + LOADING_ANIMATION_DIMMER_MIN; + TargetRenderer.sharedMaterial.SetFloat(AVATAR_SHADER_LOADING_DIMMER, distance); + yield return null; + } + // Restore render order and swap the combined material + renderQueue = TargetRenderer.sharedMaterial.renderQueue; + TargetRenderer.sharedMaterial.SetFloat(AVATAR_SHADER_LOADING_DIMMER, 1f); + TargetRenderer.sharedMaterial.shader = Shader.Find(AVATAR_SHADER_COMBINED); + TargetRenderer.sharedMaterial.renderQueue = renderQueue; + + ApplyMaterialPropertyBlock(); + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarMaterialManager.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarMaterialManager.cs.meta new file mode 100644 index 0000000..52e5819 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarMaterialManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a139d83bf6796734db220df8a5bfacbd +timeCreated: 1518209612 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarMeshInstance.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarMeshInstance.cs new file mode 100644 index 0000000..cb65193 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarMeshInstance.cs @@ -0,0 +1,180 @@ +using UnityEngine; +using System; +using Oculus.Avatar; +using System.Collections.Generic; + +public class OvrAvatarMeshInstance : MonoBehaviour +{ + HashSet AssetsToLoad; + + public UInt64 MeshID = 0; + UInt64 MaterialID = 0; + UInt64 FadeTextureID = 0; + public ovrAvatarBodyPartType MeshType; + public ovrAvatarMaterialState MaterialState; + MeshFilter Mesh; + MeshRenderer MeshInstance; + + public void AssetLoadedCallback(OvrAvatarAsset asset) + { + AssetsToLoad.Remove(asset.assetID); + HandleAssetAvailable(asset); + + if (AssetsToLoad.Count <= 0) + { + UpdateMaterial(); + } + } + + public void SetMeshAssets(UInt64 fadeTexture, UInt64 meshID, UInt64 materialID, ovrAvatarBodyPartType type) + { + MaterialID = materialID; + MeshID = meshID; + FadeTextureID = fadeTexture; + MeshType = type; + + AssetsToLoad = new HashSet(); + + RequestAsset(meshID); + RequestAsset(materialID); + RequestAsset(fadeTexture); + } + + private void HandleAssetAvailable(OvrAvatarAsset asset) + { + if (asset.assetID == MeshID) + { + Mesh = gameObject.AddComponent(); + MeshInstance = gameObject.AddComponent(); + MeshInstance.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + Mesh.sharedMesh = ((OvrAvatarAssetMesh)asset).mesh; + + Material mat = new Material(Shader.Find("OvrAvatar/AvatarSurfaceShaderSelfOccluding")); + MeshInstance.material = mat; + } + + if (asset.assetID == MaterialID) + { + MaterialState = ((OvrAvatarAssetMaterial)asset).material; + MaterialState.alphaMaskTextureID = FadeTextureID; + RequestMaterialTextures(); + } + } + + public void ChangeMaterial(UInt64 assetID) + { + MaterialID = assetID; + RequestAsset(MaterialID); + } + + private void RequestAsset(UInt64 assetID) + { + if (assetID == 0) + { + return; + } + + OvrAvatarAsset asset = OvrAvatarSDKManager.Instance.GetAsset(assetID); + if (asset == null) + { + OvrAvatarSDKManager.Instance.BeginLoadingAsset(assetID, ovrAvatarAssetLevelOfDetail.Medium, this.AssetLoadedCallback); + AssetsToLoad.Add(assetID); + } + else + { + HandleAssetAvailable(asset); + } + } + + private void RequestMaterialTextures() + { + RequestAsset(MaterialState.normalMapTextureID); + RequestAsset(MaterialState.parallaxMapTextureID); + RequestAsset(MaterialState.roughnessMapTextureID); + + for (var layerIndex = 0; layerIndex < MaterialState.layerCount; layerIndex++) + { + RequestAsset(MaterialState.layers[layerIndex].sampleTexture); + } + } + + public void SetActive(bool active) + { + gameObject.SetActive(active); + + if (active) + { + UpdateMaterial(); + } + } + + private void UpdateMaterial() + { + if (MeshInstance == null || MaterialID == 0) + { + return; + } + + var mat = MeshInstance.material; + var matState = MaterialState; + + mat.SetColor("_BaseColor", matState.baseColor); + mat.SetInt("_BaseMaskType", (int)matState.baseMaskType); + mat.SetVector("_BaseMaskParameters", matState.baseMaskParameters); + mat.SetVector("_BaseMaskAxis", matState.baseMaskAxis); + + if (matState.alphaMaskTextureID != 0) + { + mat.SetTexture("_AlphaMask", OvrAvatarComponent.GetLoadedTexture(matState.alphaMaskTextureID)); + mat.SetTextureScale("_AlphaMask", new Vector2(matState.alphaMaskScaleOffset.x, matState.alphaMaskScaleOffset.y)); + mat.SetTextureOffset("_AlphaMask", new Vector2(matState.alphaMaskScaleOffset.z, matState.alphaMaskScaleOffset.w)); + } + + if (matState.normalMapTextureID != 0) + { + mat.EnableKeyword("NORMAL_MAP_ON"); + mat.SetTexture("_NormalMap", OvrAvatarComponent.GetLoadedTexture(matState.normalMapTextureID)); + mat.SetTextureScale("_NormalMap", new Vector2(matState.normalMapScaleOffset.x, matState.normalMapScaleOffset.y)); + mat.SetTextureOffset("_NormalMap", new Vector2(matState.normalMapScaleOffset.z, matState.normalMapScaleOffset.w)); + } + if (matState.parallaxMapTextureID != 0) + { + mat.SetTexture("_ParallaxMap", OvrAvatarComponent.GetLoadedTexture(matState.parallaxMapTextureID)); + mat.SetTextureScale("_ParallaxMap", new Vector2(matState.parallaxMapScaleOffset.x, matState.parallaxMapScaleOffset.y)); + mat.SetTextureOffset("_ParallaxMap", new Vector2(matState.parallaxMapScaleOffset.z, matState.parallaxMapScaleOffset.w)); + } + if (matState.roughnessMapTextureID != 0) + { + mat.EnableKeyword("ROUGHNESS_ON"); + mat.SetTexture("_RoughnessMap", OvrAvatarComponent.GetLoadedTexture(matState.roughnessMapTextureID)); + mat.SetTextureScale("_RoughnessMap", new Vector2(matState.roughnessMapScaleOffset.x, matState.roughnessMapScaleOffset.y)); + mat.SetTextureOffset("_RoughnessMap", new Vector2(matState.roughnessMapScaleOffset.z, matState.roughnessMapScaleOffset.w)); + } + mat.EnableKeyword(OvrAvatarComponent.LayerKeywords[matState.layerCount]); + for (ulong layerIndex = 0; layerIndex < matState.layerCount; layerIndex++) + { + ovrAvatarMaterialLayerState layer = matState.layers[layerIndex]; + + mat.SetInt(OvrAvatarComponent.LayerSampleModeParameters[layerIndex], (int)layer.sampleMode); + mat.SetInt(OvrAvatarComponent.LayerBlendModeParameters[layerIndex], (int)layer.blendMode); + mat.SetInt(OvrAvatarComponent.LayerMaskTypeParameters[layerIndex], (int)layer.maskType); + mat.SetColor(OvrAvatarComponent.LayerColorParameters[layerIndex], layer.layerColor); + if (layer.sampleMode != ovrAvatarMaterialLayerSampleMode.Color) + { + string surfaceProperty = OvrAvatarComponent.LayerSurfaceParameters[layerIndex]; + mat.SetTexture(surfaceProperty, OvrAvatarComponent.GetLoadedTexture(layer.sampleTexture)); + mat.SetTextureScale(surfaceProperty, new Vector2(layer.sampleScaleOffset.x, layer.sampleScaleOffset.y)); + mat.SetTextureOffset(surfaceProperty, new Vector2(layer.sampleScaleOffset.z, layer.sampleScaleOffset.w)); + } + + if (layer.sampleMode == ovrAvatarMaterialLayerSampleMode.Parallax) + { + mat.EnableKeyword("PARALLAX_ON"); + } + + mat.SetColor(OvrAvatarComponent.LayerSampleParametersParameters[layerIndex], layer.sampleParameters); + mat.SetColor(OvrAvatarComponent.LayerMaskParametersParameters[layerIndex], layer.maskParameters); + mat.SetColor(OvrAvatarComponent.LayerMaskAxisParameters[layerIndex], layer.maskAxis); + } + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarMeshInstance.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarMeshInstance.cs.meta new file mode 100644 index 0000000..6d0bb21 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarMeshInstance.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b826904b5b22c3d42b56ca245ec8a58b +timeCreated: 1493063917 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarPacket.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarPacket.cs new file mode 100644 index 0000000..c9f368a --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarPacket.cs @@ -0,0 +1,231 @@ +using UnityEngine; +using System.Collections; +using System.IO; +using System.Collections.Generic; +using System; + +public class OvrAvatarPacket +{ + // Used with SDK driven packet flow + public IntPtr ovrNativePacket = IntPtr.Zero; + + // =============================================================== + // All code below used for unity only pose blending option. + // =============================================================== + List frameTimes = new List(); + List frames = new List(); + List encodedAudioPackets = new List(); + + public float Duration { get { return frameTimes[frameTimes.Count - 1]; } } + public OvrAvatarDriver.PoseFrame FinalFrame { get { return frames[frames.Count - 1]; } } + + public OvrAvatarPacket() + { + } + + public OvrAvatarPacket(OvrAvatarDriver.PoseFrame initialPose) + { + frameTimes.Add(0.0f); + frames.Add(initialPose); + } + + OvrAvatarPacket(List frameTimes, List frames, List audioPackets) + { + this.frameTimes = frameTimes; + this.frames = frames; + } + + public void AddFrame(OvrAvatarDriver.PoseFrame frame, float deltaSeconds) + { + frameTimes.Add(Duration + deltaSeconds); + frames.Add(frame); + } + + public OvrAvatarDriver.PoseFrame GetPoseFrame(float seconds) + { + if (frames.Count == 1) + { + return frames[0]; + } + + // This can be replaced with a more efficient binary search + int tailIndex = 1; + while (tailIndex < frameTimes.Count && frameTimes[tailIndex] < seconds) + { + ++tailIndex; + } + OvrAvatarDriver.PoseFrame a = frames[tailIndex - 1]; + OvrAvatarDriver.PoseFrame b = frames[tailIndex]; + float aTime = frameTimes[tailIndex - 1]; + float bTime = frameTimes[tailIndex]; + float t = (seconds - aTime) / (bTime - aTime); + return OvrAvatarDriver.PoseFrame.Interpolate(a, b, t); + } + + public static OvrAvatarPacket Read(Stream stream) + { + BinaryReader reader = new BinaryReader(stream); + + // Todo: bounds check frame count + int frameCount = reader.ReadInt32(); + List frameTimes = new List(frameCount); + for (int i = 0; i < frameCount; ++i) + { + frameTimes.Add(reader.ReadSingle()); + } + List frames = new List(frameCount); + for (int i = 0; i < frameCount; ++i) + { + frames.Add(reader.ReadPoseFrame()); + } + + // Todo: bounds check audio packet count + int audioPacketCount = reader.ReadInt32(); + List audioPackets = new List(audioPacketCount); + for (int i = 0; i < audioPacketCount; ++i) + { + int audioPacketSize = reader.ReadInt32(); + byte[] audioPacket = reader.ReadBytes(audioPacketSize); + audioPackets.Add(audioPacket); + } + + return new OvrAvatarPacket(frameTimes, frames, audioPackets); + } + + public void Write(Stream stream) + { + BinaryWriter writer = new BinaryWriter(stream); + + // Write all of the frames + int frameCount = frameTimes.Count; + writer.Write(frameCount); + for (int i = 0; i < frameCount; ++i) + { + writer.Write(frameTimes[i]); + } + for (int i = 0; i < frameCount; ++i) + { + OvrAvatarDriver.PoseFrame frame = frames[i]; + writer.Write(frame); + } + + // Write all of the encoded audio packets + int audioPacketCount = encodedAudioPackets.Count; + writer.Write(audioPacketCount); + for (int i = 0; i < audioPacketCount; ++i) + { + byte[] packet = encodedAudioPackets[i]; + writer.Write(packet.Length); + writer.Write(packet); + } + } +} + +static class BinaryWriterExtensions +{ + public static void Write(this BinaryWriter writer, OvrAvatarDriver.PoseFrame frame) + { + writer.Write(frame.headPosition); + writer.Write(frame.headRotation); + writer.Write(frame.handLeftPosition); + writer.Write(frame.handLeftRotation); + writer.Write(frame.handRightPosition); + writer.Write(frame.handRightRotation); + writer.Write(frame.voiceAmplitude); + + writer.Write(frame.controllerLeftPose); + writer.Write(frame.controllerRightPose); + } + + public static void Write(this BinaryWriter writer, Vector3 vec3) + { + writer.Write(vec3.x); + writer.Write(vec3.y); + writer.Write(vec3.z); + } + + public static void Write(this BinaryWriter writer, Vector2 vec2) + { + writer.Write(vec2.x); + writer.Write(vec2.y); + } + + public static void Write(this BinaryWriter writer, Quaternion quat) + { + writer.Write(quat.x); + writer.Write(quat.y); + writer.Write(quat.z); + writer.Write(quat.w); + } + public static void Write(this BinaryWriter writer, OvrAvatarDriver.ControllerPose pose) + { + writer.Write((uint)pose.buttons); + writer.Write((uint)pose.touches); + writer.Write(pose.joystickPosition); + writer.Write(pose.indexTrigger); + writer.Write(pose.handTrigger); + writer.Write(pose.isActive); + } +} + +static class BinaryReaderExtensions +{ + public static OvrAvatarDriver.PoseFrame ReadPoseFrame(this BinaryReader reader) + { + return new OvrAvatarDriver.PoseFrame + { + headPosition = reader.ReadVector3(), + headRotation = reader.ReadQuaternion(), + handLeftPosition = reader.ReadVector3(), + handLeftRotation = reader.ReadQuaternion(), + handRightPosition = reader.ReadVector3(), + handRightRotation = reader.ReadQuaternion(), + voiceAmplitude = reader.ReadSingle(), + + controllerLeftPose = reader.ReadControllerPose(), + controllerRightPose = reader.ReadControllerPose(), + }; + } + + public static Vector2 ReadVector2(this BinaryReader reader) + { + return new Vector2 + { + x = reader.ReadSingle(), + y = reader.ReadSingle() + }; + } + + public static Vector3 ReadVector3(this BinaryReader reader) + { + return new Vector3 + { + x = reader.ReadSingle(), + y = reader.ReadSingle(), + z = reader.ReadSingle() + }; + } + + public static Quaternion ReadQuaternion(this BinaryReader reader) + { + return new Quaternion + { + x = reader.ReadSingle(), + y = reader.ReadSingle(), + z = reader.ReadSingle(), + w = reader.ReadSingle(), + }; + } + public static OvrAvatarDriver.ControllerPose ReadControllerPose(this BinaryReader reader) + { + return new OvrAvatarDriver.ControllerPose + { + buttons = (ovrAvatarButton)reader.ReadUInt32(), + touches = (ovrAvatarTouch)reader.ReadUInt32(), + joystickPosition = reader.ReadVector2(), + indexTrigger = reader.ReadSingle(), + handTrigger = reader.ReadSingle(), + isActive = reader.ReadBoolean(), + }; + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarPacket.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarPacket.cs.meta new file mode 100644 index 0000000..d9ad05f --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarPacket.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b7dd866fbed2654e838d772129dc70c +timeCreated: 1464197799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarProjectorRenderComponent.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarProjectorRenderComponent.cs new file mode 100644 index 0000000..492971c --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarProjectorRenderComponent.cs @@ -0,0 +1,65 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Collections.Generic; + +public class OvrAvatarProjectorRenderComponent : OvrAvatarRenderComponent { + + Material material; + + internal void InitializeProjectorRender(ovrAvatarRenderPart_ProjectorRender render, Shader shader, OvrAvatarRenderComponent target) + { + if (shader == null) + { + shader = Shader.Find("OvrAvatar/AvatarSurfaceShader"); + } + + material = CreateAvatarMaterial(gameObject.name + "_projector", shader); + material.EnableKeyword("PROJECTOR_ON"); + + Renderer renderer = target.GetComponent(); + if (renderer != null) + { + List materials = new List(renderer.sharedMaterials); + materials.Add(material); + renderer.sharedMaterials = materials.ToArray(); + } + } + + internal void UpdateProjectorRender(OvrAvatarComponent component, ovrAvatarRenderPart_ProjectorRender render) + { + OvrAvatar.ConvertTransform(render.localTransform, this.transform); + material.SetMatrix("_ProjectorWorldToLocal", this.transform.worldToLocalMatrix); + component.UpdateAvatarMaterial(material, render.materialState); + + } + + void OnDrawGizmos() + { + Vector3 v000 = transform.localToWorldMatrix.MultiplyPoint(new Vector3(-1.0f, -1.0f, -1.0f)); + Vector3 v100 = transform.localToWorldMatrix.MultiplyPoint(new Vector3(+1.0f, -1.0f, -1.0f)); + Vector3 v010 = transform.localToWorldMatrix.MultiplyPoint(new Vector3(-1.0f, +1.0f, -1.0f)); + Vector3 v110 = transform.localToWorldMatrix.MultiplyPoint(new Vector3(+1.0f, +1.0f, -1.0f)); + Vector3 v001 = transform.localToWorldMatrix.MultiplyPoint(new Vector3(-1.0f, -1.0f, +1.0f)); + Vector3 v101 = transform.localToWorldMatrix.MultiplyPoint(new Vector3(+1.0f, -1.0f, +1.0f)); + Vector3 v011 = transform.localToWorldMatrix.MultiplyPoint(new Vector3(-1.0f, +1.0f, +1.0f)); + Vector3 v111 = transform.localToWorldMatrix.MultiplyPoint(new Vector3(+1.0f, +1.0f, +1.0f)); + + Gizmos.color = Color.gray; + + Gizmos.DrawLine(v000, v100); + Gizmos.DrawLine(v000, v010); + Gizmos.DrawLine(v010, v110); + Gizmos.DrawLine(v100, v110); + + Gizmos.DrawLine(v000, v001); + Gizmos.DrawLine(v100, v101); + Gizmos.DrawLine(v010, v011); + Gizmos.DrawLine(v110, v111); + + Gizmos.DrawLine(v001, v101); + Gizmos.DrawLine(v001, v011); + Gizmos.DrawLine(v011, v111); + Gizmos.DrawLine(v101, v111); + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarProjectorRenderComponent.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarProjectorRenderComponent.cs.meta new file mode 100644 index 0000000..ee3e911 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarProjectorRenderComponent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f909beaa7f33f914b90f9addaedcae18 +timeCreated: 1479156352 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarRemoteDriver.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarRemoteDriver.cs new file mode 100644 index 0000000..13a0472 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarRemoteDriver.cs @@ -0,0 +1,121 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Collections.Generic; +using Oculus.Avatar; + +public class OvrAvatarRemoteDriver : OvrAvatarDriver +{ + Queue packetQueue = new Queue(); + + IntPtr CurrentSDKPacket = IntPtr.Zero; + float CurrentPacketTime = 0f; + + const int MinPacketQueue = 1; + const int MaxPacketQueue = 4; + + int CurrentSequence = -1; + + // Used for legacy Unity only packet blending + bool isStreaming = false; + OvrAvatarPacket currentPacket = null; + + public void QueuePacket(int sequence, OvrAvatarPacket packet) + { + if (sequence > CurrentSequence) + { + CurrentSequence = sequence; + packetQueue.Enqueue(packet); + } + } + + public override void UpdateTransforms(IntPtr sdkAvatar) + { + switch(Mode) + { + case PacketMode.SDK: + UpdateFromSDKPacket(sdkAvatar); + break; + case PacketMode.Unity: + UpdateFromUnityPacket(sdkAvatar); + break; + default: + break; + } + } + + private void UpdateFromSDKPacket(IntPtr sdkAvatar) + { + + if (CurrentSDKPacket == IntPtr.Zero && packetQueue.Count >= MinPacketQueue) + { + CurrentSDKPacket = packetQueue.Dequeue().ovrNativePacket; + } + + if (CurrentSDKPacket != IntPtr.Zero) + { + float PacketDuration = CAPI.ovrAvatarPacket_GetDurationSeconds(CurrentSDKPacket); + CAPI.ovrAvatar_UpdatePoseFromPacket(sdkAvatar, CurrentSDKPacket, Mathf.Min(PacketDuration, CurrentPacketTime)); + CurrentPacketTime += Time.deltaTime; + + if (CurrentPacketTime > PacketDuration) + { + CAPI.ovrAvatarPacket_Free(CurrentSDKPacket); + CurrentSDKPacket = IntPtr.Zero; + CurrentPacketTime = CurrentPacketTime - PacketDuration; + + //Throw away packets deemed too old. + while (packetQueue.Count > MaxPacketQueue) + { + packetQueue.Dequeue(); + } + } + } + } + + private void UpdateFromUnityPacket(IntPtr sdkAvatar) + { + // If we're not currently streaming, check to see if we've buffered enough + if (!isStreaming && packetQueue.Count > MinPacketQueue) + { + currentPacket = packetQueue.Dequeue(); + isStreaming = true; + } + + // If we are streaming, update our pose + if (isStreaming) + { + CurrentPacketTime += Time.deltaTime; + + // If we've elapsed past our current packet, advance + while (CurrentPacketTime > currentPacket.Duration) + { + + // If we're out of packets, stop streaming and + // lock to the final frame + if (packetQueue.Count == 0) + { + CurrentPose = currentPacket.FinalFrame; + CurrentPacketTime = 0.0f; + currentPacket = null; + isStreaming = false; + return; + } + + while (packetQueue.Count > MaxPacketQueue) + { + packetQueue.Dequeue(); + } + + // Otherwise, dequeue the next packet + CurrentPacketTime -= currentPacket.Duration; + currentPacket = packetQueue.Dequeue(); + } + + // Compute the pose based on our current time offset in the packet + CurrentPose = currentPacket.GetPoseFrame(CurrentPacketTime); + + UpdateTransformsFromPose(sdkAvatar); + } + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarRemoteDriver.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarRemoteDriver.cs.meta new file mode 100644 index 0000000..c38a754 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarRemoteDriver.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c198a42a3843ca04fa633b60f428ff51 +timeCreated: 1464302604 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarRenderComponent.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarRenderComponent.cs new file mode 100644 index 0000000..4b94d7f --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarRenderComponent.cs @@ -0,0 +1,109 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; +using Oculus.Avatar; + +public class OvrAvatarRenderComponent : MonoBehaviour { + + private bool firstSkinnedUpdate = true; + public SkinnedMeshRenderer mesh; + public Transform[] bones; + + protected void UpdateActive(OvrAvatar avatar, ovrAvatarVisibilityFlags mask) + { + bool active = avatar.ShowFirstPerson && (mask & ovrAvatarVisibilityFlags.FirstPerson) != 0; + active |= avatar.ShowThirdPerson && (mask & ovrAvatarVisibilityFlags.ThirdPerson) != 0; + this.gameObject.SetActive(active); + } + + protected SkinnedMeshRenderer CreateSkinnedMesh(ulong assetID, ovrAvatarVisibilityFlags visibilityMask, int thirdPersonLayer, int firstPersonLayer, int sortingOrder) + { + OvrAvatarAssetMesh meshAsset = (OvrAvatarAssetMesh)OvrAvatarSDKManager.Instance.GetAsset(assetID); + if (meshAsset == null) + { + throw new Exception("Couldn't find mesh for asset " + assetID); + } + if ((visibilityMask & ovrAvatarVisibilityFlags.ThirdPerson) != 0) + { + this.gameObject.layer = thirdPersonLayer; + } + else + { + this.gameObject.layer = firstPersonLayer; + } + SkinnedMeshRenderer renderer = meshAsset.CreateSkinnedMeshRendererOnObject(gameObject); + renderer.quality = SkinQuality.Bone4; + renderer.sortingOrder = sortingOrder; + renderer.updateWhenOffscreen = true; + if ((visibilityMask & ovrAvatarVisibilityFlags.SelfOccluding) == 0) + { + renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + } + return renderer; + } + + protected void UpdateSkinnedMesh(OvrAvatar avatar, Transform[] bones, ovrAvatarTransform localTransform, ovrAvatarVisibilityFlags visibilityMask, IntPtr renderPart) + { + UpdateActive(avatar, visibilityMask); + OvrAvatar.ConvertTransform(localTransform, this.transform); + ovrAvatarRenderPartType type = CAPI.ovrAvatarRenderPart_GetType(renderPart); + UInt64 dirtyJoints; + switch (type) + { + case ovrAvatarRenderPartType.SkinnedMeshRender: + dirtyJoints = CAPI.ovrAvatarSkinnedMeshRender_GetDirtyJoints(renderPart); + break; + case ovrAvatarRenderPartType.SkinnedMeshRenderPBS: + dirtyJoints = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetDirtyJoints(renderPart); + break; + case ovrAvatarRenderPartType.SkinnedMeshRenderPBS_V2: + dirtyJoints = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetDirtyJoints(renderPart); + break; + default: + throw new Exception("Unhandled render part type: " + type); + } + for (UInt32 i = 0; i < 64; i++) + { + UInt64 dirtyMask = (ulong)1 << (int)i; + // We need to make sure that we fully update the initial position of + // Skinned mesh renderers, then, thereafter, we can only update dirty joints + if ((firstSkinnedUpdate && i < bones.Length) || + (dirtyMask & dirtyJoints) != 0) + { + //This joint is dirty and needs to be updated + Transform targetBone = bones[i]; + ovrAvatarTransform transform; + switch (type) + { + case ovrAvatarRenderPartType.SkinnedMeshRender: + transform = CAPI.ovrAvatarSkinnedMeshRender_GetJointTransform(renderPart, i); + break; + case ovrAvatarRenderPartType.SkinnedMeshRenderPBS: + transform = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetJointTransform(renderPart, i); + break; + case ovrAvatarRenderPartType.SkinnedMeshRenderPBS_V2: + transform = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetJointTransform(renderPart, i); + break; + default: + throw new Exception("Unhandled render part type: " + type); + } + OvrAvatar.ConvertTransform(transform, targetBone); + } + } + firstSkinnedUpdate = false; + } + + protected Material CreateAvatarMaterial(string name, Shader shader) + { + if (shader == null) + { + throw new Exception("No shader provided for avatar material."); + } + Material mat = new Material(shader); + mat.name = name; + return mat; + } + + +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarRenderComponent.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarRenderComponent.cs.meta new file mode 100644 index 0000000..f1d51b3 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarRenderComponent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6a9e8691abb99884880df5ecada5e4d8 +timeCreated: 1479155394 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKCAPI.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKCAPI.cs new file mode 100644 index 0000000..e15bda4 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKCAPI.cs @@ -0,0 +1,1059 @@ +using UnityEngine; +using System; +using System.Runtime.InteropServices; +using Oculus.Avatar; + +//This needs to be the csharp equivalent of ovrAvatarCapabilities in OVR_Avatar.h +[Flags] +public enum ovrAvatarCapabilities +{ + Body = 1 << 0, + Hands = 1 << 1, + Base = 1 << 2, + BodyTilt = 1 << 4, + All = -1 +}; + +// This needs to be the csharp equivalent of ovrAvatarMessageType in OVR_Avatar.h +public enum ovrAvatarMessageType { + AvatarSpecification, + AssetLoaded, + Count +}; + +// This needs to be the csharp equivalent of ovrAvatarMessage_AvatarSpecification in OVR_Avatar.h +public struct ovrAvatarMessage_AvatarSpecification { + public IntPtr avatarSpec; //ovrAvatarSpecification*, opaque pointer + public UInt64 oculusUserID; +}; + +// This needs to be the csharp equivalent of ovrAvatarMessage_AssetLoaded in OVR_Avatar.h +public struct ovrAvatarMessage_AssetLoaded { + public UInt64 assetID; + public IntPtr asset; //ovrAvatarAsset*, opaque pointer +}; + +// This needs to be the csharp equivalent of ovrAvatarAssetType in OVR_Avatar.h +public enum ovrAvatarAssetType { + Mesh, + Texture, + Pose, + Material, + CombinedMesh, + PBSMaterial, + Count +}; + +// This needs to be the csharp equivalent of ovrAvatarMeshVertex in OVR_Avatar.h +public struct ovrAvatarMeshVertex +{ + public float x; + public float y; + public float z; + public float nx; + public float ny; + public float nz; + public float tx; + public float ty; + public float tz; + public float tw; + public float u; + public float v; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] + public byte[] blendIndices; ///< Indices into the bind pose + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] + public float[] blendWeights; ///< Blend weights for each component in the bind pose +}; + +// This needs to be the csharp equivalent of ovrAvatarMeshVertex in OVR_Avatar.h +public struct ovrAvatarMeshVertexV2 +{ + public float x; + public float y; + public float z; + public float nx; + public float ny; + public float nz; + public float tx; + public float ty; + public float tz; + public float tw; + public float u; + public float v; + public float r; + public float g; + public float b; + public float a; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] + public byte[] blendIndices; ///< Indices into the bind pose + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] + public float[] blendWeights; ///< Blend weights for each component in the bind pose +}; + + +// This needs to be the csharp equivalent of ovrAvatarMeshAssetData in OVR_Avatar.h +public struct ovrAvatarMeshAssetData +{ + public UInt32 vertexCount; + public IntPtr vertexBuffer; //const ovrAvatarMeshVertex* + public UInt32 indexCount; + public IntPtr indexBuffer; //const uint16t* + public ovrAvatarSkinnedMeshPose skinnedBindPose; +}; + +/// Mesh Asset Data V2 +/// +public struct ovrAvatarMeshAssetDataV2 +{ + public UInt32 vertexCount; + public IntPtr vertexBuffer; //const ovrAvatarMeshVertexV2* + public UInt32 indexCount; + public IntPtr indexBuffer; //const uint16t* + public ovrAvatarSkinnedMeshPose skinnedBindPose; +}; + +// This needs to be the csharp equivalent of ovrAvatarTextureFormat in OVR_Avatar.h +public enum ovrAvatarTextureFormat { + RGB24, + DXT1, + DXT5, + ASTC_RGB_6x6, + ASTC_RGB_6x6_MIPMAPS, + Count +}; + +// This needs to be the csharp equivalent of ovrAvatarTextureAssetData in OVR_Avatar.h +public struct ovrAvatarTextureAssetData { + public ovrAvatarTextureFormat format; + public UInt32 sizeX; + public UInt32 sizeY; + public UInt32 mipCount; + public UInt64 textureDataSize; + public IntPtr textureData; // const uint8_t* +}; + +// This needs to be the csharp equivalent of ovrAvatarRenderPartType in OVR_Avatar.h +public enum ovrAvatarRenderPartType +{ + SkinnedMeshRender, + SkinnedMeshRenderPBS, + ProjectorRender, + SkinnedMeshRenderPBS_V2, + Count +}; + +// This needs to be the csharp equivalent of ovrAvatarTransform in OVR_Avatar.h +public struct ovrAvatarTransform +{ + public Vector3 position; + public Quaternion orientation; + public Vector3 scale; +}; + +// This needs to be the csharp equivalent of ovrAvatarButton in OVR_Avatar.h +[Flags] +public enum ovrAvatarButton +{ + One = 0x0001, + Two = 0x0002, + Three = 0x0004, + Joystick = 0x0008, +} + +// This needs to be the csharp equivalent of ovrAvatarTouch in OVR_Avatar.h +[Flags] +public enum ovrAvatarTouch +{ + One = 0x0001, + Two = 0x0002, + Joystick = 0x0004, + ThumbRest = 0x0008, + Index = 0x0010, + Pointing = 0x0040, + ThumbUp = 0x0080, +} + +// This needs to be the csharp equivalent of ovrAvatarHandInputState in OVR_Avatar.h +public struct ovrAvatarHandInputState +{ + public ovrAvatarTransform transform; + public ovrAvatarButton buttonMask; + public ovrAvatarTouch touchMask; + public float joystickX; + public float joystickY; + public float indexTrigger; + public float handTrigger; + [MarshalAs(UnmanagedType.I1)] + public bool isActive; +}; + +// This needs to be the csharp equivalent of ovrAvatarComponent in OVR_Avatar.h +public struct ovrAvatarComponent +{ + public ovrAvatarTransform transform; + public UInt32 renderPartCount; + public IntPtr renderParts; //const ovrAvatarRenderPart* const* + + [MarshalAs(UnmanagedType.LPStr)] + public string name; +}; + +// This needs to be the csharp equivalent of ovrAvatarBodyComponent in OVR_Avatar.h +public struct ovrAvatarBaseComponent +{ + public Vector3 basePosition; + public IntPtr renderComponent; //const ovrAvatarComponent* +}; + +// This needs to be the csharp equivalent of ovrAvatarBodyComponent in OVR_Avatar.h +public struct ovrAvatarBodyComponent { + public ovrAvatarTransform leftEyeTransform; + public ovrAvatarTransform rightEyeTransform; + public ovrAvatarTransform centerEyeTransform; + public IntPtr renderComponent; //const ovrAvatarComponent* +}; + +// This needs to be the csharp equivalent of ovrAvatarControllerComponent in OVR_Avatar.h +public struct ovrAvatarControllerComponent +{ + public ovrAvatarHandInputState inputState; + public IntPtr renderComponent; //const ovrAvatarComponent* +}; + +// This needs to be the csharp equivalent of ovrAvatarHandComponent in OVR_Avatar.h +public struct ovrAvatarHandComponent { + public ovrAvatarHandInputState inputState; + public IntPtr renderComponent; //const ovrAvatarComponent* +}; + +// This needs to be the csharp equivalent of ovrAvatarMaterialLayerBlendMode in OVR_Avatar.h +public enum ovrAvatarMaterialLayerBlendMode{ + Add, + Multiply, + Count +}; + +// This needs to be the csharp equivalent of ovrAvatarMaterialLayerSampleMode in OVR_Avatar.h +public enum ovrAvatarMaterialLayerSampleMode{ + Color, + Texture, + TextureSingleChannel, + Parallax, + Count +}; + +// This needs to be the csharp equivalent of ovrAvatarMaterialLayerMaskType in OVR_Avatar.h +public enum ovrAvatarMaterialMaskType{ + None, + Positional, + ViewReflection, + Fresnel, + Pulse, + Count +}; + +// This needs to be the csharp equivalent of Controller Types from OVR_Avatar.h +public enum ovrAvatarControllerType +{ + Touch, + Malibu, + Go, + + Count, +}; + +public enum ovrAvatarAssetLevelOfDetail +{ + Lowest = 1, + Medium = 3, + Highest = 5, +}; + +public enum ovrAvatarLookAndFeelVersion +{ + Unknown = -1, + One = 0, + Two = 1, +}; + +// This needs to be the csharp equivalent of ovrAvatarMaterialLayerState in OVR_Avatar.h +public struct ovrAvatarMaterialLayerState{ + public ovrAvatarMaterialLayerBlendMode blendMode; + public ovrAvatarMaterialLayerSampleMode sampleMode; + public ovrAvatarMaterialMaskType maskType; + public Vector4 layerColor; + public Vector4 sampleParameters; + public UInt64 sampleTexture; + public Vector4 sampleScaleOffset; + public Vector4 maskParameters; + public Vector4 maskAxis; + + static bool VectorEquals(Vector4 a, Vector4 b) + { + return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w; + } + + public override bool Equals(object obj) + { + if (!(obj is ovrAvatarMaterialLayerState)) + { + return false; + } + ovrAvatarMaterialLayerState other = (ovrAvatarMaterialLayerState)obj; + if (blendMode != other.blendMode) return false; + if (sampleMode != other.sampleMode) return false; + if (maskType != other.maskType) return false; + if (!VectorEquals(layerColor, other.layerColor)) return false; + if (!VectorEquals(sampleParameters, other.sampleParameters)) return false; + if (sampleTexture != other.sampleTexture) return false; + if (!VectorEquals(sampleScaleOffset, other.sampleScaleOffset)) return false; + if (!VectorEquals(maskParameters, other.maskParameters)) return false; + if (!VectorEquals(maskAxis, other.maskAxis)) return false; + return true; + } + public override int GetHashCode() + { + return blendMode.GetHashCode() ^ + sampleMode.GetHashCode() ^ + maskType.GetHashCode() ^ + layerColor.GetHashCode() ^ + sampleParameters.GetHashCode() ^ + sampleTexture.GetHashCode() ^ + sampleScaleOffset.GetHashCode() ^ + maskParameters.GetHashCode() ^ + maskAxis.GetHashCode(); + } +}; + +// This needs to be the csharp equivalent of ovrAvatarMaterialState in OVR_Avatar.h +public struct ovrAvatarMaterialState +{ + public Vector4 baseColor; + public ovrAvatarMaterialMaskType baseMaskType; + public Vector4 baseMaskParameters; + public Vector4 baseMaskAxis; + public ovrAvatarMaterialLayerSampleMode sampleMode; + public UInt64 alphaMaskTextureID; + public Vector4 alphaMaskScaleOffset; + public UInt64 normalMapTextureID; + public Vector4 normalMapScaleOffset; + public UInt64 parallaxMapTextureID; + public Vector4 parallaxMapScaleOffset; + public UInt64 roughnessMapTextureID; + public Vector4 roughnessMapScaleOffset; + public UInt32 layerCount; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] + public ovrAvatarMaterialLayerState[] layers; + + static bool VectorEquals(Vector4 a, Vector4 b) + { + return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w; + } + + public override bool Equals(object obj) + { + if (!(obj is ovrAvatarMaterialState)) + { + return false; + } + ovrAvatarMaterialState other = (ovrAvatarMaterialState)obj; + if (!VectorEquals(baseColor, other.baseColor)) return false; + if (baseMaskType != other.baseMaskType) return false; + if (!VectorEquals(baseMaskParameters, other.baseMaskParameters)) return false; + if (!VectorEquals(baseMaskAxis, other.baseMaskAxis)) return false; + if (sampleMode != other.sampleMode) return false; + if (alphaMaskTextureID != other.alphaMaskTextureID) return false; + if (!VectorEquals(alphaMaskScaleOffset, other.alphaMaskScaleOffset)) return false; + if (normalMapTextureID != other.normalMapTextureID) return false; + if (!VectorEquals(normalMapScaleOffset, other.normalMapScaleOffset)) return false; + if (parallaxMapTextureID != other.parallaxMapTextureID) return false; + if (!VectorEquals(parallaxMapScaleOffset, other.parallaxMapScaleOffset)) return false; + if (roughnessMapTextureID != other.roughnessMapTextureID) return false; + if (!VectorEquals(roughnessMapScaleOffset, other.roughnessMapScaleOffset)) return false; + if (layerCount != other.layerCount) return false; + for (int i = 0; i < layerCount; ++i) + { + if (!layers[i].Equals(other.layers[i])) return false; + } + return true; + } + + public override int GetHashCode() + { + int hash = 0; + hash ^= baseColor.GetHashCode(); + hash ^= baseMaskType.GetHashCode(); + hash ^= baseMaskParameters.GetHashCode(); + hash ^= baseMaskAxis.GetHashCode(); + hash ^= sampleMode.GetHashCode(); + hash ^= alphaMaskTextureID.GetHashCode(); + hash ^= alphaMaskScaleOffset.GetHashCode(); + hash ^= normalMapTextureID.GetHashCode(); + hash ^= normalMapScaleOffset.GetHashCode(); + hash ^= parallaxMapTextureID.GetHashCode(); + hash ^= parallaxMapScaleOffset.GetHashCode(); + hash ^= roughnessMapTextureID.GetHashCode(); + hash ^= roughnessMapScaleOffset.GetHashCode(); + hash ^= layerCount.GetHashCode(); + for (int i = 0; i < layerCount; ++i) + { + hash ^= layers[i].GetHashCode(); + } + return hash; + } +}; + +public struct ovrAvatarPBSMaterialState +{ + public Vector4 baseColor; ///< Underlying base color for the material + public UInt64 albedoTextureID; ///< Texture id for the albedo map + public Vector4 albedoMultiplier; ///< Multiplier for albedo texture sample + public UInt64 metallicnessTextureID; ///< Texture id for the metal map + public float glossinessScale; ///< Glossiness factor + public UInt64 normalTextureID; ///< Texture id for the normal map + public UInt64 heightTextureID; ///< Texture id for the height map + public UInt64 occlusionTextureID; ///< Texture id for the occlusion map + public UInt64 emissionTextureID; ///< Texture id for the emission map + public Vector4 emissionMultiplier; ///< Multiplier for emission texture sample + public UInt64 detailMaskTextureID; ///< Texture id for the detail mask map + public UInt64 detailAlbedoTextureID; ///< Texture id for the detail albedo map + public UInt64 detailNormalTextureID; ///< Texture id for the detail normal map + static bool VectorEquals(Vector4 a, Vector4 b) + { + return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w; + } + + public override bool Equals(object obj) + { + if (!(obj is ovrAvatarPBSMaterialState)) + { + return false; + } + ovrAvatarPBSMaterialState other = (ovrAvatarPBSMaterialState)obj; + if (!VectorEquals(baseColor, other.baseColor)) return false; + if (albedoTextureID != other.albedoTextureID) return false; + if (!VectorEquals(albedoMultiplier, other.albedoMultiplier)) return false; + if (metallicnessTextureID != other.metallicnessTextureID) return false; + if (glossinessScale != other.glossinessScale) return false; + if (normalTextureID != other.normalTextureID) return false; + if (heightTextureID != other.heightTextureID) return false; + if (occlusionTextureID != other.occlusionTextureID) return false; + if (emissionTextureID != other.emissionTextureID) return false; + if (!VectorEquals(emissionMultiplier, other.emissionMultiplier)) return false; + if (detailMaskTextureID != other.detailMaskTextureID) return false; + if (detailAlbedoTextureID != other.detailAlbedoTextureID) return false; + if (detailNormalTextureID != other.detailNormalTextureID) return false; + return true; + } + public override int GetHashCode() + { + return baseColor.GetHashCode() ^ + albedoTextureID.GetHashCode() ^ + albedoMultiplier.GetHashCode() ^ + metallicnessTextureID.GetHashCode() ^ + glossinessScale.GetHashCode() ^ + normalTextureID.GetHashCode() ^ + heightTextureID.GetHashCode() ^ + occlusionTextureID.GetHashCode() ^ + emissionTextureID.GetHashCode() ^ + emissionMultiplier.GetHashCode() ^ + detailMaskTextureID.GetHashCode() ^ + detailAlbedoTextureID.GetHashCode() ^ + detailNormalTextureID.GetHashCode(); + } +}; + +public class OvrAvatarAssetMaterial : OvrAvatarAsset +{ + public OvrAvatarAssetMaterial(UInt64 id, IntPtr mat) + { + assetID = id; + material = CAPI.ovrAvatarAsset_GetMaterialState(mat); + } + + public ovrAvatarMaterialState material; +} +// This needs to be the csharp equivalent of ovrAvatarSkinnedMeshPose in OVR_Avatar.h +public struct ovrAvatarSkinnedMeshPose +{ + public UInt32 jointCount; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] + public ovrAvatarTransform[] jointTransform; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] + public int[] jointParents; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] + public IntPtr[] jointNames; //const char * jointNames[64]; +}; + + +[Flags] +public enum ovrAvatarVisibilityFlags +{ + FirstPerson = 1 << 0, + ThirdPerson = 1 << 1, + SelfOccluding = 1 << 2, +}; + +// This needs to be the csharp equivalent of ovrAvatarRenderPart_SkinnedMeshRender in OVR_Avatar.h +public struct ovrAvatarRenderPart_SkinnedMeshRender +{ + public ovrAvatarTransform localTransform; + public ovrAvatarVisibilityFlags visibilityMask; + public UInt64 meshAssetID; + public ovrAvatarMaterialState materialState; + public ovrAvatarSkinnedMeshPose skinnedPose; +}; + +// This needs to be the csharp equivalent of ovrAvatarRenderPart_SkinnedMeshRenderPBS in OVR_Avatar.h +public struct ovrAvatarRenderPart_SkinnedMeshRenderPBS +{ + public ovrAvatarTransform localTransform; + public ovrAvatarVisibilityFlags visibilityMask; + public UInt64 meshAssetID; + public UInt64 albedoTextureAssetID; + public UInt64 surfaceTextureAssetID; + public ovrAvatarSkinnedMeshPose skinnedPose; +}; + +// This needs to be the csharp equivalent of ovrAvatarRenderPart_ProjectorRender in OVR_Avatar.h +public struct ovrAvatarRenderPart_ProjectorRender +{ + public ovrAvatarTransform localTransform; + public UInt32 componentIndex; + public UInt32 renderPartIndex; + public ovrAvatarMaterialState materialState; +}; + +// This needs to be the csharp equivalent of ovrAvatarRenderPart_SkinnedMeshRenderPBS_V2 in OVR_Avatar.h +public struct ovrAvatarRenderPart_SkinnedMeshRenderPBS_V2 +{ + public ovrAvatarTransform localTransform; + public ovrAvatarVisibilityFlags visibilityMask; + public UInt64 meshAssetID; + public ovrAvatarPBSMaterialState materialState; + public ovrAvatarSkinnedMeshPose skinnedPose; +}; + +// This needs to be the csharp equivalent of ovrAvatarHandGesture in OVR_Avatar.h +public enum ovrAvatarHandGesture { + Default, + GripSphere, + GripCube, + Count +}; + +public enum ovrAvatarBodyPartType +{ + Body, + Clothing, + Eyewear, + Hair, + Beard, + Count +}; + +namespace Oculus.Avatar +{ + public class CAPI + { +#if UNITY_ANDROID && !UNITY_EDITOR + private const string LibFile = "ovravatarloader"; + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_InitializeAndroidUnity(string appID); +#else + private const string LibFile = "libovravatar"; + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_Initialize(string appID); +#endif + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_Shutdown(); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ovrAvatarMessage_Pop(); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarMessageType ovrAvatarMessage_GetType(IntPtr msg); + + public static ovrAvatarMessage_AvatarSpecification ovrAvatarMessage_GetAvatarSpecification( + IntPtr msg) + { + IntPtr ptr = ovrAvatarMessage_GetAvatarSpecification_Native(msg); + return (ovrAvatarMessage_AvatarSpecification)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarMessage_AvatarSpecification)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarMessage_GetAvatarSpecification")] + private static extern IntPtr ovrAvatarMessage_GetAvatarSpecification_Native(IntPtr msg); + + public static ovrAvatarMessage_AssetLoaded ovrAvatarMessage_GetAssetLoaded( + IntPtr msg) + { + IntPtr ptr = ovrAvatarMessage_GetAssetLoaded_Native(msg); + return (ovrAvatarMessage_AssetLoaded)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarMessage_AssetLoaded)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarMessage_GetAssetLoaded")] + private static extern IntPtr ovrAvatarMessage_GetAssetLoaded_Native(IntPtr msg); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarMessage_Free(IntPtr msg); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ovrAvatarSpecificationRequest_Create(UInt64 userID); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarSpecificationRequest_Destroy(IntPtr specificationRequest); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarSpecificationRequest_SetCombineMeshes(IntPtr specificationRequest, bool useCombinedMesh); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarSpecificationRequest_SetLookAndFeelVersion(IntPtr specificationRequest, ovrAvatarLookAndFeelVersion version); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarSpecificationRequest_SetLevelOfDetail(IntPtr specificationRequest, ovrAvatarAssetLevelOfDetail lod); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_RequestAvatarSpecification(UInt64 userID); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_RequestAvatarSpecificationFromSpecRequest(IntPtr specificationRequest); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ovrAvatar_Create(IntPtr avatarSpecification, + ovrAvatarCapabilities capabilities); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_Destroy(IntPtr avatar); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarPose_UpdateBody( + IntPtr avatar, ovrAvatarTransform headPose); + + public static void ovrAvatarPose_UpdateVoiceVisualization( + IntPtr avatar, float[] pcmData) + { + ovrAvatarPose_UpdateVoiceVisualization_Native( + avatar, (UInt32)pcmData.Length, pcmData); + } + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarPose_UpdateVoiceVisualization")] + private static extern void ovrAvatarPose_UpdateVoiceVisualization_Native( + IntPtr avatar, UInt32 pcmDataSize, [In] float[] pcmData); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarPose_UpdateHands( + IntPtr avatar, + ovrAvatarHandInputState inputStateLeft, + ovrAvatarHandInputState inputStateRight); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarPose_Update3DofHands( + IntPtr avatar, + IntPtr inputStateLeft, + IntPtr inputStateRight, + ovrAvatarControllerType type); + + public static void ovrAvatarPose_UpdateSDK3DofHands( + IntPtr avatar, + ovrAvatarHandInputState inputStateLeft, + ovrAvatarHandInputState inputStateRight, + ovrAvatarControllerType type) + { + System.IntPtr leftPtr = Marshal.AllocHGlobal(Marshal.SizeOf(inputStateLeft)); + System.IntPtr rightPtr = Marshal.AllocHGlobal(Marshal.SizeOf(inputStateRight)); + Marshal.StructureToPtr(inputStateLeft, leftPtr, false); + Marshal.StructureToPtr(inputStateRight, rightPtr, false); + + ovrAvatar_SetLeftControllerVisibility(avatar, true); + ovrAvatar_SetRightControllerVisibility(avatar, true); + ovrAvatar_SetLeftHandVisibility(avatar, true); + ovrAvatar_SetRightHandVisibility(avatar, true); + ovrAvatarPose_Update3DofHands(avatar, leftPtr, rightPtr, type); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarPose_Finalize(IntPtr avatar, float elapsedSeconds); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_SetLeftControllerVisibility(IntPtr avatar, bool show); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_SetRightControllerVisibility(IntPtr avatar, bool show); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_SetLeftHandVisibility(IntPtr avatar, bool show); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_SetRightHandVisibility(IntPtr avatar, bool show); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt32 ovrAvatarComponent_Count(IntPtr avatar); + + public static ovrAvatarComponent ovrAvatarComponent_Get( + IntPtr avatar, UInt32 index) + { + IntPtr ptr = ovrAvatarComponent_Get_Native(avatar, index); + return (ovrAvatarComponent)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarComponent)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarComponent_Get")] + public static extern IntPtr ovrAvatarComponent_Get_Native(IntPtr avatar, UInt32 index); + + public static ovrAvatarBaseComponent? ovrAvatarPose_GetBaseComponent( + IntPtr avatar) + { + IntPtr ptr = ovrAvatarPose_GetBaseComponent_Native(avatar); + return ptr == IntPtr.Zero + ? (ovrAvatarBaseComponent?)null + : (ovrAvatarBaseComponent)Marshal.PtrToStructure(ptr, typeof(ovrAvatarBaseComponent)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarPose_GetBaseComponent")] + private static extern IntPtr ovrAvatarPose_GetBaseComponent_Native(IntPtr avatar); + + public static ovrAvatarBodyComponent? ovrAvatarPose_GetBodyComponent( + IntPtr avatar) + { + IntPtr ptr = ovrAvatarPose_GetBodyComponent_Native(avatar); + return ptr == IntPtr.Zero + ? (ovrAvatarBodyComponent?)null + : (ovrAvatarBodyComponent)Marshal.PtrToStructure(ptr, typeof(ovrAvatarBodyComponent)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarPose_GetBodyComponent")] + private static extern IntPtr ovrAvatarPose_GetBodyComponent_Native(IntPtr avatar); + + public static ovrAvatarControllerComponent? ovrAvatarPose_GetLeftControllerComponent( + IntPtr avatar) + { + IntPtr ptr = ovrAvatarPose_GetLeftControllerComponent_Native(avatar); + return ptr == IntPtr.Zero + ? (ovrAvatarControllerComponent?)null + : (ovrAvatarControllerComponent)Marshal.PtrToStructure(ptr, typeof(ovrAvatarControllerComponent)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarPose_GetLeftControllerComponent")] + private static extern IntPtr ovrAvatarPose_GetLeftControllerComponent_Native(IntPtr avatar); + + public static ovrAvatarControllerComponent? ovrAvatarPose_GetRightControllerComponent( + IntPtr avatar) + { + IntPtr ptr = ovrAvatarPose_GetRightControllerComponent_Native(avatar); + return ptr == IntPtr.Zero + ? (ovrAvatarControllerComponent?)null + : (ovrAvatarControllerComponent)Marshal.PtrToStructure(ptr, typeof(ovrAvatarControllerComponent)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarPose_GetRightControllerComponent")] + private static extern IntPtr ovrAvatarPose_GetRightControllerComponent_Native(IntPtr avatar); + + public static ovrAvatarHandComponent? ovrAvatarPose_GetLeftHandComponent( + IntPtr avatar) + { + IntPtr ptr = ovrAvatarPose_GetLeftHandComponent_Native(avatar); + return ptr == IntPtr.Zero + ? (ovrAvatarHandComponent?)null + : (ovrAvatarHandComponent)Marshal.PtrToStructure(ptr, typeof(ovrAvatarHandComponent)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarPose_GetLeftHandComponent")] + private static extern IntPtr ovrAvatarPose_GetLeftHandComponent_Native(IntPtr avatar); + + public static ovrAvatarHandComponent? ovrAvatarPose_GetRightHandComponent( + IntPtr avatar) + { + IntPtr ptr = ovrAvatarPose_GetRightHandComponent_Native(avatar); + return ptr == IntPtr.Zero + ? (ovrAvatarHandComponent?)null + : (ovrAvatarHandComponent)Marshal.PtrToStructure(ptr, typeof(ovrAvatarHandComponent)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarPose_GetRightHandComponent")] + private static extern IntPtr ovrAvatarPose_GetRightHandComponent_Native(IntPtr avatar); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarAsset_BeginLoading(UInt64 assetID); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern bool ovrAvatarAsset_BeginLoadingLOD(UInt64 assetId, ovrAvatarAssetLevelOfDetail lod); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarAssetType ovrAvatarAsset_GetType(IntPtr assetHandle); + + public static ovrAvatarMeshAssetData ovrAvatarAsset_GetMeshData( + IntPtr assetPtr) + { + IntPtr ptr = ovrAvatarAsset_GetMeshData_Native(assetPtr); + return (ovrAvatarMeshAssetData)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarMeshAssetData)); + } + + public static ovrAvatarMeshAssetDataV2 ovrAvatarAsset_GetCombinedMeshData( + IntPtr assetPtr) + { + IntPtr ptr = ovrAvatarAsset_GetCombinedMeshData_Native(assetPtr); + return (ovrAvatarMeshAssetDataV2)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarMeshAssetDataV2)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatarAsset_GetCombinedMeshData")] + private static extern IntPtr ovrAvatarAsset_GetCombinedMeshData_Native(IntPtr assetPtr); + + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatarAsset_GetMeshData")] + private static extern IntPtr ovrAvatarAsset_GetMeshData_Native(IntPtr assetPtr); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ovrAvatarAsset_GetAvatar(IntPtr assetHandle); + + public static UInt64[] ovrAvatarAsset_GetCombinedMeshIDs(IntPtr assetHandle) + { + UInt32 count = 0; + System.IntPtr countPtr = Marshal.AllocHGlobal(Marshal.SizeOf(count)); + IntPtr idBuffer = ovrAvatarAsset_GetCombinedMeshIDs_Native(assetHandle, countPtr); + count = (UInt32)Marshal.PtrToStructure(countPtr, typeof(UInt32)); + UInt64[] meshIDs = new UInt64[count]; + + for (int i = 0; i < count; i++) + { + meshIDs[i] = (UInt64)Marshal.ReadInt64(idBuffer, i * Marshal.SizeOf(typeof(UInt64))); + } + + return meshIDs; + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatarAsset_GetCombinedMeshIDs")] + public static extern IntPtr ovrAvatarAsset_GetCombinedMeshIDs_Native(IntPtr assetHandle, IntPtr count); + + public static void ovrAvatar_GetCombinedMeshAlphaData(IntPtr avatar, ref UInt64 textureID, ref Vector4 offset) + { + System.IntPtr textureIDPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(UInt64))); + System.IntPtr offsetPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Vector4))); + + ovrAvatar_GetCombinedMeshAlphaData_Native(avatar, textureIDPtr, offsetPtr); + + textureID = (UInt64)Marshal.PtrToStructure(textureIDPtr, typeof(UInt64)); + offset = (Vector4)Marshal.PtrToStructure(offsetPtr, typeof(Vector4)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatar_GetCombinedMeshAlphaData")] + public static extern IntPtr ovrAvatar_GetCombinedMeshAlphaData_Native(IntPtr avatar, IntPtr textureIDPtr, IntPtr offsetPtr); + + public static ovrAvatarTextureAssetData ovrAvatarAsset_GetTextureData( + IntPtr assetPtr) + { + IntPtr ptr = ovrAvatarAsset_GetTextureData_Native(assetPtr); + return (ovrAvatarTextureAssetData)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarTextureAssetData)); + } + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarAsset_GetTextureData")] + private static extern IntPtr ovrAvatarAsset_GetTextureData_Native(IntPtr assetPtr); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = + "ovrAvatarAsset_GetMaterialData")] + private static extern IntPtr ovrAvatarAsset_GetMaterialData_Native(IntPtr assetPtr); + public static ovrAvatarMaterialState ovrAvatarAsset_GetMaterialState(IntPtr assetPtr) + { + IntPtr ptr = ovrAvatarAsset_GetMaterialData_Native(assetPtr); + return (ovrAvatarMaterialState)Marshal.PtrToStructure(ptr, typeof(ovrAvatarMaterialState)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarRenderPartType ovrAvatarRenderPart_GetType(IntPtr renderPart); + + public static ovrAvatarRenderPart_SkinnedMeshRender ovrAvatarRenderPart_GetSkinnedMeshRender(IntPtr renderPart) + { + IntPtr ptr = ovrAvatarRenderPart_GetSkinnedMeshRender_Native(renderPart); + return (ovrAvatarRenderPart_SkinnedMeshRender)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarRenderPart_SkinnedMeshRender)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatarRenderPart_GetSkinnedMeshRender")] + private static extern IntPtr ovrAvatarRenderPart_GetSkinnedMeshRender_Native(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarTransform ovrAvatarSkinnedMeshRender_GetTransform(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarTransform ovrAvatarSkinnedMeshRenderPBS_GetTransform(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarTransform ovrAvatarSkinnedMeshRenderPBSV2_GetTransform(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarVisibilityFlags ovrAvatarSkinnedMeshRender_GetVisibilityMask(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern bool ovrAvatarSkinnedMeshRender_MaterialStateChanged(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern bool ovrAvatarSkinnedMeshRenderPBSV2_MaterialStateChanged(IntPtr renderPart); + + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarVisibilityFlags ovrAvatarSkinnedMeshRenderPBS_GetVisibilityMask(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarVisibilityFlags ovrAvatarSkinnedMeshRenderPBSV2_GetVisibilityMask(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarMaterialState ovrAvatarSkinnedMeshRender_GetMaterialState(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarPBSMaterialState ovrAvatarSkinnedMeshRenderPBSV2_GetPBSMaterialState(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt64 ovrAvatarSkinnedMeshRender_GetDirtyJoints(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt64 ovrAvatarSkinnedMeshRenderPBS_GetDirtyJoints(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt64 ovrAvatarSkinnedMeshRenderPBSV2_GetDirtyJoints(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarTransform ovrAvatarSkinnedMeshRender_GetJointTransform(IntPtr renderPart, UInt32 jointIndex); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarTransform ovrAvatarSkinnedMeshRenderPBS_GetJointTransform(IntPtr renderPart, UInt32 jointIndex); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern ovrAvatarTransform ovrAvatarSkinnedMeshRenderPBSV2_GetJointTransform(IntPtr renderPart, UInt32 jointIndex); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt64 ovrAvatarSkinnedMeshRenderPBS_GetAlbedoTextureAssetID(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt64 ovrAvatarSkinnedMeshRenderPBS_GetSurfaceTextureAssetID(IntPtr renderPart); + + public static ovrAvatarRenderPart_SkinnedMeshRenderPBS ovrAvatarRenderPart_GetSkinnedMeshRenderPBS(IntPtr renderPart) + { + IntPtr ptr = ovrAvatarRenderPart_GetSkinnedMeshRenderPBS_Native(renderPart); + return (ovrAvatarRenderPart_SkinnedMeshRenderPBS)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarRenderPart_SkinnedMeshRenderPBS)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatarRenderPart_GetSkinnedMeshRenderPBS")] + private static extern IntPtr ovrAvatarRenderPart_GetSkinnedMeshRenderPBS_Native(IntPtr renderPart); + + public static ovrAvatarRenderPart_SkinnedMeshRenderPBS_V2 ovrAvatarRenderPart_GetSkinnedMeshRenderPBSV2(IntPtr renderPart) + { + IntPtr ptr = ovrAvatarRenderPart_GetSkinnedMeshRenderPBSV2_Native(renderPart); + return (ovrAvatarRenderPart_SkinnedMeshRenderPBS_V2)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarRenderPart_SkinnedMeshRenderPBS_V2)); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatarRenderPart_GetSkinnedMeshRenderPBSV2")] + private static extern IntPtr ovrAvatarRenderPart_GetSkinnedMeshRenderPBSV2_Native(IntPtr renderPart); + + public static ovrAvatarRenderPart_ProjectorRender ovrAvatarRenderPart_GetProjectorRender(IntPtr renderPart) + { + IntPtr ptr = ovrAvatarRenderPart_GetProjectorRender_Native(renderPart); + return (ovrAvatarRenderPart_ProjectorRender)Marshal.PtrToStructure( + ptr, typeof(ovrAvatarRenderPart_ProjectorRender)); + } + + public static ovrAvatarPBSMaterialState[] ovrAvatar_GetBodyPBSMaterialStates(IntPtr renderPart) + { + System.IntPtr countPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(UInt32))); + IntPtr ptrState = ovrAvatar_GetBodyPBSMaterialStates_Native(renderPart, countPtr); + UInt32 count = (UInt32)Marshal.ReadInt32(countPtr); + + ovrAvatarPBSMaterialState[] states = new ovrAvatarPBSMaterialState[count]; + + for (int i = 0; i < states.Length; i++) + { + IntPtr nextItem = new IntPtr(ptrState.ToInt64() + i * Marshal.SizeOf(typeof(ovrAvatarPBSMaterialState))); + states[i] = (ovrAvatarPBSMaterialState)Marshal.PtrToStructure(nextItem, typeof(ovrAvatarPBSMaterialState)); + } + + return states; + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatar_GetBodyPBSMaterialStates")] + private static extern IntPtr ovrAvatar_GetBodyPBSMaterialStates_Native(IntPtr avatar, IntPtr count); + + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrAvatarRenderPart_GetProjectorRender")] + private static extern IntPtr ovrAvatarRenderPart_GetProjectorRender_Native(IntPtr renderPart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt32 ovrAvatar_GetReferencedAssetCount(IntPtr avatar); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt64 ovrAvatar_GetReferencedAsset(IntPtr avatar, UInt32 index); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_SetLeftHandGesture(IntPtr avatar, ovrAvatarHandGesture gesture); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_SetRightHandGesture(IntPtr avatar, ovrAvatarHandGesture gesture); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_SetLeftHandCustomGesture(IntPtr avatar, UInt32 jointCount, [In] ovrAvatarTransform[] customJointTransforms); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_SetRightHandCustomGesture(IntPtr avatar, UInt32 jointCount, [In] ovrAvatarTransform[] customJointTransforms); + + //Native calls for efficient packet updates + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatar_UpdatePoseFromPacket(IntPtr avatar, IntPtr packet, float secondsFromStart); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarPacket_BeginRecording(IntPtr avatar); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ovrAvatarPacket_EndRecording(IntPtr avatar); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern UInt32 ovrAvatarPacket_GetSize(IntPtr packet); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrAvatarPacket_GetDurationSeconds(IntPtr packet); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarPacket_Free(IntPtr packet); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern bool ovrAvatarPacket_Write(IntPtr packet, UInt32 bufferSize, [Out] byte[] buffer); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ovrAvatarPacket_Read(UInt32 bufferSize, [In] byte[] buffer); + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + private static extern void ovrAvatar_SetInternalForceASTCTextures(bool value); + + // Renaming the outward facing method to remove Internal from name + public static void ovrAvatar_SetForceASTCTextures(bool value) + { + ovrAvatar_SetInternalForceASTCTextures(value); + } + + [DllImport(LibFile, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovrAvatarSpecificationRequest_SetFallbackLookAndFeelVersion(IntPtr specificationRequest, ovrAvatarLookAndFeelVersion version); + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKCAPI.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKCAPI.cs.meta new file mode 100644 index 0000000..3fbc715 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKCAPI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0348026b48363904bb332b53a21c35b2 +timeCreated: 1474928508 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKManager.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKManager.cs new file mode 100644 index 0000000..0714860 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKManager.cs @@ -0,0 +1,243 @@ +using UnityEngine; +using System.Collections; +using Oculus.Avatar; +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +public delegate void specificationCallback(IntPtr specification); +public delegate void assetLoadedCallback(OvrAvatarAsset asset); +public delegate void combinedMeshLoadedCallback(IntPtr asset); + +public class OvrAvatarSDKManager : MonoBehaviour +{ + private static OvrAvatarSDKManager _instance; + private Dictionary> specificationCallbacks; + private Dictionary> assetLoadedCallbacks; + private Dictionary combinedMeshLoadedCallbacks; + private Dictionary assetCache; + + public static OvrAvatarSDKManager Instance + { + get + { + if (_instance == null) + { + _instance = GameObject.FindObjectOfType(); + if (_instance == null) + { + GameObject manager = new GameObject("OvrAvatarSDKManager"); + _instance = manager.AddComponent(); + _instance.Initialize(); + } + } + return _instance; + } + } + + private void Initialize() + { +#if UNITY_ANDROID && !UNITY_EDITOR + string appId = OvrAvatarSettings.GearAppID; + if (appId == "") + { + AvatarLogger.Log("No Gear VR App ID has been provided. Go to Oculus Avatar > Edit Configuration to supply one", OvrAvatarSettings.Instance); + appId = "0"; + } + + CAPI.ovrAvatar_InitializeAndroidUnity(appId); +#else + string appId = OvrAvatarSettings.AppID; + if (appId == "") + { + AvatarLogger.Log("No Oculus Rift App ID has been provided. Go to Oculus Avatar > Edit Configuration to supply one", OvrAvatarSettings.Instance); + appId = "0"; + } + + CAPI.ovrAvatar_Initialize(appId); +#endif + specificationCallbacks = new Dictionary>(); + assetLoadedCallbacks = new Dictionary>(); + combinedMeshLoadedCallbacks = new Dictionary(); + assetCache = new Dictionary(); + } + + void OnDestroy() + { + CAPI.ovrAvatar_Shutdown(); + } + + // Update is called once per frame + void Update () { + IntPtr message = CAPI.ovrAvatarMessage_Pop(); + if (message == IntPtr.Zero) + { + return; + } + + ovrAvatarMessageType messageType = CAPI.ovrAvatarMessage_GetType(message); + switch (messageType) + { + case ovrAvatarMessageType.AssetLoaded: + { + ovrAvatarMessage_AssetLoaded assetMessage = CAPI.ovrAvatarMessage_GetAssetLoaded(message); + IntPtr asset = assetMessage.asset; + UInt64 assetID = assetMessage.assetID; + ovrAvatarAssetType assetType = CAPI.ovrAvatarAsset_GetType(asset); + OvrAvatarAsset assetData; + IntPtr avatarOwner = IntPtr.Zero; + + switch (assetType) + { + case ovrAvatarAssetType.Mesh: + assetData = new OvrAvatarAssetMesh(assetID, asset, ovrAvatarAssetType.Mesh); + break; + case ovrAvatarAssetType.Texture: + assetData = new OvrAvatarAssetTexture(assetID, asset); + break; + case ovrAvatarAssetType.Material: + assetData = new OvrAvatarAssetMaterial(assetID, asset); + break; + case ovrAvatarAssetType.CombinedMesh: + avatarOwner = CAPI.ovrAvatarAsset_GetAvatar(asset); + assetData = new OvrAvatarAssetMesh(assetID, asset, ovrAvatarAssetType.CombinedMesh); + break; + default: + throw new NotImplementedException(string.Format("Unsupported asset type format {0}", assetType.ToString())); + } + + HashSet callbackSet; + if (assetType == ovrAvatarAssetType.CombinedMesh) + { + if (!assetCache.ContainsKey(assetID)) + { + assetCache.Add(assetID, assetData); + } + + combinedMeshLoadedCallback callback; + if (combinedMeshLoadedCallbacks.TryGetValue(avatarOwner, out callback)) + { + callback(asset); + combinedMeshLoadedCallbacks.Remove(avatarOwner); + } + else + { + AvatarLogger.LogWarning("Loaded a combined mesh with no owner: " + assetMessage.assetID); + } + } + else + { + if (assetLoadedCallbacks.TryGetValue(assetMessage.assetID, out callbackSet)) + { + assetCache.Add(assetID, assetData); + + foreach (var callback in callbackSet) + { + callback(assetData); + } + + assetLoadedCallbacks.Remove(assetMessage.assetID); + } + } + + break; + } + case ovrAvatarMessageType.AvatarSpecification: + { + ovrAvatarMessage_AvatarSpecification spec = CAPI.ovrAvatarMessage_GetAvatarSpecification(message); + HashSet callbackSet; + if (specificationCallbacks.TryGetValue(spec.oculusUserID, out callbackSet)) + { + foreach (var callback in callbackSet) + { + callback(spec.avatarSpec); + } + + specificationCallbacks.Remove(spec.oculusUserID); + } + else + { + AvatarLogger.LogWarning("Error, got an avatar specification callback from a user id we don't have a record for: " + spec.oculusUserID); + } + break; + } + default: + throw new NotImplementedException("Unhandled ovrAvatarMessageType: " + messageType); + } + CAPI.ovrAvatarMessage_Free(message); + } + + public void RequestAvatarSpecification( + UInt64 userId, + specificationCallback callback, + bool useCombinedMesh, + ovrAvatarAssetLevelOfDetail lod, + bool forceMobileTextureFormat) + { + CAPI.ovrAvatar_SetForceASTCTextures(forceMobileTextureFormat); + + HashSet callbackSet; + if (!specificationCallbacks.TryGetValue(userId, out callbackSet)) + { + callbackSet = new HashSet(); + specificationCallbacks.Add(userId, callbackSet); + + IntPtr specRequest = CAPI.ovrAvatarSpecificationRequest_Create(userId); + CAPI.ovrAvatarSpecificationRequest_SetLookAndFeelVersion(specRequest, ovrAvatarLookAndFeelVersion.Two); + CAPI.ovrAvatarSpecificationRequest_SetFallbackLookAndFeelVersion(specRequest, ovrAvatarLookAndFeelVersion.One); + CAPI.ovrAvatarSpecificationRequest_SetLevelOfDetail(specRequest, lod); + CAPI.ovrAvatarSpecificationRequest_SetCombineMeshes(specRequest, useCombinedMesh); + CAPI.ovrAvatar_RequestAvatarSpecificationFromSpecRequest(specRequest); + CAPI.ovrAvatarSpecificationRequest_Destroy(specRequest); + } + + callbackSet.Add(callback); + } + + public void BeginLoadingAsset( + UInt64 assetId, + ovrAvatarAssetLevelOfDetail lod, + assetLoadedCallback callback) + { + HashSet callbackSet; + if (!assetLoadedCallbacks.TryGetValue(assetId, out callbackSet)) + { + callbackSet = new HashSet(); + assetLoadedCallbacks.Add(assetId, callbackSet); + } + + AvatarLogger.Log("Loading Asset ID: " + assetId); + + CAPI.ovrAvatarAsset_BeginLoadingLOD(assetId, lod); + callbackSet.Add(callback); + } + + public void RegisterCombinedMeshCallback( + IntPtr sdkAvatar, + combinedMeshLoadedCallback callback) + { + combinedMeshLoadedCallback currentCallback; + if (!combinedMeshLoadedCallbacks.TryGetValue(sdkAvatar, out currentCallback)) + { + combinedMeshLoadedCallbacks.Add(sdkAvatar, callback); + } + else + { + throw new Exception("Adding second combind mesh callback for same avatar"); + } + } + + + public OvrAvatarAsset GetAsset(UInt64 assetId) + { + OvrAvatarAsset asset; + if (assetCache.TryGetValue(assetId, out asset)) + { + return asset; + } + else + { + return null; + } + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKManager.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKManager.cs.meta new file mode 100644 index 0000000..86d19ca --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSDKManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2ba08ec2733a3a54fbc9490f0f4ab2f0 +timeCreated: 1475011862 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSettings.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarSettings.cs new file mode 100644 index 0000000..e0f1dad --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSettings.cs @@ -0,0 +1,65 @@ +using UnityEngine; +using System.Collections; + +#if UNITY_EDITOR + [UnityEditor.InitializeOnLoad] +#endif +public sealed class OvrAvatarSettings : ScriptableObject { + public static string AppID + { + get { return Instance.ovrAppID; } + set { Instance.ovrAppID = value; } + } + + public static string GearAppID + { + get { return Instance.ovrGearAppID; } + set { Instance.ovrGearAppID = value; } + } + + private static OvrAvatarSettings instance; + public static OvrAvatarSettings Instance + { + get + { + if (instance == null) + { + instance = Resources.Load("OvrAvatarSettings"); + + // This can happen if the developer never input their App Id into the Unity Editor + // Use a dummy object with defaults for the getters so we don't have a null pointer exception + if (instance == null) + { + instance = ScriptableObject.CreateInstance(); + +#if UNITY_EDITOR + // Only in the editor should we save it to disk + string properPath = System.IO.Path.Combine(UnityEngine.Application.dataPath, "Resources"); + if (!System.IO.Directory.Exists(properPath)) + { + UnityEditor.AssetDatabase.CreateFolder("Assets", "Resources"); + } + + string fullPath = System.IO.Path.Combine( + System.IO.Path.Combine("Assets", "Resources"), + "OvrAvatarSettings.asset" + ); + UnityEditor.AssetDatabase.CreateAsset(instance, fullPath); +#endif + } + } + return instance; + } + + set + { + instance = value; + } + } + + [SerializeField] + private string ovrAppID = ""; + + [SerializeField] + private string ovrGearAppID = ""; +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSettings.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarSettings.cs.meta new file mode 100644 index 0000000..290ae26 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 70c2f484f132c044097f03d65cac3b24 +timeCreated: 1478024706 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSettingsEditor.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarSettingsEditor.cs new file mode 100644 index 0000000..7720207 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSettingsEditor.cs @@ -0,0 +1,44 @@ +#if UNITY_EDITOR +using UnityEngine; +using System.Collections; +using UnityEditor; + +[CustomEditor(typeof(OvrAvatarSettings))] +public class OvrAvatarSettingsEditor : Editor { + GUIContent appIDLabel = new GUIContent("Oculus Rift App Id [?]", + "This AppID will be used for OvrAvatar registration."); + + GUIContent gearAppIDLabel = new GUIContent("Gear VR App Id [?]", + "This AppID will be used for OvrAvatar registration when building to the Android target."); + + [UnityEditor.MenuItem("Oculus Avatars/Edit Configuration")] + public static void Edit() + { + var settings = OvrAvatarSettings.Instance; + UnityEditor.Selection.activeObject = settings; + } + + private static string MakeTextBox(GUIContent label, string variable) { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label); + GUI.changed = false; + var result = EditorGUILayout.TextField(variable); + if (GUI.changed) + { + EditorUtility.SetDirty(OvrAvatarSettings.Instance); + GUI.changed = false; + } + EditorGUILayout.EndHorizontal(); + return result; + } + public override void OnInspectorGUI() + { + EditorGUILayout.BeginVertical(); + OvrAvatarSettings.AppID = + OvrAvatarSettingsEditor.MakeTextBox(appIDLabel, OvrAvatarSettings.AppID); + OvrAvatarSettings.GearAppID = + OvrAvatarSettingsEditor.MakeTextBox(gearAppIDLabel, OvrAvatarSettings.GearAppID); + EditorGUILayout.EndVertical(); + } +} +#endif diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSettingsEditor.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarSettingsEditor.cs.meta new file mode 100644 index 0000000..e4f9404 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSettingsEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1511f2aaa4ab15e4b8a0ac1a805a402b +timeCreated: 1478024800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderComponent.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderComponent.cs new file mode 100644 index 0000000..409953e --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderComponent.cs @@ -0,0 +1,50 @@ +using UnityEngine; +using System.Collections; +using System; +using Oculus.Avatar; + +public class OvrAvatarSkinnedMeshRenderComponent : OvrAvatarRenderComponent +{ + Shader surface; + Shader surfaceSelfOccluding; + bool previouslyActive = false; + + internal void Initialize(ovrAvatarRenderPart_SkinnedMeshRender skinnedMeshRender, Shader surface, Shader surfaceSelfOccluding, int thirdPersonLayer, int firstPersonLayer, int sortOrder) + { + this.surfaceSelfOccluding = surfaceSelfOccluding != null ? surfaceSelfOccluding : Shader.Find("OvrAvatar/AvatarSurfaceShaderSelfOccluding"); + this.surface = surface != null ? surface : Shader.Find("OvrAvatar/AvatarSurfaceShader"); + this.mesh = CreateSkinnedMesh(skinnedMeshRender.meshAssetID, skinnedMeshRender.visibilityMask, thirdPersonLayer, firstPersonLayer, sortOrder); + bones = mesh.bones; + UpdateMeshMaterial(skinnedMeshRender.visibilityMask, mesh); + } + + public void UpdateSkinnedMeshRender(OvrAvatarComponent component, OvrAvatar avatar, IntPtr renderPart) + { + ovrAvatarVisibilityFlags visibilityMask = CAPI.ovrAvatarSkinnedMeshRender_GetVisibilityMask(renderPart); + ovrAvatarTransform localTransform = CAPI.ovrAvatarSkinnedMeshRender_GetTransform(renderPart); + UpdateSkinnedMesh(avatar, bones, localTransform, visibilityMask, renderPart); + + UpdateMeshMaterial(visibilityMask, mesh); + bool isActive = this.gameObject.activeSelf; + + if( mesh != null ) + { + bool changedMaterial = CAPI.ovrAvatarSkinnedMeshRender_MaterialStateChanged(renderPart); + if (changedMaterial || (!previouslyActive && isActive)) + { + ovrAvatarMaterialState materialState = CAPI.ovrAvatarSkinnedMeshRender_GetMaterialState(renderPart); + component.UpdateAvatarMaterial(mesh.sharedMaterial, materialState); + } + } + previouslyActive = isActive; + } + + private void UpdateMeshMaterial(ovrAvatarVisibilityFlags visibilityMask, SkinnedMeshRenderer rootMesh) + { + Shader shader = (visibilityMask & ovrAvatarVisibilityFlags.SelfOccluding) != 0 ? surfaceSelfOccluding : surface; + if (rootMesh.sharedMaterial == null || rootMesh.sharedMaterial.shader != shader) + { + rootMesh.sharedMaterial = CreateAvatarMaterial(gameObject.name + "_material", shader); + } + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderComponent.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderComponent.cs.meta new file mode 100644 index 0000000..6c85ed5 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderComponent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4efdf8bc42b8b8843aff4ca38233f362 +timeCreated: 1479156282 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSComponent.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSComponent.cs new file mode 100644 index 0000000..811d028 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSComponent.cs @@ -0,0 +1,30 @@ +using UnityEngine; +using System.Collections; +using System; +using Oculus.Avatar; + +public class OvrAvatarSkinnedMeshRenderPBSComponent : OvrAvatarRenderComponent { + + internal void Initialize(ovrAvatarRenderPart_SkinnedMeshRenderPBS skinnedMeshRenderPBS, Shader shader, int thirdPersonLayer, int firstPersonLayer, int sortOrder) + { + if (shader == null) + { + shader = Shader.Find("OvrAvatar/AvatarSurfaceShaderPBS"); + } + mesh = CreateSkinnedMesh(skinnedMeshRenderPBS.meshAssetID, skinnedMeshRenderPBS.visibilityMask, thirdPersonLayer, firstPersonLayer, sortOrder); + mesh.sharedMaterial = CreateAvatarMaterial(gameObject.name + "_material", shader); + bones = mesh.bones; + } + + internal void UpdateSkinnedMeshRenderPBS(OvrAvatar avatar, IntPtr renderPart, Material mat) + { + ovrAvatarVisibilityFlags visibilityMask = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetVisibilityMask(renderPart); + ovrAvatarTransform localTransform = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetTransform(renderPart); + UpdateSkinnedMesh(avatar, bones, localTransform, visibilityMask, renderPart); + + UInt64 albedoTextureID = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetAlbedoTextureAssetID(renderPart); + UInt64 surfaceTextureID = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetSurfaceTextureAssetID(renderPart); + mat.SetTexture("_Albedo", OvrAvatarComponent.GetLoadedTexture(albedoTextureID)); + mat.SetTexture("_Surface", OvrAvatarComponent.GetLoadedTexture(surfaceTextureID)); + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSComponent.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSComponent.cs.meta new file mode 100644 index 0000000..b5e75ef --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSComponent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 69cc01a6441317c4c8a6e24d979cc1b0 +timeCreated: 1479158964 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSV2Component.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSV2Component.cs new file mode 100644 index 0000000..91f50fa --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSV2Component.cs @@ -0,0 +1,189 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Security.Policy; +using Oculus.Avatar; + +public class OvrAvatarSkinnedMeshPBSV2RenderComponent : OvrAvatarRenderComponent +{ + public OvrAvatarMaterialManager AvatarMaterialManager; + bool PreviouslyActive = false; + bool IsCombinedMaterial = false; + + internal void Initialize( + IntPtr renderPart, + ovrAvatarRenderPart_SkinnedMeshRenderPBS_V2 skinnedMeshRender, + OvrAvatarMaterialManager materialManager, + int thirdPersonLayer, + int firstPersonLayer, + int sortOrder, + bool isCombinedMaterial, + ovrAvatarAssetLevelOfDetail lod) + { + AvatarMaterialManager = materialManager; + IsCombinedMaterial = isCombinedMaterial; + + mesh = CreateSkinnedMesh( + skinnedMeshRender.meshAssetID, + skinnedMeshRender.visibilityMask, + thirdPersonLayer, + firstPersonLayer, + sortOrder); + +#if UNITY_ANDROID + var singleComponentShader = "OvrAvatar/Avatar_Mobile_SingleComponent"; +#else + var singleComponentShader = "OvrAvatar/Avatar_PC_SingleComponent"; +#endif + + var shader = IsCombinedMaterial + ? Shader.Find("OvrAvatar/Avatar_Mobile_CombinedMesh") + : Shader.Find(singleComponentShader); + + AvatarLogger.Log("Shader is: " + shader.name); + + mesh.sharedMaterial = CreateAvatarMaterial(gameObject.name + "_material", shader); + mesh.sharedMaterial.renderQueue = OvrAvatarMaterialManager.RENDER_QUEUE; + + bones = mesh.bones; + + if (IsCombinedMaterial) + { + AvatarMaterialManager.SetRenderer(mesh); + InitializeCombinedMaterial(renderPart, (int)lod - 1); + AvatarMaterialManager.OnCombinedMeshReady(); + } + } + + public void UpdateSkinnedMeshRender( + OvrAvatarComponent component, + OvrAvatar avatar, + IntPtr renderPart) + { + ovrAvatarVisibilityFlags visibilityMask + = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetVisibilityMask(renderPart); + + ovrAvatarTransform localTransform + = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetTransform(renderPart); + + UpdateSkinnedMesh(avatar, bones, localTransform, visibilityMask, renderPart); + + bool isActive = gameObject.activeSelf; + + if (mesh != null && !PreviouslyActive && isActive) + { + if (!IsCombinedMaterial) + { + InitializeSingleComponentMaterial(renderPart, (int)avatar.LevelOfDetail - 1); + } + } + + PreviouslyActive = isActive; + } + + private void InitializeSingleComponentMaterial(IntPtr renderPart, int lodIndex) + { + ovrAvatarPBSMaterialState materialState = + CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetPBSMaterialState(renderPart); + + int componentType = (int)OvrAvatarMaterialManager.GetComponentType(gameObject.name); + + var defaultProperties = AvatarMaterialManager.DefaultAvatarConfig.ComponentMaterialProperties; + + var diffuseTexture = OvrAvatarComponent.GetLoadedTexture(materialState.albedoTextureID); + var normalTexture = OvrAvatarComponent.GetLoadedTexture(materialState.normalTextureID); + var metallicTexture = OvrAvatarComponent.GetLoadedTexture(materialState.metallicnessTextureID); + + if (diffuseTexture == null) + { + diffuseTexture = AvatarMaterialManager.DiffuseFallbacks[lodIndex]; + } + + if (normalTexture == null) + { + normalTexture = AvatarMaterialManager.NormalFallbacks[lodIndex]; + } + + if (metallicTexture == null) + { + metallicTexture = AvatarMaterialManager.DiffuseFallbacks[lodIndex]; + } + + mesh.sharedMaterial.SetTexture(OvrAvatarMaterialManager.AVATAR_SHADER_MAINTEX, diffuseTexture); + mesh.sharedMaterial.SetTexture(OvrAvatarMaterialManager.AVATAR_SHADER_NORMALMAP, normalTexture); + mesh.sharedMaterial.SetTexture(OvrAvatarMaterialManager.AVATAR_SHADER_ROUGHNESSMAP, metallicTexture); + + mesh.sharedMaterial.SetVector(OvrAvatarMaterialManager.AVATAR_SHADER_COLOR, + materialState.albedoMultiplier); + + mesh.sharedMaterial.SetFloat(OvrAvatarMaterialManager.AVATAR_SHADER_DIFFUSEINTENSITY, + defaultProperties[componentType].DiffuseIntensity); + + mesh.sharedMaterial.SetFloat(OvrAvatarMaterialManager.AVATAR_SHADER_RIMINTENSITY, + defaultProperties[componentType].RimIntensity); + + mesh.sharedMaterial.SetFloat(OvrAvatarMaterialManager.AVATAR_SHADER_BACKLIGHTINTENSITY, + defaultProperties[componentType].BacklightIntensity); + + mesh.sharedMaterial.SetFloat(OvrAvatarMaterialManager.AVATAR_SHADER_REFLECTIONINTENSITY, + defaultProperties[componentType].ReflectionIntensity); + + mesh.GetClosestReflectionProbes(AvatarMaterialManager.ReflectionProbes); + if (AvatarMaterialManager.ReflectionProbes != null && + AvatarMaterialManager.ReflectionProbes.Count > 0) + { + mesh.sharedMaterial.SetTexture(OvrAvatarMaterialManager.AVATAR_SHADER_CUBEMAP, + AvatarMaterialManager.ReflectionProbes[0].probe.texture); + } + +#if UNITY_EDITOR + mesh.sharedMaterial.EnableKeyword("FIX_NORMAL_ON"); +#endif + mesh.sharedMaterial.EnableKeyword("PBR_LIGHTING_ON"); + } + + private void InitializeCombinedMaterial(IntPtr renderPart, int lodIndex) + { + ovrAvatarPBSMaterialState[] materialStates = CAPI.ovrAvatar_GetBodyPBSMaterialStates(renderPart); + + if (materialStates.Length == (int)ovrAvatarBodyPartType.Count) + { + AvatarMaterialManager.CreateTextureArrays(); + + AvatarMaterialManager.LocalAvatarConfig = AvatarMaterialManager.DefaultAvatarConfig; + var localProperties = AvatarMaterialManager.LocalAvatarConfig.ComponentMaterialProperties; + + AvatarLogger.Log("InitializeCombinedMaterial - Loading Material States"); + + for (int i = 0; i < materialStates.Length; i++) + { + localProperties[i].TypeIndex = (ovrAvatarBodyPartType)i; + localProperties[i].Color = materialStates[i].albedoMultiplier; + + var diffuse = OvrAvatarComponent.GetLoadedTexture(materialStates[i].albedoTextureID); + var normal = OvrAvatarComponent.GetLoadedTexture(materialStates[i].normalTextureID); + var roughness = OvrAvatarComponent.GetLoadedTexture(materialStates[i].metallicnessTextureID); + + localProperties[i].Textures[(int)OvrAvatarMaterialManager.TextureType.DiffuseTextures] + = diffuse == null ? AvatarMaterialManager.DiffuseFallbacks[lodIndex] : diffuse; + + localProperties[i].Textures[(int)OvrAvatarMaterialManager.TextureType.NormalMaps] + = normal == null ? AvatarMaterialManager.NormalFallbacks[lodIndex] : normal; + + localProperties[i].Textures[(int)OvrAvatarMaterialManager.TextureType.RoughnessMaps] + = roughness == null ? AvatarMaterialManager.DiffuseFallbacks[lodIndex] : roughness; + + AvatarLogger.Log(localProperties[i].TypeIndex.ToString()); + AvatarLogger.Log(AvatarLogger.Tab + "Diffuse: " + materialStates[i].albedoTextureID); + AvatarLogger.Log(AvatarLogger.Tab + "Normal: " + materialStates[i].normalTextureID); + AvatarLogger.Log(AvatarLogger.Tab + "Metallic: " + materialStates[i].metallicnessTextureID); + } + + AvatarMaterialManager.ValidateTextures(); + } + +#if UNITY_EDITOR + mesh.sharedMaterial.EnableKeyword("FIX_NORMAL_ON"); +#endif + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSV2Component.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSV2Component.cs.meta new file mode 100644 index 0000000..100b735 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSV2Component.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c45906825d398024fbe09e47cc72de24 +timeCreated: 1511398456 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarTextureCopyManager.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarTextureCopyManager.cs new file mode 100644 index 0000000..f7832db --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarTextureCopyManager.cs @@ -0,0 +1,130 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class OvrAvatarTextureCopyManager : MonoBehaviour +{ + private const int TEXTURES_TO_COPY_QUEUE_CAPACITY = 256; + + struct CopyTextureParams + { + public Texture Src; + public Texture Dst; + public int Mip; + public int SrcSize; + public int DstElement; + + public CopyTextureParams( + Texture src, + Texture dst, + int mip, + int srcSize, + int dstElement) + { + Src = src; + Dst = dst; + Mip = mip; + SrcSize = srcSize; + DstElement = dstElement; + } + } + + private Queue texturesToCopy; + + public OvrAvatarTextureCopyManager() + { + texturesToCopy = new Queue(TEXTURES_TO_COPY_QUEUE_CAPACITY); + } + + public void Update() + { + if (texturesToCopy.Count == 0) + { + return; + } + + CopyTextureParams copyTextureParams; + + lock (texturesToCopy) + { + copyTextureParams = texturesToCopy.Dequeue(); + } + + StartCoroutine(CopyTextureCoroutine(copyTextureParams)); + } + + public int GetTextureCount() + { + return texturesToCopy.Count; + } + + public void CopyTexture( + Texture src, + Texture dst, + int mipLevel, + int mipSize, + int dstElement, + bool useQueue = true) + { + bool queued = false; + var copyTextureParams = new CopyTextureParams(src, dst, mipLevel, mipSize, dstElement); + + if (useQueue) + { + lock (texturesToCopy) + { + if (texturesToCopy.Count < TEXTURES_TO_COPY_QUEUE_CAPACITY) + { + texturesToCopy.Enqueue(copyTextureParams); + queued = true; + } + } + } + else + { + CopyTexture(copyTextureParams); + } + + if (!queued) + { + CopyTexture(copyTextureParams); + } + } + + IEnumerator CopyTextureCoroutine(CopyTextureParams copyTextureParams) + { + // Wait until frame rendering is done + yield return new WaitForEndOfFrame(); + + Graphics.CopyTexture( + copyTextureParams.Src, + 0, + copyTextureParams.Mip, + 0, + 0, + copyTextureParams.SrcSize, + copyTextureParams.SrcSize, + copyTextureParams.Dst, + copyTextureParams.DstElement, + copyTextureParams.Mip, + 0, + 0); + } + + private void CopyTexture(CopyTextureParams copyTextureParams) + { + Graphics.CopyTexture( + copyTextureParams.Src, + 0, + copyTextureParams.Mip, + 0, + 0, + copyTextureParams.SrcSize, + copyTextureParams.SrcSize, + copyTextureParams.Dst, + copyTextureParams.DstElement, + copyTextureParams.Mip, + 0, + 0); + } +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarTextureCopyManager.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarTextureCopyManager.cs.meta new file mode 100644 index 0000000..cc5d211 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarTextureCopyManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bb5b00817cd46d645ac8b607693c37ce +timeCreated: 1519680044 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarTouchController.cs b/Assets/Oculus/Avatar/Scripts/OvrAvatarTouchController.cs new file mode 100644 index 0000000..18cfac4 --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarTouchController.cs @@ -0,0 +1,7 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +public class OvrAvatarTouchController : MonoBehaviour +{ +} diff --git a/Assets/Oculus/Avatar/Scripts/OvrAvatarTouchController.cs.meta b/Assets/Oculus/Avatar/Scripts/OvrAvatarTouchController.cs.meta new file mode 100644 index 0000000..7580afd --- /dev/null +++ b/Assets/Oculus/Avatar/Scripts/OvrAvatarTouchController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 77e19ec58d4a9e844970103e5bd8946a +timeCreated: 1464050556 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync.meta b/Assets/Oculus/LipSync.meta new file mode 100644 index 0000000..637f2e8 --- /dev/null +++ b/Assets/Oculus/LipSync.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4545866523ed22046a2cbba3990c879a +folderAsset: yes +timeCreated: 1538788975 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Audio.meta b/Assets/Oculus/LipSync/Audio.meta new file mode 100644 index 0000000..641b478 --- /dev/null +++ b/Assets/Oculus/LipSync/Audio.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 76b873b07f695cb4cb6515ecf670c814 +folderAsset: yes +timeCreated: 1441295107 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Audio/vox_lp_01.wav b/Assets/Oculus/LipSync/Audio/vox_lp_01.wav new file mode 100644 index 0000000..b3fb3b0 Binary files /dev/null and b/Assets/Oculus/LipSync/Audio/vox_lp_01.wav differ diff --git a/Assets/Oculus/LipSync/Audio/vox_lp_01.wav.meta b/Assets/Oculus/LipSync/Audio/vox_lp_01.wav.meta new file mode 100644 index 0000000..52b10e8 --- /dev/null +++ b/Assets/Oculus/LipSync/Audio/vox_lp_01.wav.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: e21cea670b0f32c428ee862e590a7108 +timeCreated: 1528844468 +licenseType: Store +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Audio/vox_lp_01_lipSync.asset b/Assets/Oculus/LipSync/Audio/vox_lp_01_lipSync.asset new file mode 100644 index 0000000..3007dbd --- /dev/null +++ b/Assets/Oculus/LipSync/Audio/vox_lp_01_lipSync.asset @@ -0,0 +1,32885 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 354250b5dc6a14f49b541724e9dd3c37, type: 3} + m_Name: vox_lp_01_lipSync + m_EditorClassIdentifier: + entries: + - frameNumber: 1 + frameDelay: 0 + Visemes: + - 0.29095888 + - 0.007797253 + - 0.0000026664559 + - 0.0000030512101 + - 0.000013580944 + - 0.000011396746 + - 0.0000003585638 + - 0.0000025696186 + - 0.00020513292 + - 0.000001864018 + - 0.00071335665 + - 0.000010255874 + - 0.00001123165 + - 0.00025371587 + - 0.000014692829 + laughterScore: 0 + - frameNumber: 2 + frameDelay: 0 + Visemes: + - 0.4900638 + - 0.008471628 + - 0.000019258236 + - 0.00022594455 + - 0.00029157387 + - 0.00062914094 + - 0.000067432906 + - 0.0000421952 + - 0.0018280431 + - 0.00013564507 + - 0.0021883817 + - 0.00037771522 + - 0.0008936664 + - 0.0017923792 + - 0.0029732396 + laughterScore: 0 + - frameNumber: 3 + frameDelay: 0 + Visemes: + - 0.41823584 + - 0.01607617 + - 0.00017738098 + - 0.0023923854 + - 0.0011606562 + - 0.0043956907 + - 0.00015338078 + - 0.00013736938 + - 0.05067691 + - 0.0011221502 + - 0.0055520358 + - 0.0007759017 + - 0.002725977 + - 0.024702812 + - 0.1287154 + laughterScore: 0 + - frameNumber: 4 + frameDelay: 0 + Visemes: + - 0.3132795 + - 0.017024975 + - 0.0003675248 + - 0.002554094 + - 0.0010613507 + - 0.003418062 + - 0.00012564294 + - 0.00020002484 + - 0.2198317 + - 0.0013566408 + - 0.0068778344 + - 0.0013028826 + - 0.002994224 + - 0.02021398 + - 0.16929159 + laughterScore: 0 + - frameNumber: 5 + frameDelay: 0 + Visemes: + - 0.22866023 + - 0.012083319 + - 0.00028960372 + - 0.0021516841 + - 0.0009821 + - 0.0027167478 + - 0.000088631874 + - 0.00014515647 + - 0.3042245 + - 0.0018253985 + - 0.06950627 + - 0.05328719 + - 0.00227645 + - 0.015881874 + - 0.13781092 + laughterScore: 0 + - frameNumber: 6 + frameDelay: 0 + Visemes: + - 0.16920874 + - 0.008569902 + - 0.00027018352 + - 0.001693187 + - 0.0015247766 + - 0.0022373288 + - 0.00006366265 + - 0.000106102605 + - 0.24074723 + - 0.0017603582 + - 0.12175746 + - 0.21867393 + - 0.0022998843 + - 0.014944174 + - 0.09849418 + laughterScore: 0 + - frameNumber: 7 + frameDelay: 0 + Visemes: + - 0.122680694 + - 0.00618863 + - 0.00023025266 + - 0.0012550834 + - 0.0062260665 + - 0.0016238329 + - 0.00004672046 + - 0.00007909582 + - 0.19202802 + - 0.0018091485 + - 0.09883182 + - 0.39027244 + - 0.003931258 + - 0.022353567 + - 0.070089124 + laughterScore: 0 + - frameNumber: 8 + frameDelay: 0 + Visemes: + - 0.09339775 + - 0.0045703817 + - 0.00052303827 + - 0.0011854353 + - 0.017749006 + - 0.0015471043 + - 0.000048507536 + - 0.000108845794 + - 0.31285137 + - 0.0015566917 + - 0.0987629 + - 0.31041825 + - 0.0036539412 + - 0.045291655 + - 0.050687164 + laughterScore: 0 + - frameNumber: 9 + frameDelay: 0 + Visemes: + - 0.07263108 + - 0.0033625867 + - 0.00085465884 + - 0.0010469172 + - 0.019006904 + - 0.0040068273 + - 0.00049501576 + - 0.0025440108 + - 0.40699226 + - 0.0012742112 + - 0.0936183 + - 0.22449653 + - 0.0031192051 + - 0.08974816 + - 0.03644975 + laughterScore: 0 + - frameNumber: 10 + frameDelay: 0 + Visemes: + - 0.055824995 + - 0.0026895618 + - 0.0016258797 + - 0.0072685177 + - 0.043890852 + - 0.21458644 + - 0.002285623 + - 0.003479659 + - 0.31616464 + - 0.0009503568 + - 0.06634934 + - 0.15766625 + - 0.0025532665 + - 0.070668876 + - 0.025748257 + laughterScore: 0 + - frameNumber: 11 + frameDelay: 0 + Visemes: + - 0.042716436 + - 0.0020668597 + - 0.0011998725 + - 0.008064836 + - 0.049754366 + - 0.4222605 + - 0.0019856405 + - 0.0026443002 + - 0.22169136 + - 0.000675411 + - 0.04655814 + - 0.11037231 + - 0.0018149541 + - 0.05034665 + - 0.018075092 + laughterScore: 0 + - frameNumber: 12 + frameDelay: 0 + Visemes: + - 0.041595466 + - 0.0015264489 + - 0.0008941593 + - 0.008746208 + - 0.049044266 + - 0.5637806 + - 0.001437278 + - 0.0038648616 + - 0.15536366 + - 0.00048397298 + - 0.03273599 + - 0.07727658 + - 0.0013547919 + - 0.03532269 + - 0.012731772 + laughterScore: 0 + - frameNumber: 13 + frameDelay: 0 + Visemes: + - 0.04445952 + - 0.0011556408 + - 0.00068476546 + - 0.012071058 + - 0.043640625 + - 0.61936724 + - 0.0010399597 + - 0.0040570907 + - 0.10948708 + - 0.00046230206 + - 0.05378283 + - 0.054566763 + - 0.0088646505 + - 0.025718674 + - 0.0109529095 + laughterScore: 0 + - frameNumber: 14 + frameDelay: 0 + Visemes: + - 0.037794888 + - 0.00090295874 + - 0.0005100547 + - 0.012083714 + - 0.031903908 + - 0.5358386 + - 0.0007458463 + - 0.0028889375 + - 0.078282915 + - 0.0011731605 + - 0.13993338 + - 0.056344938 + - 0.0631429 + - 0.020708354 + - 0.010963195 + laughterScore: 0 + - frameNumber: 15 + frameDelay: 0 + Visemes: + - 0.039578922 + - 0.00067603524 + - 0.0003940633 + - 0.009371325 + - 0.022972157 + - 0.38907522 + - 0.00055411836 + - 0.0021271557 + - 0.05553557 + - 0.0097114965 + - 0.24569699 + - 0.08575799 + - 0.10285775 + - 0.019411227 + - 0.011532402 + laughterScore: 0 + - frameNumber: 16 + frameDelay: 0 + Visemes: + - 0.032197807 + - 0.0005866955 + - 0.0004621332 + - 0.0067241555 + - 0.017672582 + - 0.42193392 + - 0.000395441 + - 0.0015803691 + - 0.041612234 + - 0.014293741 + - 0.26072523 + - 0.06750667 + - 0.10798 + - 0.014617357 + - 0.008388358 + laughterScore: 0 + - frameNumber: 17 + frameDelay: 0 + Visemes: + - 0.02879173 + - 0.031970114 + - 0.0031205951 + - 0.0052644587 + - 0.0145080825 + - 0.4494401 + - 0.00031212528 + - 0.0016938059 + - 0.05449997 + - 0.011273762 + - 0.24120189 + - 0.049242873 + - 0.08971581 + - 0.010502204 + - 0.006136207 + laughterScore: 0 + - frameNumber: 18 + frameDelay: 0 + Visemes: + - 0.029527305 + - 0.23115717 + - 0.0025635143 + - 0.0038454304 + - 0.01345492 + - 0.3572933 + - 0.00023394117 + - 0.0012533064 + - 0.06447956 + - 0.007954874 + - 0.17713755 + - 0.034529485 + - 0.06324294 + - 0.0073694754 + - 0.004328859 + laughterScore: 0 + - frameNumber: 19 + frameDelay: 0 + Visemes: + - 0.027432995 + - 0.39956284 + - 0.0021467628 + - 0.0032882714 + - 0.0108974865 + - 0.2664314 + - 0.00018839029 + - 0.0009223202 + - 0.07374068 + - 0.005593988 + - 0.13157801 + - 0.02421227 + - 0.04459566 + - 0.0051695257 + - 0.0030995377 + laughterScore: 0 + - frameNumber: 20 + frameDelay: 0 + Visemes: + - 0.022293897 + - 0.5230965 + - 0.0018363303 + - 0.0043121255 + - 0.020247357 + - 0.19605544 + - 0.0006334302 + - 0.0007459111 + - 0.07758628 + - 0.0039259684 + - 0.09436317 + - 0.016953228 + - 0.031349964 + - 0.0036264209 + - 0.0021760135 + laughterScore: 0 + - frameNumber: 21 + frameDelay: 0 + Visemes: + - 0.017130233 + - 0.3776475 + - 0.0016406018 + - 0.0046632364 + - 0.29368246 + - 0.13930923 + - 0.0032055392 + - 0.00068914227 + - 0.054715216 + - 0.0027622432 + - 0.066113904 + - 0.011868377 + - 0.021948935 + - 0.0025398356 + - 0.0015249689 + laughterScore: 0 + - frameNumber: 22 + frameDelay: 0 + Visemes: + - 0.013944332 + - 0.2663191 + - 0.0017517834 + - 0.007148456 + - 0.4856586 + - 0.09794902 + - 0.0023809453 + - 0.011124862 + - 0.038426574 + - 0.0019381494 + - 0.04637192 + - 0.008308858 + - 0.015392845 + - 0.0017848747 + - 0.0011087204 + laughterScore: 0 + - frameNumber: 23 + frameDelay: 0 + Visemes: + - 0.01240921 + - 0.18656681 + - 0.0012939783 + - 0.006267685 + - 0.6128932 + - 0.07023379 + - 0.0017203494 + - 0.008772537 + - 0.026940307 + - 0.0014439013 + - 0.050927855 + - 0.0058289845 + - 0.010938006 + - 0.0012777024 + - 0.0022119093 + laughterScore: 0 + - frameNumber: 24 + frameDelay: 0 + Visemes: + - 0.0120033985 + - 0.13064878 + - 0.00095961837 + - 0.004714897 + - 0.641405 + - 0.049375977 + - 0.0014369173 + - 0.0067391885 + - 0.018985495 + - 0.001140613 + - 0.105360344 + - 0.014379765 + - 0.008175256 + - 0.0014166827 + - 0.0030664543 + laughterScore: 0 + - frameNumber: 25 + frameDelay: 0 + Visemes: + - 0.012115514 + - 0.09146101 + - 0.00068102224 + - 0.004096401 + - 0.45452544 + - 0.035225518 + - 0.001069894 + - 0.0048253573 + - 0.013731522 + - 0.0011919381 + - 0.2942767 + - 0.057786617 + - 0.017298507 + - 0.0023990325 + - 0.009181415 + laughterScore: 0 + - frameNumber: 26 + frameDelay: 0 + Visemes: + - 0.010217884 + - 0.064069845 + - 0.0005020849 + - 0.0070187356 + - 0.32019418 + - 0.02477539 + - 0.00076341594 + - 0.003389713 + - 0.010563907 + - 0.0016489651 + - 0.48458886 + - 0.045243375 + - 0.015965637 + - 0.0019275291 + - 0.0090366155 + laughterScore: 0 + - frameNumber: 27 + frameDelay: 0 + Visemes: + - 0.0074960357 + - 0.044905916 + - 0.00071192835 + - 0.2840287 + - 0.2408968 + - 0.017506136 + - 0.00058082235 + - 0.0024111154 + - 0.0077012447 + - 0.0011596725 + - 0.34189534 + - 0.031695884 + - 0.01120245 + - 0.0013502676 + - 0.0063919905 + laughterScore: 0 + - frameNumber: 28 + frameDelay: 0 + Visemes: + - 0.0058351103 + - 0.031682614 + - 0.00071971567 + - 0.39551315 + - 0.26122203 + - 0.012624622 + - 0.0004092023 + - 0.0016997437 + - 0.005693308 + - 0.00081429305 + - 0.24718527 + - 0.022552593 + - 0.00852897 + - 0.0009522191 + - 0.0045211683 + laughterScore: 0 + - frameNumber: 29 + frameDelay: 0 + Visemes: + - 0.005272584 + - 0.02234325 + - 0.0005235615 + - 0.28667688 + - 0.22616936 + - 0.008968363 + - 0.00030169627 + - 0.0011911072 + - 0.004040596 + - 0.00062851247 + - 0.18563464 + - 0.2388756 + - 0.014556665 + - 0.000703163 + - 0.0040818453 + laughterScore: 0 + - frameNumber: 30 + frameDelay: 0 + Visemes: + - 0.004962476 + - 0.01587894 + - 0.00042997394 + - 0.20087455 + - 0.15998773 + - 0.006443899 + - 0.00027327111 + - 0.00083655183 + - 0.00286721 + - 0.00054147106 + - 0.13146597 + - 0.45485783 + - 0.0151174385 + - 0.0005309521 + - 0.0049092276 + laughterScore: 0 + - frameNumber: 31 + frameDelay: 0 + Visemes: + - 0.008796455 + - 0.0121407695 + - 0.0006506052 + - 0.14103012 + - 0.113588594 + - 0.029507034 + - 0.00038233772 + - 0.0006376792 + - 0.002118194 + - 0.0013359365 + - 0.09437514 + - 0.5258185 + - 0.06270012 + - 0.00044627758 + - 0.006456497 + laughterScore: 0 + - frameNumber: 32 + frameDelay: 0 + Visemes: + - 0.010057434 + - 0.008983291 + - 0.0012789884 + - 0.09949135 + - 0.086588986 + - 0.02191579 + - 0.00030317076 + - 0.00059168355 + - 0.0022533368 + - 0.0027098143 + - 0.07235774 + - 0.5991079 + - 0.08524965 + - 0.0022294207 + - 0.006870392 + laughterScore: 0 + - frameNumber: 33 + frameDelay: 0 + Visemes: + - 0.010425324 + - 0.006446606 + - 0.00093250995 + - 0.069840275 + - 0.061953153 + - 0.015996667 + - 0.00021808632 + - 0.00045327417 + - 0.002781857 + - 0.0032421974 + - 0.06528353 + - 0.6658831 + - 0.08499366 + - 0.0059983344 + - 0.0055436855 + laughterScore: 0 + - frameNumber: 34 + frameDelay: 0 + Visemes: + - 0.033572298 + - 0.0048393826 + - 0.00078190677 + - 0.049008768 + - 0.050184537 + - 0.011715296 + - 0.00015383628 + - 0.0006175674 + - 0.005401548 + - 0.0042185634 + - 0.1541471 + - 0.5076312 + - 0.07796253 + - 0.094834864 + - 0.004925223 + laughterScore: 0 + - frameNumber: 35 + frameDelay: 0 + Visemes: + - 0.037490718 + - 0.0037641143 + - 0.0006439128 + - 0.034331366 + - 0.036461424 + - 0.008698323 + - 0.00011196155 + - 0.00045746233 + - 0.0048277546 + - 0.003626259 + - 0.32877403 + - 0.35976145 + - 0.056004595 + - 0.12142035 + - 0.0036224762 + laughterScore: 0 + - frameNumber: 36 + frameDelay: 0 + Visemes: + - 0.042833697 + - 0.0027431487 + - 0.0004945083 + - 0.024041345 + - 0.02607563 + - 0.0062696673 + - 0.00008204773 + - 0.00035528396 + - 0.0042527197 + - 0.0036376505 + - 0.4456404 + - 0.2602603 + - 0.03981046 + - 0.14084953 + - 0.0026509704 + laughterScore: 0 + - frameNumber: 37 + frameDelay: 0 + Visemes: + - 0.040767483 + - 0.0020069508 + - 0.0003780954 + - 0.01684585 + - 0.0186676 + - 0.0046851877 + - 0.00006421579 + - 0.0002747725 + - 0.0041813166 + - 0.0035472338 + - 0.5500365 + - 0.18777359 + - 0.028250145 + - 0.14040802 + - 0.0021111635 + laughterScore: 0 + - frameNumber: 38 + frameDelay: 0 + Visemes: + - 0.045661703 + - 0.0021293706 + - 0.00057188683 + - 0.011960465 + - 0.01787312 + - 0.007945454 + - 0.00038758086 + - 0.0007232211 + - 0.007040435 + - 0.0052551934 + - 0.602828 + - 0.13842057 + - 0.020515418 + - 0.13634083 + - 0.0023454383 + laughterScore: 0 + - frameNumber: 39 + frameDelay: 0 + Visemes: + - 0.043223303 + - 0.0016757788 + - 0.0004975175 + - 0.008543719 + - 0.016421717 + - 0.008110484 + - 0.00064523204 + - 0.0011244832 + - 0.009083355 + - 0.0054427395 + - 0.68594754 + - 0.101970665 + - 0.014645472 + - 0.100605875 + - 0.0020612357 + laughterScore: 0 + - frameNumber: 40 + frameDelay: 0 + Visemes: + - 0.034447078 + - 0.0013316683 + - 0.00394444 + - 0.007318582 + - 0.012830719 + - 0.20284003 + - 0.017130084 + - 0.023012636 + - 0.008387262 + - 0.0044598356 + - 0.5166992 + - 0.07903223 + - 0.010730652 + - 0.07621572 + - 0.0016192632 + laughterScore: 0 + - frameNumber: 41 + frameDelay: 0 + Visemes: + - 0.026424328 + - 0.0011093951 + - 0.0036793272 + - 0.0076150903 + - 0.015002618 + - 0.3807757 + - 0.013263028 + - 0.04437922 + - 0.0065625105 + - 0.0032604313 + - 0.37839633 + - 0.056578375 + - 0.0077933674 + - 0.054021016 + - 0.001138823 + laughterScore: 0 + - frameNumber: 42 + frameDelay: 0 + Visemes: + - 0.022380477 + - 0.00085031765 + - 0.0027628103 + - 0.014038447 + - 0.022544455 + - 0.5340665 + - 0.009522601 + - 0.03145694 + - 0.004861746 + - 0.002314931 + - 0.27135527 + - 0.039625436 + - 0.005526024 + - 0.03789333 + - 0.0008003606 + laughterScore: 0 + - frameNumber: 43 + frameDelay: 0 + Visemes: + - 0.018336155 + - 0.00062101707 + - 0.002040291 + - 0.012203827 + - 0.028748304 + - 0.65170544 + - 0.00935561 + - 0.02227845 + - 0.003440154 + - 0.0016271598 + - 0.19075519 + - 0.027749313 + - 0.0040133977 + - 0.026561322 + - 0.00056411675 + laughterScore: 0 + - frameNumber: 44 + frameDelay: 0 + Visemes: + - 0.01796741 + - 0.00043914685 + - 0.0014384257 + - 0.008592242 + - 0.024167314 + - 0.73638415 + - 0.014602805 + - 0.017541805 + - 0.0024186752 + - 0.001141326 + - 0.13377558 + - 0.019434238 + - 0.0030891122 + - 0.01859755 + - 0.00041006412 + laughterScore: 0 + - frameNumber: 45 + frameDelay: 0 + Visemes: + - 0.017165862 + - 0.00031574132 + - 0.0010093052 + - 0.006046323 + - 0.017135698 + - 0.77346206 + - 0.010591146 + - 0.012442072 + - 0.0017319405 + - 0.0008678123 + - 0.10996045 + - 0.0138448095 + - 0.02038592 + - 0.013022343 + - 0.0020183804 + laughterScore: 0 + - frameNumber: 46 + frameDelay: 0 + Visemes: + - 0.016620623 + - 0.00022602628 + - 0.00070822926 + - 0.004254208 + - 0.012055287 + - 0.5604972 + - 0.0076904986 + - 0.008730224 + - 0.0012671046 + - 0.00062602275 + - 0.22524858 + - 0.08833023 + - 0.06110888 + - 0.009150675 + - 0.003486094 + laughterScore: 0 + - frameNumber: 47 + frameDelay: 0 + Visemes: + - 0.021419313 + - 0.00021789392 + - 0.0004979706 + - 0.003255248 + - 0.008738815 + - 0.3937367 + - 0.006655276 + - 0.0061468408 + - 0.002052932 + - 0.0062348126 + - 0.23075175 + - 0.09833953 + - 0.18673846 + - 0.007877629 + - 0.027336814 + laughterScore: 0 + - frameNumber: 48 + frameDelay: 0 + Visemes: + - 0.032933466 + - 0.00046639895 + - 0.00036296045 + - 0.0023142048 + - 0.007197286 + - 0.27868816 + - 0.0047016493 + - 0.0043851733 + - 0.07700451 + - 0.025250684 + - 0.22912326 + - 0.09230763 + - 0.18937618 + - 0.017466065 + - 0.038422376 + laughterScore: 0 + - frameNumber: 49 + frameDelay: 0 + Visemes: + - 0.028642299 + - 0.0005880791 + - 0.00027499846 + - 0.0016345787 + - 0.005430831 + - 0.19544376 + - 0.0033022196 + - 0.0031460878 + - 0.28966027 + - 0.02494463 + - 0.16487129 + - 0.07569768 + - 0.15880126 + - 0.01844079 + - 0.029121205 + laughterScore: 0 + - frameNumber: 50 + frameDelay: 0 + Visemes: + - 0.023067486 + - 0.00055501604 + - 0.00038425822 + - 0.0017334975 + - 0.004121787 + - 0.13727666 + - 0.0023206202 + - 0.0023273895 + - 0.48675787 + - 0.019519828 + - 0.11640816 + - 0.05311013 + - 0.11147049 + - 0.015458832 + - 0.025487965 + laughterScore: 0 + - frameNumber: 51 + frameDelay: 0 + Visemes: + - 0.01973831 + - 0.00057668425 + - 0.0003383741 + - 0.0024978193 + - 0.0033942328 + - 0.096874356 + - 0.001666352 + - 0.0017003414 + - 0.61152047 + - 0.014700342 + - 0.08672291 + - 0.0385863 + - 0.087250754 + - 0.012129367 + - 0.02230338 + laughterScore: 0 + - frameNumber: 52 + frameDelay: 0 + Visemes: + - 0.019577244 + - 0.0004426139 + - 0.0003974433 + - 0.00289038 + - 0.0030288124 + - 0.0687229 + - 0.0012524978 + - 0.0013078841 + - 0.45006827 + - 0.018699033 + - 0.16914916 + - 0.03728081 + - 0.1805019 + - 0.012260133 + - 0.0344209 + laughterScore: 0 + - frameNumber: 53 + frameDelay: 0 + Visemes: + - 0.017981324 + - 0.0003506632 + - 0.0007161306 + - 0.004955544 + - 0.0053155404 + - 0.04833559 + - 0.001004914 + - 0.0016657433 + - 0.32666862 + - 0.031583555 + - 0.26428482 + - 0.037367463 + - 0.21099141 + - 0.014570995 + - 0.03420762 + laughterScore: 0 + - frameNumber: 54 + frameDelay: 0 + Visemes: + - 0.018474773 + - 0.00030148044 + - 0.0012633031 + - 0.0038996523 + - 0.015141137 + - 0.03403755 + - 0.0007359667 + - 0.17111877 + - 0.23068346 + - 0.02360694 + - 0.24575862 + - 0.029439248 + - 0.1898957 + - 0.011579916 + - 0.024063442 + laughterScore: 0 + - frameNumber: 55 + frameDelay: 0 + Visemes: + - 0.022852648 + - 0.000355898 + - 0.0017541335 + - 0.0034991156 + - 0.071270876 + - 0.024462657 + - 0.00057335274 + - 0.34109133 + - 0.1621548 + - 0.016679475 + - 0.17582913 + - 0.020664833 + - 0.13382946 + - 0.008118959 + - 0.016863288 + laughterScore: 0 + - frameNumber: 56 + frameDelay: 0 + Visemes: + - 0.025293324 + - 0.00044927344 + - 0.0016247304 + - 0.0029292668 + - 0.05885834 + - 0.017700868 + - 0.00055425824 + - 0.5169899 + - 0.113635816 + - 0.011712116 + - 0.12419615 + - 0.0144855315 + - 0.094009705 + - 0.0057118298 + - 0.011848908 + laughterScore: 0 + - frameNumber: 57 + frameDelay: 0 + Visemes: + - 0.043732993 + - 0.00076973916 + - 0.0012846244 + - 0.0074452907 + - 0.06951284 + - 0.013187172 + - 0.00069968443 + - 0.5950425 + - 0.08085291 + - 0.008298564 + - 0.089592 + - 0.01024921 + - 0.06665647 + - 0.0041917884 + - 0.008484189 + laughterScore: 0 + - frameNumber: 58 + frameDelay: 0 + Visemes: + - 0.0664439 + - 0.001465436 + - 0.001146704 + - 0.016228642 + - 0.095590785 + - 0.010352241 + - 0.0008695204 + - 0.60968846 + - 0.06083439 + - 0.0058776597 + - 0.06722905 + - 0.00726753 + - 0.047746267 + - 0.003117364 + - 0.0061420854 + laughterScore: 0 + - frameNumber: 59 + frameDelay: 0 + Visemes: + - 0.07999274 + - 0.001959219 + - 0.0013597121 + - 0.024497882 + - 0.09771326 + - 0.008082056 + - 0.0008384939 + - 0.6364437 + - 0.048053708 + - 0.0041752025 + - 0.050361063 + - 0.005234498 + - 0.034301996 + - 0.0023598992 + - 0.0046266117 + laughterScore: 0 + - frameNumber: 60 + frameDelay: 0 + Visemes: + - 0.09321719 + - 0.009542588 + - 0.0013221394 + - 0.024571639 + - 0.11305056 + - 0.022789277 + - 0.0007616305 + - 0.62555766 + - 0.034716863 + - 0.002974503 + - 0.038110636 + - 0.0038125152 + - 0.024439849 + - 0.0018036133 + - 0.0033293276 + laughterScore: 0 + - frameNumber: 61 + frameDelay: 0 + Visemes: + - 0.12667584 + - 0.010779021 + - 0.002387184 + - 0.035194606 + - 0.18149364 + - 0.045510866 + - 0.0010033823 + - 0.4890887 + - 0.04808191 + - 0.0021974563 + - 0.0300706 + - 0.0031444894 + - 0.019481169 + - 0.0016113904 + - 0.0032797395 + laughterScore: 0 + - frameNumber: 62 + frameDelay: 0 + Visemes: + - 0.12565099 + - 0.033620246 + - 0.011055496 + - 0.028564062 + - 0.13495141 + - 0.035426587 + - 0.00074947876 + - 0.34708217 + - 0.16135252 + - 0.0018964448 + - 0.022616414 + - 0.0024155716 + - 0.015449244 + - 0.0034942736 + - 0.07567512 + laughterScore: 0 + - frameNumber: 63 + frameDelay: 0 + Visemes: + - 0.09972553 + - 0.025159383 + - 0.00816735 + - 0.02079829 + - 0.09542756 + - 0.025286859 + - 0.0005400277 + - 0.2430783 + - 0.38382223 + - 0.0014357876 + - 0.017684005 + - 0.0022931509 + - 0.011998794 + - 0.0028789516 + - 0.061703775 + laughterScore: 0 + - frameNumber: 64 + frameDelay: 0 + Visemes: + - 0.0736291 + - 0.01773693 + - 0.0057331175 + - 0.0146672325 + - 0.06688562 + - 0.017740158 + - 0.00038518303 + - 0.1701742 + - 0.5582727 + - 0.001050266 + - 0.015404287 + - 0.0024707816 + - 0.00962814 + - 0.0020706584 + - 0.044151664 + laughterScore: 0 + - frameNumber: 65 + frameDelay: 0 + Visemes: + - 0.06943717 + - 0.0125883585 + - 0.004021703 + - 0.010729968 + - 0.047296777 + - 0.0128633855 + - 0.00031207877 + - 0.11914874 + - 0.46378374 + - 0.0013096745 + - 0.1185502 + - 0.05362912 + - 0.050639987 + - 0.0017998684 + - 0.033889316 + laughterScore: 0 + - frameNumber: 66 + frameDelay: 0 + Visemes: + - 0.06219898 + - 0.0088983 + - 0.003054027 + - 0.008107371 + - 0.03667109 + - 0.00981968 + - 0.0003217427 + - 0.083688565 + - 0.32571483 + - 0.0012617996 + - 0.095358714 + - 0.12693802 + - 0.15619977 + - 0.0019554887 + - 0.07981168 + laughterScore: 0 + - frameNumber: 67 + frameDelay: 0 + Visemes: + - 0.055709664 + - 0.007410113 + - 0.0041032284 + - 0.010813075 + - 0.07064969 + - 0.018180558 + - 0.00076579844 + - 0.059317622 + - 0.22967516 + - 0.0011916878 + - 0.07197597 + - 0.120927125 + - 0.24991684 + - 0.0016362218 + - 0.097727284 + laughterScore: 0 + - frameNumber: 68 + frameDelay: 0 + Visemes: + - 0.06659386 + - 0.015878422 + - 0.0042693876 + - 0.06786735 + - 0.1694807 + - 0.060080364 + - 0.0069534895 + - 0.042858813 + - 0.16365814 + - 0.0009551839 + - 0.05395102 + - 0.08672928 + - 0.18338744 + - 0.0012708065 + - 0.07606578 + laughterScore: 0 + - frameNumber: 69 + frameDelay: 0 + Visemes: + - 0.077009514 + - 0.024027202 + - 0.0039427844 + - 0.09232974 + - 0.28053427 + - 0.073756605 + - 0.016902857 + - 0.03093955 + - 0.11504605 + - 0.0007370593 + - 0.040034946 + - 0.06089812 + - 0.1292396 + - 0.000937894 + - 0.05366386 + laughterScore: 0 + - frameNumber: 70 + frameDelay: 0 + Visemes: + - 0.10212845 + - 0.032208383 + - 0.003184193 + - 0.09640841 + - 0.32878155 + - 0.11239095 + - 0.0160798 + - 0.023334388 + - 0.08122435 + - 0.0006190339 + - 0.03001934 + - 0.042958755 + - 0.09146317 + - 0.00076482206 + - 0.038434453 + laughterScore: 0 + - frameNumber: 71 + frameDelay: 0 + Visemes: + - 0.08184541 + - 0.023399018 + - 0.002365929 + - 0.07865714 + - 0.46703333 + - 0.08166625 + - 0.040571034 + - 0.023495624 + - 0.056993883 + - 0.000459776 + - 0.021424737 + - 0.030089546 + - 0.06446441 + - 0.0005833963 + - 0.026950568 + laughterScore: 0 + - frameNumber: 72 + frameDelay: 0 + Visemes: + - 0.070706606 + - 0.01893577 + - 0.0020910604 + - 0.056286573 + - 0.37456793 + - 0.058708746 + - 0.028706934 + - 0.24713174 + - 0.039967276 + - 0.000367347 + - 0.016721329 + - 0.021105152 + - 0.045349177 + - 0.00043023014 + - 0.018924184 + laughterScore: 0 + - frameNumber: 73 + frameDelay: 0 + Visemes: + - 0.055599 + - 0.013441945 + - 0.0015211317 + - 0.03969477 + - 0.26746705 + - 0.041288532 + - 0.02016704 + - 0.4597314 + - 0.027992088 + - 0.00026370617 + - 0.012681535 + - 0.014779353 + - 0.031816766 + - 0.00030310027 + - 0.013252644 + laughterScore: 0 + - frameNumber: 74 + frameDelay: 0 + Visemes: + - 0.046251744 + - 0.009458842 + - 0.0010949062 + - 0.028049761 + - 0.19054975 + - 0.029073631 + - 0.014151208 + - 0.60846525 + - 0.019627504 + - 0.00019678641 + - 0.010674933 + - 0.010369599 + - 0.022509987 + - 0.00022786316 + - 0.009298271 + laughterScore: 0 + - frameNumber: 75 + frameDelay: 0 + Visemes: + - 0.042615905 + - 0.006706831 + - 0.0008053351 + - 0.02003154 + - 0.1390353 + - 0.02051923 + - 0.009913087 + - 0.707954 + - 0.013803651 + - 0.00014815618 + - 0.008182215 + - 0.00733575 + - 0.016214127 + - 0.00018728802 + - 0.006547641 + laughterScore: 0 + - frameNumber: 76 + frameDelay: 0 + Visemes: + - 0.0366691 + - 0.0047415434 + - 0.00065147615 + - 0.017763007 + - 0.101122126 + - 0.015472719 + - 0.0070022237 + - 0.67903113 + - 0.010119928 + - 0.00019456448 + - 0.016258836 + - 0.030085165 + - 0.07561193 + - 0.0006241576 + - 0.004652145 + laughterScore: 0 + - frameNumber: 77 + frameDelay: 0 + Visemes: + - 0.031289376 + - 0.0033915404 + - 0.00046332437 + - 0.0128867505 + - 0.07098968 + - 0.011175748 + - 0.0049175783 + - 0.47598252 + - 0.008261192 + - 0.00019560689 + - 0.018441997 + - 0.110692866 + - 0.24685454 + - 0.0010834847 + - 0.0033738443 + laughterScore: 0 + - frameNumber: 78 + frameDelay: 0 + Visemes: + - 0.028089799 + - 0.0029403323 + - 0.00033704148 + - 0.0090511935 + - 0.04975932 + - 0.009349403 + - 0.0034494575 + - 0.33333576 + - 0.006602415 + - 0.00018927228 + - 0.01510003 + - 0.13298494 + - 0.40431887 + - 0.0018524816 + - 0.0026397142 + laughterScore: 0 + - frameNumber: 79 + frameDelay: 0 + Visemes: + - 0.022024222 + - 0.0021754093 + - 0.00024508606 + - 0.0063365884 + - 0.0348647 + - 0.17902075 + - 0.0024177413 + - 0.23334068 + - 0.01025412 + - 0.00014552778 + - 0.011234309 + - 0.09898859 + - 0.39574456 + - 0.0013177972 + - 0.0018899267 + laughterScore: 0 + - frameNumber: 80 + frameDelay: 0 + Visemes: + - 0.016523225 + - 0.0020085643 + - 0.00017278353 + - 0.0044383877 + - 0.024430616 + - 0.41828388 + - 0.0016928765 + - 0.16333908 + - 0.012407025 + - 0.000102198326 + - 0.0078887 + - 0.069329835 + - 0.27712995 + - 0.0009228566 + - 0.0013300335 + laughterScore: 0 + - frameNumber: 81 + frameDelay: 0 + Visemes: + - 0.016046146 + - 0.004744874 + - 0.00016260322 + - 0.0035865533 + - 0.018683694 + - 0.5613651 + - 0.0012095608 + - 0.11436865 + - 0.029512279 + - 0.00007493986 + - 0.0057921503 + - 0.048621055 + - 0.19421214 + - 0.0006465001 + - 0.0009736961 + laughterScore: 0 + - frameNumber: 82 + frameDelay: 0 + Visemes: + - 0.021242052 + - 0.011218915 + - 0.00038291258 + - 0.0061978726 + - 0.01631609 + - 0.65678847 + - 0.000893985 + - 0.08013641 + - 0.029935796 + - 0.00006044121 + - 0.005003859 + - 0.03410336 + - 0.13626985 + - 0.00045436565 + - 0.0009955674 + laughterScore: 0 + - frameNumber: 83 + frameDelay: 0 + Visemes: + - 0.028188653 + - 0.012620175 + - 0.00047384304 + - 0.011605196 + - 0.01869056 + - 0.72291064 + - 0.0006909281 + - 0.056233708 + - 0.023211613 + - 0.000052805513 + - 0.004542507 + - 0.023920646 + - 0.095675 + - 0.00032346806 + - 0.00086022785 + laughterScore: 0 + - frameNumber: 84 + frameDelay: 0 + Visemes: + - 0.034973875 + - 0.028654736 + - 0.0005870419 + - 0.028366823 + - 0.020703567 + - 0.73718196 + - 0.00087412295 + - 0.04010397 + - 0.018201742 + - 0.000057273097 + - 0.004558833 + - 0.016823953 + - 0.06740846 + - 0.0002678801 + - 0.0012357379 + laughterScore: 0 + - frameNumber: 85 + frameDelay: 0 + Visemes: + - 0.055918053 + - 0.038282722 + - 0.001241616 + - 0.039893143 + - 0.029003162 + - 0.7248988 + - 0.0010106316 + - 0.028559608 + - 0.014528219 + - 0.000066578556 + - 0.0048933476 + - 0.012070562 + - 0.047724016 + - 0.00029381402 + - 0.0016157881 + laughterScore: 0 + - frameNumber: 86 + frameDelay: 0 + Visemes: + - 0.08747584 + - 0.039004095 + - 0.0023926133 + - 0.0466882 + - 0.032553025 + - 0.7056149 + - 0.0010690293 + - 0.020258188 + - 0.014089076 + - 0.00008626371 + - 0.0046461234 + - 0.008916327 + - 0.034503087 + - 0.00045563828 + - 0.002247598 + laughterScore: 0 + - frameNumber: 87 + frameDelay: 0 + Visemes: + - 0.06795297 + - 0.027990697 + - 0.0019548542 + - 0.052826043 + - 0.288097 + - 0.49721465 + - 0.000941141 + - 0.01663169 + - 0.010207291 + - 0.00008295874 + - 0.0033417759 + - 0.00628925 + - 0.024470933 + - 0.00032907692 + - 0.0016696702 + laughterScore: 0 + - frameNumber: 88 + frameDelay: 0 + Visemes: + - 0.05384724 + - 0.020099714 + - 0.0016583535 + - 0.09955419 + - 0.38614562 + - 0.34846008 + - 0.00072618766 + - 0.011666623 + - 0.007262648 + - 0.0003018127 + - 0.008648135 + - 0.010657454 + - 0.04915887 + - 0.00035544092 + - 0.001457612 + laughterScore: 0 + - frameNumber: 89 + frameDelay: 0 + Visemes: + - 0.04171737 + - 0.01424723 + - 0.0012925363 + - 0.08470727 + - 0.49253178 + - 0.24448197 + - 0.0008772082 + - 0.008208897 + - 0.005254058 + - 0.00051712774 + - 0.012207724 + - 0.05323543 + - 0.039277207 + - 0.00037348887 + - 0.0010707168 + laughterScore: 0 + - frameNumber: 90 + frameDelay: 0 + Visemes: + - 0.03925153 + - 0.010224459 + - 0.0009696471 + - 0.060723465 + - 0.37027147 + - 0.17139696 + - 0.0007490716 + - 0.005759154 + - 0.004197557 + - 0.0012882977 + - 0.11063194 + - 0.1878508 + - 0.03322717 + - 0.0025593617 + - 0.00089914864 + laughterScore: 0 + - frameNumber: 91 + frameDelay: 0 + Visemes: + - 0.039015368 + - 0.0072572664 + - 0.0007361988 + - 0.042764444 + - 0.2762027 + - 0.12024359 + - 0.000608381 + - 0.004051597 + - 0.0036803372 + - 0.0013544548 + - 0.21510029 + - 0.25821245 + - 0.025119016 + - 0.0049347393 + - 0.0007191988 + laughterScore: 0 + - frameNumber: 92 + frameDelay: 0 + Visemes: + - 0.033860277 + - 0.0052986117 + - 0.0006164016 + - 0.029977083 + - 0.19990101 + - 0.08444835 + - 0.00044957196 + - 0.0028730491 + - 0.0033583743 + - 0.0010502025 + - 0.3121305 + - 0.30136105 + - 0.018782197 + - 0.0052601704 + - 0.00063318183 + laughterScore: 0 + - frameNumber: 93 + frameDelay: 0 + Visemes: + - 0.033566434 + - 0.04190243 + - 0.0013464625 + - 0.02099176 + - 0.15096502 + - 0.05926968 + - 0.00032154244 + - 0.0020578732 + - 0.024257822 + - 0.0012777194 + - 0.2560813 + - 0.3780981 + - 0.019954678 + - 0.009321503 + - 0.00058770104 + laughterScore: 0 + - frameNumber: 94 + frameDelay: 0 + Visemes: + - 0.02675902 + - 0.30908558 + - 0.0012650904 + - 0.014698462 + - 0.107934505 + - 0.041536774 + - 0.00022548536 + - 0.0014529136 + - 0.030071827 + - 0.0009292195 + - 0.18013188 + - 0.26479313 + - 0.014177498 + - 0.006525786 + - 0.00041290926 + laughterScore: 0 + - frameNumber: 95 + frameDelay: 0 + Visemes: + - 0.022885531 + - 0.51037425 + - 0.00089862617 + - 0.010345088 + - 0.0757713 + - 0.02908616 + - 0.00015827609 + - 0.0010197265 + - 0.022117965 + - 0.00065141567 + - 0.12641293 + - 0.18537436 + - 0.01004093 + - 0.0045681526 + - 0.00029530644 + laughterScore: 0 + - frameNumber: 96 + frameDelay: 0 + Visemes: + - 0.018891856 + - 0.6404621 + - 0.00074154325 + - 0.007457844 + - 0.054208852 + - 0.020457858 + - 0.000120156874 + - 0.00074588734 + - 0.019459028 + - 0.00053997064 + - 0.09217339 + - 0.13069181 + - 0.010059876 + - 0.0032339839 + - 0.0007558366 + laughterScore: 0 + - frameNumber: 97 + frameDelay: 0 + Visemes: + - 0.028363474 + - 0.51170087 + - 0.0005889558 + - 0.008123036 + - 0.03871512 + - 0.015487171 + - 0.000099774596 + - 0.00068790355 + - 0.027744215 + - 0.0011758126 + - 0.19247021 + - 0.10943074 + - 0.039217543 + - 0.024402004 + - 0.0017931199 + laughterScore: 0 + - frameNumber: 98 + frameDelay: 0 + Visemes: + - 0.038320776 + - 0.39480782 + - 0.00046921326 + - 0.006763586 + - 0.02950316 + - 0.014035546 + - 0.0000972032 + - 0.00081485766 + - 0.029550359 + - 0.0018285296 + - 0.26462126 + - 0.09174236 + - 0.061978985 + - 0.062152572 + - 0.0033137077 + laughterScore: 0 + - frameNumber: 99 + frameDelay: 0 + Visemes: + - 0.039392862 + - 0.2993533 + - 0.00046294805 + - 0.005977528 + - 0.022928452 + - 0.011628456 + - 0.000079994345 + - 0.0007336058 + - 0.029751178 + - 0.0027595866 + - 0.38966984 + - 0.0711422 + - 0.05509966 + - 0.067912936 + - 0.0031074078 + laughterScore: 0 + - frameNumber: 100 + frameDelay: 0 + Visemes: + - 0.03593653 + - 0.21178599 + - 0.00040322536 + - 0.0059419638 + - 0.017657062 + - 0.008757024 + - 0.0000592025 + - 0.00055959896 + - 0.022172192 + - 0.0072907126 + - 0.5309373 + - 0.05274121 + - 0.040173452 + - 0.06288337 + - 0.0027011358 + laughterScore: 0 + - frameNumber: 101 + frameDelay: 0 + Visemes: + - 0.03237486 + - 0.14966202 + - 0.00063374295 + - 0.0047812676 + - 0.016722867 + - 0.0064401906 + - 0.000045064116 + - 0.0004906043 + - 0.01936207 + - 0.011319741 + - 0.617712 + - 0.03822789 + - 0.030242758 + - 0.06908316 + - 0.0029017376 + laughterScore: 0 + - frameNumber: 102 + frameDelay: 0 + Visemes: + - 0.03410927 + - 0.10592623 + - 0.0012132379 + - 0.0034922126 + - 0.014335929 + - 0.004893616 + - 0.000033474516 + - 0.0005056675 + - 0.024675407 + - 0.013739752 + - 0.5029475 + - 0.02805909 + - 0.021712951 + - 0.23815224 + - 0.0062034484 + laughterScore: 0 + - frameNumber: 103 + frameDelay: 0 + Visemes: + - 0.043752037 + - 0.07816314 + - 0.0020255877 + - 0.0028712747 + - 0.015075946 + - 0.004574948 + - 0.000041553427 + - 0.0009181808 + - 0.05621866 + - 0.011078524 + - 0.3844725 + - 0.02053523 + - 0.015735552 + - 0.34565747 + - 0.018879425 + laughterScore: 0 + - frameNumber: 104 + frameDelay: 0 + Visemes: + - 0.045025762 + - 0.0690388 + - 0.002338903 + - 0.0039424626 + - 0.01505513 + - 0.0075767897 + - 0.0002707045 + - 0.002700721 + - 0.09890065 + - 0.00841088 + - 0.30206168 + - 0.014716443 + - 0.012518727 + - 0.39480144 + - 0.022640945 + laughterScore: 0 + - frameNumber: 105 + frameDelay: 0 + Visemes: + - 0.042763263 + - 0.059583735 + - 0.0035950039 + - 0.0057557886 + - 0.019003185 + - 0.0070396825 + - 0.00047282243 + - 0.0053967508 + - 0.123597234 + - 0.006573273 + - 0.22760065 + - 0.010479234 + - 0.010013548 + - 0.46183437 + - 0.016291464 + laughterScore: 0 + - frameNumber: 106 + frameDelay: 0 + Visemes: + - 0.03796515 + - 0.052504107 + - 0.0032560425 + - 0.0057785735 + - 0.015046106 + - 0.006004295 + - 0.0003746707 + - 0.004166157 + - 0.09963648 + - 0.0049225297 + - 0.1641388 + - 0.007374326 + - 0.0071173795 + - 0.5799581 + - 0.011757279 + laughterScore: 0 + - frameNumber: 107 + frameDelay: 0 + Visemes: + - 0.040138826 + - 0.059881013 + - 0.002752834 + - 0.0067144474 + - 0.012505183 + - 0.0062021445 + - 0.00030353534 + - 0.0031655356 + - 0.08665398 + - 0.003851371 + - 0.12247251 + - 0.0052084145 + - 0.005100249 + - 0.63649744 + - 0.008552517 + laughterScore: 0 + - frameNumber: 108 + frameDelay: 0 + Visemes: + - 0.052037492 + - 0.059344806 + - 0.002403445 + - 0.0077762613 + - 0.011491224 + - 0.0064544873 + - 0.0002499851 + - 0.0024983378 + - 0.07965855 + - 0.0031469504 + - 0.093626976 + - 0.00389395 + - 0.004147238 + - 0.666751 + - 0.006519266 + laughterScore: 0 + - frameNumber: 109 + frameDelay: 0 + Visemes: + - 0.058834374 + - 0.04951191 + - 0.0018110872 + - 0.0067824638 + - 0.009398339 + - 0.005522023 + - 0.00018024168 + - 0.0018348108 + - 0.06907319 + - 0.0023405955 + - 0.090667695 + - 0.0028045184 + - 0.0032733805 + - 0.69313717 + - 0.0048281853 + laughterScore: 0 + - frameNumber: 110 + frameDelay: 0 + Visemes: + - 0.12384571 + - 0.08202034 + - 0.0014928023 + - 0.0052591437 + - 0.008198746 + - 0.008101005 + - 0.00013102144 + - 0.0013569253 + - 0.06611106 + - 0.0018408018 + - 0.0741044 + - 0.00241727 + - 0.0046116114 + - 0.61667365 + - 0.003835525 + laughterScore: 0 + - frameNumber: 111 + frameDelay: 0 + Visemes: + - 0.29147753 + - 0.08607516 + - 0.0011428643 + - 0.0037579145 + - 0.0068398556 + - 0.0072281435 + - 0.00009660011 + - 0.0009947983 + - 0.05792299 + - 0.0013857958 + - 0.056323595 + - 0.0018272509 + - 0.0040260763 + - 0.47810948 + - 0.0027919454 + laughterScore: 0 + - frameNumber: 112 + frameDelay: 0 + Visemes: + - 0.4815451 + - 0.06841241 + - 0.000819326 + - 0.0027060462 + - 0.0051010153 + - 0.0058443127 + - 0.000077753444 + - 0.00072044873 + - 0.04367846 + - 0.0010116765 + - 0.040867954 + - 0.001477543 + - 0.0032786408 + - 0.34242198 + - 0.0020373443 + laughterScore: 0 + - frameNumber: 113 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 114 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 115 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 116 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 117 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 118 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 119 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 120 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 121 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 122 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 123 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 124 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 125 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 126 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 127 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 128 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 129 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 130 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 131 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 132 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 133 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 134 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 135 + frameDelay: 0 + Visemes: + - 0.4997569 + - 0.02457645 + - 0.0007633354 + - 0.0036130578 + - 0.0015884994 + - 0.017746048 + - 0.0006371104 + - 0.0016318428 + - 0.0145978555 + - 0.0008613867 + - 0.34244105 + - 0.00941612 + - 0.008533899 + - 0.06953105 + - 0.0043054 + laughterScore: 0 + - frameNumber: 136 + frameDelay: 0 + Visemes: + - 0.36959445 + - 0.017712899 + - 0.0006884595 + - 0.0026145515 + - 0.0014428588 + - 0.01656808 + - 0.00046095648 + - 0.0012113521 + - 0.014034335 + - 0.0018613132 + - 0.47044688 + - 0.0115263825 + - 0.0075727575 + - 0.080654174 + - 0.003610538 + laughterScore: 0 + - frameNumber: 137 + frameDelay: 0 + Visemes: + - 0.26810223 + - 0.012721831 + - 0.00052521523 + - 0.0019020812 + - 0.0012267634 + - 0.014185488 + - 0.00033775772 + - 0.0008775814 + - 0.013455514 + - 0.0065394174 + - 0.5852049 + - 0.015413262 + - 0.0057552094 + - 0.07088618 + - 0.0028665536 + laughterScore: 0 + - frameNumber: 138 + frameDelay: 0 + Visemes: + - 0.19503479 + - 0.009412985 + - 0.00042832602 + - 0.0016105996 + - 0.0029658969 + - 0.010849274 + - 0.0007962963 + - 0.00077544374 + - 0.015932191 + - 0.011124879 + - 0.67256886 + - 0.013448061 + - 0.0050600544 + - 0.054945316 + - 0.0050470075 + laughterScore: 0 + - frameNumber: 139 + frameDelay: 0 + Visemes: + - 0.14451137 + - 0.0088069 + - 0.00051364774 + - 0.0019690949 + - 0.011456111 + - 0.010938535 + - 0.006912536 + - 0.0018500991 + - 0.041570045 + - 0.014533311 + - 0.6747343 + - 0.015077716 + - 0.013799218 + - 0.04472022 + - 0.008606881 + laughterScore: 0 + - frameNumber: 140 + frameDelay: 0 + Visemes: + - 0.10442167 + - 0.0062362077 + - 0.00046434934 + - 0.00678935 + - 0.03270248 + - 0.2628223 + - 0.005110837 + - 0.0019281051 + - 0.029522365 + - 0.010255797 + - 0.48096496 + - 0.010648443 + - 0.010319168 + - 0.031775303 + - 0.0060386043 + laughterScore: 0 + - frameNumber: 141 + frameDelay: 0 + Visemes: + - 0.07654335 + - 0.004423649 + - 0.00042375835 + - 0.008703718 + - 0.038171478 + - 0.45446146 + - 0.0040307646 + - 0.0017838337 + - 0.02073888 + - 0.0071962764 + - 0.3421883 + - 0.007470823 + - 0.007304113 + - 0.022322742 + - 0.004236801 + laughterScore: 0 + - frameNumber: 142 + frameDelay: 0 + Visemes: + - 0.056731876 + - 0.0031238126 + - 0.00032693165 + - 0.006974632 + - 0.039573897 + - 0.59803087 + - 0.0043530744 + - 0.0018329474 + - 0.014534979 + - 0.005043656 + - 0.24043904 + - 0.005235161 + - 0.005138299 + - 0.0156872 + - 0.0029735619 + laughterScore: 0 + - frameNumber: 143 + frameDelay: 0 + Visemes: + - 0.047102008 + - 0.002195468 + - 0.00025748136 + - 0.004933282 + - 0.032433636 + - 0.6819451 + - 0.020670524 + - 0.007510179 + - 0.0101801455 + - 0.003535143 + - 0.16840515 + - 0.003674779 + - 0.0040392056 + - 0.0109937 + - 0.0021241365 + laughterScore: 0 + - frameNumber: 144 + frameDelay: 0 + Visemes: + - 0.03568381 + - 0.0015394308 + - 0.00018229937 + - 0.0034600932 + - 0.022787113 + - 0.76474774 + - 0.0149748605 + - 0.0053583225 + - 0.0071321437 + - 0.002495854 + - 0.12112795 + - 0.00271026 + - 0.008376511 + - 0.007697654 + - 0.0017259639 + laughterScore: 0 + - frameNumber: 145 + frameDelay: 0 + Visemes: + - 0.031434946 + - 0.0011186491 + - 0.00013723802 + - 0.002457481 + - 0.015992468 + - 0.5639369 + - 0.013469327 + - 0.0038438267 + - 0.005051645 + - 0.0017981754 + - 0.26956898 + - 0.03207404 + - 0.047648616 + - 0.0054255603 + - 0.0060420902 + laughterScore: 0 + - frameNumber: 146 + frameDelay: 0 + Visemes: + - 0.050789658 + - 0.00087452657 + - 0.00011512956 + - 0.0021554194 + - 0.011538688 + - 0.40504435 + - 0.021834904 + - 0.0029458203 + - 0.0044801743 + - 0.004246559 + - 0.2715215 + - 0.09065281 + - 0.095742494 + - 0.009847541 + - 0.028210398 + laughterScore: 0 + - frameNumber: 147 + frameDelay: 0 + Visemes: + - 0.055074956 + - 0.00087751955 + - 0.00013283166 + - 0.0015454541 + - 0.009921504 + - 0.28604373 + - 0.015348537 + - 0.0024470063 + - 0.06432231 + - 0.018874776 + - 0.20986485 + - 0.070705295 + - 0.08193424 + - 0.022240516 + - 0.16066645 + laughterScore: 0 + - frameNumber: 148 + frameDelay: 0 + Visemes: + - 0.043478236 + - 0.0008579445 + - 0.00024761792 + - 0.0012871163 + - 0.008116435 + - 0.20093895 + - 0.010759077 + - 0.0018822638 + - 0.3231681 + - 0.017892871 + - 0.14822917 + - 0.049629737 + - 0.057927944 + - 0.016930293 + - 0.118654236 + laughterScore: 0 + - frameNumber: 149 + frameDelay: 0 + Visemes: + - 0.032461118 + - 0.00074874813 + - 0.00030078657 + - 0.0015987835 + - 0.006140773 + - 0.14084281 + - 0.0075364606 + - 0.0013653163 + - 0.51239336 + - 0.013202124 + - 0.10541377 + - 0.034938503 + - 0.041313984 + - 0.012329468 + - 0.089413986 + laughterScore: 0 + - frameNumber: 150 + frameDelay: 0 + Visemes: + - 0.025961122 + - 0.0007306588 + - 0.00030325717 + - 0.0017363708 + - 0.004860199 + - 0.099281326 + - 0.0053171976 + - 0.0009873762 + - 0.4994892 + - 0.01401544 + - 0.14460632 + - 0.02728729 + - 0.09340415 + - 0.014308006 + - 0.067712046 + laughterScore: 0 + - frameNumber: 151 + frameDelay: 0 + Visemes: + - 0.021580914 + - 0.00070765615 + - 0.0011099747 + - 0.0020229425 + - 0.0049021007 + - 0.07012266 + - 0.0037657232 + - 0.004726608 + - 0.37688932 + - 0.012553897 + - 0.18158564 + - 0.02305552 + - 0.23042095 + - 0.015015842 + - 0.05154023 + laughterScore: 0 + - frameNumber: 152 + frameDelay: 0 + Visemes: + - 0.023667276 + - 0.0011428874 + - 0.0020902287 + - 0.0063787433 + - 0.035740286 + - 0.050929233 + - 0.0026661577 + - 0.20854405 + - 0.27107388 + - 0.009793049 + - 0.1495293 + - 0.01630836 + - 0.17503773 + - 0.010821348 + - 0.03627747 + laughterScore: 0 + - frameNumber: 153 + frameDelay: 0 + Visemes: + - 0.039005697 + - 0.0013756761 + - 0.002459702 + - 0.009818966 + - 0.091071755 + - 0.037296806 + - 0.00202073 + - 0.34128618 + - 0.1906238 + - 0.007112073 + - 0.110100076 + - 0.011443222 + - 0.12327933 + - 0.0076534734 + - 0.02545249 + laughterScore: 0 + - frameNumber: 154 + frameDelay: 0 + Visemes: + - 0.044636726 + - 0.0014508374 + - 0.0025083786 + - 0.0091599785 + - 0.09059214 + - 0.026616663 + - 0.0014764045 + - 0.4879857 + - 0.13365707 + - 0.005041875 + - 0.07850945 + - 0.008049838 + - 0.086911574 + - 0.005443826 + - 0.017959563 + laughterScore: 0 + - frameNumber: 155 + frameDelay: 0 + Visemes: + - 0.058021843 + - 0.001892318 + - 0.0024222997 + - 0.013222102 + - 0.10034859 + - 0.020982934 + - 0.0011043506 + - 0.56278366 + - 0.09429967 + - 0.0035713075 + - 0.057309873 + - 0.005680871 + - 0.061670136 + - 0.0039610006 + - 0.0127291065 + laughterScore: 0 + - frameNumber: 156 + frameDelay: 0 + Visemes: + - 0.053910032 + - 0.07765001 + - 0.0022456446 + - 0.019962445 + - 0.116948426 + - 0.015752366 + - 0.00092394225 + - 0.45967102 + - 0.11003008 + - 0.002694603 + - 0.06726078 + - 0.00469794 + - 0.05374615 + - 0.0028725194 + - 0.011634082 + laughterScore: 0 + - frameNumber: 157 + frameDelay: 0 + Visemes: + - 0.04923777 + - 0.10314576 + - 0.0020361417 + - 0.016593872 + - 0.08732201 + - 0.011285355 + - 0.00066501996 + - 0.32835776 + - 0.2571803 + - 0.002551978 + - 0.07222409 + - 0.0041938704 + - 0.04266656 + - 0.0024861752 + - 0.020053338 + laughterScore: 0 + - frameNumber: 158 + frameDelay: 0 + Visemes: + - 0.04596574 + - 0.07864524 + - 0.0016373935 + - 0.013017435 + - 0.062464066 + - 0.008168409 + - 0.0004751454 + - 0.23017474 + - 0.4343412 + - 0.0020471844 + - 0.052641865 + - 0.00465035 + - 0.03170015 + - 0.0021366635 + - 0.03193446 + laughterScore: 0 + - frameNumber: 159 + frameDelay: 0 + Visemes: + - 0.037227876 + - 0.05543257 + - 0.0011682397 + - 0.009295752 + - 0.043895125 + - 0.00577635 + - 0.00034080015 + - 0.16114114 + - 0.57962406 + - 0.0014660582 + - 0.039301455 + - 0.0049793157 + - 0.03158369 + - 0.0015443405 + - 0.027223192 + laughterScore: 0 + - frameNumber: 160 + frameDelay: 0 + Visemes: + - 0.04256703 + - 0.03913025 + - 0.00083024503 + - 0.007269121 + - 0.031023616 + - 0.0046471246 + - 0.00032413093 + - 0.11284052 + - 0.51913756 + - 0.0012679542 + - 0.04604871 + - 0.028026344 + - 0.144946 + - 0.0011833034 + - 0.020758055 + laughterScore: 0 + - frameNumber: 161 + frameDelay: 0 + Visemes: + - 0.03749201 + - 0.027561352 + - 0.0006597255 + - 0.0061688735 + - 0.025740238 + - 0.003506951 + - 0.00025822473 + - 0.079089254 + - 0.3647781 + - 0.001582837 + - 0.037852272 + - 0.031841815 + - 0.36133316 + - 0.0015577221 + - 0.020577447 + laughterScore: 0 + - frameNumber: 162 + frameDelay: 0 + Visemes: + - 0.03380577 + - 0.09693343 + - 0.0036202916 + - 0.015652377 + - 0.092319116 + - 0.01711316 + - 0.0012513043 + - 0.055452723 + - 0.25611958 + - 0.0013336018 + - 0.028547823 + - 0.027175138 + - 0.3457567 + - 0.0015266157 + - 0.023392335 + laughterScore: 0 + - frameNumber: 163 + frameDelay: 0 + Visemes: + - 0.026864773 + - 0.32254037 + - 0.0045066173 + - 0.024682656 + - 0.0841154 + - 0.017470866 + - 0.0011742291 + - 0.038854446 + - 0.1793323 + - 0.0009430007 + - 0.020245066 + - 0.01906317 + - 0.24271032 + - 0.001082943 + - 0.016413864 + laughterScore: 0 + - frameNumber: 164 + frameDelay: 0 + Visemes: + - 0.023067174 + - 0.4650646 + - 0.007798618 + - 0.023718705 + - 0.097973734 + - 0.014123436 + - 0.003439476 + - 0.028484236 + - 0.12556925 + - 0.00066834164 + - 0.014315704 + - 0.013362967 + - 0.17009516 + - 0.00077673927 + - 0.01154184 + laughterScore: 0 + - frameNumber: 165 + frameDelay: 0 + Visemes: + - 0.024527032 + - 0.4467969 + - 0.0064147455 + - 0.018321784 + - 0.12138432 + - 0.013725969 + - 0.0026306883 + - 0.13012688 + - 0.087948576 + - 0.000504185 + - 0.010288159 + - 0.009381632 + - 0.119170114 + - 0.00055907416 + - 0.0082199145 + laughterScore: 0 + - frameNumber: 166 + frameDelay: 0 + Visemes: + - 0.02281138 + - 0.41276994 + - 0.004675603 + - 0.013316987 + - 0.09007257 + - 0.010102017 + - 0.0018647786 + - 0.2782476 + - 0.061606884 + - 0.00038950067 + - 0.007812813 + - 0.006591895 + - 0.08353738 + - 0.0004011589 + - 0.0057994872 + laughterScore: 0 + - frameNumber: 167 + frameDelay: 0 + Visemes: + - 0.020004261 + - 0.30329272 + - 0.0034011935 + - 0.009465639 + - 0.064780354 + - 0.0072282497 + - 0.0013182238 + - 0.47268543 + - 0.0431657 + - 0.0002907841 + - 0.006819544 + - 0.004626957 + - 0.058546994 + - 0.00028648393 + - 0.0040874877 + laughterScore: 0 + - frameNumber: 168 + frameDelay: 0 + Visemes: + - 0.022479463 + - 0.21245687 + - 0.0025090463 + - 0.007588499 + - 0.049258262 + - 0.005189195 + - 0.00093411835 + - 0.6147436 + - 0.030438581 + - 0.00022184334 + - 0.0065138214 + - 0.0032713092 + - 0.041189723 + - 0.0002617471 + - 0.0029439642 + laughterScore: 0 + - frameNumber: 169 + frameDelay: 0 + Visemes: + - 0.03188533 + - 0.14920948 + - 0.0021638395 + - 0.008107258 + - 0.042336084 + - 0.0037607201 + - 0.00066400634 + - 0.7000948 + - 0.021533594 + - 0.00018321605 + - 0.0059720585 + - 0.0023588869 + - 0.029267767 + - 0.00024124469 + - 0.0022216933 + laughterScore: 0 + - frameNumber: 170 + frameDelay: 0 + Visemes: + - 0.036764108 + - 0.10492984 + - 0.0022642156 + - 0.011980617 + - 0.04674381 + - 0.0039606737 + - 0.00053976447 + - 0.7357792 + - 0.017837685 + - 0.0002402624 + - 0.0070879078 + - 0.0026170763 + - 0.02672905 + - 0.0003388045 + - 0.002186977 + laughterScore: 0 + - frameNumber: 171 + frameDelay: 0 + Visemes: + - 0.031422704 + - 0.07370609 + - 0.0018677551 + - 0.012050642 + - 0.043465137 + - 0.0038471916 + - 0.0005818857 + - 0.5384295 + - 0.013177926 + - 0.0003423858 + - 0.021690452 + - 0.10600808 + - 0.14897358 + - 0.0023575707 + - 0.0020791516 + laughterScore: 0 + - frameNumber: 172 + frameDelay: 0 + Visemes: + - 0.026118003 + - 0.05161759 + - 0.0013201254 + - 0.008972679 + - 0.031692147 + - 0.0028158366 + - 0.00045615097 + - 0.37815344 + - 0.009440825 + - 0.0005968984 + - 0.021348437 + - 0.16585332 + - 0.29667285 + - 0.002822275 + - 0.0021194778 + laughterScore: 0 + - frameNumber: 173 + frameDelay: 0 + Visemes: + - 0.024251793 + - 0.03616917 + - 0.00094663515 + - 0.0064115003 + - 0.022565627 + - 0.0020705396 + - 0.00034986495 + - 0.26513517 + - 0.0067154993 + - 0.0008198733 + - 0.019856745 + - 0.23724404 + - 0.37164345 + - 0.0033501917 + - 0.0024699462 + laughterScore: 0 + - frameNumber: 174 + frameDelay: 0 + Visemes: + - 0.022586074 + - 0.025899073 + - 0.0007168991 + - 0.004541787 + - 0.016366122 + - 0.0033210479 + - 0.00028081372 + - 0.18575752 + - 0.0064805755 + - 0.0007688361 + - 0.018532807 + - 0.24749409 + - 0.45586288 + - 0.0030899078 + - 0.008301597 + laughterScore: 0 + - frameNumber: 175 + frameDelay: 0 + Visemes: + - 0.018776871 + - 0.01876414 + - 0.0005975516 + - 0.0031828894 + - 0.012401237 + - 0.09925593 + - 0.00020151139 + - 0.13004653 + - 0.018338583 + - 0.000570561 + - 0.015116053 + - 0.18600816 + - 0.48838663 + - 0.0021951695 + - 0.006158227 + laughterScore: 0 + - frameNumber: 176 + frameDelay: 0 + Visemes: + - 0.014881355 + - 0.013967392 + - 0.0004536387 + - 0.0022307558 + - 0.009178836 + - 0.31635785 + - 0.00014405107 + - 0.09104052 + - 0.06000386 + - 0.00040287414 + - 0.010869599 + - 0.13044353 + - 0.34415218 + - 0.0015374561 + - 0.0043361243 + laughterScore: 0 + - frameNumber: 177 + frameDelay: 0 + Visemes: + - 0.013212339 + - 0.012298985 + - 0.00033623783 + - 0.0017497378 + - 0.015327995 + - 0.47601324 + - 0.00011725952 + - 0.063741714 + - 0.07218104 + - 0.00028424966 + - 0.00800957 + - 0.09138199 + - 0.24115604 + - 0.0010771358 + - 0.003112473 + laughterScore: 0 + - frameNumber: 178 + frameDelay: 0 + Visemes: + - 0.012771027 + - 0.011294251 + - 0.00027764894 + - 0.0014052714 + - 0.016665429 + - 0.60764396 + - 0.00013066674 + - 0.044631545 + - 0.062427085 + - 0.00020914405 + - 0.006388377 + - 0.06400704 + - 0.16915506 + - 0.0007584805 + - 0.0022350329 + laughterScore: 0 + - frameNumber: 179 + frameDelay: 0 + Visemes: + - 0.016576687 + - 0.02200568 + - 0.00035641115 + - 0.0022591199 + - 0.015909806 + - 0.6900797 + - 0.00015340815 + - 0.031291984 + - 0.05016005 + - 0.00015240216 + - 0.0055185147 + - 0.04481385 + - 0.118595295 + - 0.0005347742 + - 0.0015923459 + laughterScore: 0 + - frameNumber: 180 + frameDelay: 0 + Visemes: + - 0.014086846 + - 0.017399177 + - 0.0005440423 + - 0.0058572656 + - 0.015399868 + - 0.7694574 + - 0.00015234001 + - 0.021975039 + - 0.035152506 + - 0.000109910616 + - 0.0038853146 + - 0.03138616 + - 0.08308611 + - 0.00037782098 + - 0.0011302368 + laughterScore: 0 + - frameNumber: 181 + frameDelay: 0 + Visemes: + - 0.015651302 + - 0.012751927 + - 0.00066746987 + - 0.009771483 + - 0.011700978 + - 0.81015474 + - 0.0001277293 + - 0.015439442 + - 0.02472292 + - 0.00016396516 + - 0.0054526487 + - 0.022990406 + - 0.06894927 + - 0.00034082052 + - 0.0011149372 + laughterScore: 0 + - frameNumber: 182 + frameDelay: 0 + Visemes: + - 0.01682693 + - 0.008961084 + - 0.0004925296 + - 0.00866122 + - 0.00925957 + - 0.5988272 + - 0.00017798804 + - 0.010945653 + - 0.017436212 + - 0.0003733737 + - 0.045394465 + - 0.06237238 + - 0.21776085 + - 0.0004322502 + - 0.0020783313 + laughterScore: 0 + - frameNumber: 183 + frameDelay: 0 + Visemes: + - 0.021988979 + - 0.006307506 + - 0.00036705012 + - 0.0073434487 + - 0.008771362 + - 0.42354274 + - 0.00016056531 + - 0.008080572 + - 0.013457438 + - 0.0015380445 + - 0.08848247 + - 0.13078487 + - 0.2857061 + - 0.0014507648 + - 0.0020181166 + laughterScore: 0 + - frameNumber: 184 + frameDelay: 0 + Visemes: + - 0.030427702 + - 0.0047013145 + - 0.000625091 + - 0.0056784186 + - 0.084150195 + - 0.2976082 + - 0.00015020394 + - 0.10854726 + - 0.013792719 + - 0.0014423669 + - 0.09224654 + - 0.11264558 + - 0.2443362 + - 0.0021615438 + - 0.001486646 + laughterScore: 0 + - frameNumber: 185 + frameDelay: 0 + Visemes: + - 0.025925849 + - 0.0033785133 + - 0.0005473307 + - 0.005463231 + - 0.076580584 + - 0.20846055 + - 0.00013139276 + - 0.3512191 + - 0.009763726 + - 0.0010244646 + - 0.06492618 + - 0.078880906 + - 0.17112334 + - 0.0015205062 + - 0.0010543162 + laughterScore: 0 + - frameNumber: 186 + frameDelay: 0 + Visemes: + - 0.024923073 + - 0.002473798 + - 0.00039789453 + - 0.020105151 + - 0.054780137 + - 0.14722085 + - 0.00011653319 + - 0.47432953 + - 0.049173404 + - 0.00075611006 + - 0.04703944 + - 0.055327777 + - 0.1207037 + - 0.0012949582 + - 0.0013576244 + laughterScore: 0 + - frameNumber: 187 + frameDelay: 0 + Visemes: + - 0.026354808 + - 0.0027923542 + - 0.00036338926 + - 0.015926482 + - 0.038960293 + - 0.11082129 + - 0.00011573607 + - 0.35527265 + - 0.06369662 + - 0.0007566991 + - 0.19559711 + - 0.040362936 + - 0.10330032 + - 0.010266848 + - 0.03541245 + laughterScore: 0 + - frameNumber: 188 + frameDelay: 0 + Visemes: + - 0.027306557 + - 0.0021945692 + - 0.000638683 + - 0.011480434 + - 0.030605914 + - 0.07901038 + - 0.00009085033 + - 0.25306714 + - 0.10903734 + - 0.0009330149 + - 0.3046705 + - 0.028871357 + - 0.08270096 + - 0.016961202 + - 0.052431095 + laughterScore: 0 + - frameNumber: 189 + frameDelay: 0 + Visemes: + - 0.029539619 + - 0.001847472 + - 0.0011571937 + - 0.008313333 + - 0.038372956 + - 0.055871107 + - 0.00007439323 + - 0.18041216 + - 0.23600781 + - 0.00082021963 + - 0.262776 + - 0.020298867 + - 0.060164675 + - 0.017127052 + - 0.08721718 + laughterScore: 0 + - frameNumber: 190 + frameDelay: 0 + Visemes: + - 0.024189923 + - 0.0013943333 + - 0.0009330715 + - 0.005920571 + - 0.02813923 + - 0.03927801 + - 0.000055211956 + - 0.1263861 + - 0.42708796 + - 0.000673764 + - 0.18568534 + - 0.01422571 + - 0.04219037 + - 0.012698861 + - 0.09114156 + laughterScore: 0 + - frameNumber: 191 + frameDelay: 0 + Visemes: + - 0.021475866 + - 0.0011331552 + - 0.001667291 + - 0.0043738196 + - 0.021516826 + - 0.028273119 + - 0.000042919197 + - 0.08853524 + - 0.5595749 + - 0.00068363803 + - 0.13514794 + - 0.010039279 + - 0.030203544 + - 0.0103533035 + - 0.08697918 + laughterScore: 0 + - frameNumber: 192 + frameDelay: 0 + Visemes: + - 0.016843721 + - 0.00084598584 + - 0.0011821652 + - 0.0032517363 + - 0.015144769 + - 0.01982942 + - 0.000030361096 + - 0.061981678 + - 0.68313235 + - 0.0005837896 + - 0.09504988 + - 0.0072632134 + - 0.0212536 + - 0.0073104133 + - 0.06629695 + laughterScore: 0 + - frameNumber: 193 + frameDelay: 0 + Visemes: + - 0.012790658 + - 0.00061163784 + - 0.000851124 + - 0.0024936206 + - 0.010715375 + - 0.013917609 + - 0.000021514958 + - 0.043388482 + - 0.769206 + - 0.00049921375 + - 0.06894198 + - 0.009724369 + - 0.014962096 + - 0.0051902225 + - 0.046686105 + laughterScore: 0 + - frameNumber: 194 + frameDelay: 0 + Visemes: + - 0.01849867 + - 0.0005295011 + - 0.0006432551 + - 0.0024258948 + - 0.007846538 + - 0.010175353 + - 0.000018721612 + - 0.030379014 + - 0.62300885 + - 0.0011427837 + - 0.15034118 + - 0.10228229 + - 0.010743538 + - 0.008985381 + - 0.032979053 + laughterScore: 0 + - frameNumber: 195 + frameDelay: 0 + Visemes: + - 0.019189335 + - 0.00040245417 + - 0.0004804348 + - 0.0017898428 + - 0.0059247324 + - 0.0076922965 + - 0.000016112877 + - 0.021270314 + - 0.43833497 + - 0.0014061414 + - 0.25214863 + - 0.21168335 + - 0.0077581285 + - 0.008766695 + - 0.023136621 + laughterScore: 0 + - frameNumber: 196 + frameDelay: 0 + Visemes: + - 0.017539907 + - 0.00029606707 + - 0.00035435913 + - 0.001310186 + - 0.0045220465 + - 0.0059280912 + - 0.00002217756 + - 0.014898866 + - 0.30752268 + - 0.0012105028 + - 0.28705963 + - 0.3304194 + - 0.0055299504 + - 0.0071721724 + - 0.016213981 + laughterScore: 0 + - frameNumber: 197 + frameDelay: 0 + Visemes: + - 0.016771758 + - 0.00026787625 + - 0.00027177352 + - 0.00095811684 + - 0.0039472138 + - 0.004336979 + - 0.000056788853 + - 0.010447763 + - 0.21587329 + - 0.0015496523 + - 0.38150558 + - 0.34057772 + - 0.003950886 + - 0.008081088 + - 0.0114035085 + laughterScore: 0 + - frameNumber: 198 + frameDelay: 0 + Visemes: + - 0.015035646 + - 0.00029887186 + - 0.00024261553 + - 0.00068392116 + - 0.0034841807 + - 0.0032963986 + - 0.000149707 + - 0.0073388903 + - 0.15148559 + - 0.0023293246 + - 0.54462856 + - 0.25412682 + - 0.002851173 + - 0.0058061136 + - 0.008242206 + laughterScore: 0 + - frameNumber: 199 + frameDelay: 0 + Visemes: + - 0.012850264 + - 0.00044423298 + - 0.00038528518 + - 0.00057200855 + - 0.0035228506 + - 0.0032516448 + - 0.00024248555 + - 0.00520361 + - 0.10660429 + - 0.0027639545 + - 0.6709732 + - 0.1803417 + - 0.0022393041 + - 0.004138522 + - 0.006466611 + laughterScore: 0 + - frameNumber: 200 + frameDelay: 0 + Visemes: + - 0.0145234745 + - 0.08123023 + - 0.034622453 + - 0.0014732472 + - 0.019277617 + - 0.00781265 + - 0.000815931 + - 0.0040257676 + - 0.078380644 + - 0.004942805 + - 0.5634395 + - 0.12778144 + - 0.007750856 + - 0.0034871518 + - 0.050436247 + laughterScore: 0 + - frameNumber: 201 + frameDelay: 0 + Visemes: + - 0.012528925 + - 0.29422805 + - 0.06352362 + - 0.0011937638 + - 0.023248985 + - 0.0062697567 + - 0.00058592635 + - 0.002823685 + - 0.055016942 + - 0.003859895 + - 0.40249017 + - 0.08958407 + - 0.0063163843 + - 0.0024557563 + - 0.035874076 + laughterScore: 0 + - frameNumber: 202 + frameDelay: 0 + Visemes: + - 0.0113697285 + - 0.47577393 + - 0.05924415 + - 0.000905024 + - 0.023034394 + - 0.0050332444 + - 0.00042529058 + - 0.0019862875 + - 0.038549475 + - 0.0027746442 + - 0.28656262 + - 0.06279568 + - 0.0046433723 + - 0.0017208408 + - 0.025181359 + laughterScore: 0 + - frameNumber: 203 + frameDelay: 0 + Visemes: + - 0.01471274 + - 0.5620915 + - 0.0835957 + - 0.00096171 + - 0.034336466 + - 0.0044634235 + - 0.000372799 + - 0.0016313166 + - 0.027008908 + - 0.0019949884 + - 0.20258471 + - 0.04399459 + - 0.003381137 + - 0.0012073627 + - 0.017662631 + laughterScore: 0 + - frameNumber: 204 + frameDelay: 0 + Visemes: + - 0.017946107 + - 0.65563273 + - 0.08313887 + - 0.0009411989 + - 0.027034895 + - 0.0038228726 + - 0.0002846099 + - 0.0012393175 + - 0.01891491 + - 0.0014678355 + - 0.14283203 + - 0.030859279 + - 0.002544554 + - 0.00087487896 + - 0.012465971 + laughterScore: 0 + - frameNumber: 205 + frameDelay: 0 + Visemes: + - 0.02896365 + - 0.72368836 + - 0.067259975 + - 0.0011374534 + - 0.021564132 + - 0.0051031485 + - 0.00030479248 + - 0.0010054797 + - 0.013304823 + - 0.0024094 + - 0.101287305 + - 0.021712856 + - 0.0022645728 + - 0.0007864374 + - 0.009207696 + laughterScore: 0 + - frameNumber: 206 + frameDelay: 0 + Visemes: + - 0.026975757 + - 0.58415955 + - 0.05056066 + - 0.0009805935 + - 0.015339599 + - 0.004040291 + - 0.00022744466 + - 0.0007718948 + - 0.011772251 + - 0.18519267 + - 0.07906632 + - 0.018741662 + - 0.0068830834 + - 0.0036558902 + - 0.011632375 + laughterScore: 0 + - frameNumber: 207 + frameDelay: 0 + Visemes: + - 0.0411755 + - 0.41536564 + - 0.035666116 + - 0.0007513005 + - 0.011166937 + - 0.0034380776 + - 0.00017914794 + - 0.00060014694 + - 0.009190276 + - 0.34050554 + - 0.089839295 + - 0.02392361 + - 0.015300038 + - 0.003908325 + - 0.008990095 + laughterScore: 0 + - frameNumber: 208 + frameDelay: 0 + Visemes: + - 0.04240299 + - 0.29131725 + - 0.025108796 + - 0.00060617144 + - 0.010226319 + - 0.0031852887 + - 0.00013665835 + - 0.0004622524 + - 0.0068001198 + - 0.48364538 + - 0.077305056 + - 0.028441899 + - 0.020615866 + - 0.002961079 + - 0.006784898 + laughterScore: 0 + - frameNumber: 209 + frameDelay: 0 + Visemes: + - 0.035898045 + - 0.20400122 + - 0.017597852 + - 0.00046209284 + - 0.008698023 + - 0.004271893 + - 0.0001015896 + - 0.00033640434 + - 0.0048951525 + - 0.6087835 + - 0.056953218 + - 0.035002656 + - 0.015878268 + - 0.0022048343 + - 0.0049152565 + laughterScore: 0 + - frameNumber: 210 + frameDelay: 0 + Visemes: + - 0.029143726 + - 0.14285737 + - 0.012331516 + - 0.00036811072 + - 0.006549484 + - 0.0046748947 + - 0.000072980576 + - 0.00024271743 + - 0.0035638874 + - 0.69758797 + - 0.043200426 + - 0.04167293 + - 0.012398414 + - 0.001688884 + - 0.0036466592 + laughterScore: 0 + - frameNumber: 211 + frameDelay: 0 + Visemes: + - 0.023251696 + - 0.100073345 + - 0.008655415 + - 0.0002857778 + - 0.0048091654 + - 0.0039858213 + - 0.000053207226 + - 0.00018052827 + - 0.0027285023 + - 0.7692814 + - 0.034110073 + - 0.03788144 + - 0.010635793 + - 0.0012917373 + - 0.0027760926 + laughterScore: 0 + - frameNumber: 212 + frameDelay: 0 + Visemes: + - 0.017959952 + - 0.070074305 + - 0.0061033024 + - 0.00021320058 + - 0.0035284986 + - 0.0029337278 + - 0.000038836613 + - 0.00013720154 + - 0.0020599521 + - 0.8300991 + - 0.025872314 + - 0.029130332 + - 0.00878031 + - 0.00095875043 + - 0.0021102426 + laughterScore: 0 + - frameNumber: 213 + frameDelay: 0 + Visemes: + - 0.0141532235 + - 0.04907287 + - 0.004306176 + - 0.00016155948 + - 0.0027887234 + - 0.002125878 + - 0.00002906641 + - 0.00011203867 + - 0.0015820776 + - 0.87532705 + - 0.019169247 + - 0.02178716 + - 0.0070618438 + - 0.000716947 + - 0.0016061295 + laughterScore: 0 + - frameNumber: 214 + frameDelay: 0 + Visemes: + - 0.011492148 + - 0.034424905 + - 0.0030584564 + - 0.00013726727 + - 0.0028811865 + - 0.0015545517 + - 0.000024930345 + - 0.0001270317 + - 0.0015015495 + - 0.90672326 + - 0.013944041 + - 0.0158582 + - 0.006580351 + - 0.00053664594 + - 0.0011555022 + laughterScore: 0 + - frameNumber: 215 + frameDelay: 0 + Visemes: + - 0.014906539 + - 0.02450191 + - 0.0023842645 + - 0.0004855647 + - 0.0042681103 + - 0.0033236258 + - 0.000043763608 + - 0.0006922557 + - 0.002267308 + - 0.8544632 + - 0.010936675 + - 0.012116922 + - 0.068206914 + - 0.00042711222 + - 0.0009758705 + laughterScore: 0 + - frameNumber: 216 + frameDelay: 0 + Visemes: + - 0.014508035 + - 0.017294891 + - 0.001866816 + - 0.00066587655 + - 0.00430499 + - 0.003943533 + - 0.00004006675 + - 0.0008360819 + - 0.0026993358 + - 0.61124194 + - 0.00806349 + - 0.009170921 + - 0.32429793 + - 0.00031177333 + - 0.000754395 + laughterScore: 0 + - frameNumber: 217 + frameDelay: 0 + Visemes: + - 0.013466512 + - 0.012148528 + - 0.0016691732 + - 0.001089693 + - 0.004785115 + - 0.0045747175 + - 0.000045147215 + - 0.0007853595 + - 0.0023079168 + - 0.42937732 + - 0.0060772486 + - 0.0073552164 + - 0.5155121 + - 0.00022794215 + - 0.0005780561 + laughterScore: 0 + - frameNumber: 218 + frameDelay: 0 + Visemes: + - 0.010944126 + - 0.0085255755 + - 0.0012791988 + - 0.0012769606 + - 0.004003109 + - 0.0040483433 + - 0.000052723397 + - 0.00067896396 + - 0.0017790158 + - 0.3011343 + - 0.0053471895 + - 0.005903019 + - 0.6543411 + - 0.00017248793 + - 0.0005139078 + laughterScore: 0 + - frameNumber: 219 + frameDelay: 0 + Visemes: + - 0.012301058 + - 0.0059737484 + - 0.000925547 + - 0.0061614234 + - 0.0039914977 + - 0.0028891712 + - 0.000055801585 + - 0.0016702134 + - 0.0037356142 + - 0.2131317 + - 0.09227385 + - 0.012893643 + - 0.6407195 + - 0.00016314237 + - 0.0031141234 + laughterScore: 0 + - frameNumber: 220 + frameDelay: 0 + Visemes: + - 0.019432735 + - 0.004258206 + - 0.00080230983 + - 0.09231814 + - 0.035470977 + - 0.0024166752 + - 0.0001418202 + - 0.0016764328 + - 0.004930516 + - 0.14974228 + - 0.11196734 + - 0.019136835 + - 0.5522575 + - 0.00091342 + - 0.0045348452 + laughterScore: 0 + - frameNumber: 221 + frameDelay: 0 + Visemes: + - 0.01619294 + - 0.0029995602 + - 0.00069202436 + - 0.329566 + - 0.04629138 + - 0.0017616958 + - 0.00032728037 + - 0.0016696074 + - 0.0039976323 + - 0.10486892 + - 0.081851594 + - 0.013839749 + - 0.39208287 + - 0.0006653825 + - 0.0031933957 + laughterScore: 0 + - frameNumber: 222 + frameDelay: 0 + Visemes: + - 0.012214903 + - 0.0021322826 + - 0.0005244902 + - 0.52643514 + - 0.03435142 + - 0.0012483422 + - 0.00025303647 + - 0.001508185 + - 0.00309777 + - 0.07341512 + - 0.057644516 + - 0.009861861 + - 0.2745967 + - 0.00047345212 + - 0.0022428108 + laughterScore: 0 + - frameNumber: 223 + frameDelay: 0 + Visemes: + - 0.010151835 + - 0.0015946475 + - 0.00037697237 + - 0.6492571 + - 0.025441006 + - 0.0008972386 + - 0.00017935652 + - 0.0010843017 + - 0.0032244872 + - 0.051404767 + - 0.052296832 + - 0.009532004 + - 0.19260605 + - 0.0003759171 + - 0.0015774835 + laughterScore: 0 + - frameNumber: 224 + frameDelay: 0 + Visemes: + - 0.008826051 + - 0.0011289584 + - 0.00026579594 + - 0.5394499 + - 0.017991098 + - 0.00068877195 + - 0.0001259879 + - 0.0007676187 + - 0.0023881514 + - 0.036080096 + - 0.0447966 + - 0.21115188 + - 0.13492857 + - 0.00030184872 + - 0.0011087565 + laughterScore: 0 + - frameNumber: 225 + frameDelay: 0 + Visemes: + - 0.007946096 + - 0.0007928437 + - 0.00018818678 + - 0.3783148 + - 0.013722873 + - 0.0006131451 + - 0.00008945944 + - 0.0005501947 + - 0.0016893251 + - 0.025294337 + - 0.03367696 + - 0.44155815 + - 0.09448324 + - 0.0003028332 + - 0.0007776206 + laughterScore: 0 + - frameNumber: 226 + frameDelay: 0 + Visemes: + - 0.0075288564 + - 0.000558701 + - 0.00013743866 + - 0.26496133 + - 0.02602507 + - 0.00060023484 + - 0.00006649949 + - 0.00040405415 + - 0.0012110743 + - 0.017747885 + - 0.025233997 + - 0.58843875 + - 0.06619299 + - 0.00034216925 + - 0.00055096345 + laughterScore: 0 + - frameNumber: 227 + frameDelay: 0 + Visemes: + - 0.0072641103 + - 0.00039906608 + - 0.00011292026 + - 0.18550883 + - 0.06526257 + - 0.0007222182 + - 0.00005340311 + - 0.00034770282 + - 0.00090299384 + - 0.012524956 + - 0.019049292 + - 0.6605767 + - 0.046490796 + - 0.00038779885 + - 0.0003966366 + laughterScore: 0 + - frameNumber: 228 + frameDelay: 0 + Visemes: + - 0.008404292 + - 0.00030518818 + - 0.0001094405 + - 0.12989508 + - 0.2939944 + - 0.0010457195 + - 0.000050840972 + - 0.00029204102 + - 0.0007590958 + - 0.008858282 + - 0.0144994045 + - 0.50828576 + - 0.03290794 + - 0.00028959187 + - 0.00030296113 + laughterScore: 0 + - frameNumber: 229 + frameDelay: 0 + Visemes: + - 0.0093285795 + - 0.0002455374 + - 0.00009401941 + - 0.09098397 + - 0.48944163 + - 0.0015289282 + - 0.00006875106 + - 0.0002476746 + - 0.0010517922 + - 0.0062808543 + - 0.012363221 + - 0.3638673 + - 0.024034072 + - 0.00022059357 + - 0.00024303372 + laughterScore: 0 + - frameNumber: 230 + frameDelay: 0 + Visemes: + - 0.023976326 + - 0.00037606573 + - 0.00008235483 + - 0.063757025 + - 0.60700035 + - 0.0032620197 + - 0.00006256628 + - 0.00026536023 + - 0.002549408 + - 0.004585696 + - 0.009935798 + - 0.26405174 + - 0.019677432 + - 0.00020499792 + - 0.00021279995 + laughterScore: 0 + - frameNumber: 231 + frameDelay: 0 + Visemes: + - 0.03949599 + - 0.002685824 + - 0.00021144416 + - 0.045011993 + - 0.5324943 + - 0.012132416 + - 0.0001974436 + - 0.000295662 + - 0.015559733 + - 0.0034637693 + - 0.0087651685 + - 0.24847841 + - 0.09053069 + - 0.00021724054 + - 0.0004598077 + laughterScore: 0 + - frameNumber: 232 + frameDelay: 0 + Visemes: + - 0.03758818 + - 0.0025580456 + - 0.00015513078 + - 0.031609066 + - 0.37583715 + - 0.011020178 + - 0.00015619243 + - 0.00023724561 + - 0.020943351 + - 0.0025059865 + - 0.0092910575 + - 0.3862019 + - 0.12112413 + - 0.00020414728 + - 0.0005682064 + laughterScore: 0 + - frameNumber: 233 + frameDelay: 0 + Visemes: + - 0.02973984 + - 0.0018841486 + - 0.00011032672 + - 0.022151923 + - 0.26383328 + - 0.008043869 + - 0.0001116054 + - 0.0001693296 + - 0.021615183 + - 0.0017837181 + - 0.008991491 + - 0.5397586 + - 0.10112021 + - 0.00015949208 + - 0.00052690785 + laughterScore: 0 + - frameNumber: 234 + frameDelay: 0 + Visemes: + - 0.029116496 + - 0.0015408732 + - 0.00008475941 + - 0.015568893 + - 0.18587114 + - 0.0061625624 + - 0.000081227954 + - 0.00013975865 + - 0.032664865 + - 0.0014973144 + - 0.010720702 + - 0.6146364 + - 0.10029172 + - 0.00019984995 + - 0.0014233928 + laughterScore: 0 + - frameNumber: 235 + frameDelay: 0 + Visemes: + - 0.026827691 + - 0.0011241648 + - 0.0000612583 + - 0.010925573 + - 0.13059822 + - 0.004408208 + - 0.00005852518 + - 0.00010919795 + - 0.03148398 + - 0.0011985551 + - 0.009076945 + - 0.6945652 + - 0.08808312 + - 0.0001940738 + - 0.0012853061 + laughterScore: 0 + - frameNumber: 236 + frameDelay: 0 + Visemes: + - 0.025387088 + - 0.00085904525 + - 0.000045510405 + - 0.0076772296 + - 0.09205346 + - 0.003161042 + - 0.00004183611 + - 0.00008758172 + - 0.04209417 + - 0.0010223017 + - 0.0079129245 + - 0.74160874 + - 0.07682327 + - 0.00019419409 + - 0.001031643 + laughterScore: 0 + - frameNumber: 237 + frameDelay: 0 + Visemes: + - 0.02003984 + - 0.002207387 + - 0.00004052395 + - 0.005381103 + - 0.06470732 + - 0.0029917366 + - 0.00002973339 + - 0.00006774223 + - 0.31697744 + - 0.0007254214 + - 0.0063568978 + - 0.5241382 + - 0.055460352 + - 0.000137255 + - 0.00073902175 + laughterScore: 0 + - frameNumber: 238 + frameDelay: 0 + Visemes: + - 0.023185592 + - 0.0017588142 + - 0.00005001023 + - 0.0038967095 + - 0.052321594 + - 0.0033964845 + - 0.00002534854 + - 0.000054732038 + - 0.501897 + - 0.0005195427 + - 0.0055399244 + - 0.3676876 + - 0.038988654 + - 0.00012567041 + - 0.0005523181 + laughterScore: 0 + - frameNumber: 239 + frameDelay: 0 + Visemes: + - 0.029870067 + - 0.0022120262 + - 0.000069619324 + - 0.0037468905 + - 0.14850712 + - 0.004809573 + - 0.000041892337 + - 0.00007017732 + - 0.5131308 + - 0.00048560422 + - 0.0066229524 + - 0.25842008 + - 0.029684285 + - 0.00073927856 + - 0.00158963 + laughterScore: 0 + - frameNumber: 240 + frameDelay: 0 + Visemes: + - 0.043401316 + - 0.0034254617 + - 0.0000895784 + - 0.0029911723 + - 0.12133361 + - 0.0047282614 + - 0.00005737649 + - 0.00007724867 + - 0.4034106 + - 0.0011495075 + - 0.13336053 + - 0.18165906 + - 0.0334137 + - 0.0485512 + - 0.02235136 + laughterScore: 0 + - frameNumber: 241 + frameDelay: 0 + Visemes: + - 0.039466117 + - 0.0048956783 + - 0.0010848314 + - 0.0022212053 + - 0.08919618 + - 0.0066572754 + - 0.00004763169 + - 0.0001089196 + - 0.35374314 + - 0.0022643523 + - 0.22455338 + - 0.12735967 + - 0.030381601 + - 0.05480496 + - 0.06321506 + laughterScore: 0 + - frameNumber: 242 + frameDelay: 0 + Visemes: + - 0.03103392 + - 0.007079563 + - 0.0036151933 + - 0.0016229204 + - 0.06310504 + - 0.0053038914 + - 0.00003895043 + - 0.00008730008 + - 0.43678427 + - 0.0038844142 + - 0.16467276 + - 0.089188725 + - 0.021591736 + - 0.043657728 + - 0.12833361 + laughterScore: 0 + - frameNumber: 243 + frameDelay: 0 + Visemes: + - 0.024926612 + - 0.0061619845 + - 0.002928348 + - 0.0012367814 + - 0.044507883 + - 0.004253405 + - 0.00003467765 + - 0.00006943236 + - 0.5105413 + - 0.0036323979 + - 0.11607643 + - 0.06246592 + - 0.015387868 + - 0.03568051 + - 0.17209642 + laughterScore: 0 + - frameNumber: 244 + frameDelay: 0 + Visemes: + - 0.020295883 + - 0.004547037 + - 0.00238516 + - 0.0011806922 + - 0.031244453 + - 0.0033398024 + - 0.000030334224 + - 0.000057808153 + - 0.60077095 + - 0.0039058328 + - 0.08171512 + - 0.04410648 + - 0.011110524 + - 0.027104361 + - 0.16820557 + laughterScore: 0 + - frameNumber: 245 + frameDelay: 0 + Visemes: + - 0.016327994 + - 0.0032276423 + - 0.0016845971 + - 0.0011858249 + - 0.022013409 + - 0.0026104823 + - 0.000024827623 + - 0.00004623836 + - 0.6913118 + - 0.0032775821 + - 0.078180596 + - 0.033731315 + - 0.008616304 + - 0.019383028 + - 0.118378356 + laughterScore: 0 + - frameNumber: 246 + frameDelay: 0 + Visemes: + - 0.018485328 + - 0.002414952 + - 0.0012286772 + - 0.001456293 + - 0.01591398 + - 0.0027784756 + - 0.000028511218 + - 0.000042941618 + - 0.49554026 + - 0.002713325 + - 0.17570993 + - 0.1794779 + - 0.0065743453 + - 0.014606319 + - 0.08302876 + laughterScore: 0 + - frameNumber: 247 + frameDelay: 0 + Visemes: + - 0.01830528 + - 0.0017265698 + - 0.00088619284 + - 0.0011802791 + - 0.011825501 + - 0.0028099234 + - 0.000025594718 + - 0.000038222628 + - 0.3482815 + - 0.0023986993 + - 0.25336674 + - 0.2853909 + - 0.004785352 + - 0.010835488 + - 0.058143776 + laughterScore: 0 + - frameNumber: 248 + frameDelay: 0 + Visemes: + - 0.018293908 + - 0.0012594832 + - 0.00064257777 + - 0.00087485387 + - 0.009240047 + - 0.002225386 + - 0.000045619126 + - 0.0000440758 + - 0.24443236 + - 0.0019710902 + - 0.34244767 + - 0.32599026 + - 0.0035191448 + - 0.008269228 + - 0.040744342 + laughterScore: 0 + - frameNumber: 249 + frameDelay: 0 + Visemes: + - 0.019423943 + - 0.0009775888 + - 0.0005961142 + - 0.0006317709 + - 0.007597317 + - 0.0025844947 + - 0.000248795 + - 0.000088934394 + - 0.17151298 + - 0.0017413053 + - 0.4813063 + - 0.27597067 + - 0.002812636 + - 0.005950154 + - 0.028557017 + laughterScore: 0 + - frameNumber: 250 + frameDelay: 0 + Visemes: + - 0.020520318 + - 0.0011153359 + - 0.0010087258 + - 0.0010586061 + - 0.029984336 + - 0.004196898 + - 0.0041871937 + - 0.00032079418 + - 0.12190558 + - 0.0025234441 + - 0.5865551 + - 0.19825488 + - 0.003523808 + - 0.0043944987 + - 0.020450497 + laughterScore: 0 + - frameNumber: 251 + frameDelay: 0 + Visemes: + - 0.023406314 + - 0.002891234 + - 0.0027433957 + - 0.007035007 + - 0.11922777 + - 0.009452555 + - 0.048829943 + - 0.023834229 + - 0.09052837 + - 0.0022294018 + - 0.49911535 + - 0.147315 + - 0.005163301 + - 0.0032612518 + - 0.01496693 + laughterScore: 0 + - frameNumber: 252 + frameDelay: 0 + Visemes: + - 0.027839646 + - 0.0028605615 + - 0.003259501 + - 0.006926626 + - 0.12141367 + - 0.024063183 + - 0.036322962 + - 0.22776556 + - 0.063766755 + - 0.0016122372 + - 0.36394465 + - 0.10349585 + - 0.003783647 + - 0.002309925 + - 0.010635229 + laughterScore: 0 + - frameNumber: 253 + frameDelay: 0 + Visemes: + - 0.037460923 + - 0.0028181013 + - 0.0029138965 + - 0.0059345905 + - 0.11970776 + - 0.038379226 + - 0.027610766 + - 0.37357622 + - 0.045016415 + - 0.0011533408 + - 0.26083085 + - 0.07263405 + - 0.0028046933 + - 0.001651565 + - 0.0075075557 + laughterScore: 0 + - frameNumber: 254 + frameDelay: 0 + Visemes: + - 0.043385733 + - 0.002507641 + - 0.0024314297 + - 0.0075426064 + - 0.09571524 + - 0.04229414 + - 0.019790597 + - 0.50519717 + - 0.033636082 + - 0.00084837194 + - 0.18519315 + - 0.051757257 + - 0.0024742717 + - 0.0013687455 + - 0.005857489 + laughterScore: 0 + - frameNumber: 255 + frameDelay: 0 + Visemes: + - 0.056976013 + - 0.0027224927 + - 0.0020664637 + - 0.032258842 + - 0.07789696 + - 0.039031938 + - 0.0149263395 + - 0.40839043 + - 0.03298965 + - 0.0017073997 + - 0.1730437 + - 0.08403298 + - 0.063831605 + - 0.0050495737 + - 0.005075549 + laughterScore: 0 + - frameNumber: 256 + frameDelay: 0 + Visemes: + - 0.044731323 + - 0.001981987 + - 0.0015872818 + - 0.023962537 + - 0.055379078 + - 0.027504219 + - 0.010607506 + - 0.28884646 + - 0.023536813 + - 0.002632345 + - 0.2538368 + - 0.08112613 + - 0.1758321 + - 0.0047070165 + - 0.0037283571 + laughterScore: 0 + - frameNumber: 257 + frameDelay: 0 + Visemes: + - 0.036981698 + - 0.0015194431 + - 0.0039202846 + - 0.017176408 + - 0.04434376 + - 0.019522117 + - 0.0074490593 + - 0.25340623 + - 0.02308411 + - 0.002840019 + - 0.23859435 + - 0.06671987 + - 0.27709007 + - 0.0046348353 + - 0.0027177283 + laughterScore: 0 + - frameNumber: 258 + frameDelay: 0 + Visemes: + - 0.030117288 + - 0.0011820424 + - 0.00495 + - 0.013067119 + - 0.045222312 + - 0.013828682 + - 0.005250913 + - 0.43432504 + - 0.01790139 + - 0.002128859 + - 0.1746095 + - 0.046909567 + - 0.20534466 + - 0.0032512834 + - 0.0019113417 + laughterScore: 0 + - frameNumber: 259 + frameDelay: 0 + Visemes: + - 0.02406579 + - 0.00089061866 + - 0.0040738345 + - 0.016031595 + - 0.036699843 + - 0.00980986 + - 0.0038427394 + - 0.5856364 + - 0.0133678075 + - 0.0015499524 + - 0.122689895 + - 0.03291175 + - 0.14480399 + - 0.0022796064 + - 0.0013463715 + laughterScore: 0 + - frameNumber: 260 + frameDelay: 0 + Visemes: + - 0.021722734 + - 0.0006871574 + - 0.0029265448 + - 0.1425238 + - 0.030507095 + - 0.007758148 + - 0.0028090307 + - 0.52981365 + - 0.012836771 + - 0.0011152339 + - 0.09506002 + - 0.026541883 + - 0.123077795 + - 0.0016332878 + - 0.0009869136 + laughterScore: 0 + - frameNumber: 261 + frameDelay: 0 + Visemes: + - 0.019501477 + - 0.0006515909 + - 0.0022267632 + - 0.116740555 + - 0.03129938 + - 0.005657329 + - 0.0020240676 + - 0.37194592 + - 0.010079918 + - 0.00081215793 + - 0.08114867 + - 0.20235325 + - 0.15364623 + - 0.0011602154 + - 0.0007525476 + laughterScore: 0 + - frameNumber: 262 + frameDelay: 0 + Visemes: + - 0.018499384 + - 0.00052131334 + - 0.0017343959 + - 0.08190186 + - 0.02278023 + - 0.004214017 + - 0.0014451753 + - 0.26048446 + - 0.009075224 + - 0.00061937043 + - 0.07518843 + - 0.3468738 + - 0.17516124 + - 0.0009293089 + - 0.0005718611 + laughterScore: 0 + - frameNumber: 263 + frameDelay: 0 + Visemes: + - 0.026770316 + - 0.0004903988 + - 0.0016184615 + - 0.05745194 + - 0.030237509 + - 0.028137965 + - 0.0010909087 + - 0.1828092 + - 0.02006734 + - 0.00070868136 + - 0.10540923 + - 0.40938428 + - 0.13444225 + - 0.0009230082 + - 0.00045853909 + laughterScore: 0 + - frameNumber: 264 + frameDelay: 0 + Visemes: + - 0.03819064 + - 0.0010648523 + - 0.0025979362 + - 0.040564157 + - 0.06492475 + - 0.051412735 + - 0.002391638 + - 0.13000794 + - 0.03729813 + - 0.0011021595 + - 0.0788812 + - 0.39282763 + - 0.15719165 + - 0.0008673009 + - 0.00067732116 + laughterScore: 0 + - frameNumber: 265 + frameDelay: 0 + Visemes: + - 0.04068778 + - 0.0029816309 + - 0.0040371222 + - 0.028548477 + - 0.055503566 + - 0.058684833 + - 0.0072002597 + - 0.092048876 + - 0.029350128 + - 0.0011255807 + - 0.057388812 + - 0.31203425 + - 0.30779195 + - 0.00074068055 + - 0.0018760859 + laughterScore: 0 + - frameNumber: 266 + frameDelay: 0 + Visemes: + - 0.042945236 + - 0.0028944022 + - 0.0034785566 + - 0.020216182 + - 0.04602851 + - 0.07394999 + - 0.0069827302 + - 0.06507875 + - 0.021434736 + - 0.0009891791 + - 0.04202533 + - 0.2241069 + - 0.44645572 + - 0.00054775417 + - 0.00286605 + laughterScore: 0 + - frameNumber: 267 + frameDelay: 0 + Visemes: + - 0.045084056 + - 0.0022643383 + - 0.0024720766 + - 0.014438972 + - 0.032847047 + - 0.17512292 + - 0.005029748 + - 0.045684107 + - 0.01521047 + - 0.0007642405 + - 0.029672995 + - 0.15749435 + - 0.46281424 + - 0.00040209937 + - 0.010698341 + laughterScore: 0 + - frameNumber: 268 + frameDelay: 0 + Visemes: + - 0.05013852 + - 0.0018823957 + - 0.0017647631 + - 0.0104106665 + - 0.023614218 + - 0.20494871 + - 0.0036345627 + - 0.032112166 + - 0.010789451 + - 0.00061825546 + - 0.02108473 + - 0.11126471 + - 0.50677216 + - 0.0003011021 + - 0.020663613 + laughterScore: 0 + - frameNumber: 269 + frameDelay: 0 + Visemes: + - 0.049727466 + - 0.0014090433 + - 0.0012613034 + - 0.0074192663 + - 0.01722795 + - 0.15802437 + - 0.0026081768 + - 0.022647984 + - 0.0077200867 + - 0.00048156118 + - 0.015088003 + - 0.079384506 + - 0.6012571 + - 0.00023621756 + - 0.03550698 + laughterScore: 0 + - frameNumber: 270 + frameDelay: 0 + Visemes: + - 0.039648194 + - 0.0010131848 + - 0.00090273534 + - 0.0052261273 + - 0.012265221 + - 0.11140329 + - 0.0018451306 + - 0.015951633 + - 0.005467065 + - 0.0003590408 + - 0.010647296 + - 0.056172747 + - 0.70102036 + - 0.00017273535 + - 0.03790523 + laughterScore: 0 + - frameNumber: 271 + frameDelay: 0 + Visemes: + - 0.030295452 + - 0.00072161976 + - 0.0006419324 + - 0.0036727805 + - 0.008654082 + - 0.07811944 + - 0.0013037773 + - 0.0112141995 + - 0.0038451063 + - 0.00026806447 + - 0.007479856 + - 0.03961282 + - 0.7739269 + - 0.00012444882 + - 0.040119536 + laughterScore: 0 + - frameNumber: 272 + frameDelay: 0 + Visemes: + - 0.02328233 + - 0.00050895277 + - 0.00051380397 + - 0.0025842823 + - 0.0061018164 + - 0.054736584 + - 0.000945516 + - 0.007902137 + - 0.0026996187 + - 0.0002114555 + - 0.005255122 + - 0.027954418 + - 0.8023628 + - 0.00009110522 + - 0.0648501 + laughterScore: 0 + - frameNumber: 273 + frameDelay: 0 + Visemes: + - 0.0209785 + - 0.00036213204 + - 0.0006430604 + - 0.0018753465 + - 0.0044666026 + - 0.03839473 + - 0.0007513737 + - 0.0057713916 + - 0.0019234156 + - 0.00040210033 + - 0.0038062474 + - 0.020029046 + - 0.6557579 + - 0.00010356812 + - 0.24473464 + laughterScore: 0 + - frameNumber: 274 + frameDelay: 0 + Visemes: + - 0.01741009 + - 0.00026184676 + - 0.0010629216 + - 0.0015725922 + - 0.0038006552 + - 0.026912961 + - 0.0006350352 + - 0.02735963 + - 0.0013775869 + - 0.0029426776 + - 0.0072031394 + - 0.014354663 + - 0.5075527 + - 0.00015791188 + - 0.38739562 + laughterScore: 0 + - frameNumber: 275 + frameDelay: 0 + Visemes: + - 0.014118018 + - 0.00023679188 + - 0.0013908077 + - 0.0015333542 + - 0.0046084654 + - 0.018997535 + - 0.000469246 + - 0.30547762 + - 0.00100153 + - 0.002091513 + - 0.005673629 + - 0.010063269 + - 0.35631603 + - 0.00011339346 + - 0.27790883 + laughterScore: 0 + - frameNumber: 276 + frameDelay: 0 + Visemes: + - 0.012763882 + - 0.00019852594 + - 0.0010079795 + - 0.0019548174 + - 0.005357709 + - 0.013691758 + - 0.0004033634 + - 0.5054157 + - 0.00073838414 + - 0.0014817787 + - 0.004231422 + - 0.0070647737 + - 0.2510131 + - 0.00008427754 + - 0.19459255 + laughterScore: 0 + - frameNumber: 277 + frameDelay: 0 + Visemes: + - 0.01576478 + - 0.00021328562 + - 0.00092057034 + - 0.0048598116 + - 0.01675812 + - 0.033573274 + - 0.00067618303 + - 0.59749633 + - 0.0008874693 + - 0.0010542787 + - 0.0037559874 + - 0.0052771615 + - 0.18241836 + - 0.000083060586 + - 0.13626134 + laughterScore: 0 + - frameNumber: 278 + frameDelay: 0 + Visemes: + - 0.02709731 + - 0.003285167 + - 0.002257347 + - 0.01786938 + - 0.022781596 + - 0.03717843 + - 0.0015159426 + - 0.5311132 + - 0.010019699 + - 0.0037998497 + - 0.054782216 + - 0.0055228546 + - 0.1475399 + - 0.0015444832 + - 0.13369259 + laughterScore: 0 + - frameNumber: 279 + frameDelay: 0 + Visemes: + - 0.041543163 + - 0.0035642458 + - 0.0019800942 + - 0.018790169 + - 0.021972176 + - 0.07701641 + - 0.0031649848 + - 0.3758985 + - 0.00893053 + - 0.10241389 + - 0.07931296 + - 0.015410455 + - 0.12811899 + - 0.012371318 + - 0.109512076 + laughterScore: 0 + - frameNumber: 280 + frameDelay: 0 + Visemes: + - 0.036640756 + - 0.0031206904 + - 0.0019436951 + - 0.013918792 + - 0.016535655 + - 0.054603036 + - 0.0022399358 + - 0.26319066 + - 0.006637836 + - 0.28003722 + - 0.07528366 + - 0.031416837 + - 0.097542524 + - 0.03451771 + - 0.08237098 + laughterScore: 0 + - frameNumber: 281 + frameDelay: 0 + Visemes: + - 0.033078987 + - 0.0026748683 + - 0.0027190885 + - 0.010324935 + - 0.012383252 + - 0.03865341 + - 0.001571754 + - 0.18426932 + - 0.0059789484 + - 0.46008065 + - 0.06170264 + - 0.026652448 + - 0.073605314 + - 0.027181108 + - 0.059123263 + laughterScore: 0 + - frameNumber: 282 + frameDelay: 0 + Visemes: + - 0.034310408 + - 0.0022744243 + - 0.0023988648 + - 0.0087234685 + - 0.010534706 + - 0.02866103 + - 0.0012718062 + - 0.13056816 + - 0.011991663 + - 0.53098506 + - 0.059671596 + - 0.023942886 + - 0.08740357 + - 0.023448158 + - 0.0438142 + laughterScore: 0 + - frameNumber: 283 + frameDelay: 0 + Visemes: + - 0.031797558 + - 0.001730126 + - 0.002343716 + - 0.006633193 + - 0.010035345 + - 0.02014818 + - 0.0017062852 + - 0.18477479 + - 0.010022836 + - 0.4805796 + - 0.10011722 + - 0.018159613 + - 0.08327367 + - 0.016798709 + - 0.031879112 + laughterScore: 0 + - frameNumber: 284 + frameDelay: 0 + Visemes: + - 0.027365794 + - 0.0015139612 + - 0.0025513077 + - 0.0058268677 + - 0.015960576 + - 0.014356237 + - 0.0012812553 + - 0.3983406 + - 0.0079475995 + - 0.34041104 + - 0.07492157 + - 0.013204278 + - 0.062069066 + - 0.011770357 + - 0.02247945 + laughterScore: 0 + - frameNumber: 285 + frameDelay: 0 + Visemes: + - 0.024310343 + - 0.0015812479 + - 0.002034224 + - 0.009057093 + - 0.019213099 + - 0.0107463645 + - 0.0012522843 + - 0.55405116 + - 0.0059217955 + - 0.24026197 + - 0.053776473 + - 0.009470289 + - 0.044239357 + - 0.008278693 + - 0.01580552 + laughterScore: 0 + - frameNumber: 286 + frameDelay: 0 + Visemes: + - 0.028905053 + - 0.0047460785 + - 0.0021061243 + - 0.024438603 + - 0.044856206 + - 0.008369204 + - 0.0015022804 + - 0.6156679 + - 0.007419642 + - 0.1688063 + - 0.038207132 + - 0.0067354897 + - 0.03115319 + - 0.005814196 + - 0.011272506 + laughterScore: 0 + - frameNumber: 287 + frameDelay: 0 + Visemes: + - 0.04111862 + - 0.14329629 + - 0.0035985997 + - 0.020416088 + - 0.06076695 + - 0.0070677446 + - 0.0013428425 + - 0.52770436 + - 0.0057501155 + - 0.1185733 + - 0.030745212 + - 0.0047923382 + - 0.022352684 + - 0.004082122 + - 0.008392686 + laughterScore: 0 + - frameNumber: 288 + frameDelay: 0 + Visemes: + - 0.038519043 + - 0.3476149 + - 0.0044428934 + - 0.015089102 + - 0.059874874 + - 0.0052456027 + - 0.0010804341 + - 0.38472575 + - 0.004203372 + - 0.08305103 + - 0.028008671 + - 0.003418112 + - 0.015873438 + - 0.0028775455 + - 0.005975182 + laughterScore: 0 + - frameNumber: 289 + frameDelay: 0 + Visemes: + - 0.03357348 + - 0.5170706 + - 0.01029375 + - 0.011252288 + - 0.048671983 + - 0.0038571067 + - 0.00083640474 + - 0.2725049 + - 0.002989615 + - 0.058162242 + - 0.02070301 + - 0.002479233 + - 0.011302434 + - 0.0020412118 + - 0.0042617004 + laughterScore: 0 + - frameNumber: 290 + frameDelay: 0 + Visemes: + - 0.036863286 + - 0.59324586 + - 0.05219796 + - 0.008154319 + - 0.036584012 + - 0.0028159616 + - 0.000603784 + - 0.19657695 + - 0.002182158 + - 0.040910155 + - 0.015263632 + - 0.0017809835 + - 0.00807178 + - 0.0015145384 + - 0.0032345708 + laughterScore: 0 + - frameNumber: 291 + frameDelay: 0 + Visemes: + - 0.032053985 + - 0.60914737 + - 0.09701046 + - 0.0076401057 + - 0.026517646 + - 0.0021456885 + - 0.00043438785 + - 0.14148153 + - 0.013947327 + - 0.03890844 + - 0.013979472 + - 0.0014333954 + - 0.006080909 + - 0.0018958123 + - 0.0073233983 + laughterScore: 0 + - frameNumber: 292 + frameDelay: 0 + Visemes: + - 0.026088782 + - 0.44709137 + - 0.116282344 + - 0.005376798 + - 0.018631186 + - 0.0015652761 + - 0.0003052923 + - 0.09915525 + - 0.022783093 + - 0.027762037 + - 0.01686717 + - 0.0011324803 + - 0.0065320944 + - 0.039493393 + - 0.17093341 + laughterScore: 0 + - frameNumber: 293 + frameDelay: 0 + Visemes: + - 0.021880936 + - 0.31409085 + - 0.08214882 + - 0.0037697847 + - 0.013096956 + - 0.0011492204 + - 0.00021461082 + - 0.06941397 + - 0.020621495 + - 0.019737992 + - 0.039482422 + - 0.0013490093 + - 0.010611014 + - 0.09634794 + - 0.30608496 + laughterScore: 0 + - frameNumber: 294 + frameDelay: 0 + Visemes: + - 0.018736618 + - 0.22046092 + - 0.057631098 + - 0.0026428332 + - 0.009398883 + - 0.00087003835 + - 0.0001521028 + - 0.048593078 + - 0.021365648 + - 0.014406362 + - 0.14164492 + - 0.0011985798 + - 0.00887249 + - 0.1658208 + - 0.28820565 + laughterScore: 0 + - frameNumber: 295 + frameDelay: 0 + Visemes: + - 0.016770083 + - 0.15466274 + - 0.04036418 + - 0.0018548131 + - 0.007003463 + - 0.00071776443 + - 0.00010741227 + - 0.034017477 + - 0.056822658 + - 0.010335244 + - 0.2612512 + - 0.0012904104 + - 0.006591249 + - 0.1593898 + - 0.24882153 + laughterScore: 0 + - frameNumber: 296 + frameDelay: 0 + Visemes: + - 0.014159568 + - 0.10838929 + - 0.028298808 + - 0.001303544 + - 0.0052058133 + - 0.00067100377 + - 0.00007629629 + - 0.023819882 + - 0.21540394 + - 0.007898219 + - 0.19284278 + - 0.0009421578 + - 0.0046458608 + - 0.212113 + - 0.18422987 + laughterScore: 0 + - frameNumber: 297 + frameDelay: 0 + Visemes: + - 0.017670218 + - 0.07619395 + - 0.020208692 + - 0.001021356 + - 0.004141136 + - 0.001191179 + - 0.000080729966 + - 0.016702713 + - 0.30901238 + - 0.017162507 + - 0.1364717 + - 0.0008989897 + - 0.003546014 + - 0.26161242 + - 0.13408604 + laughterScore: 0 + - frameNumber: 298 + frameDelay: 0 + Visemes: + - 0.020696975 + - 0.053610753 + - 0.015211448 + - 0.0020686192 + - 0.0036660396 + - 0.0016460207 + - 0.00017744863 + - 0.011721885 + - 0.35540056 + - 0.030229956 + - 0.10286328 + - 0.004892401 + - 0.007295622 + - 0.29131424 + - 0.09920481 + laughterScore: 0 + - frameNumber: 299 + frameDelay: 0 + Visemes: + - 0.017090857 + - 0.037594795 + - 0.01073559 + - 0.0019263098 + - 0.0034728171 + - 0.0014818982 + - 0.00017798728 + - 0.008228154 + - 0.26352808 + - 0.0328202 + - 0.076887585 + - 0.009267624 + - 0.0079575125 + - 0.45824575 + - 0.070584856 + laughterScore: 0 + - frameNumber: 300 + frameDelay: 0 + Visemes: + - 0.014460519 + - 0.026341146 + - 0.0075469157 + - 0.0017444093 + - 0.0029473635 + - 0.0012471811 + - 0.00022256104 + - 0.005801747 + - 0.18705206 + - 0.028985754 + - 0.061749756 + - 0.012477454 + - 0.010972822 + - 0.58802485 + - 0.050425477 + laughterScore: 0 + - frameNumber: 301 + frameDelay: 0 + Visemes: + - 0.0114453025 + - 0.018443678 + - 0.005296147 + - 0.0013071371 + - 0.0022448567 + - 0.0009098342 + - 0.00018427499 + - 0.0040873014 + - 0.13123749 + - 0.02202699 + - 0.04691312 + - 0.010951222 + - 0.010525577 + - 0.6988605 + - 0.03556655 + laughterScore: 0 + - frameNumber: 302 + frameDelay: 0 + Visemes: + - 0.009426263 + - 0.012914232 + - 0.003722653 + - 0.00097017764 + - 0.0018147092 + - 0.0006708983 + - 0.00015797306 + - 0.0029592759 + - 0.09198913 + - 0.016173057 + - 0.037609458 + - 0.010662299 + - 0.008655107 + - 0.7773017 + - 0.024973024 + laughterScore: 0 + - frameNumber: 303 + frameDelay: 0 + Visemes: + - 0.007136979 + - 0.009041298 + - 0.0026133433 + - 0.00069504016 + - 0.0013524174 + - 0.00048357874 + - 0.00013103623 + - 0.0022284891 + - 0.06442243 + - 0.011467044 + - 0.02742048 + - 0.0108505795 + - 0.006573715 + - 0.83808637 + - 0.017497167 + laughterScore: 0 + - frameNumber: 304 + frameDelay: 0 + Visemes: + - 0.00620465 + - 0.0063346447 + - 0.0018683621 + - 0.0005187945 + - 0.0012525226 + - 0.0003694598 + - 0.00024708224 + - 0.004563287 + - 0.045234527 + - 0.008249142 + - 0.020640362 + - 0.013622719 + - 0.005863045 + - 0.87268955 + - 0.012341834 + laughterScore: 0 + - frameNumber: 305 + frameDelay: 0 + Visemes: + - 0.007178098 + - 0.004439834 + - 0.0014122442 + - 0.0014236897 + - 0.0025296519 + - 0.0002915465 + - 0.00018342889 + - 0.10798424 + - 0.0318184 + - 0.006178184 + - 0.01493411 + - 0.06946432 + - 0.01731841 + - 0.7261119 + - 0.008731984 + laughterScore: 0 + - frameNumber: 306 + frameDelay: 0 + Visemes: + - 0.008694702 + - 0.0031186803 + - 0.0012292056 + - 0.0021997425 + - 0.0128562525 + - 0.00029982618 + - 0.00020727789 + - 0.32127255 + - 0.022473343 + - 0.0043932367 + - 0.010680924 + - 0.05269284 + - 0.012699848 + - 0.541042 + - 0.006139615 + laughterScore: 0 + - frameNumber: 307 + frameDelay: 0 + Visemes: + - 0.011257045 + - 0.0021900092 + - 0.0010891822 + - 0.0026310938 + - 0.011984348 + - 0.00026751048 + - 0.00019152087 + - 0.51128656 + - 0.015753973 + - 0.0030861006 + - 0.0076064225 + - 0.039314702 + - 0.009034332 + - 0.38000238 + - 0.0043048235 + laughterScore: 0 + - frameNumber: 308 + frameDelay: 0 + Visemes: + - 0.013832163 + - 0.0015426318 + - 0.0008390093 + - 0.002688259 + - 0.01018788 + - 0.00025116303 + - 0.00016815375 + - 0.6448604 + - 0.011068356 + - 0.002165784 + - 0.005674866 + - 0.029381344 + - 0.006706618 + - 0.267606 + - 0.0030274277 + laughterScore: 0 + - frameNumber: 309 + frameDelay: 0 + Visemes: + - 0.018540092 + - 0.0011034126 + - 0.0006308877 + - 0.002330692 + - 0.014114829 + - 0.0003018041 + - 0.00016760323 + - 0.73320675 + - 0.007842506 + - 0.0015329685 + - 0.004205007 + - 0.021439781 + - 0.0050578383 + - 0.18739346 + - 0.0021324449 + laughterScore: 0 + - frameNumber: 310 + frameDelay: 0 + Visemes: + - 0.031740736 + - 0.00088475016 + - 0.0005366364 + - 0.0025442308 + - 0.027627766 + - 0.00043080546 + - 0.0001539633 + - 0.7736145 + - 0.0060832016 + - 0.0011077409 + - 0.0031588622 + - 0.015301279 + - 0.0039517474 + - 0.1313394 + - 0.0015243514 + laughterScore: 0 + - frameNumber: 311 + frameDelay: 0 + Visemes: + - 0.04281184 + - 0.0007379382 + - 0.00046545302 + - 0.0024717394 + - 0.033819012 + - 0.00049461715 + - 0.0001368932 + - 0.80349576 + - 0.004519708 + - 0.00078281347 + - 0.0024171139 + - 0.01091716 + - 0.0037906459 + - 0.092009015 + - 0.001130232 + laughterScore: 0 + - frameNumber: 312 + frameDelay: 0 + Visemes: + - 0.04690221 + - 0.0007355816 + - 0.00034283177 + - 0.005445568 + - 0.037570734 + - 0.00070008566 + - 0.00018301919 + - 0.70497197 + - 0.0051079104 + - 0.000722404 + - 0.02355848 + - 0.024380649 + - 0.07939097 + - 0.06818125 + - 0.0018062379 + laughterScore: 0 + - frameNumber: 313 + frameDelay: 0 + Visemes: + - 0.10330041 + - 0.00061623956 + - 0.00031416176 + - 0.0039692083 + - 0.032119274 + - 0.0006966317 + - 0.00020922616 + - 0.5149794 + - 0.003671105 + - 0.000702221 + - 0.026243994 + - 0.11527673 + - 0.14718965 + - 0.049308427 + - 0.0014032507 + laughterScore: 0 + - frameNumber: 314 + frameDelay: 0 + Visemes: + - 0.16920123 + - 0.00078247103 + - 0.0005635229 + - 0.0029201012 + - 0.04339461 + - 0.0007047584 + - 0.00019363264 + - 0.3888063 + - 0.0027100341 + - 0.00052859733 + - 0.028643377 + - 0.18488374 + - 0.13975734 + - 0.03586754 + - 0.0010427019 + laughterScore: 0 + - frameNumber: 315 + frameDelay: 0 + Visemes: + - 0.23874258 + - 0.0007909335 + - 0.0005214475 + - 0.0021566807 + - 0.053165235 + - 0.00061193004 + - 0.00028035138 + - 0.30769598 + - 0.0020079534 + - 0.00040725543 + - 0.030984862 + - 0.20336021 + - 0.13219354 + - 0.026285047 + - 0.0007959383 + laughterScore: 0 + - frameNumber: 316 + frameDelay: 0 + Visemes: + - 0.17576104 + - 0.00065121177 + - 0.00037372598 + - 0.0016191535 + - 0.038825374 + - 0.00076399755 + - 0.00021115007 + - 0.21551888 + - 0.0014226539 + - 0.00029279874 + - 0.02768794 + - 0.41515243 + - 0.10263224 + - 0.018525971 + - 0.00056136824 + laughterScore: 0 + - frameNumber: 317 + frameDelay: 0 + Visemes: + - 0.13116606 + - 0.0004732573 + - 0.00026449517 + - 0.0011866735 + - 0.02752602 + - 0.0010395448 + - 0.0001493978 + - 0.15087949 + - 0.0010688022 + - 0.00021253346 + - 0.022399982 + - 0.57752836 + - 0.07270547 + - 0.013004116 + - 0.00039574323 + laughterScore: 0 + - frameNumber: 318 + frameDelay: 0 + Visemes: + - 0.09703179 + - 0.00034413082 + - 0.00018578632 + - 0.00085728697 + - 0.019531911 + - 0.0015380792 + - 0.00010494778 + - 0.10561669 + - 0.0018637516 + - 0.00015921108 + - 0.016997788 + - 0.694741 + - 0.051635098 + - 0.009113442 + - 0.00027901697 + laughterScore: 0 + - frameNumber: 319 + frameDelay: 0 + Visemes: + - 0.076296 + - 0.0002580189 + - 0.00013178673 + - 0.0006401708 + - 0.013870618 + - 0.0012924351 + - 0.00007379184 + - 0.07393365 + - 0.005184974 + - 0.00012341526 + - 0.013115583 + - 0.77182716 + - 0.036657803 + - 0.006395932 + - 0.00019861021 + laughterScore: 0 + - frameNumber: 320 + frameDelay: 0 + Visemes: + - 0.059916098 + - 0.00038545334 + - 0.0001038068 + - 0.0007213679 + - 0.0105430735 + - 0.001022202 + - 0.000065223154 + - 0.05180006 + - 0.13852187 + - 0.00009679036 + - 0.01099247 + - 0.6946995 + - 0.026425699 + - 0.004536704 + - 0.00016969003 + laughterScore: 0 + - frameNumber: 321 + frameDelay: 0 + Visemes: + - 0.0441396 + - 0.00098795 + - 0.000089675304 + - 0.0006205508 + - 0.0077182767 + - 0.00076671893 + - 0.00013897018 + - 0.036285926 + - 0.39114305 + - 0.0000695482 + - 0.008155503 + - 0.48795485 + - 0.018629868 + - 0.0031779627 + - 0.000121577265 + laughterScore: 0 + - frameNumber: 322 + frameDelay: 0 + Visemes: + - 0.037733108 + - 0.002234041 + - 0.00007148227 + - 0.0005556926 + - 0.0068779932 + - 0.0009861662 + - 0.00012116097 + - 0.025415922 + - 0.5625598 + - 0.000049525446 + - 0.005980894 + - 0.34193528 + - 0.013164216 + - 0.002226038 + - 0.00008869693 + laughterScore: 0 + - frameNumber: 323 + frameDelay: 0 + Visemes: + - 0.033852074 + - 0.0051942104 + - 0.000056951252 + - 0.008489459 + - 0.012446009 + - 0.0010865915 + - 0.00012837228 + - 0.017818859 + - 0.6658698 + - 0.000038041653 + - 0.004375606 + - 0.23945324 + - 0.009554011 + - 0.0015616314 + - 0.00007514519 + laughterScore: 0 + - frameNumber: 324 + frameDelay: 0 + Visemes: + - 0.028011352 + - 0.0061789155 + - 0.000063095766 + - 0.028526537 + - 0.031356573 + - 0.0012767025 + - 0.00012611237 + - 0.012502183 + - 0.71302253 + - 0.000046807327 + - 0.0031995168 + - 0.16765857 + - 0.0068519185 + - 0.0010959742 + - 0.000083186096 + laughterScore: 0 + - frameNumber: 325 + frameDelay: 0 + Visemes: + - 0.024717726 + - 0.065177515 + - 0.0004782727 + - 0.04424413 + - 0.03837139 + - 0.0013318933 + - 0.00011104654 + - 0.008780181 + - 0.69029653 + - 0.00043819405 + - 0.0024504801 + - 0.1173858 + - 0.004934858 + - 0.0007693703 + - 0.00051264383 + laughterScore: 0 + - frameNumber: 326 + frameDelay: 0 + Visemes: + - 0.021620516 + - 0.2734674 + - 0.00054037664 + - 0.06423697 + - 0.02833528 + - 0.0009768945 + - 0.00008169801 + - 0.0061549493 + - 0.5144129 + - 0.00064059 + - 0.002201608 + - 0.08222587 + - 0.003556532 + - 0.0005473888 + - 0.0010010981 + laughterScore: 0 + - frameNumber: 327 + frameDelay: 0 + Visemes: + - 0.030852312 + - 0.1932061 + - 0.00047530525 + - 0.11536033 + - 0.021576865 + - 0.00094367284 + - 0.00008658362 + - 0.0043299412 + - 0.38893008 + - 0.000769604 + - 0.040464956 + - 0.19754611 + - 0.0033267792 + - 0.0012639178 + - 0.00086747116 + laughterScore: 0 + - frameNumber: 328 + frameDelay: 0 + Visemes: + - 0.029243277 + - 0.13567996 + - 0.00038757472 + - 0.0926918 + - 0.015382503 + - 0.00094119756 + - 0.00007641117 + - 0.0030377812 + - 0.27468646 + - 0.0006836966 + - 0.049317963 + - 0.39324033 + - 0.0025641862 + - 0.0014321051 + - 0.00063473615 + laughterScore: 0 + - frameNumber: 329 + frameDelay: 0 + Visemes: + - 0.023571445 + - 0.09502271 + - 0.000286767 + - 0.06510474 + - 0.011015789 + - 0.00081673614 + - 0.00005976347 + - 0.0021337932 + - 0.19315967 + - 0.0005283122 + - 0.05842813 + - 0.5463189 + - 0.0019134404 + - 0.0011867073 + - 0.0004531012 + laughterScore: 0 + - frameNumber: 330 + frameDelay: 0 + Visemes: + - 0.020866588 + - 0.0665889 + - 0.00021999826 + - 0.045608267 + - 0.008510249 + - 0.0009430564 + - 0.00006217595 + - 0.0015194046 + - 0.13597088 + - 0.00049513316 + - 0.06466879 + - 0.6517043 + - 0.0015150885 + - 0.0009974644 + - 0.0003297061 + laughterScore: 0 + - frameNumber: 331 + frameDelay: 0 + Visemes: + - 0.023186289 + - 0.047479376 + - 0.00025829594 + - 0.031969808 + - 0.043383572 + - 0.0008864632 + - 0.00007930718 + - 0.0011819927 + - 0.09667705 + - 0.00066135335 + - 0.04962495 + - 0.7023246 + - 0.0012243832 + - 0.00080630067 + - 0.0002562423 + laughterScore: 0 + - frameNumber: 332 + frameDelay: 0 + Visemes: + - 0.022978997 + - 0.039118573 + - 0.00086240127 + - 0.022703525 + - 0.06767707 + - 0.0028816992 + - 0.000102230246 + - 0.0019200308 + - 0.070628285 + - 0.0008065856 + - 0.036361273 + - 0.732213 + - 0.0009702671 + - 0.0005938798 + - 0.0001822191 + laughterScore: 0 + - frameNumber: 333 + frameDelay: 0 + Visemes: + - 0.019435069 + - 0.2708579 + - 0.0018005569 + - 0.016444046 + - 0.08875475 + - 0.007682313 + - 0.00014463454 + - 0.0016365098 + - 0.051293477 + - 0.00073480536 + - 0.025891652 + - 0.51403296 + - 0.00071770384 + - 0.0004454683 + - 0.00012819296 + laughterScore: 0 + - frameNumber: 334 + frameDelay: 0 + Visemes: + - 0.021573562 + - 0.3576138 + - 0.0023195664 + - 0.0118468385 + - 0.16830087 + - 0.019344214 + - 0.00032724143 + - 0.0014703228 + - 0.036421325 + - 0.000560139 + - 0.01893975 + - 0.3602742 + - 0.0005683964 + - 0.00034518645 + - 0.000094656294 + laughterScore: 0 + - frameNumber: 335 + frameDelay: 0 + Visemes: + - 0.021844732 + - 0.28346696 + - 0.0021176739 + - 0.008693439 + - 0.3413474 + - 0.015980965 + - 0.00043396302 + - 0.03343532 + - 0.025527775 + - 0.00039915656 + - 0.013563508 + - 0.25237146 + - 0.00048754713 + - 0.00024512972 + - 0.00008497544 + laughterScore: 0 + - frameNumber: 336 + frameDelay: 0 + Visemes: + - 0.020623762 + - 0.20202422 + - 0.0018778509 + - 0.006196869 + - 0.317751 + - 0.011748294 + - 0.00032023562 + - 0.23431556 + - 0.01788607 + - 0.0002859531 + - 0.009607438 + - 0.17670564 + - 0.00040348817 + - 0.00017287176 + - 0.00008071236 + laughterScore: 0 + - frameNumber: 337 + frameDelay: 0 + Visemes: + - 0.017344275 + - 0.14226374 + - 0.0014747164 + - 0.0043911403 + - 0.22764182 + - 0.008325075 + - 0.0002366473 + - 0.45445824 + - 0.012532171 + - 0.00020341386 + - 0.00690327 + - 0.12371577 + - 0.0003200936 + - 0.00012214591 + - 0.00006746696 + laughterScore: 0 + - frameNumber: 338 + frameDelay: 0 + Visemes: + - 0.015911303 + - 0.09985502 + - 0.0011309286 + - 0.0031055748 + - 0.16259995 + - 0.0060025183 + - 0.0001837864 + - 0.6095582 + - 0.008794253 + - 0.00015821418 + - 0.005483098 + - 0.08666815 + - 0.00038583702 + - 0.000092135575 + - 0.00007098458 + laughterScore: 0 + - frameNumber: 339 + frameDelay: 0 + Visemes: + - 0.02285742 + - 0.07134585 + - 0.0010708347 + - 0.0025985688 + - 0.12991576 + - 0.030848365 + - 0.00015951786 + - 0.6656749 + - 0.006548212 + - 0.0002957848 + - 0.004560845 + - 0.061022345 + - 0.0024953943 + - 0.00016341955 + - 0.00044278763 + laughterScore: 0 + - frameNumber: 340 + frameDelay: 0 + Visemes: + - 0.03576882 + - 0.052128382 + - 0.0014632011 + - 0.023971567 + - 0.2089222 + - 0.06293409 + - 0.0001742221 + - 0.55712664 + - 0.0058908374 + - 0.0003852417 + - 0.0039345426 + - 0.04319994 + - 0.0028478596 + - 0.0003004822 + - 0.0009520183 + laughterScore: 0 + - frameNumber: 341 + frameDelay: 0 + Visemes: + - 0.031174663 + - 0.037539832 + - 0.0011440445 + - 0.17268366 + - 0.1844028 + - 0.045136675 + - 0.00015484661 + - 0.44335783 + - 0.032315932 + - 0.0003332445 + - 0.010169465 + - 0.034616515 + - 0.004350178 + - 0.00086763606 + - 0.0017527423 + laughterScore: 0 + - frameNumber: 342 + frameDelay: 0 + Visemes: + - 0.025204381 + - 0.026601216 + - 0.0011255658 + - 0.12128921 + - 0.12945934 + - 0.031629156 + - 0.000110934845 + - 0.3103844 + - 0.02304118 + - 0.0015945381 + - 0.28399953 + - 0.025013823 + - 0.012052445 + - 0.0056595467 + - 0.002834751 + laughterScore: 0 + - frameNumber: 343 + frameDelay: 0 + Visemes: + - 0.019239068 + - 0.019047864 + - 0.015747882 + - 0.085545026 + - 0.090966105 + - 0.022189444 + - 0.00007808678 + - 0.21730085 + - 0.01664973 + - 0.001673287 + - 0.47424918 + - 0.017586503 + - 0.012072439 + - 0.0052125882 + - 0.0024419674 + laughterScore: 0 + - frameNumber: 344 + frameDelay: 0 + Visemes: + - 0.017172148 + - 0.109362654 + - 0.11961438 + - 0.06279073 + - 0.06488367 + - 0.016537048 + - 0.00007399575 + - 0.15227525 + - 0.0129647255 + - 0.0013151168 + - 0.41506162 + - 0.012320898 + - 0.008659069 + - 0.003994644 + - 0.0029741062 + laughterScore: 0 + - frameNumber: 345 + frameDelay: 0 + Visemes: + - 0.019892357 + - 0.15922278 + - 0.26085106 + - 0.047196455 + - 0.04701608 + - 0.013266973 + - 0.00012371794 + - 0.10668727 + - 0.009934189 + - 0.001187348 + - 0.31397992 + - 0.008629281 + - 0.0063139014 + - 0.003018063 + - 0.0026806449 + laughterScore: 0 + - frameNumber: 346 + frameDelay: 0 + Visemes: + - 0.02307675 + - 0.28395033 + - 0.282614 + - 0.03524367 + - 0.03324742 + - 0.00947708 + - 0.00009081828 + - 0.074694365 + - 0.009751763 + - 0.0021483104 + - 0.22152632 + - 0.0060459794 + - 0.004629356 + - 0.0022170658 + - 0.011286778 + laughterScore: 0 + - frameNumber: 347 + frameDelay: 0 + Visemes: + - 0.031349156 + - 0.27617905 + - 0.29371825 + - 0.025184875 + - 0.023507603 + - 0.007274051 + - 0.000067190675 + - 0.05233501 + - 0.037790403 + - 0.0017967166 + - 0.1859798 + - 0.0049848645 + - 0.028282207 + - 0.017788727 + - 0.013762128 + laughterScore: 0 + - frameNumber: 348 + frameDelay: 0 + Visemes: + - 0.026213288 + - 0.194066 + - 0.20768043 + - 0.017670553 + - 0.016572103 + - 0.0051412373 + - 0.000047498885 + - 0.036637787 + - 0.054866012 + - 0.0017371172 + - 0.3085552 + - 0.0046710535 + - 0.050841514 + - 0.046161897 + - 0.029138342 + laughterScore: 0 + - frameNumber: 349 + frameDelay: 0 + Visemes: + - 0.030439999 + - 0.13621604 + - 0.14583892 + - 0.012420777 + - 0.012740195 + - 0.0036352829 + - 0.00003473114 + - 0.025671035 + - 0.14035395 + - 0.0016404493 + - 0.27441952 + - 0.003890483 + - 0.03897702 + - 0.10549961 + - 0.068222 + laughterScore: 0 + - frameNumber: 350 + frameDelay: 0 + Visemes: + - 0.025779737 + - 0.09539912 + - 0.10210996 + - 0.008757933 + - 0.009288063 + - 0.002582336 + - 0.000032331936 + - 0.01798526 + - 0.24667111 + - 0.0042652916 + - 0.19225879 + - 0.002745583 + - 0.027370574 + - 0.21638343 + - 0.04837048 + laughterScore: 0 + - frameNumber: 351 + frameDelay: 0 + Visemes: + - 0.02001303 + - 0.06681695 + - 0.07150841 + - 0.0062259748 + - 0.0066564735 + - 0.0018850365 + - 0.00003538922 + - 0.012597158 + - 0.19867612 + - 0.017569441 + - 0.13481045 + - 0.0020155038 + - 0.01938317 + - 0.40719405 + - 0.034612816 + laughterScore: 0 + - frameNumber: 352 + frameDelay: 0 + Visemes: + - 0.014552182 + - 0.0467751 + - 0.050060414 + - 0.004399205 + - 0.004720505 + - 0.0013364917 + - 0.00004420886 + - 0.008821373 + - 0.14105475 + - 0.013406333 + - 0.094505854 + - 0.002048656 + - 0.014265463 + - 0.5793985 + - 0.024610948 + laughterScore: 0 + - frameNumber: 353 + frameDelay: 0 + Visemes: + - 0.010850308 + - 0.032748643 + - 0.0350534 + - 0.0032129707 + - 0.0034993866 + - 0.0010132414 + - 0.00006471105 + - 0.006186536 + - 0.09998317 + - 0.013869012 + - 0.06643964 + - 0.0046993317 + - 0.011692945 + - 0.6932803 + - 0.017406417 + laughterScore: 0 + - frameNumber: 354 + frameDelay: 0 + Visemes: + - 0.00801064 + - 0.022925569 + - 0.024573913 + - 0.003900143 + - 0.002897867 + - 0.0010480176 + - 0.0004949595 + - 0.0048847846 + - 0.07012256 + - 0.01497161 + - 0.046719152 + - 0.0039229994 + - 0.01122349 + - 0.7721139 + - 0.0121903485 + laughterScore: 0 + - frameNumber: 355 + frameDelay: 0 + Visemes: + - 0.005977743 + - 0.016048864 + - 0.01722768 + - 0.0033854987 + - 0.002386383 + - 0.0007892681 + - 0.0004909989 + - 0.041036088 + - 0.049133312 + - 0.011299756 + - 0.032768022 + - 0.0028833495 + - 0.00828768 + - 0.7997486 + - 0.0085367365 + laughterScore: 0 + - frameNumber: 356 + frameDelay: 0 + Visemes: + - 0.0056444723 + - 0.011235352 + - 0.012174783 + - 0.0047301673 + - 0.0028878434 + - 0.0007069529 + - 0.00041623006 + - 0.29202464 + - 0.034402627 + - 0.007963796 + - 0.022982977 + - 0.0021452548 + - 0.005928747 + - 0.5907779 + - 0.005978256 + laughterScore: 0 + - frameNumber: 357 + frameDelay: 0 + Visemes: + - 0.0054602562 + - 0.007868105 + - 0.008561366 + - 0.0044469726 + - 0.0034781366 + - 0.000512764 + - 0.0003124746 + - 0.4997558 + - 0.024094775 + - 0.005583267 + - 0.016121399 + - 0.0015687419 + - 0.00418733 + - 0.4138589 + - 0.00418971 + laughterScore: 0 + - frameNumber: 358 + frameDelay: 0 + Visemes: + - 0.007666867 + - 0.0055164928 + - 0.0060348064 + - 0.0040249904 + - 0.009014177 + - 0.0004354252 + - 0.00025623452 + - 0.6378318 + - 0.016920596 + - 0.003919928 + - 0.011357506 + - 0.0011530719 + - 0.0031718975 + - 0.28974426 + - 0.0029519233 + laughterScore: 0 + - frameNumber: 359 + frameDelay: 0 + Visemes: + - 0.016193727 + - 0.0040268106 + - 0.0043527707 + - 0.00838795 + - 0.029419597 + - 0.00046830293 + - 0.00021088836 + - 0.70296144 + - 0.013134048 + - 0.0027664555 + - 0.008576012 + - 0.00089637644 + - 0.0033723826 + - 0.20300996 + - 0.002223265 + laughterScore: 0 + - frameNumber: 360 + frameDelay: 0 + Visemes: + - 0.018441813 + - 0.0029674226 + - 0.0030680744 + - 0.010522787 + - 0.025470626 + - 0.0007613881 + - 0.00032545946 + - 0.51093245 + - 0.012441315 + - 0.002072914 + - 0.08794249 + - 0.019324858 + - 0.16118293 + - 0.14278737 + - 0.0017580799 + laughterScore: 0 + - frameNumber: 361 + frameDelay: 0 + Visemes: + - 0.025017291 + - 0.002147375 + - 0.0023064448 + - 0.008641626 + - 0.02541578 + - 0.0009278323 + - 0.00043464213 + - 0.36647412 + - 0.00935367 + - 0.0019014971 + - 0.10482383 + - 0.066178456 + - 0.28472984 + - 0.100334145 + - 0.0013134427 + laughterScore: 0 + - frameNumber: 362 + frameDelay: 0 + Visemes: + - 0.020968325 + - 0.0015529852 + - 0.0017424322 + - 0.0065187756 + - 0.021615814 + - 0.0008894872 + - 0.00034049287 + - 0.25682104 + - 0.0068326597 + - 0.0015095774 + - 0.10916975 + - 0.07495123 + - 0.4259035 + - 0.07024978 + - 0.0009341196 + laughterScore: 0 + - frameNumber: 363 + frameDelay: 0 + Visemes: + - 0.020177495 + - 0.0011138492 + - 0.0012892585 + - 0.0048265066 + - 0.017900039 + - 0.0010093444 + - 0.0002870928 + - 0.17985642 + - 0.0055826013 + - 0.0011578734 + - 0.0948653 + - 0.099558175 + - 0.5225122 + - 0.049191877 + - 0.00067189895 + laughterScore: 0 + - frameNumber: 364 + frameDelay: 0 + Visemes: + - 0.019481413 + - 0.00083547976 + - 0.0009263248 + - 0.0034761648 + - 0.01838267 + - 0.0015667999 + - 0.00023061433 + - 0.12598968 + - 0.009316016 + - 0.0009598199 + - 0.079694524 + - 0.15311673 + - 0.55107605 + - 0.034450736 + - 0.0004968993 + laughterScore: 0 + - frameNumber: 365 + frameDelay: 0 + Visemes: + - 0.021524403 + - 0.0007002537 + - 0.00068166375 + - 0.002612659 + - 0.015621269 + - 0.0016025914 + - 0.0001865861 + - 0.088352546 + - 0.028448042 + - 0.0014250225 + - 0.08310324 + - 0.20104429 + - 0.52998525 + - 0.024154123 + - 0.000558044 + laughterScore: 0 + - frameNumber: 366 + frameDelay: 0 + Visemes: + - 0.018879995 + - 0.0012875136 + - 0.00060237484 + - 0.0018950916 + - 0.013947598 + - 0.0033694112 + - 0.00014219854 + - 0.061885007 + - 0.28975642 + - 0.0010854792 + - 0.061227344 + - 0.1448496 + - 0.38370848 + - 0.016911348 + - 0.00045216904 + laughterScore: 0 + - frameNumber: 367 + frameDelay: 0 + Visemes: + - 0.019863907 + - 0.002297739 + - 0.00048601296 + - 0.0014199468 + - 0.011464349 + - 0.0060693603 + - 0.0001228239 + - 0.043379165 + - 0.48723555 + - 0.00076896796 + - 0.043442428 + - 0.10190206 + - 0.2693874 + - 0.011838851 + - 0.00032147428 + laughterScore: 0 + - frameNumber: 368 + frameDelay: 0 + Visemes: + - 0.020834789 + - 0.0027645547 + - 0.00043860942 + - 0.0056313593 + - 0.033883817 + - 0.00931676 + - 0.00022470747 + - 0.03052424 + - 0.5950497 + - 0.000562003 + - 0.030949049 + - 0.07182935 + - 0.1894209 + - 0.008290985 + - 0.00027915268 + laughterScore: 0 + - frameNumber: 369 + frameDelay: 0 + Visemes: + - 0.020124711 + - 0.017483776 + - 0.002354582 + - 0.016111942 + - 0.11097748 + - 0.0079203695 + - 0.0013093748 + - 0.02157512 + - 0.57870346 + - 0.0015974301 + - 0.025922157 + - 0.05081927 + - 0.13507332 + - 0.005894612 + - 0.0041323295 + laughterScore: 0 + - frameNumber: 370 + frameDelay: 0 + Visemes: + - 0.019937245 + - 0.09779664 + - 0.01699536 + - 0.014027035 + - 0.10846123 + - 0.012246798 + - 0.002558483 + - 0.015233408 + - 0.46603626 + - 0.03234412 + - 0.020443153 + - 0.03563186 + - 0.095644616 + - 0.004358789 + - 0.05828496 + laughterScore: 0 + - frameNumber: 371 + frameDelay: 0 + Visemes: + - 0.018028421 + - 0.08258709 + - 0.017829541 + - 0.010067556 + - 0.07676045 + - 0.009515694 + - 0.0018243247 + - 0.010689529 + - 0.32857668 + - 0.19797419 + - 0.014889536 + - 0.025028449 + - 0.06732328 + - 0.0033327295 + - 0.13557248 + laughterScore: 0 + - frameNumber: 372 + frameDelay: 0 + Visemes: + - 0.013735705 + - 0.058014106 + - 0.012633858 + - 0.007054076 + - 0.053742405 + - 0.006727116 + - 0.0012794398 + - 0.0074847485 + - 0.23004618 + - 0.42936707 + - 0.010509161 + - 0.018027946 + - 0.04901933 + - 0.0023488975 + - 0.10000993 + laughterScore: 0 + - frameNumber: 373 + frameDelay: 0 + Visemes: + - 0.010808841 + - 0.040636465 + - 0.008852976 + - 0.0049403924 + - 0.037629765 + - 0.004716145 + - 0.0008958257 + - 0.005239508 + - 0.16110396 + - 0.56471634 + - 0.007386979 + - 0.013099892 + - 0.0675184 + - 0.0016469599 + - 0.07080749 + laughterScore: 0 + - frameNumber: 374 + frameDelay: 0 + Visemes: + - 0.008823937 + - 0.028453255 + - 0.006200396 + - 0.0034645908 + - 0.026344342 + - 0.0033158138 + - 0.00062759366 + - 0.0036677928 + - 0.112821445 + - 0.40611365 + - 0.00522788 + - 0.009725845 + - 0.33406505 + - 0.0011573692 + - 0.04999101 + laughterScore: 0 + - frameNumber: 375 + frameDelay: 0 + Visemes: + - 0.007021333 + - 0.019917844 + - 0.004340807 + - 0.0024275403 + - 0.018443068 + - 0.002335348 + - 0.000439931 + - 0.0025678992 + - 0.07898936 + - 0.28470236 + - 0.0038113047 + - 0.0071073016 + - 0.5319583 + - 0.0008107788 + - 0.03512684 + laughterScore: 0 + - frameNumber: 376 + frameDelay: 0 + Visemes: + - 0.005824643 + - 0.013947961 + - 0.0030403147 + - 0.001705181 + - 0.012917462 + - 0.0016451471 + - 0.00030840552 + - 0.0017986671 + - 0.05540196 + - 0.19931938 + - 0.08349576 + - 0.0049883416 + - 0.59032786 + - 0.0005681684 + - 0.024710687 + laughterScore: 0 + - frameNumber: 377 + frameDelay: 0 + Visemes: + - 0.0044335783 + - 0.0097692935 + - 0.0021283994 + - 0.0011962902 + - 0.009047494 + - 0.0011542194 + - 0.00021591861 + - 0.0012593598 + - 0.040813234 + - 0.13952772 + - 0.30832952 + - 0.0034998811 + - 0.46092182 + - 0.00039884154 + - 0.01730438 + laughterScore: 0 + - frameNumber: 378 + frameDelay: 0 + Visemes: + - 0.0035523833 + - 0.006866293 + - 0.0014902592 + - 0.00083898165 + - 0.006340475 + - 0.0008087811 + - 0.00015118968 + - 0.00088247505 + - 0.056421183 + - 0.097677626 + - 0.48459083 + - 0.00249789 + - 0.32547715 + - 0.0002870765 + - 0.012117428 + laughterScore: 0 + - frameNumber: 379 + frameDelay: 0 + Visemes: + - 0.0036073301 + - 0.004891449 + - 0.0010453587 + - 0.000590355 + - 0.0044673956 + - 0.0005673513 + - 0.00010625224 + - 0.0006244488 + - 0.24922146 + - 0.06837878 + - 0.4274885 + - 0.0018023257 + - 0.22849265 + - 0.00021153901 + - 0.008504836 + laughterScore: 0 + - frameNumber: 380 + frameDelay: 0 + Visemes: + - 0.0032267594 + - 0.0034325111 + - 0.00074447156 + - 0.00044744596 + - 0.0032065872 + - 0.00039923613 + - 0.000076621836 + - 0.0011508816 + - 0.4693264 + - 0.047873802 + - 0.3024484 + - 0.0012795366 + - 0.16021399 + - 0.00021729148 + - 0.0059560835 + laughterScore: 0 + - frameNumber: 381 + frameDelay: 0 + Visemes: + - 0.006475595 + - 0.002867206 + - 0.00071398774 + - 0.0038664036 + - 0.011392282 + - 0.00041981522 + - 0.00015440749 + - 0.004069974 + - 0.60558397 + - 0.03356356 + - 0.21273711 + - 0.00089879206 + - 0.11286161 + - 0.0002015123 + - 0.004193801 + laughterScore: 0 + - frameNumber: 382 + frameDelay: 0 + Visemes: + - 0.0151185 + - 0.0030439685 + - 0.0008838122 + - 0.10927812 + - 0.12392006 + - 0.0008331317 + - 0.0015742783 + - 0.011029356 + - 0.47744325 + - 0.023789937 + - 0.14942883 + - 0.00065746496 + - 0.07981887 + - 0.00020986382 + - 0.0029705898 + laughterScore: 0 + - frameNumber: 383 + frameDelay: 0 + Visemes: + - 0.014882654 + - 0.0022023648 + - 0.0006630461 + - 0.10978142 + - 0.3431795 + - 0.0006318114 + - 0.0016288443 + - 0.010119465 + - 0.336748 + - 0.016664343 + - 0.10479492 + - 0.0004719159 + - 0.05595011 + - 0.00018995795 + - 0.0020916634 + laughterScore: 0 + - frameNumber: 384 + frameDelay: 0 + Visemes: + - 0.012908837 + - 0.0015745482 + - 0.0004930256 + - 0.07975157 + - 0.5284041 + - 0.00053424685 + - 0.0011954935 + - 0.012897559 + - 0.23582283 + - 0.011667047 + - 0.07354072 + - 0.00033473794 + - 0.039197944 + - 0.00015208402 + - 0.0015251688 + laughterScore: 0 + - frameNumber: 385 + frameDelay: 0 + Visemes: + - 0.010251772 + - 0.0011440094 + - 0.00037257036 + - 0.056209333 + - 0.650228 + - 0.0020015892 + - 0.0008573478 + - 0.009872893 + - 0.16510408 + - 0.008178273 + - 0.06653786 + - 0.00037225883 + - 0.027505882 + - 0.00016018955 + - 0.0012039108 + laughterScore: 0 + - frameNumber: 386 + frameDelay: 0 + Visemes: + - 0.010220105 + - 0.0008777192 + - 0.00034432148 + - 0.039573714 + - 0.72427475 + - 0.012994914 + - 0.0006339218 + - 0.0071377046 + - 0.115609996 + - 0.005815793 + - 0.059948847 + - 0.0014310988 + - 0.019406043 + - 0.0007543118 + - 0.0009767945 + laughterScore: 0 + - frameNumber: 387 + frameDelay: 0 + Visemes: + - 0.00892473 + - 0.0006307769 + - 0.00025070517 + - 0.027719693 + - 0.5126384 + - 0.011047576 + - 0.00046260038 + - 0.0049993778 + - 0.08093267 + - 0.0041458644 + - 0.31839892 + - 0.004370087 + - 0.013714557 + - 0.0110690305 + - 0.000695062 + laughterScore: 0 + - frameNumber: 388 + frameDelay: 0 + Visemes: + - 0.008551678 + - 0.00057209405 + - 0.00018105068 + - 0.019406982 + - 0.36023447 + - 0.008157554 + - 0.00032925245 + - 0.003500994 + - 0.056733426 + - 0.0031633493 + - 0.4980331 + - 0.007362372 + - 0.009902294 + - 0.023375534 + - 0.0004958901 + laughterScore: 0 + - frameNumber: 389 + frameDelay: 0 + Visemes: + - 0.007475323 + - 0.0028358563 + - 0.00012937255 + - 0.013587239 + - 0.25260678 + - 0.0058678626 + - 0.00023120298 + - 0.0024523048 + - 0.039965834 + - 0.003275914 + - 0.6368128 + - 0.006320209 + - 0.0074620647 + - 0.02062266 + - 0.00035464633 + laughterScore: 0 + - frameNumber: 390 + frameDelay: 0 + Visemes: + - 0.0059693013 + - 0.004919866 + - 0.00009179491 + - 0.00951191 + - 0.17691585 + - 0.004165258 + - 0.00016199752 + - 0.0017167889 + - 0.028073348 + - 0.0037827026 + - 0.739254 + - 0.0045738216 + - 0.0053556063 + - 0.015257747 + - 0.00025005382 + laughterScore: 0 + - frameNumber: 391 + frameDelay: 0 + Visemes: + - 0.0046842815 + - 0.0039604893 + - 0.0000644537 + - 0.00665887 + - 0.12388545 + - 0.0029369127 + - 0.000113497495 + - 0.0012017831 + - 0.019682975 + - 0.0031947247 + - 0.815536 + - 0.0032892672 + - 0.0038101398 + - 0.010805409 + - 0.00017578526 + laughterScore: 0 + - frameNumber: 392 + frameDelay: 0 + Visemes: + - 0.0037840619 + - 0.005281322 + - 0.000045463537 + - 0.004662606 + - 0.086763084 + - 0.0020908166 + - 0.00007984058 + - 0.0008413049 + - 0.013828119 + - 0.0024229784 + - 0.8672116 + - 0.0023799716 + - 0.0028958183 + - 0.0075863576 + - 0.00012679785 + laughterScore: 0 + - frameNumber: 393 + frameDelay: 0 + Visemes: + - 0.0034556435 + - 0.016126303 + - 0.000033113327 + - 0.0032672954 + - 0.060843095 + - 0.0015431235 + - 0.000059716105 + - 0.0005891162 + - 0.0097896755 + - 0.0017903597 + - 0.89210165 + - 0.0018447136 + - 0.0031376104 + - 0.005318121 + - 0.000100574776 + laughterScore: 0 + - frameNumber: 394 + frameDelay: 0 + Visemes: + - 0.003117866 + - 0.030348148 + - 0.000026539214 + - 0.0022985444 + - 0.042755805 + - 0.0011500722 + - 0.00005386986 + - 0.0004126299 + - 0.0070226234 + - 0.0013071685 + - 0.90131766 + - 0.0015004587 + - 0.004864415 + - 0.0037256705 + - 0.00009859667 + laughterScore: 0 + - frameNumber: 395 + frameDelay: 0 + Visemes: + - 0.0022281627 + - 0.32067233 + - 0.00005511017 + - 0.001609112 + - 0.029933855 + - 0.00090943737 + - 0.000037811355 + - 0.000288939 + - 0.0049731336 + - 0.00091638084 + - 0.6311985 + - 0.0010514208 + - 0.0034485003 + - 0.002607992 + - 0.00006939108 + laughterScore: 0 + - frameNumber: 396 + frameDelay: 0 + Visemes: + - 0.0016419138 + - 0.5238762 + - 0.00007476851 + - 0.0011267733 + - 0.020964755 + - 0.0008142041 + - 0.00002653978 + - 0.0002025749 + - 0.0035973222 + - 0.00064349145 + - 0.44199374 + - 0.00073662534 + - 0.0024255244 + - 0.0018256068 + - 0.000050027826 + laughterScore: 0 + - frameNumber: 397 + frameDelay: 0 + Visemes: + - 0.0014470307 + - 0.6630507 + - 0.0004442513 + - 0.0008123738 + - 0.0154190445 + - 0.0012939986 + - 0.000027201088 + - 0.0002693051 + - 0.0034503965 + - 0.00045612227 + - 0.30973673 + - 0.00052300247 + - 0.0017415895 + - 0.0012782078 + - 0.000050070856 + laughterScore: 0 + - frameNumber: 398 + frameDelay: 0 + Visemes: + - 0.0033209575 + - 0.74546874 + - 0.0041887565 + - 0.0008608366 + - 0.015623663 + - 0.0038224254 + - 0.0002224874 + - 0.0008225746 + - 0.005055151 + - 0.00034867282 + - 0.21757773 + - 0.0003728486 + - 0.0013741787 + - 0.00089903653 + - 0.000041982716 + laughterScore: 0 + - frameNumber: 399 + frameDelay: 0 + Visemes: + - 0.018966867 + - 0.6229529 + - 0.006223061 + - 0.011459004 + - 0.12596756 + - 0.04838326 + - 0.0028969173 + - 0.0016854357 + - 0.0048429216 + - 0.00031920057 + - 0.15397242 + - 0.0002939427 + - 0.001325577 + - 0.00066362944 + - 0.00004737517 + laughterScore: 0 + - frameNumber: 400 + frameDelay: 0 + Visemes: + - 0.025108082 + - 0.47550035 + - 0.008529624 + - 0.014556693 + - 0.27571404 + - 0.06564653 + - 0.017658748 + - 0.0024060002 + - 0.0038036734 + - 0.00029487588 + - 0.108391 + - 0.00032154965 + - 0.0013294902 + - 0.0006248487 + - 0.00011452731 + laughterScore: 0 + - frameNumber: 401 + frameDelay: 0 + Visemes: + - 0.023829596 + - 0.3329953 + - 0.006186285 + - 0.011235511 + - 0.48159206 + - 0.04681918 + - 0.014052433 + - 0.0019459917 + - 0.0027102854 + - 0.0002958112 + - 0.07603594 + - 0.00026379622 + - 0.0010831002 + - 0.0004857696 + - 0.00046891198 + laughterScore: 0 + - frameNumber: 402 + frameDelay: 0 + Visemes: + - 0.021665445 + - 0.23332207 + - 0.0044258866 + - 0.0081124585 + - 0.52880067 + - 0.033026263 + - 0.010549266 + - 0.0014634304 + - 0.0019306529 + - 0.0015417376 + - 0.14397596 + - 0.00023813584 + - 0.0012985776 + - 0.00061572075 + - 0.009033726 + laughterScore: 0 + - frameNumber: 403 + frameDelay: 0 + Visemes: + - 0.018500596 + - 0.16341045 + - 0.003153333 + - 0.005884921 + - 0.40618464 + - 0.02336106 + - 0.008905335 + - 0.0011672375 + - 0.0015736542 + - 0.0017456054 + - 0.20936862 + - 0.021130197 + - 0.041251946 + - 0.01761403 + - 0.076748356 + laughterScore: 0 + - frameNumber: 404 + frameDelay: 0 + Visemes: + - 0.015370363 + - 0.114408754 + - 0.0022299883 + - 0.0042551886 + - 0.28507695 + - 0.016430993 + - 0.0072098426 + - 0.0008369675 + - 0.0018907925 + - 0.0019586205 + - 0.20863 + - 0.022157561 + - 0.20482533 + - 0.019170834 + - 0.0955478 + laughterScore: 0 + - frameNumber: 405 + frameDelay: 0 + Visemes: + - 0.019467609 + - 0.080252826 + - 0.0015980722 + - 0.0050703324 + - 0.20125775 + - 0.012476557 + - 0.0050793313 + - 0.0006532686 + - 0.018747954 + - 0.0072890096 + - 0.21308486 + - 0.026705476 + - 0.16698486 + - 0.023947332 + - 0.21738474 + laughterScore: 0 + - frameNumber: 406 + frameDelay: 0 + Visemes: + - 0.019278929 + - 0.05772243 + - 0.0015962614 + - 0.08978285 + - 0.14454827 + - 0.01633581 + - 0.0035657112 + - 0.0005014703 + - 0.06507885 + - 0.0059356713 + - 0.19786212 + - 0.032770056 + - 0.13291131 + - 0.017009081 + - 0.2151012 + laughterScore: 0 + - frameNumber: 407 + frameDelay: 0 + Visemes: + - 0.017316258 + - 0.04061668 + - 0.0012456324 + - 0.09808901 + - 0.10726663 + - 0.022387931 + - 0.0025350333 + - 0.0003637158 + - 0.067642376 + - 0.006292088 + - 0.21864995 + - 0.07249866 + - 0.16573802 + - 0.012035398 + - 0.16732262 + laughterScore: 0 + - frameNumber: 408 + frameDelay: 0 + Visemes: + - 0.015040062 + - 0.028456533 + - 0.0010109813 + - 0.07774478 + - 0.076701865 + - 0.016147211 + - 0.0018056689 + - 0.00042730547 + - 0.054098986 + - 0.012406023 + - 0.24770992 + - 0.07149871 + - 0.2697121 + - 0.00947831 + - 0.11776156 + laughterScore: 0 + - frameNumber: 409 + frameDelay: 0 + Visemes: + - 0.020254191 + - 0.020186497 + - 0.0016916078 + - 0.056785375 + - 0.0979628 + - 0.011966666 + - 0.0013044439 + - 0.10522942 + - 0.042767152 + - 0.012010667 + - 0.24903256 + - 0.06248349 + - 0.22868213 + - 0.007030774 + - 0.08261225 + laughterScore: 0 + - frameNumber: 410 + frameDelay: 0 + Visemes: + - 0.024013441 + - 0.014290755 + - 0.0013027949 + - 0.040402442 + - 0.07887607 + - 0.00905975 + - 0.0010298609 + - 0.35018128 + - 0.030080663 + - 0.008533046 + - 0.17533807 + - 0.043777704 + - 0.16033758 + - 0.004938754 + - 0.05783777 + laughterScore: 0 + - frameNumber: 411 + frameDelay: 0 + Visemes: + - 0.024482064 + - 0.010148077 + - 0.0009640485 + - 0.028819555 + - 0.077790625 + - 0.006516382 + - 0.00074596674 + - 0.5122016 + - 0.021184757 + - 0.006033268 + - 0.12395244 + - 0.030687215 + - 0.11246858 + - 0.0034785063 + - 0.040526867 + laughterScore: 0 + - frameNumber: 412 + frameDelay: 0 + Visemes: + - 0.025165174 + - 0.007175154 + - 0.0007523759 + - 0.022368595 + - 0.11558175 + - 0.0047058715 + - 0.0005911489 + - 0.5848857 + - 0.015009069 + - 0.0042291195 + - 0.0880648 + - 0.021540368 + - 0.07903316 + - 0.0024567964 + - 0.028440878 + laughterScore: 0 + - frameNumber: 413 + frameDelay: 0 + Visemes: + - 0.024415346 + - 0.005141827 + - 0.00068453536 + - 0.023892272 + - 0.16612604 + - 0.004243763 + - 0.00048600123 + - 0.6037738 + - 0.011445282 + - 0.0029723397 + - 0.06322937 + - 0.015185016 + - 0.056575622 + - 0.0017451501 + - 0.020083664 + laughterScore: 0 + - frameNumber: 414 + frameDelay: 0 + Visemes: + - 0.020875614 + - 0.0038708958 + - 0.00058602437 + - 0.022487305 + - 0.13839747 + - 0.003958968 + - 0.00035976854 + - 0.6385645 + - 0.009292657 + - 0.002090734 + - 0.055215232 + - 0.04717843 + - 0.041265458 + - 0.0016870188 + - 0.014169937 + laughterScore: 0 + - frameNumber: 415 + frameDelay: 0 + Visemes: + - 0.01836904 + - 0.0027561155 + - 0.0004521935 + - 0.018952671 + - 0.099824175 + - 0.0034194672 + - 0.00032437002 + - 0.44879898 + - 0.007640099 + - 0.0015345592 + - 0.061519247 + - 0.29253304 + - 0.030575296 + - 0.003321039 + - 0.009979735 + laughterScore: 0 + - frameNumber: 416 + frameDelay: 0 + Visemes: + - 0.018513275 + - 0.001968218 + - 0.0003350979 + - 0.014840556 + - 0.07078476 + - 0.0029109474 + - 0.00024065649 + - 0.31427735 + - 0.0056278906 + - 0.0011377925 + - 0.06356381 + - 0.47287408 + - 0.022109242 + - 0.003795061 + - 0.0070212833 + laughterScore: 0 + - frameNumber: 417 + frameDelay: 0 + Visemes: + - 0.0148299 + - 0.0013817218 + - 0.00024657696 + - 0.010495473 + - 0.05095705 + - 0.0020788598 + - 0.0001703992 + - 0.22003725 + - 0.004017393 + - 0.0008122853 + - 0.048108216 + - 0.62309873 + - 0.015893182 + - 0.0029563701 + - 0.004916601 + laughterScore: 0 + - frameNumber: 418 + frameDelay: 0 + Visemes: + - 0.014500093 + - 0.0009910043 + - 0.00032006347 + - 0.0078058005 + - 0.049700618 + - 0.0015212685 + - 0.00013134873 + - 0.15420598 + - 0.003641988 + - 0.00074252486 + - 0.04048645 + - 0.7065918 + - 0.012468456 + - 0.0034378096 + - 0.0034548475 + laughterScore: 0 + - frameNumber: 419 + frameDelay: 0 + Visemes: + - 0.016453452 + - 0.0009552345 + - 0.0014556738 + - 0.00704501 + - 0.27907583 + - 0.0012769942 + - 0.00017634475 + - 0.10816185 + - 0.007972063 + - 0.0007380059 + - 0.03297382 + - 0.5281498 + - 0.0103665795 + - 0.0027527679 + - 0.002446636 + laughterScore: 0 + - frameNumber: 420 + frameDelay: 0 + Visemes: + - 0.019664515 + - 0.0009320969 + - 0.002182534 + - 0.009129003 + - 0.47335845 + - 0.0010614693 + - 0.00016719189 + - 0.07598145 + - 0.0076496797 + - 0.00059371 + - 0.025262002 + - 0.3725304 + - 0.0076103886 + - 0.0020832273 + - 0.0017938437 + laughterScore: 0 + - frameNumber: 421 + frameDelay: 0 + Visemes: + - 0.02130676 + - 0.000778716 + - 0.0025158143 + - 0.019769527 + - 0.5957502 + - 0.0009289611 + - 0.00012691035 + - 0.053692855 + - 0.008489847 + - 0.00047962018 + - 0.024409795 + - 0.26302722 + - 0.00565666 + - 0.0017304847 + - 0.0013366215 + laughterScore: 0 + - frameNumber: 422 + frameDelay: 0 + Visemes: + - 0.023297627 + - 0.0007504996 + - 0.0019844577 + - 0.017933562 + - 0.579271 + - 0.0009842494 + - 0.00009350279 + - 0.037756618 + - 0.0067849355 + - 0.0005882648 + - 0.12748726 + - 0.19318356 + - 0.0061445325 + - 0.002642232 + - 0.0010976993 + laughterScore: 0 + - frameNumber: 423 + frameDelay: 0 + Visemes: + - 0.04306776 + - 0.00084927224 + - 0.0018977944 + - 0.019441402 + - 0.48431206 + - 0.0016170125 + - 0.000115487 + - 0.02723719 + - 0.006255057 + - 0.0011878407 + - 0.19613987 + - 0.18401623 + - 0.026750892 + - 0.0051823705 + - 0.0019297604 + laughterScore: 0 + - frameNumber: 424 + frameDelay: 0 + Visemes: + - 0.04770023 + - 0.001248834 + - 0.002061577 + - 0.019482318 + - 0.3572343 + - 0.0028752098 + - 0.00014779394 + - 0.01946656 + - 0.00617106 + - 0.0033566917 + - 0.3137632 + - 0.18564925 + - 0.03189276 + - 0.0070824963 + - 0.0018677177 + laughterScore: 0 + - frameNumber: 425 + frameDelay: 0 + Visemes: + - 0.04138517 + - 0.0014275424 + - 0.004083244 + - 0.014166327 + - 0.25826067 + - 0.004731802 + - 0.00016217807 + - 0.014354827 + - 0.009793691 + - 0.0032594772 + - 0.41628075 + - 0.17825611 + - 0.044626728 + - 0.007575938 + - 0.0016355533 + laughterScore: 0 + - frameNumber: 426 + frameDelay: 0 + Visemes: + - 0.037667844 + - 0.002455078 + - 0.06757029 + - 0.013876386 + - 0.21341741 + - 0.003535677 + - 0.00014210567 + - 0.036328115 + - 0.009716399 + - 0.0036744552 + - 0.4180197 + - 0.12759499 + - 0.058872674 + - 0.005953492 + - 0.001175399 + laughterScore: 0 + - frameNumber: 427 + frameDelay: 0 + Visemes: + - 0.03902986 + - 0.0025503314 + - 0.2192953 + - 0.016530562 + - 0.2048715 + - 0.0029887697 + - 0.00013086153 + - 0.06104005 + - 0.0072827004 + - 0.0029358196 + - 0.3058171 + - 0.08940525 + - 0.043053858 + - 0.0042159874 + - 0.00085209496 + laughterScore: 0 + - frameNumber: 428 + frameDelay: 0 + Visemes: + - 0.04573794 + - 0.0022445119 + - 0.32128754 + - 0.0216522 + - 0.16103093 + - 0.0028035697 + - 0.00013823174 + - 0.12016815 + - 0.0055009457 + - 0.00217027 + - 0.2193232 + - 0.06266789 + - 0.031600863 + - 0.0030036867 + - 0.00067009474 + laughterScore: 0 + - frameNumber: 429 + frameDelay: 0 + Visemes: + - 0.045380764 + - 0.0018882721 + - 0.40753257 + - 0.026537191 + - 0.13458095 + - 0.0024507565 + - 0.00012067374 + - 0.15203804 + - 0.004173024 + - 0.0015700554 + - 0.15455428 + - 0.04389872 + - 0.02267176 + - 0.0021100633 + - 0.000492879 + laughterScore: 0 + - frameNumber: 430 + frameDelay: 0 + Visemes: + - 0.05644393 + - 0.004394444 + - 0.43829536 + - 0.0506999 + - 0.14087829 + - 0.002805172 + - 0.00018508585 + - 0.14272456 + - 0.003838917 + - 0.0012057375 + - 0.1094326 + - 0.03079602 + - 0.016370151 + - 0.0015045145 + - 0.0004253487 + laughterScore: 0 + - frameNumber: 431 + frameDelay: 0 + Visemes: + - 0.051685568 + - 0.004167907 + - 0.5423423 + - 0.054932255 + - 0.11750443 + - 0.0022335958 + - 0.00019298535 + - 0.11094749 + - 0.0030180435 + - 0.00091726857 + - 0.077199444 + - 0.021590013 + - 0.0116803115 + - 0.0010682216 + - 0.000520203 + laughterScore: 0 + - frameNumber: 432 + frameDelay: 0 + Visemes: + - 0.040807117 + - 0.0038020357 + - 0.3946636 + - 0.04354511 + - 0.0860474 + - 0.0018716983 + - 0.00017260724 + - 0.077724054 + - 0.0026324335 + - 0.0013633553 + - 0.06187767 + - 0.14725535 + - 0.13680716 + - 0.0008499223 + - 0.0005805337 + laughterScore: 0 + - frameNumber: 433 + frameDelay: 0 + Visemes: + - 0.031932995 + - 0.0027757045 + - 0.276851 + - 0.0309043 + - 0.06068944 + - 0.0014296722 + - 0.00014173346 + - 0.05443699 + - 0.0019786826 + - 0.0018317954 + - 0.045453157 + - 0.30152005 + - 0.18881154 + - 0.00070553925 + - 0.00053742994 + laughterScore: 0 + - frameNumber: 434 + frameDelay: 0 + Visemes: + - 0.026479868 + - 0.0020872736 + - 0.19415799 + - 0.021776132 + - 0.042766362 + - 0.0011301092 + - 0.00012751181 + - 0.038154267 + - 0.0016070532 + - 0.0014372976 + - 0.03238182 + - 0.44373253 + - 0.1930137 + - 0.0005484538 + - 0.00059967313 + laughterScore: 0 + - frameNumber: 435 + frameDelay: 0 + Visemes: + - 0.023480877 + - 0.0016096355 + - 0.13606368 + - 0.015299365 + - 0.030335769 + - 0.0011925042 + - 0.00011528177 + - 0.026787521 + - 0.0015435414 + - 0.0017901415 + - 0.022887474 + - 0.5393943 + - 0.1983243 + - 0.00042644417 + - 0.00074919284 + laughterScore: 0 + - frameNumber: 436 + frameDelay: 0 + Visemes: + - 0.01860522 + - 0.001239937 + - 0.09532982 + - 0.010795694 + - 0.022942387 + - 0.0016256034 + - 0.00012763368 + - 0.018846264 + - 0.0023409144 + - 0.0024621529 + - 0.016375298 + - 0.63583803 + - 0.17252679 + - 0.00032046018 + - 0.0006237903 + laughterScore: 0 + - frameNumber: 437 + frameDelay: 0 + Visemes: + - 0.015756264 + - 0.0009165506 + - 0.06817161 + - 0.0075805886 + - 0.016783122 + - 0.0017110493 + - 0.03227538 + - 0.034486283 + - 0.0019575504 + - 0.0024278322 + - 0.011729859 + - 0.6764751 + - 0.12895262 + - 0.00026838938 + - 0.0005078348 + laughterScore: 0 + - frameNumber: 438 + frameDelay: 0 + Visemes: + - 0.0125362985 + - 0.0006950052 + - 0.04916569 + - 0.005320207 + - 0.012665207 + - 0.0025591599 + - 0.2856892 + - 0.054520078 + - 0.0014197527 + - 0.001709261 + - 0.008267771 + - 0.47446036 + - 0.09044087 + - 0.00018897414 + - 0.00036215692 + laughterScore: 0 + - frameNumber: 439 + frameDelay: 0 + Visemes: + - 0.012365372 + - 0.0004922221 + - 0.035073128 + - 0.0037365092 + - 0.009018572 + - 0.0018637065 + - 0.4728277 + - 0.05986532 + - 0.0010134553 + - 0.0012100618 + - 0.005809368 + - 0.33260673 + - 0.06371188 + - 0.0001357711 + - 0.0002701682 + laughterScore: 0 + - frameNumber: 440 + frameDelay: 0 + Visemes: + - 0.019575901 + - 0.00086087664 + - 0.024873663 + - 0.0028208862 + - 0.008486902 + - 0.0015747419 + - 0.58162713 + - 0.06685662 + - 0.0009198808 + - 0.0010480932 + - 0.0063067786 + - 0.23288038 + - 0.049439132 + - 0.00013114799 + - 0.0025978214 + laughterScore: 0 + - frameNumber: 441 + frameDelay: 0 + Visemes: + - 0.027197469 + - 0.0060017235 + - 0.017968172 + - 0.0029997039 + - 0.007779223 + - 0.0016443261 + - 0.5510048 + - 0.054129213 + - 0.0024524839 + - 0.0036162587 + - 0.07264075 + - 0.16348436 + - 0.057704244 + - 0.00060906773 + - 0.03076817 + laughterScore: 0 + - frameNumber: 442 + frameDelay: 0 + Visemes: + - 0.030092752 + - 0.004574203 + - 0.012726389 + - 0.0021782455 + - 0.006151487 + - 0.002253301 + - 0.4247138 + - 0.03837756 + - 0.0026406506 + - 0.0036495542 + - 0.15510692 + - 0.115085445 + - 0.05104069 + - 0.10917934 + - 0.042229705 + laughterScore: 0 + - frameNumber: 443 + frameDelay: 0 + Visemes: + - 0.03771389 + - 0.003323254 + - 0.009012603 + - 0.0016455915 + - 0.0064543504 + - 0.0021228378 + - 0.30349377 + - 0.027046878 + - 0.00560703 + - 0.0044522705 + - 0.22780038 + - 0.08198739 + - 0.043861285 + - 0.19435272 + - 0.051125806 + laughterScore: 0 + - frameNumber: 444 + frameDelay: 0 + Visemes: + - 0.03959429 + - 0.0026022955 + - 0.0064073973 + - 0.0014310787 + - 0.007126961 + - 0.0025503805 + - 0.21418822 + - 0.019087572 + - 0.056432415 + - 0.012976747 + - 0.3150431 + - 0.057924006 + - 0.033194084 + - 0.18532571 + - 0.046115786 + laughterScore: 0 + - frameNumber: 445 + frameDelay: 0 + Visemes: + - 0.035792585 + - 0.0027205457 + - 0.0046867756 + - 0.0028273105 + - 0.007219743 + - 0.0024445755 + - 0.15002584 + - 0.013607427 + - 0.24001612 + - 0.012467528 + - 0.23226522 + - 0.040659346 + - 0.025545523 + - 0.19548556 + - 0.03423595 + laughterScore: 0 + - frameNumber: 446 + frameDelay: 0 + Visemes: + - 0.028418176 + - 0.056118716 + - 0.0042939074 + - 0.009206651 + - 0.052301362 + - 0.0045314925 + - 0.10518646 + - 0.0096230665 + - 0.32447475 + - 0.010498114 + - 0.16492416 + - 0.028494274 + - 0.019715218 + - 0.15754217 + - 0.024671538 + laughterScore: 0 + - frameNumber: 447 + frameDelay: 0 + Visemes: + - 0.027899232 + - 0.19810934 + - 0.005748706 + - 0.018496644 + - 0.11568757 + - 0.025853999 + - 0.07440137 + - 0.006924883 + - 0.23718876 + - 0.0074477536 + - 0.11632395 + - 0.019982332 + - 0.0140134515 + - 0.11459141 + - 0.017330673 + laughterScore: 0 + - frameNumber: 448 + frameDelay: 0 + Visemes: + - 0.029266953 + - 0.24527676 + - 0.009080736 + - 0.052237257 + - 0.19323349 + - 0.03600897 + - 0.05241498 + - 0.0050190617 + - 0.16922268 + - 0.0052806935 + - 0.08233121 + - 0.014027445 + - 0.010051935 + - 0.08406048 + - 0.012487354 + laughterScore: 0 + - frameNumber: 449 + frameDelay: 0 + Visemes: + - 0.024210816 + - 0.43684185 + - 0.008534051 + - 0.05827736 + - 0.13992882 + - 0.02590195 + - 0.036699682 + - 0.0036178057 + - 0.11903952 + - 0.0037829499 + - 0.05796959 + - 0.009851483 + - 0.0072527267 + - 0.058895733 + - 0.009195667 + laughterScore: 0 + - frameNumber: 450 + frameDelay: 0 + Visemes: + - 0.023826491 + - 0.5246956 + - 0.0071910117 + - 0.046494182 + - 0.10370268 + - 0.02080657 + - 0.025733069 + - 0.002679489 + - 0.099138536 + - 0.007896845 + - 0.05707059 + - 0.007147363 + - 0.015612116 + - 0.041507635 + - 0.016497899 + laughterScore: 0 + - frameNumber: 451 + frameDelay: 0 + Visemes: + - 0.022037111 + - 0.37528154 + - 0.0051946566 + - 0.063217185 + - 0.07584537 + - 0.014915245 + - 0.018092878 + - 0.001960745 + - 0.07226136 + - 0.009141724 + - 0.1645187 + - 0.008119126 + - 0.12179067 + - 0.029337782 + - 0.018285923 + laughterScore: 0 + - frameNumber: 452 + frameDelay: 0 + Visemes: + - 0.01762808 + - 0.26290333 + - 0.0040832018 + - 0.04509268 + - 0.054252747 + - 0.010525173 + - 0.0126821315 + - 0.003439594 + - 0.05150755 + - 0.009103233 + - 0.19828844 + - 0.01092813 + - 0.284471 + - 0.020945575 + - 0.014149113 + laughterScore: 0 + - frameNumber: 453 + frameDelay: 0 + Visemes: + - 0.017219462 + - 0.18495345 + - 0.012046244 + - 0.03301531 + - 0.045118716 + - 0.0077531124 + - 0.008933944 + - 0.2198508 + - 0.038716324 + - 0.007317982 + - 0.18092427 + - 0.00794652 + - 0.21152017 + - 0.0146696195 + - 0.01001407 + laughterScore: 0 + - frameNumber: 454 + frameDelay: 0 + Visemes: + - 0.01832781 + - 0.12981267 + - 0.009146186 + - 0.027004233 + - 0.039026536 + - 0.0056790886 + - 0.0063514197 + - 0.43073133 + - 0.027517606 + - 0.005477801 + - 0.12916243 + - 0.005628167 + - 0.14884117 + - 0.01027088 + - 0.007022697 + laughterScore: 0 + - frameNumber: 455 + frameDelay: 0 + Visemes: + - 0.019001445 + - 0.091102086 + - 0.0064885644 + - 0.08329843 + - 0.02953228 + - 0.005287748 + - 0.0044975807 + - 0.5094808 + - 0.02175752 + - 0.0038715214 + - 0.09664792 + - 0.0049661454 + - 0.111713685 + - 0.007240373 + - 0.0051139537 + laughterScore: 0 + - frameNumber: 456 + frameDelay: 0 + Visemes: + - 0.021539487 + - 0.063951746 + - 0.0046719983 + - 0.07479991 + - 0.023613326 + - 0.0051270616 + - 0.0033018473 + - 0.36392495 + - 0.016762624 + - 0.002955408 + - 0.13821685 + - 0.025265278 + - 0.24669875 + - 0.0053733652 + - 0.003797414 + laughterScore: 0 + - frameNumber: 457 + frameDelay: 0 + Visemes: + - 0.021646958 + - 0.04485683 + - 0.003331942 + - 0.058172714 + - 0.018607857 + - 0.0044481624 + - 0.0024841814 + - 0.25730076 + - 0.013511551 + - 0.00238662 + - 0.13285005 + - 0.085088335 + - 0.34839034 + - 0.0039236126 + - 0.0030000976 + laughterScore: 0 + - frameNumber: 458 + frameDelay: 0 + Visemes: + - 0.024707206 + - 0.031666424 + - 0.0026758309 + - 0.04137195 + - 0.022012206 + - 0.0039304425 + - 0.0021643809 + - 0.18198834 + - 0.024060804 + - 0.0027530799 + - 0.15300618 + - 0.075894736 + - 0.42816237 + - 0.0030082301 + - 0.0025978344 + laughterScore: 0 + - frameNumber: 459 + frameDelay: 0 + Visemes: + - 0.023765922 + - 0.02245425 + - 0.0027206899 + - 0.029033683 + - 0.065390825 + - 0.004833497 + - 0.023271978 + - 0.15307283 + - 0.07445192 + - 0.0032363092 + - 0.122391045 + - 0.054173153 + - 0.4171325 + - 0.0021238327 + - 0.0019475699 + laughterScore: 0 + - frameNumber: 460 + frameDelay: 0 + Visemes: + - 0.022132859 + - 0.015743293 + - 0.0025284318 + - 0.020424733 + - 0.120697215 + - 0.0041211178 + - 0.16934757 + - 0.16289087 + - 0.054473363 + - 0.0024231027 + - 0.08725645 + - 0.03807692 + - 0.29698342 + - 0.001497381 + - 0.001403246 + laughterScore: 0 + - frameNumber: 461 + frameDelay: 0 + Visemes: + - 0.022000376 + - 0.011037395 + - 0.0022478355 + - 0.014475142 + - 0.09421362 + - 0.0030782395 + - 0.3567959 + - 0.15349284 + - 0.038246874 + - 0.0018187148 + - 0.061158374 + - 0.026701394 + - 0.21261014 + - 0.0010660634 + - 0.0010570823 + laughterScore: 0 + - frameNumber: 462 + frameDelay: 0 + Visemes: + - 0.02253087 + - 0.007893508 + - 0.0025698077 + - 0.010244007 + - 0.082267255 + - 0.0023652124 + - 0.44556797 + - 0.130583 + - 0.02691366 + - 0.0015414091 + - 0.043123007 + - 0.018724209 + - 0.20371526 + - 0.0008162516 + - 0.0011445861 + laughterScore: 0 + - frameNumber: 463 + frameDelay: 0 + Visemes: + - 0.022534788 + - 0.0057564233 + - 0.0033804546 + - 0.0072872434 + - 0.06624402 + - 0.0020607389 + - 0.51852447 + - 0.103040524 + - 0.019056527 + - 0.003236497 + - 0.032076314 + - 0.013130039 + - 0.2010353 + - 0.00063630106 + - 0.0020003994 + laughterScore: 0 + - frameNumber: 464 + frameDelay: 0 + Visemes: + - 0.024568658 + - 0.004266792 + - 0.0028218562 + - 0.005537081 + - 0.047938984 + - 0.0032011531 + - 0.5835924 + - 0.073468626 + - 0.013851061 + - 0.004480212 + - 0.045761377 + - 0.009487269 + - 0.16466852 + - 0.00046739628 + - 0.015888691 + laughterScore: 0 + - frameNumber: 465 + frameDelay: 0 + Visemes: + - 0.024340058 + - 0.0030583257 + - 0.0020354555 + - 0.004596562 + - 0.03519501 + - 0.002848396 + - 0.4132124 + - 0.051528186 + - 0.010394387 + - 0.006854713 + - 0.10060945 + - 0.007668418 + - 0.31279677 + - 0.00041899976 + - 0.024442924 + laughterScore: 0 + - frameNumber: 466 + frameDelay: 0 + Visemes: + - 0.022440393 + - 0.0021679455 + - 0.0014498188 + - 0.0034888927 + - 0.026819864 + - 0.0022956473 + - 0.29001254 + - 0.036279768 + - 0.009985249 + - 0.011895543 + - 0.24533497 + - 0.0060718823 + - 0.31521744 + - 0.00047856892 + - 0.02606153 + laughterScore: 0 + - frameNumber: 467 + frameDelay: 0 + Visemes: + - 0.023433464 + - 0.0022970275 + - 0.0012817088 + - 0.0033597555 + - 0.026885329 + - 0.0037694173 + - 0.20367679 + - 0.02806925 + - 0.023404729 + - 0.013552403 + - 0.22277737 + - 0.0047956808 + - 0.4173196 + - 0.0005989551 + - 0.024778575 + laughterScore: 0 + - frameNumber: 468 + frameDelay: 0 + Visemes: + - 0.022356132 + - 0.002247093 + - 0.0009971191 + - 0.003056596 + - 0.02469093 + - 0.02452308 + - 0.14272234 + - 0.020200016 + - 0.26229578 + - 0.009720792 + - 0.16608243 + - 0.0041505806 + - 0.2986792 + - 0.00043672737 + - 0.017841214 + laughterScore: 0 + - frameNumber: 469 + frameDelay: 0 + Visemes: + - 0.021793596 + - 0.0021040407 + - 0.00073941285 + - 0.0029864188 + - 0.02097716 + - 0.023952678 + - 0.100040354 + - 0.014263996 + - 0.4605864 + - 0.0068292613 + - 0.119345486 + - 0.0034806158 + - 0.21003452 + - 0.00031310716 + - 0.012552948 + laughterScore: 0 + - frameNumber: 470 + frameDelay: 0 + Visemes: + - 0.02007984 + - 0.0040429095 + - 0.0007655391 + - 0.008931731 + - 0.02881838 + - 0.024531092 + - 0.0702022 + - 0.010690711 + - 0.58285815 + - 0.0048731733 + - 0.08439753 + - 0.0028488257 + - 0.14762074 + - 0.0002803286 + - 0.0090588145 + laughterScore: 0 + - frameNumber: 471 + frameDelay: 0 + Visemes: + - 0.017423056 + - 0.008721572 + - 0.0013429694 + - 0.010084206 + - 0.03795162 + - 0.02760619 + - 0.049488064 + - 0.007696153 + - 0.66401935 + - 0.0034604385 + - 0.05974672 + - 0.002034625 + - 0.10359668 + - 0.00023860336 + - 0.0065897144 + laughterScore: 0 + - frameNumber: 472 + frameDelay: 0 + Visemes: + - 0.018820403 + - 0.019654496 + - 0.002324651 + - 0.014176134 + - 0.097696036 + - 0.03226007 + - 0.035118733 + - 0.0058962503 + - 0.6500361 + - 0.0024549866 + - 0.042192444 + - 0.0014386853 + - 0.072783075 + - 0.0001784105 + - 0.004969468 + laughterScore: 0 + - frameNumber: 473 + frameDelay: 0 + Visemes: + - 0.031660028 + - 0.04201004 + - 0.003780368 + - 0.022548638 + - 0.15318915 + - 0.03465104 + - 0.025382038 + - 0.0052542672 + - 0.5930414 + - 0.0017954933 + - 0.030049553 + - 0.0010320673 + - 0.051307708 + - 0.00014977503 + - 0.004148414 + laughterScore: 0 + - frameNumber: 474 + frameDelay: 0 + Visemes: + - 0.048083615 + - 0.122418635 + - 0.011668146 + - 0.0362459 + - 0.17083466 + - 0.034205973 + - 0.018192934 + - 0.0044352314 + - 0.48828006 + - 0.0016156198 + - 0.021780364 + - 0.0007569538 + - 0.03606368 + - 0.0001844412 + - 0.0052337646 + laughterScore: 0 + - frameNumber: 475 + frameDelay: 0 + Visemes: + - 0.037812307 + - 0.3628534 + - 0.010912104 + - 0.025779415 + - 0.12005779 + - 0.024206243 + - 0.012737056 + - 0.0031121408 + - 0.3452623 + - 0.0012810129 + - 0.015664507 + - 0.0005396652 + - 0.02580148 + - 0.00037113635 + - 0.013609456 + laughterScore: 0 + - frameNumber: 476 + frameDelay: 0 + Visemes: + - 0.032297555 + - 0.2564612 + - 0.008153057 + - 0.01841909 + - 0.0840889 + - 0.017051492 + - 0.008920887 + - 0.0021831875 + - 0.2875807 + - 0.0010305772 + - 0.026788209 + - 0.014471216 + - 0.038103238 + - 0.0089741545 + - 0.19547656 + laughterScore: 0 + - frameNumber: 477 + frameDelay: 0 + Visemes: + - 0.032978885 + - 0.17962775 + - 0.005745093 + - 0.013083387 + - 0.06514258 + - 0.012009689 + - 0.006259699 + - 0.0015331078 + - 0.20682545 + - 0.0011125038 + - 0.0229144 + - 0.22661722 + - 0.04842449 + - 0.039937597 + - 0.1377882 + laughterScore: 0 + - frameNumber: 478 + frameDelay: 0 + Visemes: + - 0.028201891 + - 0.1258437 + - 0.0040530423 + - 0.009331175 + - 0.049182095 + - 0.008531692 + - 0.004404816 + - 0.0010971512 + - 0.14518273 + - 0.0010344379 + - 0.02114147 + - 0.39163703 + - 0.04991289 + - 0.0638328 + - 0.09661317 + laughterScore: 0 + - frameNumber: 479 + frameDelay: 0 + Visemes: + - 0.024830356 + - 0.088251464 + - 0.0029708908 + - 0.006972966 + - 0.03661559 + - 0.0070262924 + - 0.0031477094 + - 0.0010099648 + - 0.10207455 + - 0.0010998655 + - 0.021352163 + - 0.5220505 + - 0.045010988 + - 0.06967158 + - 0.06791514 + laughterScore: 0 + - frameNumber: 480 + frameDelay: 0 + Visemes: + - 0.02005392 + - 0.06180818 + - 0.0022383416 + - 0.0051263445 + - 0.030105278 + - 0.0066854614 + - 0.0022652936 + - 0.001110835 + - 0.07184967 + - 0.0010721718 + - 0.019011304 + - 0.63455594 + - 0.036893427 + - 0.05952576 + - 0.04769813 + laughterScore: 0 + - frameNumber: 481 + frameDelay: 0 + Visemes: + - 0.021947484 + - 0.04332916 + - 0.0016497752 + - 0.0038996718 + - 0.07514205 + - 0.0061395606 + - 0.0017864534 + - 0.0017422084 + - 0.050535306 + - 0.0008985027 + - 0.014291136 + - 0.6596377 + - 0.042034388 + - 0.04337946 + - 0.033587195 + laughterScore: 0 + - frameNumber: 482 + frameDelay: 0 + Visemes: + - 0.026518822 + - 0.030404244 + - 0.0012486691 + - 0.002923084 + - 0.13711919 + - 0.0052707875 + - 0.0014307783 + - 0.0021708827 + - 0.035533745 + - 0.00083352794 + - 0.010949133 + - 0.6406168 + - 0.050707452 + - 0.030659854 + - 0.023613047 + laughterScore: 0 + - frameNumber: 483 + frameDelay: 0 + Visemes: + - 0.026925182 + - 0.021344855 + - 0.00091697567 + - 0.0021209647 + - 0.2258782 + - 0.007362783 + - 0.0011142011 + - 0.0019206831 + - 0.024993412 + - 0.00074331724 + - 0.009383282 + - 0.59665215 + - 0.040563893 + - 0.023439726 + - 0.016640307 + laughterScore: 0 + - frameNumber: 484 + frameDelay: 0 + Visemes: + - 0.026836962 + - 0.015296109 + - 0.00071910815 + - 0.0017006737 + - 0.36754182 + - 0.04196885 + - 0.0015316868 + - 0.002027519 + - 0.01756849 + - 0.0006515085 + - 0.007488573 + - 0.45273393 + - 0.03304443 + - 0.019093875 + - 0.011796412 + laughterScore: 0 + - frameNumber: 485 + frameDelay: 0 + Visemes: + - 0.03463287 + - 0.01191817 + - 0.0005389929 + - 0.0013113432 + - 0.4071458 + - 0.13591632 + - 0.002091392 + - 0.0015467257 + - 0.012314557 + - 0.00047441316 + - 0.0058993804 + - 0.33358085 + - 0.030501915 + - 0.013835229 + - 0.008292036 + laughterScore: 0 + - frameNumber: 486 + frameDelay: 0 + Visemes: + - 0.053614553 + - 0.011201553 + - 0.00043589025 + - 0.0012171653 + - 0.44316858 + - 0.17118287 + - 0.002972012 + - 0.0012787902 + - 0.00869592 + - 0.0003503069 + - 0.004864547 + - 0.2573065 + - 0.027933216 + - 0.009890982 + - 0.005887127 + laughterScore: 0 + - frameNumber: 487 + frameDelay: 0 + Visemes: + - 0.06838779 + - 0.011549275 + - 0.00045491 + - 0.002243802 + - 0.4098562 + - 0.25735787 + - 0.018772263 + - 0.0023433042 + - 0.0063445484 + - 0.0002666487 + - 0.0037523285 + - 0.18436734 + - 0.023063077 + - 0.00696859 + - 0.0042720614 + laughterScore: 0 + - frameNumber: 488 + frameDelay: 0 + Visemes: + - 0.101256944 + - 0.009930121 + - 0.0009281039 + - 0.0035418984 + - 0.439143 + - 0.24296287 + - 0.017929299 + - 0.015134158 + - 0.004895586 + - 0.00021980658 + - 0.0034802896 + - 0.13186139 + - 0.020575304 + - 0.0049809855 + - 0.0031602518 + laughterScore: 0 + - frameNumber: 489 + frameDelay: 0 + Visemes: + - 0.1100101 + - 0.007758809 + - 0.0025068424 + - 0.0041467194 + - 0.39913982 + - 0.18152319 + - 0.012955377 + - 0.16167332 + - 0.003588956 + - 0.00016657815 + - 0.002670036 + - 0.09276975 + - 0.015287686 + - 0.0035134694 + - 0.0022893578 + laughterScore: 0 + - frameNumber: 490 + frameDelay: 0 + Visemes: + - 0.106842026 + - 0.0059019686 + - 0.0022230735 + - 0.0035890315 + - 0.32197472 + - 0.13037325 + - 0.009251184 + - 0.3351581 + - 0.0025618752 + - 0.00012206381 + - 0.001949043 + - 0.06501007 + - 0.010938577 + - 0.0024724805 + - 0.0016325554 + laughterScore: 0 + - frameNumber: 491 + frameDelay: 0 + Visemes: + - 0.113218404 + - 0.004449471 + - 0.0018652673 + - 0.0027357836 + - 0.24175403 + - 0.09415403 + - 0.006794212 + - 0.47521627 + - 0.0019069795 + - 0.00009646685 + - 0.0014625306 + - 0.04555535 + - 0.007832268 + - 0.0017576793 + - 0.0012013103 + laughterScore: 0 + - frameNumber: 492 + frameDelay: 0 + Visemes: + - 0.18395022 + - 0.0033189112 + - 0.0017242348 + - 0.0022731288 + - 0.18731385 + - 0.06969432 + - 0.0052628815 + - 0.5032089 + - 0.0015198081 + - 0.000090427886 + - 0.0013408307 + - 0.032188557 + - 0.005874017 + - 0.001269269 + - 0.00097071537 + laughterScore: 0 + - frameNumber: 493 + frameDelay: 0 + Visemes: + - 0.2274211 + - 0.002496267 + - 0.0017029471 + - 0.0019669007 + - 0.14453988 + - 0.05057989 + - 0.0038798212 + - 0.5354624 + - 0.0013166085 + - 0.00008718119 + - 0.001320606 + - 0.022912284 + - 0.0045777573 + - 0.0009293491 + - 0.00080702663 + laughterScore: 0 + - frameNumber: 494 + frameDelay: 0 + Visemes: + - 0.2651407 + - 0.001934887 + - 0.0015154596 + - 0.0017474887 + - 0.11511463 + - 0.036179155 + - 0.0028656404 + - 0.5508189 + - 0.0015305593 + - 0.0000863409 + - 0.0013883264 + - 0.016401866 + - 0.0038558159 + - 0.00071042025 + - 0.0007097862 + laughterScore: 0 + - frameNumber: 495 + frameDelay: 0 + Visemes: + - 0.2633572 + - 0.004444422 + - 0.0017451907 + - 0.0023513234 + - 0.09597072 + - 0.028407067 + - 0.0023056879 + - 0.5473996 + - 0.028733723 + - 0.00046430895 + - 0.003010585 + - 0.012562146 + - 0.005169603 + - 0.0011965286 + - 0.002881959 + laughterScore: 0 + - frameNumber: 496 + frameDelay: 0 + Visemes: + - 0.27301395 + - 0.005634754 + - 0.0022895685 + - 0.0023236615 + - 0.07741529 + - 0.03211735 + - 0.0021526976 + - 0.5517485 + - 0.026275624 + - 0.00049729564 + - 0.0050768154 + - 0.009994034 + - 0.006160953 + - 0.002298304 + - 0.0030012047 + laughterScore: 0 + - frameNumber: 497 + frameDelay: 0 + Visemes: + - 0.30980867 + - 0.0072210105 + - 0.0022180013 + - 0.0021265189 + - 0.06236405 + - 0.040133655 + - 0.0020919447 + - 0.52045995 + - 0.022282867 + - 0.00046639907 + - 0.0071666115 + - 0.008180893 + - 0.008392344 + - 0.00395566 + - 0.0031314334 + laughterScore: 0 + - frameNumber: 498 + frameDelay: 0 + Visemes: + - 0.3736984 + - 0.008189891 + - 0.0019836882 + - 0.002177288 + - 0.05089922 + - 0.047725793 + - 0.0019627074 + - 0.4483133 + - 0.01863961 + - 0.00047739092 + - 0.014012929 + - 0.008304612 + - 0.010922678 + - 0.009102636 + - 0.0035898385 + laughterScore: 0 + - frameNumber: 499 + frameDelay: 0 + Visemes: + - 0.49356085 + - 0.008610791 + - 0.0018340534 + - 0.0022131316 + - 0.040564828 + - 0.042126663 + - 0.0017973839 + - 0.3537843 + - 0.014176767 + - 0.00040936036 + - 0.012788246 + - 0.0072007705 + - 0.010073292 + - 0.007611886 + - 0.0032476354 + laughterScore: 0 + - frameNumber: 500 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 501 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 502 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 503 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 504 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 505 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 506 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 507 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 508 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 509 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 510 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 511 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 512 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 513 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 514 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 515 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 516 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 517 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 518 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 519 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 520 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 521 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 522 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 523 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 524 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 525 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 526 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 527 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 528 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 529 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 530 + frameDelay: 0 + Visemes: + - 0.49217296 + - 0.25724995 + - 0.0009170356 + - 0.09010732 + - 0.04095299 + - 0.0045047496 + - 0.0017850385 + - 0.0028686197 + - 0.0035137425 + - 0.00048644718 + - 0.003683853 + - 0.0055724834 + - 0.09123342 + - 0.0010432728 + - 0.0039081015 + laughterScore: 0 + - frameNumber: 531 + frameDelay: 0 + Visemes: + - 0.35136327 + - 0.1972202 + - 0.00069858856 + - 0.06413432 + - 0.02890031 + - 0.0033769351 + - 0.0012773611 + - 0.002018485 + - 0.002529071 + - 0.00038043753 + - 0.0027285775 + - 0.029344214 + - 0.31172046 + - 0.00074610556 + - 0.0035615957 + laughterScore: 0 + - frameNumber: 532 + frameDelay: 0 + Visemes: + - 0.2516322 + - 0.142309 + - 0.0005226317 + - 0.04505053 + - 0.02041648 + - 0.002564541 + - 0.00094081095 + - 0.0014409532 + - 0.002000819 + - 0.00032025285 + - 0.0021100193 + - 0.033021335 + - 0.49393475 + - 0.00053755136 + - 0.0031981096 + laughterScore: 0 + - frameNumber: 533 + frameDelay: 0 + Visemes: + - 0.18118337 + - 0.10053663 + - 0.00037160027 + - 0.031588167 + - 0.014349346 + - 0.001972543 + - 0.00067943305 + - 0.001045975 + - 0.0014681654 + - 0.0002605926 + - 0.0015426098 + - 0.028876107 + - 0.63299394 + - 0.00038736963 + - 0.0027441164 + laughterScore: 0 + - frameNumber: 534 + frameDelay: 0 + Visemes: + - 0.13196732 + - 0.07199776 + - 0.0002971107 + - 0.022177387 + - 0.010398648 + - 0.0019346874 + - 0.0005999964 + - 0.0010633066 + - 0.0013170674 + - 0.00041110275 + - 0.0013668593 + - 0.051023427 + - 0.6931798 + - 0.00034097047 + - 0.011924551 + laughterScore: 0 + - frameNumber: 535 + frameDelay: 0 + Visemes: + - 0.09461663 + - 0.05213674 + - 0.0003632889 + - 0.015613569 + - 0.0075741285 + - 0.0014550751 + - 0.00047736254 + - 0.0012070461 + - 0.0015498542 + - 0.0004320391 + - 0.0012597021 + - 0.06207581 + - 0.7376965 + - 0.0002984626 + - 0.023243725 + laughterScore: 0 + - frameNumber: 536 + frameDelay: 0 + Visemes: + - 0.069229126 + - 0.036586724 + - 0.00036057565 + - 0.010973462 + - 0.0066973753 + - 0.0010548612 + - 0.00034450527 + - 0.08947168 + - 0.0012794228 + - 0.0019187566 + - 0.0040170583 + - 0.09634351 + - 0.6546451 + - 0.0004813336 + - 0.026596535 + laughterScore: 0 + - frameNumber: 537 + frameDelay: 0 + Visemes: + - 0.055339523 + - 0.025902655 + - 0.0005140189 + - 0.008291683 + - 0.010168772 + - 0.0008478908 + - 0.00028621295 + - 0.34681106 + - 0.0010434203 + - 0.0015459335 + - 0.0030083715 + - 0.06794805 + - 0.45927206 + - 0.0003483603 + - 0.01867203 + laughterScore: 0 + - frameNumber: 538 + frameDelay: 0 + Visemes: + - 0.050193086 + - 0.018299926 + - 0.00045852902 + - 0.0068311887 + - 0.011967184 + - 0.0015979137 + - 0.00025501783 + - 0.52238375 + - 0.00087170315 + - 0.001178802 + - 0.0023323984 + - 0.04770739 + - 0.32255983 + - 0.00025076244 + - 0.013112543 + laughterScore: 0 + - frameNumber: 539 + frameDelay: 0 + Visemes: + - 0.049565434 + - 0.032504544 + - 0.0014273438 + - 0.0049576354 + - 0.011545861 + - 0.0027695643 + - 0.00020097113 + - 0.6012735 + - 0.0007935733 + - 0.00158864 + - 0.0039868355 + - 0.033470508 + - 0.22788942 + - 0.00021575307 + - 0.027810467 + laughterScore: 0 + - frameNumber: 540 + frameDelay: 0 + Visemes: + - 0.03640087 + - 0.03905545 + - 0.0013655475 + - 0.003487678 + - 0.008399343 + - 0.0022012875 + - 0.00014200128 + - 0.42175502 + - 0.0008544093 + - 0.0023563518 + - 0.0039668204 + - 0.023487007 + - 0.16042304 + - 0.00027271733 + - 0.29583248 + laughterScore: 0 + - frameNumber: 541 + frameDelay: 0 + Visemes: + - 0.026533527 + - 0.037683427 + - 0.0015307646 + - 0.0024481001 + - 0.005912864 + - 0.0016685586 + - 0.00009995427 + - 0.2952634 + - 0.00067956577 + - 0.001903465 + - 0.0028875296 + - 0.016479293 + - 0.112468824 + - 0.00023083857 + - 0.49420995 + laughterScore: 0 + - frameNumber: 542 + frameDelay: 0 + Visemes: + - 0.025122454 + - 0.031007016 + - 0.0018080005 + - 0.0017448595 + - 0.0042836475 + - 0.0017759043 + - 0.00008358677 + - 0.20673566 + - 0.0005984302 + - 0.0013907322 + - 0.009364271 + - 0.015351236 + - 0.08211928 + - 0.00096666906 + - 0.6176483 + laughterScore: 0 + - frameNumber: 543 + frameDelay: 0 + Visemes: + - 0.02222938 + - 0.022377556 + - 0.0013454424 + - 0.0012325807 + - 0.0030421938 + - 0.00151098 + - 0.000062060964 + - 0.144717 + - 0.0007995952 + - 0.0010179165 + - 0.056561463 + - 0.04134136 + - 0.08369104 + - 0.00086549006 + - 0.61920595 + laughterScore: 0 + - frameNumber: 544 + frameDelay: 0 + Visemes: + - 0.018131305 + - 0.015755018 + - 0.000965162 + - 0.00091379805 + - 0.0022816902 + - 0.0011346027 + - 0.000051178773 + - 0.10130301 + - 0.0010236012 + - 0.000789761 + - 0.040966813 + - 0.24449046 + - 0.13472424 + - 0.00078042166 + - 0.43668896 + laughterScore: 0 + - frameNumber: 545 + frameDelay: 0 + Visemes: + - 0.016733367 + - 0.01106822 + - 0.0007515959 + - 0.0010822624 + - 0.002285158 + - 0.0009562907 + - 0.000048208167 + - 0.07092952 + - 0.0008226689 + - 0.0010182527 + - 0.030511674 + - 0.38274932 + - 0.17394157 + - 0.00084575964 + - 0.30625618 + laughterScore: 0 + - frameNumber: 546 + frameDelay: 0 + Visemes: + - 0.014409905 + - 0.0078089084 + - 0.0006343857 + - 0.0012472023 + - 0.0019233595 + - 0.0010477396 + - 0.000042777698 + - 0.049683288 + - 0.0008163948 + - 0.0013452643 + - 0.021681437 + - 0.5533184 + - 0.13081205 + - 0.0006217043 + - 0.21460725 + laughterScore: 0 + - frameNumber: 547 + frameDelay: 0 + Visemes: + - 0.012089156 + - 0.0056720166 + - 0.00053112843 + - 0.0010296945 + - 0.0016178534 + - 0.00085400534 + - 0.000034541215 + - 0.034813855 + - 0.0009765648 + - 0.0012156374 + - 0.015434685 + - 0.67874515 + - 0.09621846 + - 0.00045229617 + - 0.150315 + laughterScore: 0 + - frameNumber: 548 + frameDelay: 0 + Visemes: + - 0.011164987 + - 0.004317961 + - 0.00046114338 + - 0.0008849376 + - 0.002038996 + - 0.0008118483 + - 0.00005406201 + - 0.024594583 + - 0.0011176395 + - 0.0012068071 + - 0.011055904 + - 0.76676404 + - 0.06986576 + - 0.0003503427 + - 0.105310984 + laughterScore: 0 + - frameNumber: 549 + frameDelay: 0 + Visemes: + - 0.012843277 + - 0.0114239575 + - 0.001327848 + - 0.0012512004 + - 0.008643098 + - 0.0007501864 + - 0.00015397536 + - 0.020678135 + - 0.0021869098 + - 0.0017222897 + - 0.008087135 + - 0.802431 + - 0.054197185 + - 0.00039298902 + - 0.07391084 + laughterScore: 0 + - frameNumber: 550 + frameDelay: 0 + Visemes: + - 0.015949888 + - 0.009907792 + - 0.0014238162 + - 0.014974467 + - 0.15502748 + - 0.0025471756 + - 0.00035661715 + - 0.0155093055 + - 0.002147128 + - 0.0017495216 + - 0.006014724 + - 0.680926 + - 0.0411526 + - 0.0004369268 + - 0.051876526 + laughterScore: 0 + - frameNumber: 551 + frameDelay: 0 + Visemes: + - 0.013847401 + - 0.007877839 + - 0.0011715516 + - 0.023614585 + - 0.3862293 + - 0.0029366328 + - 0.00089275755 + - 0.012667656 + - 0.0016868558 + - 0.0012668812 + - 0.004272001 + - 0.47789153 + - 0.028983273 + - 0.0003379935 + - 0.03632373 + laughterScore: 0 + - frameNumber: 552 + frameDelay: 0 + Visemes: + - 0.018174468 + - 0.0064311996 + - 0.0013094877 + - 0.036979504 + - 0.43605623 + - 0.0026847892 + - 0.0015532894 + - 0.11059325 + - 0.0012916649 + - 0.0009002725 + - 0.0030331353 + - 0.3348666 + - 0.020427475 + - 0.000250353 + - 0.02544825 + laughterScore: 0 + - frameNumber: 553 + frameDelay: 0 + Visemes: + - 0.02475354 + - 0.0055886563 + - 0.0015523022 + - 0.033806253 + - 0.35181183 + - 0.002675254 + - 0.0014289726 + - 0.3070472 + - 0.0011167413 + - 0.00064740126 + - 0.0022768078 + - 0.23461229 + - 0.01462312 + - 0.00020190806 + - 0.017857704 + laughterScore: 0 + - frameNumber: 554 + frameDelay: 0 + Visemes: + - 0.027850688 + - 0.004102161 + - 0.0013162585 + - 0.028115507 + - 0.27218366 + - 0.0021647164 + - 0.0012365021 + - 0.47107744 + - 0.0010946203 + - 0.00057882874 + - 0.0024088633 + - 0.16445805 + - 0.010686377 + - 0.0001838765 + - 0.012542429 + laughterScore: 0 + - frameNumber: 555 + frameDelay: 0 + Visemes: + - 0.02863065 + - 0.003009235 + - 0.00096274086 + - 0.03550817 + - 0.2113315 + - 0.0018572954 + - 0.0009037826 + - 0.53524584 + - 0.003437468 + - 0.0014107608 + - 0.03252399 + - 0.118090436 + - 0.016083416 + - 0.001560776 + - 0.009443922 + laughterScore: 0 + - frameNumber: 556 + frameDelay: 0 + Visemes: + - 0.085341394 + - 0.0023950336 + - 0.00083898654 + - 0.027218549 + - 0.1614732 + - 0.002180808 + - 0.0009661212 + - 0.4561825 + - 0.003033233 + - 0.002052542 + - 0.103923276 + - 0.10072222 + - 0.029734738 + - 0.016596697 + - 0.007340674 + laughterScore: 0 + - frameNumber: 557 + frameDelay: 0 + Visemes: + - 0.19599317 + - 0.0022214083 + - 0.0019324501 + - 0.019967517 + - 0.13109292 + - 0.002666085 + - 0.0007788747 + - 0.41407645 + - 0.0034705945 + - 0.0018187263 + - 0.091169104 + - 0.079259895 + - 0.03134544 + - 0.018530592 + - 0.0056767445 + laughterScore: 0 + - frameNumber: 558 + frameDelay: 0 + Visemes: + - 0.26206404 + - 0.0019367189 + - 0.0021968742 + - 0.014371408 + - 0.09617578 + - 0.0024003768 + - 0.0005911799 + - 0.33117825 + - 0.003615397 + - 0.0015118767 + - 0.11796123 + - 0.0700862 + - 0.027987063 + - 0.063469686 + - 0.0044538695 + laughterScore: 0 + - frameNumber: 559 + frameDelay: 0 + Visemes: + - 0.30545795 + - 0.003482915 + - 0.0023320105 + - 0.010580744 + - 0.070812196 + - 0.0022597427 + - 0.00052983046 + - 0.2649274 + - 0.0044698976 + - 0.0013384348 + - 0.15680528 + - 0.06969938 + - 0.03436578 + - 0.06865918 + - 0.0042792717 + laughterScore: 0 + - frameNumber: 560 + frameDelay: 0 + Visemes: + - 0.22604364 + - 0.0027014972 + - 0.0016692957 + - 0.0074470644 + - 0.049689382 + - 0.0022063078 + - 0.00037296145 + - 0.18548028 + - 0.0035941035 + - 0.0009922109 + - 0.32849616 + - 0.04940929 + - 0.026406558 + - 0.11215546 + - 0.0033357807 + laughterScore: 0 + - frameNumber: 561 + frameDelay: 0 + Visemes: + - 0.16807269 + - 0.0019780858 + - 0.0011916226 + - 0.005224609 + - 0.03486465 + - 0.0016423126 + - 0.00026435606 + - 0.12984127 + - 0.0053794626 + - 0.0008696393 + - 0.38562715 + - 0.035041865 + - 0.019499987 + - 0.20802787 + - 0.0024744328 + laughterScore: 0 + - frameNumber: 562 + frameDelay: 0 + Visemes: + - 0.1215855 + - 0.0014140006 + - 0.0008416221 + - 0.0036655925 + - 0.02444426 + - 0.001186314 + - 0.00018623033 + - 0.090892084 + - 0.005294443 + - 0.0015386867 + - 0.509899 + - 0.024754781 + - 0.013680248 + - 0.19886103 + - 0.0017561709 + laughterScore: 0 + - frameNumber: 563 + frameDelay: 0 + Visemes: + - 0.085371405 + - 0.0009909222 + - 0.0005895163 + - 0.0025662805 + - 0.01711264 + - 0.00083828287 + - 0.00013041991 + - 0.0636245 + - 0.003798598 + - 0.00390811 + - 0.65069366 + - 0.017342184 + - 0.00957722 + - 0.14222649 + - 0.001229761 + laughterScore: 0 + - frameNumber: 564 + frameDelay: 0 + Visemes: + - 0.060442865 + - 0.00070030475 + - 0.00041368316 + - 0.0017977216 + - 0.011984706 + - 0.0006054566 + - 0.00009249234 + - 0.04453747 + - 0.0028319338 + - 0.103402354 + - 0.65024537 + - 0.01219004 + - 0.006708203 + - 0.10318441 + - 0.00086293713 + laughterScore: 0 + - frameNumber: 565 + frameDelay: 0 + Visemes: + - 0.043398235 + - 0.0005153511 + - 0.0002954634 + - 0.0012604921 + - 0.00839823 + - 0.00047428015 + - 0.00006746807 + - 0.031177571 + - 0.0021644884 + - 0.33712304 + - 0.4872099 + - 0.008588821 + - 0.0047042053 + - 0.07401373 + - 0.0006087152 + laughterScore: 0 + - frameNumber: 566 + frameDelay: 0 + Visemes: + - 0.03146099 + - 0.0003798056 + - 0.0002102943 + - 0.00088421453 + - 0.005889723 + - 0.0003969624 + - 0.00004791503 + - 0.021825831 + - 0.0016207448 + - 0.5299172 + - 0.34531778 + - 0.006063459 + - 0.003297987 + - 0.052254282 + - 0.00043282664 + laughterScore: 0 + - frameNumber: 567 + frameDelay: 0 + Visemes: + - 0.023161676 + - 0.0002837282 + - 0.00015052505 + - 0.00062295137 + - 0.0042082 + - 0.0004318707 + - 0.000033710512 + - 0.015280638 + - 0.0013685052 + - 0.667425 + - 0.24272236 + - 0.004370242 + - 0.0023205392 + - 0.037274353 + - 0.00034569693 + laughterScore: 0 + - frameNumber: 568 + frameDelay: 0 + Visemes: + - 0.018391844 + - 0.00021195003 + - 0.00013074788 + - 0.00044424244 + - 0.005921833 + - 0.00032852654 + - 0.000023653645 + - 0.010701057 + - 0.0046855547 + - 0.72904503 + - 0.18104213 + - 0.003225244 + - 0.001647836 + - 0.04384075 + - 0.00035954965 + laughterScore: 0 + - frameNumber: 569 + frameDelay: 0 + Visemes: + - 0.017834235 + - 0.00016105859 + - 0.00012742452 + - 0.00031486317 + - 0.0061162575 + - 0.00028495412 + - 0.000016660706 + - 0.007502016 + - 0.007874534 + - 0.62754625 + - 0.20449972 + - 0.0025263273 + - 0.0011779087 + - 0.12369745 + - 0.00032027822 + laughterScore: 0 + - frameNumber: 570 + frameDelay: 0 + Visemes: + - 0.0150092915 + - 0.00011973055 + - 0.00010352725 + - 0.00022216604 + - 0.004509539 + - 0.00029703364 + - 0.000011763275 + - 0.0052532335 + - 0.0077507505 + - 0.44840613 + - 0.22239292 + - 0.0018835857 + - 0.000843971 + - 0.2929256 + - 0.0002707339 + laughterScore: 0 + - frameNumber: 571 + frameDelay: 0 + Visemes: + - 0.014426107 + - 0.000100247664 + - 0.00007898753 + - 0.00015779404 + - 0.0032682577 + - 0.0003292934 + - 0.00000861847 + - 0.003678366 + - 0.0069387667 + - 0.31520826 + - 0.25398782 + - 0.0014758841 + - 0.000633532 + - 0.39941 + - 0.0002980677 + laughterScore: 0 + - frameNumber: 572 + frameDelay: 0 + Visemes: + - 0.014140867 + - 0.000110074616 + - 0.0000604839 + - 0.000112355236 + - 0.0023538542 + - 0.00030340735 + - 0.0000064895803 + - 0.0025758508 + - 0.0065745236 + - 0.22089785 + - 0.22370595 + - 0.0011957316 + - 0.00052729243 + - 0.5270667 + - 0.00036855432 + laughterScore: 0 + - frameNumber: 573 + frameDelay: 0 + Visemes: + - 0.01651778 + - 0.0002665602 + - 0.00008168185 + - 0.00009246628 + - 0.0020521749 + - 0.00037355727 + - 0.000009941483 + - 0.0018288307 + - 0.041763023 + - 0.15495405 + - 0.18365082 + - 0.0010857349 + - 0.00050369464 + - 0.59541655 + - 0.0014031219 + laughterScore: 0 + - frameNumber: 574 + frameDelay: 0 + Visemes: + - 0.015146011 + - 0.0010575474 + - 0.00069429196 + - 0.0003201541 + - 0.0019589213 + - 0.0005057032 + - 0.00007729804 + - 0.0015056677 + - 0.26436716 + - 0.10936829 + - 0.13828565 + - 0.0012853349 + - 0.00042295206 + - 0.46345767 + - 0.0015473148 + laughterScore: 0 + - frameNumber: 575 + frameDelay: 0 + Visemes: + - 0.010982981 + - 0.000804776 + - 0.00064952124 + - 0.000252566 + - 0.0017794956 + - 0.0003574981 + - 0.00005946398 + - 0.010543813 + - 0.47222388 + - 0.07665862 + - 0.09833622 + - 0.0009769307 + - 0.0003151207 + - 0.32497513 + - 0.0010839398 + laughterScore: 0 + - frameNumber: 576 + frameDelay: 0 + Visemes: + - 0.011568323 + - 0.0012242743 + - 0.0011157063 + - 0.00046283286 + - 0.0078698825 + - 0.00030142794 + - 0.00014709224 + - 0.23795979 + - 0.3866325 + - 0.053693272 + - 0.0695857 + - 0.00068855204 + - 0.00029643657 + - 0.22769009 + - 0.0007640764 + laughterScore: 0 + - frameNumber: 577 + frameDelay: 0 + Visemes: + - 0.010524116 + - 0.0011030862 + - 0.0009294925 + - 0.00042697886 + - 0.0066507426 + - 0.00023177176 + - 0.00015947627 + - 0.46099815 + - 0.2717945 + - 0.03760289 + - 0.048784863 + - 0.00048631028 + - 0.00026503418 + - 0.15949534 + - 0.0005472231 + laughterScore: 0 + - frameNumber: 578 + frameDelay: 0 + Visemes: + - 0.010157893 + - 0.0008779997 + - 0.00071472366 + - 0.0005437408 + - 0.006945968 + - 0.00021896584 + - 0.00013569852 + - 0.61608195 + - 0.19077134 + - 0.026357686 + - 0.0341981 + - 0.00035805296 + - 0.0003036925 + - 0.11190512 + - 0.00042904826 + laughterScore: 0 + - frameNumber: 579 + frameDelay: 0 + Visemes: + - 0.010127334 + - 0.0006812135 + - 0.00061793526 + - 0.0010059008 + - 0.011317226 + - 0.00042812695 + - 0.00013006941 + - 0.71802795 + - 0.13523969 + - 0.018505469 + - 0.024074065 + - 0.0003426103 + - 0.0004957307 + - 0.07865288 + - 0.00035379725 + laughterScore: 0 + - frameNumber: 580 + frameDelay: 0 + Visemes: + - 0.0115517415 + - 0.0005854127 + - 0.0004712162 + - 0.003744302 + - 0.016898934 + - 0.00077526737 + - 0.00012931332 + - 0.74060845 + - 0.10650028 + - 0.013045373 + - 0.031321853 + - 0.008135458 + - 0.0076662283 + - 0.057881266 + - 0.0006848815 + laughterScore: 0 + - frameNumber: 581 + frameDelay: 0 + Visemes: + - 0.017548628 + - 0.00047373743 + - 0.00035254963 + - 0.0067087845 + - 0.016555527 + - 0.0012167704 + - 0.00012707083 + - 0.5384303 + - 0.07977831 + - 0.009809232 + - 0.09071192 + - 0.08035874 + - 0.033860482 + - 0.12324737 + - 0.0008205631 + laughterScore: 0 + - frameNumber: 582 + frameDelay: 0 + Visemes: + - 0.023065489 + - 0.00042252697 + - 0.00067546254 + - 0.0060381955 + - 0.013182975 + - 0.0012469103 + - 0.00017589825 + - 0.3779873 + - 0.05654337 + - 0.011809927 + - 0.1092715 + - 0.13496569 + - 0.06683369 + - 0.19639543 + - 0.0013856445 + laughterScore: 0 + - frameNumber: 583 + frameDelay: 0 + Visemes: + - 0.028640866 + - 0.0007276337 + - 0.003380595 + - 0.0065275347 + - 0.01629631 + - 0.0012793728 + - 0.0002276565 + - 0.26522574 + - 0.041795444 + - 0.01593728 + - 0.12856185 + - 0.13460727 + - 0.06804852 + - 0.28694952 + - 0.0017944068 + laughterScore: 0 + - frameNumber: 584 + frameDelay: 0 + Visemes: + - 0.023865962 + - 0.00439832 + - 0.004334595 + - 0.0053618182 + - 0.04304893 + - 0.0054010954 + - 0.0003174927 + - 0.1857845 + - 0.26126552 + - 0.011564577 + - 0.1012116 + - 0.09688921 + - 0.053301807 + - 0.2018619 + - 0.0013926734 + laughterScore: 0 + - frameNumber: 585 + frameDelay: 0 + Visemes: + - 0.023960883 + - 0.006090456 + - 0.003167724 + - 0.003988981 + - 0.046085946 + - 0.0072586383 + - 0.00031508598 + - 0.13024113 + - 0.44870678 + - 0.0081689395 + - 0.072645076 + - 0.069241844 + - 0.037767243 + - 0.14135626 + - 0.0010050047 + laughterScore: 0 + - frameNumber: 586 + frameDelay: 0 + Visemes: + - 0.022165915 + - 0.008247135 + - 0.0022642836 + - 0.0038716781 + - 0.07160827 + - 0.006790895 + - 0.00030086347 + - 0.091268934 + - 0.5604954 + - 0.005737013 + - 0.051901523 + - 0.04880549 + - 0.026788317 + - 0.09897507 + - 0.0007792343 + laughterScore: 0 + - frameNumber: 587 + frameDelay: 0 + Visemes: + - 0.025105443 + - 0.008111045 + - 0.0017099069 + - 0.012631955 + - 0.07702859 + - 0.014454469 + - 0.0003258527 + - 0.064073086 + - 0.623487 + - 0.0042484077 + - 0.03864206 + - 0.03632641 + - 0.023429707 + - 0.06940666 + - 0.0010194723 + laughterScore: 0 + - frameNumber: 588 + frameDelay: 0 + Visemes: + - 0.02532048 + - 0.006391126 + - 0.0012855346 + - 0.014768802 + - 0.07114171 + - 0.0114791095 + - 0.0003501858 + - 0.04497273 + - 0.5824405 + - 0.0052422793 + - 0.06703263 + - 0.043957956 + - 0.061553985 + - 0.060427673 + - 0.0036353567 + laughterScore: 0 + - frameNumber: 589 + frameDelay: 0 + Visemes: + - 0.030477304 + - 0.00473344 + - 0.0009776901 + - 0.011433775 + - 0.050871152 + - 0.008728032 + - 0.00029799735 + - 0.03156928 + - 0.4184786 + - 0.009202629 + - 0.07923032 + - 0.061402887 + - 0.086091995 + - 0.19278136 + - 0.013723603 + laughterScore: 0 + - frameNumber: 590 + frameDelay: 0 + Visemes: + - 0.030612769 + - 0.003601356 + - 0.00091950287 + - 0.009152042 + - 0.037654366 + - 0.00724203 + - 0.00023845221 + - 0.022195691 + - 0.29511452 + - 0.008550096 + - 0.080237955 + - 0.0476727 + - 0.06631621 + - 0.3684144 + - 0.02207796 + laughterScore: 0 + - frameNumber: 591 + frameDelay: 0 + Visemes: + - 0.026953174 + - 0.0026244342 + - 0.00075953733 + - 0.0068638003 + - 0.027941871 + - 0.0054758545 + - 0.00017083417 + - 0.015570007 + - 0.20746051 + - 0.0068664327 + - 0.07722535 + - 0.03490134 + - 0.04810243 + - 0.50583255 + - 0.0332519 + laughterScore: 0 + - frameNumber: 592 + frameDelay: 0 + Visemes: + - 0.023568755 + - 0.0019085729 + - 0.0006524623 + - 0.005144009 + - 0.020026462 + - 0.004735161 + - 0.00012284145 + - 0.010919462 + - 0.14566831 + - 0.0052930326 + - 0.07293373 + - 0.025435751 + - 0.03449475 + - 0.6148053 + - 0.034291446 + laughterScore: 0 + - frameNumber: 593 + frameDelay: 0 + Visemes: + - 0.027129477 + - 0.0015659045 + - 0.0006527585 + - 0.004598328 + - 0.014599635 + - 0.0057215765 + - 0.00009692906 + - 0.0076864483 + - 0.10338486 + - 0.0048154043 + - 0.08334935 + - 0.019553656 + - 0.025766708 + - 0.64998597 + - 0.051093027 + laughterScore: 0 + - frameNumber: 594 + frameDelay: 0 + Visemes: + - 0.030995429 + - 0.001211325 + - 0.0007282128 + - 0.008494864 + - 0.013958339 + - 0.010207579 + - 0.0005165194 + - 0.005496329 + - 0.07566387 + - 0.007319702 + - 0.15504211 + - 0.023015313 + - 0.04752265 + - 0.56806284 + - 0.051764973 + laughterScore: 0 + - frameNumber: 595 + frameDelay: 0 + Visemes: + - 0.027832083 + - 0.0035274723 + - 0.000698605 + - 0.013889564 + - 0.028571608 + - 0.013586538 + - 0.0044495957 + - 0.004679305 + - 0.20314363 + - 0.006042068 + - 0.1352194 + - 0.025248222 + - 0.07607612 + - 0.4206459 + - 0.03639 + laughterScore: 0 + - frameNumber: 596 + frameDelay: 0 + Visemes: + - 0.023464292 + - 0.0029509258 + - 0.0005185789 + - 0.011234408 + - 0.024586067 + - 0.010096871 + - 0.0033602556 + - 0.0033414143 + - 0.42642835 + - 0.0042692735 + - 0.096977964 + - 0.018663418 + - 0.05383989 + - 0.29476097 + - 0.025507402 + laughterScore: 0 + - frameNumber: 597 + frameDelay: 0 + Visemes: + - 0.023509402 + - 0.0022159645 + - 0.00039148398 + - 0.012983173 + - 0.020592347 + - 0.009929701 + - 0.0023912396 + - 0.0023915616 + - 0.5643732 + - 0.0030104404 + - 0.072556295 + - 0.020936398 + - 0.040195018 + - 0.20664614 + - 0.01787771 + laughterScore: 0 + - frameNumber: 598 + frameDelay: 0 + Visemes: + - 0.028451275 + - 0.0016133264 + - 0.00029272173 + - 0.010173357 + - 0.020812228 + - 0.008769703 + - 0.0017220812 + - 0.0016988184 + - 0.5385659 + - 0.00231625 + - 0.060862377 + - 0.09809848 + - 0.068111226 + - 0.14592978 + - 0.012582502 + laughterScore: 0 + - frameNumber: 599 + frameDelay: 0 + Visemes: + - 0.029534657 + - 0.001205385 + - 0.00023511604 + - 0.0074714622 + - 0.024117382 + - 0.0065977303 + - 0.0012368752 + - 0.0012271698 + - 0.39243513 + - 0.0020589342 + - 0.053445444 + - 0.19018921 + - 0.1762346 + - 0.10503347 + - 0.008977399 + laughterScore: 0 + - frameNumber: 600 + frameDelay: 0 + Visemes: + - 0.036867328 + - 0.000913545 + - 0.00019062447 + - 0.0056536123 + - 0.039984055 + - 0.005699173 + - 0.0009121911 + - 0.0010502408 + - 0.2831092 + - 0.0018065248 + - 0.047492992 + - 0.35738224 + - 0.13836145 + - 0.074224554 + - 0.0063522486 + laughterScore: 0 + - frameNumber: 601 + frameDelay: 0 + Visemes: + - 0.03600841 + - 0.0009651409 + - 0.0001638305 + - 0.0044284635 + - 0.03176039 + - 0.0059780027 + - 0.0006735749 + - 0.0008565651 + - 0.20244883 + - 0.0014572758 + - 0.04901193 + - 0.50347054 + - 0.10516284 + - 0.053027928 + - 0.0045862473 + laughterScore: 0 + - frameNumber: 602 + frameDelay: 0 + Visemes: + - 0.03595096 + - 0.00079438253 + - 0.00014507287 + - 0.0038471585 + - 0.024692545 + - 0.0053302916 + - 0.00048891734 + - 0.0007166906 + - 0.14293718 + - 0.0010978084 + - 0.049119014 + - 0.6140189 + - 0.076601714 + - 0.040939894 + - 0.003319403 + laughterScore: 0 + - frameNumber: 603 + frameDelay: 0 + Visemes: + - 0.04136841 + - 0.0007250477 + - 0.00016112335 + - 0.002917335 + - 0.021175817 + - 0.0043462194 + - 0.00035454077 + - 0.0005800713 + - 0.10084405 + - 0.0008536085 + - 0.0715491 + - 0.66389704 + - 0.055141266 + - 0.033528127 + - 0.002558246 + laughterScore: 0 + - frameNumber: 604 + frameDelay: 0 + Visemes: + - 0.040816594 + - 0.0012103519 + - 0.00049832574 + - 0.0026039742 + - 0.051845413 + - 0.0032840238 + - 0.00035557194 + - 0.0008659221 + - 0.076045305 + - 0.0006947143 + - 0.09033616 + - 0.6595777 + - 0.039624054 + - 0.026548464 + - 0.0056934142 + laughterScore: 0 + - frameNumber: 605 + frameDelay: 0 + Visemes: + - 0.032525446 + - 0.00092084805 + - 0.0025063916 + - 0.0027722074 + - 0.04218728 + - 0.0038920513 + - 0.0017289227 + - 0.0073786667 + - 0.054235723 + - 0.00052359543 + - 0.07819102 + - 0.7203853 + - 0.028641716 + - 0.020083463 + - 0.004027386 + laughterScore: 0 + - frameNumber: 606 + frameDelay: 0 + Visemes: + - 0.029916935 + - 0.0010581041 + - 0.0025385339 + - 0.0019852642 + - 0.033848587 + - 0.0028290814 + - 0.0012299975 + - 0.26002222 + - 0.038289778 + - 0.00039090114 + - 0.056562297 + - 0.5340708 + - 0.02026912 + - 0.014159887 + - 0.0028285196 + laughterScore: 0 + - frameNumber: 607 + frameDelay: 0 + Visemes: + - 0.023894161 + - 0.00080917135 + - 0.001999722 + - 0.001952401 + - 0.026525103 + - 0.0020880648 + - 0.0008935019 + - 0.47440577 + - 0.02682742 + - 0.00028064882 + - 0.04021161 + - 0.37392607 + - 0.014276752 + - 0.009918941 + - 0.0019906648 + laughterScore: 0 + - frameNumber: 608 + frameDelay: 0 + Visemes: + - 0.021984097 + - 0.0010160233 + - 0.0015838176 + - 0.010257731 + - 0.023436073 + - 0.0025736385 + - 0.0008576748 + - 0.6045916 + - 0.01961788 + - 0.0002557774 + - 0.03213866 + - 0.26202708 + - 0.011007222 + - 0.006974881 + - 0.0016778731 + laughterScore: 0 + - frameNumber: 609 + frameDelay: 0 + Visemes: + - 0.021460935 + - 0.0026298037 + - 0.0014411327 + - 0.029847752 + - 0.019118126 + - 0.0036967753 + - 0.0013650943 + - 0.5882307 + - 0.032295235 + - 0.00048442063 + - 0.06339949 + - 0.18933973 + - 0.038985536 + - 0.0050308425 + - 0.0026744343 + laughterScore: 0 + - frameNumber: 610 + frameDelay: 0 + Visemes: + - 0.02113336 + - 0.0071746577 + - 0.0014068764 + - 0.022994634 + - 0.014866233 + - 0.005066666 + - 0.00116529 + - 0.43755725 + - 0.028667966 + - 0.000997219 + - 0.24152017 + - 0.13993242 + - 0.07074509 + - 0.0038097543 + - 0.0029624202 + laughterScore: 0 + - frameNumber: 611 + frameDelay: 0 + Visemes: + - 0.022304777 + - 0.053349093 + - 0.030968275 + - 0.018676301 + - 0.016022459 + - 0.020783655 + - 0.000970792 + - 0.34147942 + - 0.027118975 + - 0.0018233344 + - 0.30000448 + - 0.0989194 + - 0.05954958 + - 0.002775357 + - 0.005254113 + laughterScore: 0 + - frameNumber: 612 + frameDelay: 0 + Visemes: + - 0.022131281 + - 0.13842839 + - 0.16696455 + - 0.01510373 + - 0.023166608 + - 0.020948261 + - 0.0014723128 + - 0.24407282 + - 0.021827241 + - 0.0027579851 + - 0.22166523 + - 0.069317825 + - 0.04355281 + - 0.0019499527 + - 0.006641009 + laughterScore: 0 + - frameNumber: 613 + frameDelay: 0 + Visemes: + - 0.01955942 + - 0.1966362 + - 0.28219998 + - 0.028958261 + - 0.019515628 + - 0.015453115 + - 0.0014810236 + - 0.17410392 + - 0.01578057 + - 0.0029979288 + - 0.15565404 + - 0.048569568 + - 0.031221442 + - 0.0013710449 + - 0.00649791 + laughterScore: 0 + - frameNumber: 614 + frameDelay: 0 + Visemes: + - 0.01614869 + - 0.1961179 + - 0.34986943 + - 0.02693865 + - 0.014696892 + - 0.011380147 + - 0.0011090859 + - 0.12200839 + - 0.011536713 + - 0.002277714 + - 0.114181355 + - 0.03519546 + - 0.092318274 + - 0.00097564084 + - 0.005245702 + laughterScore: 0 + - frameNumber: 615 + frameDelay: 0 + Visemes: + - 0.012572459 + - 0.13810642 + - 0.26113442 + - 0.020015078 + - 0.010878853 + - 0.008005948 + - 0.0008201967 + - 0.08558486 + - 0.008152993 + - 0.0016367923 + - 0.08239899 + - 0.026870675 + - 0.3391728 + - 0.0006855674 + - 0.0039639743 + laughterScore: 0 + - frameNumber: 616 + frameDelay: 0 + Visemes: + - 0.009603148 + - 0.09671907 + - 0.18288626 + - 0.0140886875 + - 0.007830314 + - 0.005613948 + - 0.00058599014 + - 0.05993808 + - 0.005760585 + - 0.0011555448 + - 0.058576345 + - 0.01947872 + - 0.534223 + - 0.00048266278 + - 0.0030576512 + laughterScore: 0 + - frameNumber: 617 + frameDelay: 0 + Visemes: + - 0.0074811606 + - 0.06771148 + - 0.12803598 + - 0.009890295 + - 0.006010077 + - 0.0039499677 + - 0.00041916483 + - 0.041984387 + - 0.0040825508 + - 0.00085625175 + - 0.043253697 + - 0.014076401 + - 0.66921055 + - 0.0003428612 + - 0.0026952503 + laughterScore: 0 + - frameNumber: 618 + frameDelay: 0 + Visemes: + - 0.005629623 + - 0.04740092 + - 0.08966845 + - 0.0069545503 + - 0.004931002 + - 0.0027746537 + - 0.000357479 + - 0.038270287 + - 0.002917291 + - 0.00073061616 + - 0.03206856 + - 0.010045106 + - 0.756089 + - 0.00024149375 + - 0.0019210294 + laughterScore: 0 + - frameNumber: 619 + frameDelay: 0 + Visemes: + - 0.0050740372 + - 0.03318936 + - 0.06322116 + - 0.004922038 + - 0.0065352446 + - 0.001986261 + - 0.00042596378 + - 0.27754298 + - 0.0021218432 + - 0.00060681097 + - 0.023342237 + - 0.007054533 + - 0.57244 + - 0.00016937434 + - 0.001368085 + laughterScore: 0 + - frameNumber: 620 + frameDelay: 0 + Visemes: + - 0.0077260807 + - 0.023297118 + - 0.044362284 + - 0.0037139412 + - 0.01006417 + - 0.0015112058 + - 0.0006234031 + - 0.4799574 + - 0.0017629095 + - 0.00051321124 + - 0.016676 + - 0.004957292 + - 0.40375078 + - 0.000118955555 + - 0.0009652454 + laughterScore: 0 + - frameNumber: 621 + frameDelay: 0 + Visemes: + - 0.01222809 + - 0.016817084 + - 0.03117712 + - 0.013999537 + - 0.02212879 + - 0.0012949555 + - 0.0007700338 + - 0.59895504 + - 0.0018454937 + - 0.00046848162 + - 0.012181569 + - 0.0035206587 + - 0.28383696 + - 0.00008398175 + - 0.0006921931 + laughterScore: 0 + - frameNumber: 622 + frameDelay: 0 + Visemes: + - 0.018634532 + - 0.013024659 + - 0.022042766 + - 0.035371583 + - 0.038146235 + - 0.0013913175 + - 0.0015230828 + - 0.6554567 + - 0.001802604 + - 0.00043924327 + - 0.009039943 + - 0.0025996882 + - 0.19992538 + - 0.000060941784 + - 0.0005413068 + laughterScore: 0 + - frameNumber: 623 + frameDelay: 0 + Visemes: + - 0.049309768 + - 0.012296459 + - 0.01581072 + - 0.06294161 + - 0.05546888 + - 0.035044238 + - 0.0019155331 + - 0.53756416 + - 0.005725654 + - 0.00035645845 + - 0.008155355 + - 0.0030217054 + - 0.21067008 + - 0.000060945968 + - 0.0016584017 + laughterScore: 0 + - frameNumber: 624 + frameDelay: 0 + Visemes: + - 0.038469747 + - 0.008743061 + - 0.011126088 + - 0.047208656 + - 0.039918818 + - 0.031044178 + - 0.0014765554 + - 0.37668738 + - 0.004787832 + - 0.0002739733 + - 0.006826349 + - 0.003716359 + - 0.4267177 + - 0.000051789015 + - 0.0029514777 + laughterScore: 0 + - frameNumber: 625 + frameDelay: 0 + Visemes: + - 0.029848646 + - 0.0062238043 + - 0.0078051686 + - 0.033156313 + - 0.028048657 + - 0.022823615 + - 0.0010589971 + - 0.26373327 + - 0.004020157 + - 0.00019852328 + - 0.005024796 + - 0.003485111 + - 0.5918728 + - 0.000040591458 + - 0.0026595127 + laughterScore: 0 + - frameNumber: 626 + frameDelay: 0 + Visemes: + - 0.023720607 + - 0.004463466 + - 0.005476504 + - 0.023224028 + - 0.019851986 + - 0.018961415 + - 0.0007449786 + - 0.18461516 + - 0.005153483 + - 0.00014168522 + - 0.0037410518 + - 0.00371294 + - 0.7041 + - 0.000033061213 + - 0.0020595905 + laughterScore: 0 + - frameNumber: 627 + frameDelay: 0 + Visemes: + - 0.025033869 + - 0.003499069 + - 0.0038641898 + - 0.016275233 + - 0.014367345 + - 0.02309664 + - 0.0005432559 + - 0.12924606 + - 0.019599274 + - 0.00010724628 + - 0.0030739713 + - 0.0063995407 + - 0.7533772 + - 0.000026581438 + - 0.0014905153 + laughterScore: 0 + - frameNumber: 628 + frameDelay: 0 + Visemes: + - 0.025584051 + - 0.0034269597 + - 0.0027458975 + - 0.011416916 + - 0.010297289 + - 0.06250003 + - 0.000396386 + - 0.09049853 + - 0.040596806 + - 0.00008208417 + - 0.002474736 + - 0.0069080996 + - 0.741982 + - 0.000019603667 + - 0.0010705476 + laughterScore: 0 + - frameNumber: 629 + frameDelay: 0 + Visemes: + - 0.027562723 + - 0.005952984 + - 0.0019673996 + - 0.008018697 + - 0.007408105 + - 0.13743366 + - 0.000288087 + - 0.06337261 + - 0.04811386 + - 0.000065089465 + - 0.0021478685 + - 0.006947088 + - 0.68988883 + - 0.000020439074 + - 0.0008125265 + laughterScore: 0 + - frameNumber: 630 + frameDelay: 0 + Visemes: + - 0.028100323 + - 0.037953153 + - 0.0014858196 + - 0.005778903 + - 0.0053743594 + - 0.18887813 + - 0.00021791024 + - 0.044431962 + - 0.08952865 + - 0.000067769666 + - 0.0033125794 + - 0.012292782 + - 0.5811897 + - 0.00006487303 + - 0.0013230569 + laughterScore: 0 + - frameNumber: 631 + frameDelay: 0 + Visemes: + - 0.024369873 + - 0.046309985 + - 0.0011517651 + - 0.004318037 + - 0.0040440205 + - 0.17535737 + - 0.00017282358 + - 0.031258617 + - 0.25652868 + - 0.00006137987 + - 0.0034288387 + - 0.010830982 + - 0.4404059 + - 0.00005114422 + - 0.0017105676 + laughterScore: 0 + - frameNumber: 632 + frameDelay: 0 + Visemes: + - 0.018999733 + - 0.07259607 + - 0.0008413507 + - 0.0032534741 + - 0.0030622375 + - 0.16303432 + - 0.00012842582 + - 0.021918219 + - 0.39531928 + - 0.00004617367 + - 0.0024628805 + - 0.007680037 + - 0.30937263 + - 0.000036220754 + - 0.0012489336 + laughterScore: 0 + - frameNumber: 633 + frameDelay: 0 + Visemes: + - 0.016560802 + - 0.14339563 + - 0.00060877495 + - 0.0029531224 + - 0.0032469546 + - 0.13848998 + - 0.000098083045 + - 0.015401335 + - 0.4543609 + - 0.000033481043 + - 0.0017443642 + - 0.005402369 + - 0.21679287 + - 0.00002552852 + - 0.0008858001 + laughterScore: 0 + - frameNumber: 634 + frameDelay: 0 + Visemes: + - 0.016033301 + - 0.20421994 + - 0.00043423046 + - 0.0033575175 + - 0.00405333 + - 0.11227177 + - 0.00009791672 + - 0.010860503 + - 0.49095923 + - 0.000024800966 + - 0.0012645344 + - 0.0038154272 + - 0.15195519 + - 0.000018493956 + - 0.00063381635 + laughterScore: 0 + - frameNumber: 635 + frameDelay: 0 + Visemes: + - 0.016462944 + - 0.23075546 + - 0.0007669889 + - 0.0066879243 + - 0.030026976 + - 0.10128655 + - 0.0009659566 + - 0.013069374 + - 0.48922995 + - 0.00002144021 + - 0.0009047988 + - 0.0026927472 + - 0.10665434 + - 0.000019687917 + - 0.00045483987 + laughterScore: 0 + - frameNumber: 636 + frameDelay: 0 + Visemes: + - 0.01499419 + - 0.22229157 + - 0.00078983296 + - 0.005537948 + - 0.03183961 + - 0.07789067 + - 0.0007602065 + - 0.15266638 + - 0.41554567 + - 0.000019359455 + - 0.0007017173 + - 0.0018925186 + - 0.07473161 + - 0.000016909264 + - 0.00032182757 + laughterScore: 0 + - frameNumber: 637 + frameDelay: 0 + Visemes: + - 0.017710926 + - 0.15996279 + - 0.0046429676 + - 0.01176556 + - 0.025661606 + - 0.059748415 + - 0.0007621031 + - 0.36113095 + - 0.3041245 + - 0.000024881308 + - 0.0005298536 + - 0.001334874 + - 0.05234586 + - 0.000016569102 + - 0.00023813828 + laughterScore: 0 + - frameNumber: 638 + frameDelay: 0 + Visemes: + - 0.02544646 + - 0.11555636 + - 0.0057434523 + - 0.013699269 + - 0.022051156 + - 0.050588056 + - 0.00064370455 + - 0.4926807 + - 0.23517819 + - 0.000027298574 + - 0.00046249037 + - 0.00097468216 + - 0.03674504 + - 0.000019204419 + - 0.00018398174 + laughterScore: 0 + - frameNumber: 639 + frameDelay: 0 + Visemes: + - 0.042495336 + - 0.09153236 + - 0.006274796 + - 0.0129459705 + - 0.021258015 + - 0.042878535 + - 0.0005533937 + - 0.5487783 + - 0.20593758 + - 0.00003307887 + - 0.00041877525 + - 0.0007950995 + - 0.02589453 + - 0.00004664883 + - 0.00015763035 + laughterScore: 0 + - frameNumber: 640 + frameDelay: 0 + Visemes: + - 0.06274042 + - 0.07002998 + - 0.0054796212 + - 0.011016199 + - 0.022701599 + - 0.03260476 + - 0.00056083704 + - 0.6061132 + - 0.16900341 + - 0.000044947366 + - 0.00036852097 + - 0.0007216786 + - 0.018401742 + - 0.00006657386 + - 0.0001465778 + laughterScore: 0 + - frameNumber: 641 + frameDelay: 0 + Visemes: + - 0.13324524 + - 0.05144185 + - 0.0052415254 + - 0.009346529 + - 0.03649764 + - 0.023652054 + - 0.0006148476 + - 0.6017468 + - 0.12287061 + - 0.00009698733 + - 0.0005077024 + - 0.00089650403 + - 0.013568996 + - 0.000075495955 + - 0.00019726262 + laughterScore: 0 + - frameNumber: 642 + frameDelay: 0 + Visemes: + - 0.20615205 + - 0.0371946 + - 0.0046279915 + - 0.01206028 + - 0.072884284 + - 0.017392434 + - 0.00055929006 + - 0.5185836 + - 0.11251762 + - 0.00050878845 + - 0.0012888939 + - 0.0026750783 + - 0.012251759 + - 0.00017352993 + - 0.0011298588 + laughterScore: 0 + - frameNumber: 643 + frameDelay: 0 + Visemes: + - 0.21728647 + - 0.027107472 + - 0.004605115 + - 0.00947964 + - 0.068180144 + - 0.0125209335 + - 0.0005416948 + - 0.5606416 + - 0.07907614 + - 0.0003937415 + - 0.0029488236 + - 0.00598335 + - 0.009991795 + - 0.00034895615 + - 0.0008941296 + laughterScore: 0 + - frameNumber: 644 + frameDelay: 0 + Visemes: + - 0.2816122 + - 0.02364134 + - 0.005404259 + - 0.008002699 + - 0.06155999 + - 0.0091298865 + - 0.00055140146 + - 0.5237092 + - 0.05583874 + - 0.00031374142 + - 0.008396346 + - 0.011240594 + - 0.009230886 + - 0.00059599255 + - 0.00077276054 + laughterScore: 0 + - frameNumber: 645 + frameDelay: 0 + Visemes: + - 0.3746595 + - 0.019172648 + - 0.004772167 + - 0.006167725 + - 0.05330767 + - 0.0065495726 + - 0.00076518167 + - 0.4653234 + - 0.03920119 + - 0.00022541551 + - 0.008964787 + - 0.011467593 + - 0.008116634 + - 0.0006538314 + - 0.0006526676 + laughterScore: 0 + - frameNumber: 646 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 647 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 648 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 649 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 650 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 651 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 652 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 653 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 654 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 655 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 656 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 657 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 658 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 659 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 660 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 661 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 662 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 663 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 664 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 665 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 666 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 667 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 668 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 669 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 670 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 671 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 672 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 673 + frameDelay: 0 + Visemes: + - 0.4573755 + - 0.0799125 + - 0.0011442554 + - 0.020412846 + - 0.0075878766 + - 0.005482911 + - 0.0036132722 + - 0.003461112 + - 0.2564775 + - 0.0033645835 + - 0.006351355 + - 0.005202475 + - 0.11076762 + - 0.0021549189 + - 0.036691297 + laughterScore: 0 + - frameNumber: 674 + frameDelay: 0 + Visemes: + - 0.33051246 + - 0.06931014 + - 0.0018838927 + - 0.025080344 + - 0.021391498 + - 0.00850481 + - 0.010952648 + - 0.0035135099 + - 0.19350256 + - 0.006857085 + - 0.013582192 + - 0.009410428 + - 0.10270222 + - 0.0038925896 + - 0.19890364 + laughterScore: 0 + - frameNumber: 675 + frameDelay: 0 + Visemes: + - 0.23385565 + - 0.23692057 + - 0.002474343 + - 0.08767839 + - 0.042988315 + - 0.007632274 + - 0.008492663 + - 0.0025298356 + - 0.13994849 + - 0.005130718 + - 0.009748852 + - 0.007205185 + - 0.073077045 + - 0.0027652679 + - 0.13955244 + laughterScore: 0 + - frameNumber: 676 + frameDelay: 0 + Visemes: + - 0.16562812 + - 0.37999272 + - 0.0061645973 + - 0.11702931 + - 0.035688173 + - 0.0055641374 + - 0.0059882286 + - 0.0017811932 + - 0.098317996 + - 0.0039996724 + - 0.0112534 + - 0.009499015 + - 0.059383456 + - 0.0019460418 + - 0.09776399 + laughterScore: 0 + - frameNumber: 677 + frameDelay: 0 + Visemes: + - 0.12245986 + - 0.28655466 + - 0.004527426 + - 0.09165178 + - 0.026484527 + - 0.00406642 + - 0.0043390268 + - 0.0012546448 + - 0.06903898 + - 0.0030310128 + - 0.0109443385 + - 0.14258157 + - 0.16295731 + - 0.0013987527 + - 0.06870973 + laughterScore: 0 + - frameNumber: 678 + frameDelay: 0 + Visemes: + - 0.090622894 + - 0.20248066 + - 0.0032115444 + - 0.06482916 + - 0.01940518 + - 0.0029492336 + - 0.0031185993 + - 0.0008897868 + - 0.04842665 + - 0.0023188882 + - 0.008698979 + - 0.20463142 + - 0.29875284 + - 0.0010125098 + - 0.04865169 + laughterScore: 0 + - frameNumber: 679 + frameDelay: 0 + Visemes: + - 0.067228585 + - 0.14290717 + - 0.0022557648 + - 0.04549385 + - 0.013864819 + - 0.002096679 + - 0.002207774 + - 0.0006316981 + - 0.034097992 + - 0.0020036532 + - 0.006596106 + - 0.20227851 + - 0.4426896 + - 0.0007423023 + - 0.03490555 + laughterScore: 0 + - frameNumber: 680 + frameDelay: 0 + Visemes: + - 0.050941966 + - 0.10032415 + - 0.001589619 + - 0.03187587 + - 0.00997146 + - 0.0015119944 + - 0.0015981842 + - 0.00047331018 + - 0.024135107 + - 0.0019033437 + - 0.0048964852 + - 0.17895095 + - 0.56543064 + - 0.000547699 + - 0.025849225 + laughterScore: 0 + - frameNumber: 681 + frameDelay: 0 + Visemes: + - 0.036481686 + - 0.0704324 + - 0.0011279207 + - 0.02234359 + - 0.007297089 + - 0.0011458857 + - 0.0011812346 + - 0.00047534786 + - 0.017146716 + - 0.0018480066 + - 0.003939681 + - 0.12854055 + - 0.6894076 + - 0.0003878327 + - 0.01824448 + laughterScore: 0 + - frameNumber: 682 + frameDelay: 0 + Visemes: + - 0.026060905 + - 0.049374998 + - 0.0008371299 + - 0.015690269 + - 0.0058886977 + - 0.00088030036 + - 0.00094657525 + - 0.011122901 + - 0.012075477 + - 0.0013443731 + - 0.0032402119 + - 0.090101294 + - 0.76937187 + - 0.0002722195 + - 0.012792794 + laughterScore: 0 + - frameNumber: 683 + frameDelay: 0 + Visemes: + - 0.023206934 + - 0.035116795 + - 0.0016113389 + - 0.013219014 + - 0.025682325 + - 0.0012155776 + - 0.03914822 + - 0.13354135 + - 0.0088016465 + - 0.0010280418 + - 0.0027751776 + - 0.06321335 + - 0.6421352 + - 0.00019520352 + - 0.009109811 + laughterScore: 0 + - frameNumber: 684 + frameDelay: 0 + Visemes: + - 0.024031792 + - 0.02543262 + - 0.002098545 + - 0.014234992 + - 0.025480416 + - 0.0016038879 + - 0.08733617 + - 0.30313295 + - 0.006514032 + - 0.0007548511 + - 0.002146644 + - 0.044282816 + - 0.45641556 + - 0.00013730703 + - 0.006397434 + laughterScore: 0 + - frameNumber: 685 + frameDelay: 0 + Visemes: + - 0.033773597 + - 0.018734105 + - 0.0016674912 + - 0.015030702 + - 0.038151123 + - 0.0014705814 + - 0.15093446 + - 0.37297708 + - 0.0051231785 + - 0.00058699655 + - 0.0019969835 + - 0.031024743 + - 0.323945 + - 0.0000966819 + - 0.0044872984 + laughterScore: 0 + - frameNumber: 686 + frameDelay: 0 + Visemes: + - 0.043926924 + - 0.014247198 + - 0.0014823731 + - 0.022652172 + - 0.08156698 + - 0.0013726901 + - 0.17138231 + - 0.39663124 + - 0.004487479 + - 0.0005083389 + - 0.0023405014 + - 0.021765271 + - 0.23429483 + - 0.00007203372 + - 0.0032696808 + laughterScore: 0 + - frameNumber: 687 + frameDelay: 0 + Visemes: + - 0.037646677 + - 0.011300095 + - 0.0011109869 + - 0.020515807 + - 0.071461335 + - 0.0018885969 + - 0.12007193 + - 0.27779353 + - 0.0055753887 + - 0.00038762565 + - 0.006448797 + - 0.05874663 + - 0.38442564 + - 0.00008195287 + - 0.0025450077 + laughterScore: 0 + - frameNumber: 688 + frameDelay: 0 + Visemes: + - 0.03712004 + - 0.008404389 + - 0.00080061227 + - 0.01457424 + - 0.050538 + - 0.0017772552 + - 0.08412169 + - 0.19448456 + - 0.0055081677 + - 0.0003017384 + - 0.0062092757 + - 0.123623766 + - 0.47032148 + - 0.00010826067 + - 0.002106512 + laughterScore: 0 + - frameNumber: 689 + frameDelay: 0 + Visemes: + - 0.036617283 + - 0.0062242504 + - 0.000585862 + - 0.0102993045 + - 0.03634495 + - 0.0051764855 + - 0.05895421 + - 0.13618088 + - 0.008513718 + - 0.00026173954 + - 0.0058103334 + - 0.24974099 + - 0.4434259 + - 0.00015622433 + - 0.0017078671 + laughterScore: 0 + - frameNumber: 690 + frameDelay: 0 + Visemes: + - 0.036899693 + - 0.004798349 + - 0.00045223942 + - 0.007264697 + - 0.026408922 + - 0.021494603 + - 0.041395444 + - 0.09541747 + - 0.01933373 + - 0.00027903664 + - 0.005552664 + - 0.38192904 + - 0.35729182 + - 0.00017927692 + - 0.0013030538 + laughterScore: 0 + - frameNumber: 691 + frameDelay: 0 + Visemes: + - 0.03758152 + - 0.0046025123 + - 0.00037708489 + - 0.005187011 + - 0.0192762 + - 0.02679411 + - 0.029141622 + - 0.066889614 + - 0.03631881 + - 0.0002272678 + - 0.005238572 + - 0.48321837 + - 0.28403354 + - 0.00015419499 + - 0.0009595739 + laughterScore: 0 + - frameNumber: 692 + frameDelay: 0 + Visemes: + - 0.036799263 + - 0.07327162 + - 0.0005464315 + - 0.0040721013 + - 0.014143906 + - 0.06205515 + - 0.020515522 + - 0.046941433 + - 0.09833665 + - 0.00019900486 + - 0.007242116 + - 0.41595268 + - 0.21897084 + - 0.00014241552 + - 0.0008108958 + laughterScore: 0 + - frameNumber: 693 + frameDelay: 0 + Visemes: + - 0.028775806 + - 0.2552189 + - 0.00058972044 + - 0.0030588477 + - 0.01059065 + - 0.086450875 + - 0.014382939 + - 0.032912932 + - 0.11357548 + - 0.00014530213 + - 0.0058831214 + - 0.29348513 + - 0.15422189 + - 0.00010277208 + - 0.0006056478 + laughterScore: 0 + - frameNumber: 694 + frameDelay: 0 + Visemes: + - 0.023672963 + - 0.31225443 + - 0.0004599701 + - 0.0028882688 + - 0.008848831 + - 0.14440572 + - 0.0100899935 + - 0.023081167 + - 0.15562685 + - 0.00010407651 + - 0.0043433495 + - 0.20564803 + - 0.10805298 + - 0.00007314147 + - 0.00045025133 + laughterScore: 0 + - frameNumber: 695 + frameDelay: 0 + Visemes: + - 0.023699347 + - 0.37466568 + - 0.00037868976 + - 0.007779532 + - 0.014811686 + - 0.11925739 + - 0.007196 + - 0.016259855 + - 0.2119506 + - 0.00008561344 + - 0.0033939008 + - 0.144128 + - 0.07583726 + - 0.00005433893 + - 0.00050210627 + laughterScore: 0 + - frameNumber: 696 + frameDelay: 0 + Visemes: + - 0.021655817 + - 0.41157943 + - 0.0008214441 + - 0.020410188 + - 0.06899307 + - 0.09969166 + - 0.007827079 + - 0.013714642 + - 0.1975204 + - 0.00008142546 + - 0.0024985694 + - 0.10127041 + - 0.053445436 + - 0.000050539322 + - 0.00043992206 + laughterScore: 0 + - frameNumber: 697 + frameDelay: 0 + Visemes: + - 0.019933548 + - 0.3203242 + - 0.0010386303 + - 0.015705422 + - 0.12512437 + - 0.089462124 + - 0.0062020794 + - 0.06615959 + - 0.2453722 + - 0.00006318907 + - 0.0018074189 + - 0.07090507 + - 0.037546277 + - 0.00003834761 + - 0.00031756653 + laughterScore: 0 + - frameNumber: 698 + frameDelay: 0 + Visemes: + - 0.01837667 + - 0.22923128 + - 0.0043700016 + - 0.029378213 + - 0.103281826 + - 0.06732758 + - 0.0044323485 + - 0.27889612 + - 0.18710358 + - 0.000052962296 + - 0.001339281 + - 0.04964162 + - 0.026316598 + - 0.000027818636 + - 0.00022414431 + laughterScore: 0 + - frameNumber: 699 + frameDelay: 0 + Visemes: + - 0.021084625 + - 0.16234615 + - 0.017253244 + - 0.0418925 + - 0.083309166 + - 0.05304325 + - 0.003223978 + - 0.42216414 + - 0.14118634 + - 0.000045914843 + - 0.0009770782 + - 0.034777034 + - 0.018498648 + - 0.000021952295 + - 0.00017603973 + laughterScore: 0 + - frameNumber: 700 + frameDelay: 0 + Visemes: + - 0.03134904 + - 0.114992574 + - 0.024840835 + - 0.03976076 + - 0.08925699 + - 0.041384473 + - 0.0023884084 + - 0.5096645 + - 0.10683253 + - 0.000095641095 + - 0.0010440681 + - 0.024728281 + - 0.013390757 + - 0.00006086935 + - 0.00021032 + laughterScore: 0 + - frameNumber: 701 + frameDelay: 0 + Visemes: + - 0.04110285 + - 0.08745236 + - 0.021111472 + - 0.029373799 + - 0.067281276 + - 0.11281995 + - 0.0018385968 + - 0.53199995 + - 0.076792985 + - 0.00010688897 + - 0.0016190845 + - 0.017999455 + - 0.010184434 + - 0.00010666946 + - 0.00021023038 + laughterScore: 0 + - frameNumber: 702 + frameDelay: 0 + Visemes: + - 0.03420619 + - 0.06136429 + - 0.014904675 + - 0.021069577 + - 0.05241242 + - 0.36517352 + - 0.0014094035 + - 0.3739836 + - 0.05378271 + - 0.00007897076 + - 0.0013000511 + - 0.012676903 + - 0.0073633217 + - 0.00010157551 + - 0.0001727994 + laughterScore: 0 + - frameNumber: 703 + frameDelay: 0 + Visemes: + - 0.028050188 + - 0.04319704 + - 0.010482083 + - 0.014831392 + - 0.039599266 + - 0.54666394 + - 0.0010449641 + - 0.26282895 + - 0.037751034 + - 0.0001094387 + - 0.0010287409 + - 0.008881886 + - 0.005288846 + - 0.00008464187 + - 0.00015761402 + laughterScore: 0 + - frameNumber: 704 + frameDelay: 0 + Visemes: + - 0.025546858 + - 0.030321902 + - 0.0073483014 + - 0.010511565 + - 0.029144868 + - 0.648021 + - 0.00075615797 + - 0.18410899 + - 0.02671783 + - 0.00013545023 + - 0.021026546 + - 0.009033335 + - 0.0065388484 + - 0.00022330033 + - 0.0005650488 + laughterScore: 0 + - frameNumber: 705 + frameDelay: 0 + Visemes: + - 0.030444413 + - 0.021253873 + - 0.005148036 + - 0.0075407564 + - 0.021012451 + - 0.46836177 + - 0.0006143392 + - 0.12891059 + - 0.018880848 + - 0.00019465716 + - 0.13629447 + - 0.09699923 + - 0.05847056 + - 0.0013962799 + - 0.0044777202 + laughterScore: 0 + - frameNumber: 706 + frameDelay: 0 + Visemes: + - 0.03488499 + - 0.014908182 + - 0.0036139572 + - 0.005339393 + - 0.015321918 + - 0.3288384 + - 0.00051682186 + - 0.09083533 + - 0.015366415 + - 0.00044970808 + - 0.20897366 + - 0.15909338 + - 0.08685572 + - 0.019399937 + - 0.015602177 + laughterScore: 0 + - frameNumber: 707 + frameDelay: 0 + Visemes: + - 0.029389475 + - 0.0114202695 + - 0.0025831624 + - 0.0038435268 + - 0.03475184 + - 0.23069416 + - 0.001170352 + - 0.06384795 + - 0.20191357 + - 0.00065551605 + - 0.16667593 + - 0.14321883 + - 0.081429064 + - 0.013657878 + - 0.014748501 + laughterScore: 0 + - frameNumber: 708 + frameDelay: 0 + Visemes: + - 0.026206948 + - 0.022239365 + - 0.0020875714 + - 0.0027314238 + - 0.03944665 + - 0.1654503 + - 0.00088586955 + - 0.044793848 + - 0.39852244 + - 0.00049655436 + - 0.11863612 + - 0.10101681 + - 0.05751381 + - 0.009564074 + - 0.010408214 + laughterScore: 0 + - frameNumber: 709 + frameDelay: 0 + Visemes: + - 0.022109048 + - 0.033762474 + - 0.0028138831 + - 0.00225099 + - 0.1042368 + - 0.12351733 + - 0.00083865586 + - 0.031444307 + - 0.468498 + - 0.000505035 + - 0.08422689 + - 0.07091418 + - 0.040719282 + - 0.006700488 + - 0.007462633 + laughterScore: 0 + - frameNumber: 710 + frameDelay: 0 + Visemes: + - 0.016558558 + - 0.31120178 + - 0.0022028517 + - 0.0021930176 + - 0.079587445 + - 0.08706046 + - 0.00060697854 + - 0.022042396 + - 0.32840478 + - 0.00050027634 + - 0.059134033 + - 0.049660053 + - 0.030696336 + - 0.004693071 + - 0.0054578907 + laughterScore: 0 + - frameNumber: 711 + frameDelay: 0 + Visemes: + - 0.020927565 + - 0.24592127 + - 0.0016218949 + - 0.0018415167 + - 0.05673969 + - 0.062622696 + - 0.00051958975 + - 0.015436789 + - 0.23114137 + - 0.0004926344 + - 0.04253199 + - 0.03516253 + - 0.27748898 + - 0.00329913 + - 0.0042523104 + laughterScore: 0 + - frameNumber: 712 + frameDelay: 0 + Visemes: + - 0.025807813 + - 0.17759167 + - 0.001175271 + - 0.0013265827 + - 0.04075455 + - 0.045518957 + - 0.00053042825 + - 0.010816866 + - 0.16204152 + - 0.00044590243 + - 0.030054066 + - 0.02516504 + - 0.47246152 + - 0.0023159825 + - 0.003993806 + laughterScore: 0 + - frameNumber: 713 + frameDelay: 0 + Visemes: + - 0.024871357 + - 0.12976547 + - 0.0009875484 + - 0.0010005538 + - 0.030479405 + - 0.032972097 + - 0.00045444808 + - 0.0075859646 + - 0.11361777 + - 0.00034042393 + - 0.021111839 + - 0.017882701 + - 0.6141753 + - 0.0016220694 + - 0.0031329924 + laughterScore: 0 + - frameNumber: 714 + frameDelay: 0 + Visemes: + - 0.02281767 + - 0.09109686 + - 0.00075111736 + - 0.0007479843 + - 0.021476408 + - 0.024300208 + - 0.0003573065 + - 0.005343593 + - 0.079581946 + - 0.00025102939 + - 0.01485785 + - 0.013083905 + - 0.72168636 + - 0.001136455 + - 0.0025112971 + laughterScore: 0 + - frameNumber: 715 + frameDelay: 0 + Visemes: + - 0.020265553 + - 0.06379552 + - 0.0005407102 + - 0.00054298295 + - 0.015111225 + - 0.019231506 + - 0.0002637638 + - 0.003753396 + - 0.05574368 + - 0.00018794382 + - 0.010606414 + - 0.0094346665 + - 0.79724497 + - 0.000797889 + - 0.0024797744 + laughterScore: 0 + - frameNumber: 716 + frameDelay: 0 + Visemes: + - 0.019573905 + - 0.04470192 + - 0.0004416133 + - 0.00040795302 + - 0.010822147 + - 0.015242062 + - 0.00020269913 + - 0.0026644187 + - 0.03913456 + - 0.0002007947 + - 0.007798825 + - 0.0070242207 + - 0.8374544 + - 0.00056933076 + - 0.0137612065 + laughterScore: 0 + - frameNumber: 717 + frameDelay: 0 + Visemes: + - 0.015627293 + - 0.031315777 + - 0.00036037184 + - 0.00030512176 + - 0.007666895 + - 0.01109496 + - 0.00015220624 + - 0.0018966848 + - 0.027442358 + - 0.00028327288 + - 0.005714311 + - 0.0050066244 + - 0.8332805 + - 0.00041719852 + - 0.059436448 + laughterScore: 0 + - frameNumber: 718 + frameDelay: 0 + Visemes: + - 0.013887301 + - 0.021935713 + - 0.00035601083 + - 0.00024573933 + - 0.0054392563 + - 0.007960798 + - 0.00012860495 + - 0.0014028795 + - 0.01924472 + - 0.0003126518 + - 0.004194459 + - 0.0035478463 + - 0.73580647 + - 0.00031832067 + - 0.18521929 + laughterScore: 0 + - frameNumber: 719 + frameDelay: 0 + Visemes: + - 0.013506245 + - 0.015370129 + - 0.0005740713 + - 0.00045259087 + - 0.0040183226 + - 0.0056807436 + - 0.00011965735 + - 0.0013060964 + - 0.01354786 + - 0.00046781922 + - 0.003899227 + - 0.0026940529 + - 0.5316329 + - 0.0003307496 + - 0.4063996 + laughterScore: 0 + - frameNumber: 720 + frameDelay: 0 + Visemes: + - 0.013543704 + - 0.010768207 + - 0.0015210037 + - 0.0009774363 + - 0.0034290592 + - 0.004045613 + - 0.00012983664 + - 0.019342335 + - 0.00955801 + - 0.001762466 + - 0.015039369 + - 0.0024076356 + - 0.41217074 + - 0.00044296743 + - 0.50486165 + laughterScore: 0 + - frameNumber: 721 + frameDelay: 0 + Visemes: + - 0.013324262 + - 0.0075650965 + - 0.0021688433 + - 0.00084037817 + - 0.002885304 + - 0.0028703373 + - 0.000093249706 + - 0.23414895 + - 0.0067809713 + - 0.0015491558 + - 0.022473358 + - 0.0018775114 + - 0.31457424 + - 0.0003727661 + - 0.38847563 + laughterScore: 0 + - frameNumber: 722 + frameDelay: 0 + Visemes: + - 0.013169501 + - 0.005345744 + - 0.0016562286 + - 0.0014060421 + - 0.0032099136 + - 0.002161716 + - 0.00006832125 + - 0.45113826 + - 0.004831406 + - 0.0011299115 + - 0.016477756 + - 0.0013268173 + - 0.22434905 + - 0.00026664368 + - 0.27346274 + laughterScore: 0 + - frameNumber: 723 + frameDelay: 0 + Visemes: + - 0.014538655 + - 0.003843566 + - 0.0012328771 + - 0.0034164838 + - 0.006214881 + - 0.0016254798 + - 0.000065822365 + - 0.6002073 + - 0.0034340464 + - 0.000825999 + - 0.011777623 + - 0.0010188916 + - 0.15993665 + - 0.00020497444 + - 0.19165675 + laughterScore: 0 + - frameNumber: 724 + frameDelay: 0 + Visemes: + - 0.021708978 + - 0.0029616202 + - 0.000910014 + - 0.012668398 + - 0.04007216 + - 0.0016198013 + - 0.00009535371 + - 0.6574344 + - 0.0027775897 + - 0.0005891422 + - 0.008441397 + - 0.0008256405 + - 0.11538498 + - 0.00020001776 + - 0.13431056 + laughterScore: 0 + - frameNumber: 725 + frameDelay: 0 + Visemes: + - 0.028164163 + - 0.0032270667 + - 0.00069962564 + - 0.06594263 + - 0.22624867 + - 0.0024569337 + - 0.0002499309 + - 0.4877158 + - 0.0029246733 + - 0.00041548532 + - 0.006000175 + - 0.00064908696 + - 0.08106691 + - 0.00020632782 + - 0.09403252 + laughterScore: 0 + - frameNumber: 726 + frameDelay: 0 + Visemes: + - 0.024566796 + - 0.0023438125 + - 0.00050154835 + - 0.06375964 + - 0.43295386 + - 0.002028777 + - 0.0008258283 + - 0.34242085 + - 0.0027407922 + - 0.00029442695 + - 0.0042285584 + - 0.00048449787 + - 0.056822028 + - 0.00019935393 + - 0.06582922 + laughterScore: 0 + - frameNumber: 727 + frameDelay: 0 + Visemes: + - 0.022146082 + - 0.0016995425 + - 0.00042500993 + - 0.049635418 + - 0.5897523 + - 0.0016638247 + - 0.00242275 + - 0.24013788 + - 0.0019445701 + - 0.00022257824 + - 0.0032283629 + - 0.00035497636 + - 0.04004954 + - 0.00014607409 + - 0.046171043 + laughterScore: 0 + - frameNumber: 728 + frameDelay: 0 + Visemes: + - 0.018619105 + - 0.0013043645 + - 0.00032041318 + - 0.035612486 + - 0.64571786 + - 0.0014448893 + - 0.0045588543 + - 0.17079927 + - 0.0014549487 + - 0.00023352071 + - 0.055390377 + - 0.0009722027 + - 0.0307684 + - 0.00018102521 + - 0.032622274 + laughterScore: 0 + - frameNumber: 729 + frameDelay: 0 + Visemes: + - 0.016104463 + - 0.0009691341 + - 0.00025018697 + - 0.025251035 + - 0.45590216 + - 0.0010776325 + - 0.0036319655 + - 0.119774476 + - 0.0011668851 + - 0.0025946577 + - 0.2649893 + - 0.0077949576 + - 0.0586211 + - 0.010025691 + - 0.031846337 + laughterScore: 0 + - frameNumber: 730 + frameDelay: 0 + Visemes: + - 0.01161785 + - 0.0009484939 + - 0.00027471012 + - 0.017739689 + - 0.31932616 + - 0.0007800397 + - 0.0025453079 + - 0.083842665 + - 0.0009083076 + - 0.0021165465 + - 0.4785964 + - 0.005540568 + - 0.04321102 + - 0.007231808 + - 0.02532039 + laughterScore: 0 + - frameNumber: 731 + frameDelay: 0 + Visemes: + - 0.008685352 + - 0.024024138 + - 0.002880827 + - 0.013100076 + - 0.22461388 + - 0.0028006546 + - 0.0017874184 + - 0.058695193 + - 0.0010202549 + - 0.002189985 + - 0.59924495 + - 0.003906827 + - 0.030477233 + - 0.0051532504 + - 0.021419946 + laughterScore: 0 + - frameNumber: 732 + frameDelay: 0 + Visemes: + - 0.0093577085 + - 0.27262178 + - 0.0039738454 + - 0.009399618 + - 0.15929021 + - 0.010245691 + - 0.0013583228 + - 0.041094705 + - 0.0007456862 + - 0.0015486259 + - 0.4473252 + - 0.0028189446 + - 0.021544106 + - 0.0036346368 + - 0.015040956 + laughterScore: 0 + - frameNumber: 733 + frameDelay: 0 + Visemes: + - 0.011336574 + - 0.46455073 + - 0.0074330885 + - 0.0076588895 + - 0.11613423 + - 0.010449326 + - 0.0010050245 + - 0.02881186 + - 0.00055733696 + - 0.0011311175 + - 0.32014522 + - 0.0020202491 + - 0.015453037 + - 0.002566274 + - 0.010747063 + laughterScore: 0 + - frameNumber: 734 + frameDelay: 0 + Visemes: + - 0.016954575 + - 0.5693741 + - 0.037829172 + - 0.007541876 + - 0.08330911 + - 0.007585286 + - 0.00071973936 + - 0.020288803 + - 0.0005364374 + - 0.0010990456 + - 0.23057659 + - 0.0014595746 + - 0.011560118 + - 0.00200945 + - 0.00915615 + laughterScore: 0 + - frameNumber: 735 + frameDelay: 0 + Visemes: + - 0.015768506 + - 0.52348363 + - 0.028683424 + - 0.005392924 + - 0.058419794 + - 0.005634224 + - 0.00050525717 + - 0.014214834 + - 0.012941507 + - 0.0019111438 + - 0.29698402 + - 0.0010880606 + - 0.01341996 + - 0.004436154 + - 0.017116545 + laughterScore: 0 + - frameNumber: 736 + frameDelay: 0 + Visemes: + - 0.012824147 + - 0.36813712 + - 0.020321004 + - 0.0037889988 + - 0.041106284 + - 0.003976821 + - 0.00035636956 + - 0.0099519715 + - 0.018584885 + - 0.0018172691 + - 0.46774542 + - 0.00092563406 + - 0.02837964 + - 0.007423672 + - 0.014660726 + laughterScore: 0 + - frameNumber: 737 + frameDelay: 0 + Visemes: + - 0.015803784 + - 0.25815037 + - 0.015184564 + - 0.002703435 + - 0.031807262 + - 0.0028983487 + - 0.00025392423 + - 0.0069851032 + - 0.19612302 + - 0.0015380736 + - 0.39252222 + - 0.0008298984 + - 0.020601435 + - 0.03828593 + - 0.016312592 + laughterScore: 0 + - frameNumber: 738 + frameDelay: 0 + Visemes: + - 0.01438966 + - 0.18093576 + - 0.010804344 + - 0.0019558102 + - 0.022859989 + - 0.002421334 + - 0.00017923964 + - 0.004915801 + - 0.41445953 + - 0.0013289887 + - 0.275042 + - 0.00065665116 + - 0.014466122 + - 0.042453878 + - 0.01313089 + laughterScore: 0 + - frameNumber: 739 + frameDelay: 0 + Visemes: + - 0.013458632 + - 0.12675452 + - 0.00766698 + - 0.0016070431 + - 0.016382415 + - 0.0034152097 + - 0.00012909615 + - 0.0034682842 + - 0.5714209 + - 0.0021089395 + - 0.20106882 + - 0.0021649855 + - 0.010289041 + - 0.03035774 + - 0.009707365 + laughterScore: 0 + - frameNumber: 740 + frameDelay: 0 + Visemes: + - 0.020353246 + - 0.08881483 + - 0.005472749 + - 0.002120499 + - 0.011799311 + - 0.0061516445 + - 0.00011922707 + - 0.0024529598 + - 0.41094455 + - 0.0016080894 + - 0.22392121 + - 0.18887761 + - 0.008498997 + - 0.02199453 + - 0.0068705436 + laughterScore: 0 + - frameNumber: 741 + frameDelay: 0 + Visemes: + - 0.022588935 + - 0.06221183 + - 0.0038447217 + - 0.0019972106 + - 0.00868565 + - 0.006388122 + - 0.00010798368 + - 0.0017408498 + - 0.28889227 + - 0.0011948025 + - 0.18898535 + - 0.3832578 + - 0.009287825 + - 0.01593479 + - 0.0048818844 + laughterScore: 0 + - frameNumber: 742 + frameDelay: 0 + Visemes: + - 0.019655148 + - 0.043574005 + - 0.0027027945 + - 0.0015565165 + - 0.006773694 + - 0.005043368 + - 0.000095037736 + - 0.0012346852 + - 0.20283422 + - 0.00095707277 + - 0.14726064 + - 0.5401646 + - 0.011733133 + - 0.012831066 + - 0.0035840222 + laughterScore: 0 + - frameNumber: 743 + frameDelay: 0 + Visemes: + - 0.021362796 + - 0.030586308 + - 0.00192001 + - 0.0012615068 + - 0.007862458 + - 0.0040323315 + - 0.00022027962 + - 0.0009537265 + - 0.14508547 + - 0.00094030483 + - 0.1812847 + - 0.56674016 + - 0.02417653 + - 0.010702409 + - 0.0028710233 + laughterScore: 0 + - frameNumber: 744 + frameDelay: 0 + Visemes: + - 0.023839783 + - 0.0220263 + - 0.0015878853 + - 0.0012261753 + - 0.019479722 + - 0.0040976526 + - 0.0006734689 + - 0.0011792055 + - 0.12934463 + - 0.0014772583 + - 0.20473139 + - 0.5497082 + - 0.02821372 + - 0.0099384105 + - 0.0024762468 + laughterScore: 0 + - frameNumber: 745 + frameDelay: 0 + Visemes: + - 0.018082105 + - 0.01578589 + - 0.0015477345 + - 0.0010219902 + - 0.025198163 + - 0.005022513 + - 0.0005271741 + - 0.00093181734 + - 0.36377788 + - 0.0011888894 + - 0.1459698 + - 0.39111656 + - 0.02110297 + - 0.006975699 + - 0.0017508337 + laughterScore: 0 + - frameNumber: 746 + frameDelay: 0 + Visemes: + - 0.01416209 + - 0.011311064 + - 0.0011027514 + - 0.0007892123 + - 0.019460909 + - 0.0068549234 + - 0.00038933792 + - 0.00068520266 + - 0.54729694 + - 0.0008344956 + - 0.1023365 + - 0.2738226 + - 0.014829022 + - 0.004894991 + - 0.0012299799 + laughterScore: 0 + - frameNumber: 747 + frameDelay: 0 + Visemes: + - 0.011843981 + - 0.00888635 + - 0.00079172227 + - 0.0010768219 + - 0.020804528 + - 0.0059812656 + - 0.00028423572 + - 0.0004888294 + - 0.67073005 + - 0.000593223 + - 0.07206831 + - 0.19170544 + - 0.010432596 + - 0.0034281954 + - 0.0008844416 + laughterScore: 0 + - frameNumber: 748 + frameDelay: 0 + Visemes: + - 0.011261285 + - 0.007897918 + - 0.00059105497 + - 0.0014724671 + - 0.040371343 + - 0.005273911 + - 0.00023658329 + - 0.00039972353 + - 0.73665833 + - 0.0004550936 + - 0.050687425 + - 0.1342183 + - 0.00736621 + - 0.00240545 + - 0.0007048737 + laughterScore: 0 + - frameNumber: 749 + frameDelay: 0 + Visemes: + - 0.01040294 + - 0.009554861 + - 0.00065589655 + - 0.0013304995 + - 0.086920306 + - 0.004818679 + - 0.0002487417 + - 0.00038279942 + - 0.7482869 + - 0.0003505576 + - 0.035602275 + - 0.09396154 + - 0.0052316235 + - 0.0016911236 + - 0.0005612155 + laughterScore: 0 + - frameNumber: 750 + frameDelay: 0 + Visemes: + - 0.013191212 + - 0.008022244 + - 0.0004938422 + - 0.0010588885 + - 0.07743386 + - 0.0051022004 + - 0.00024243252 + - 0.00032230822 + - 0.79770464 + - 0.0002639904 + - 0.024967559 + - 0.06578303 + - 0.00374195 + - 0.0011883356 + - 0.0004834818 + laughterScore: 0 + - frameNumber: 751 + frameDelay: 0 + Visemes: + - 0.02007908 + - 0.0070129177 + - 0.00035875678 + - 0.0008479093 + - 0.06862513 + - 0.006385887 + - 0.0002752898 + - 0.00028107958 + - 0.82797194 + - 0.00019913935 + - 0.01757013 + - 0.04606541 + - 0.0028508923 + - 0.00087947806 + - 0.0005969567 + laughterScore: 0 + - frameNumber: 752 + frameDelay: 0 + Visemes: + - 0.048363283 + - 0.0075402204 + - 0.0002672631 + - 0.00068947347 + - 0.0694498 + - 0.009588221 + - 0.00027521604 + - 0.00029799785 + - 0.81406295 + - 0.00015102523 + - 0.012544684 + - 0.032417033 + - 0.0026699805 + - 0.00084176357 + - 0.0008410417 + laughterScore: 0 + - frameNumber: 753 + frameDelay: 0 + Visemes: + - 0.08927002 + - 0.006830958 + - 0.00020931836 + - 0.0009960782 + - 0.104663044 + - 0.012403075 + - 0.0004089491 + - 0.00035752665 + - 0.74674004 + - 0.00014484882 + - 0.009389829 + - 0.022980401 + - 0.0030234964 + - 0.0011032578 + - 0.0014790965 + laughterScore: 0 + - frameNumber: 754 + frameDelay: 0 + Visemes: + - 0.15607034 + - 0.015691742 + - 0.00043399766 + - 0.01036242 + - 0.122475624 + - 0.011211492 + - 0.0025509798 + - 0.0015592207 + - 0.58890545 + - 0.0024889067 + - 0.009046327 + - 0.0197409 + - 0.04157033 + - 0.003574603 + - 0.014317597 + laughterScore: 0 + - frameNumber: 755 + frameDelay: 0 + Visemes: + - 0.1594339 + - 0.10875769 + - 0.0003542234 + - 0.020579295 + - 0.103982516 + - 0.00964852 + - 0.0025322742 + - 0.0013335547 + - 0.47801504 + - 0.0022636214 + - 0.006671466 + - 0.014471708 + - 0.07542418 + - 0.002631698 + - 0.013900266 + laughterScore: 0 + - frameNumber: 756 + frameDelay: 0 + Visemes: + - 0.13488193 + - 0.33432245 + - 0.00026950057 + - 0.014787652 + - 0.072919905 + - 0.0074182614 + - 0.0017837612 + - 0.00095484447 + - 0.34064776 + - 0.0016329273 + - 0.004865296 + - 0.0102136 + - 0.053206477 + - 0.0035691864 + - 0.018526454 + laughterScore: 0 + - frameNumber: 757 + frameDelay: 0 + Visemes: + - 0.10057621 + - 0.2640276 + - 0.00019299726 + - 0.010472236 + - 0.051080927 + - 0.005259214 + - 0.0012497794 + - 0.00067413354 + - 0.24331445 + - 0.0011792774 + - 0.004888262 + - 0.0073987218 + - 0.03750004 + - 0.25058544 + - 0.021600742 + laughterScore: 0 + - frameNumber: 758 + frameDelay: 0 + Visemes: + - 0.07395122 + - 0.18579069 + - 0.00014074516 + - 0.0073649776 + - 0.03577814 + - 0.003712737 + - 0.0008756931 + - 0.00047942498 + - 0.1708719 + - 0.0010012541 + - 0.012119751 + - 0.0057799416 + - 0.026306028 + - 0.45940953 + - 0.016418004 + laughterScore: 0 + - frameNumber: 759 + frameDelay: 0 + Visemes: + - 0.057673898 + - 0.13028055 + - 0.000115914605 + - 0.0052093407 + - 0.025076538 + - 0.0026913127 + - 0.00061425625 + - 0.00034428263 + - 0.122343004 + - 0.007445325 + - 0.03710664 + - 0.0068725436 + - 0.01853917 + - 0.5676683 + - 0.018018937 + laughterScore: 0 + - frameNumber: 760 + frameDelay: 0 + Visemes: + - 0.04195672 + - 0.09120337 + - 0.000082984014 + - 0.0036488033 + - 0.017555386 + - 0.0019038055 + - 0.00043007158 + - 0.00024187975 + - 0.08567414 + - 0.06167543 + - 0.029183421 + - 0.005317106 + - 0.0130178835 + - 0.6354283 + - 0.012680749 + laughterScore: 0 + - frameNumber: 761 + frameDelay: 0 + Visemes: + - 0.034307696 + - 0.06387806 + - 0.00006901081 + - 0.0025718499 + - 0.012359844 + - 0.0013861869 + - 0.0003017815 + - 0.00017508773 + - 0.060113832 + - 0.30687243 + - 0.027987033 + - 0.004993599 + - 0.009246683 + - 0.4667958 + - 0.008941195 + laughterScore: 0 + - frameNumber: 762 + frameDelay: 0 + Visemes: + - 0.026531512 + - 0.044829115 + - 0.00009259929 + - 0.002075847 + - 0.009008503 + - 0.0014389899 + - 0.00022309099 + - 0.0002425299 + - 0.044376813 + - 0.50762284 + - 0.020188717 + - 0.003585685 + - 0.006732851 + - 0.3267752 + - 0.0062758266 + laughterScore: 0 + - frameNumber: 763 + frameDelay: 0 + Visemes: + - 0.022096122 + - 0.033146936 + - 0.012223224 + - 0.0020585973 + - 0.00687475 + - 0.0064574094 + - 0.00027998805 + - 0.00035718706 + - 0.031776614 + - 0.6279051 + - 0.014815349 + - 0.0025341546 + - 0.0063202386 + - 0.22875822 + - 0.0043962267 + laughterScore: 0 + - frameNumber: 764 + frameDelay: 0 + Visemes: + - 0.018758303 + - 0.025597395 + - 0.28343615 + - 0.0017578381 + - 0.0057996665 + - 0.012057436 + - 0.00022776471 + - 0.00056079973 + - 0.022281801 + - 0.44944972 + - 0.010465784 + - 0.0017767642 + - 0.004602016 + - 0.16013809 + - 0.0030905046 + laughterScore: 0 + - frameNumber: 765 + frameDelay: 0 + Visemes: + - 0.015360425 + - 0.01912473 + - 0.48032746 + - 0.0015976708 + - 0.004855767 + - 0.016008655 + - 0.00018726476 + - 0.0006828251 + - 0.015612854 + - 0.32006377 + - 0.0073963553 + - 0.0012451011 + - 0.0032491696 + - 0.11210013 + - 0.002187821 + laughterScore: 0 + - frameNumber: 766 + frameDelay: 0 + Visemes: + - 0.017545253 + - 0.027174441 + - 0.5588579 + - 0.0034760842 + - 0.03933858 + - 0.018692419 + - 0.0005282665 + - 0.0014889726 + - 0.011013559 + - 0.23295812 + - 0.005556931 + - 0.0009065012 + - 0.0023959815 + - 0.078481816 + - 0.0015851546 + laughterScore: 0 + - frameNumber: 767 + frameDelay: 0 + Visemes: + - 0.019113418 + - 0.041085035 + - 0.4160704 + - 0.0040665567 + - 0.2643179 + - 0.017070208 + - 0.0014393288 + - 0.001286696 + - 0.007819806 + - 0.16464728 + - 0.0043382114 + - 0.0006527623 + - 0.0018201547 + - 0.054947603 + - 0.001324645 + laughterScore: 0 + - frameNumber: 768 + frameDelay: 0 + Visemes: + - 0.015082482 + - 0.03044043 + - 0.2916295 + - 0.0030909416 + - 0.47734913 + - 0.012191338 + - 0.0041659446 + - 0.001001561 + - 0.005486153 + - 0.11528299 + - 0.003063019 + - 0.00045779877 + - 0.0013399574 + - 0.038467113 + - 0.0009516614 + laughterScore: 0 + - frameNumber: 769 + frameDelay: 0 + Visemes: + - 0.011989981 + - 0.021576932 + - 0.20438132 + - 0.0025859557 + - 0.6283477 + - 0.00867008 + - 0.0030906063 + - 0.0008036873 + - 0.003844164 + - 0.08086545 + - 0.0046903454 + - 0.00032684673 + - 0.0010119305 + - 0.026944583 + - 0.00087044993 + laughterScore: 0 + - frameNumber: 770 + frameDelay: 0 + Visemes: + - 0.012387123 + - 0.015280307 + - 0.14331658 + - 0.0019230848 + - 0.70254624 + - 0.009385741 + - 0.0030353528 + - 0.00061485136 + - 0.0027611535 + - 0.0608711 + - 0.011730776 + - 0.014123536 + - 0.00106747 + - 0.020085292 + - 0.0008714036 + laughterScore: 0 + - frameNumber: 771 + frameDelay: 0 + Visemes: + - 0.016854335 + - 0.010920051 + - 0.100396976 + - 0.0014446634 + - 0.49775162 + - 0.010777529 + - 0.003707394 + - 0.00043928978 + - 0.0021201265 + - 0.06785813 + - 0.06079009 + - 0.19564562 + - 0.0016193591 + - 0.028056424 + - 0.0016183878 + laughterScore: 0 + - frameNumber: 772 + frameDelay: 0 + Visemes: + - 0.020376585 + - 0.007753559 + - 0.070288904 + - 0.0010462394 + - 0.34971696 + - 0.009788016 + - 0.0029380568 + - 0.0003102008 + - 0.0021693811 + - 0.12594698 + - 0.15691538 + - 0.20663139 + - 0.0015428569 + - 0.04240448 + - 0.002170994 + laughterScore: 0 + - frameNumber: 773 + frameDelay: 0 + Visemes: + - 0.02044893 + - 0.005523946 + - 0.04920515 + - 0.00079003663 + - 0.24526669 + - 0.007919942 + - 0.002088724 + - 0.00022338364 + - 0.0026282433 + - 0.19341666 + - 0.24676794 + - 0.17716415 + - 0.0016560494 + - 0.045198612 + - 0.0017015497 + laughterScore: 0 + - frameNumber: 774 + frameDelay: 0 + Visemes: + - 0.04557371 + - 0.00459888 + - 0.034480687 + - 0.00076438393 + - 0.17633803 + - 0.0071391356 + - 0.0015921391 + - 0.00021931069 + - 0.007524512 + - 0.21983607 + - 0.31447166 + - 0.13955149 + - 0.003182704 + - 0.043312155 + - 0.0014151002 + laughterScore: 0 + - frameNumber: 775 + frameDelay: 0 + Visemes: + - 0.03693434 + - 0.0034416846 + - 0.024315054 + - 0.0005513835 + - 0.12589295 + - 0.047622323 + - 0.0013730029 + - 0.00024708334 + - 0.008261966 + - 0.3163309 + - 0.22969195 + - 0.16200633 + - 0.004429769 + - 0.0348844 + - 0.004016837 + laughterScore: 0 + - frameNumber: 776 + frameDelay: 0 + Visemes: + - 0.02827981 + - 0.0025968442 + - 0.017409025 + - 0.00040741448 + - 0.09104415 + - 0.29618087 + - 0.005713084 + - 0.00021040489 + - 0.0059344615 + - 0.24539146 + - 0.1623472 + - 0.11383448 + - 0.0032959527 + - 0.024430385 + - 0.0029244497 + laughterScore: 0 + - frameNumber: 777 + frameDelay: 0 + Visemes: + - 0.020960445 + - 0.0018947714 + - 0.012246562 + - 0.0004495475 + - 0.06607907 + - 0.46299773 + - 0.041095424 + - 0.00018294575 + - 0.0041659186 + - 0.17237343 + - 0.11389545 + - 0.07968801 + - 0.0048161456 + - 0.017101895 + - 0.002052623 + laughterScore: 0 + - frameNumber: 778 + frameDelay: 0 + Visemes: + - 0.01835177 + - 0.0014167163 + - 0.0086267525 + - 0.00072031684 + - 0.050963458 + - 0.57301843 + - 0.028874554 + - 0.00014072354 + - 0.0030930748 + - 0.12116031 + - 0.083632305 + - 0.0559249 + - 0.04054473 + - 0.01198375 + - 0.0015482036 + laughterScore: 0 + - frameNumber: 779 + frameDelay: 0 + Visemes: + - 0.014372056 + - 0.0009994012 + - 0.0060619046 + - 0.00055268523 + - 0.03580374 + - 0.40229586 + - 0.020222452 + - 0.000100391386 + - 0.0022133735 + - 0.08531912 + - 0.07055228 + - 0.04984911 + - 0.3008862 + - 0.008414984 + - 0.0023564338 + laughterScore: 0 + - frameNumber: 780 + frameDelay: 0 + Visemes: + - 0.014175513 + - 0.000832545 + - 0.004454193 + - 0.0006066797 + - 0.026937895 + - 0.28984186 + - 0.014233711 + - 0.000108280154 + - 0.0031758132 + - 0.06252999 + - 0.07703755 + - 0.050998904 + - 0.44259673 + - 0.0060582412 + - 0.006412126 + laughterScore: 0 + - frameNumber: 781 + frameDelay: 0 + Visemes: + - 0.01874354 + - 0.0012325844 + - 0.004174605 + - 0.0016311996 + - 0.106821395 + - 0.20808636 + - 0.010888144 + - 0.00033194723 + - 0.009431893 + - 0.04518193 + - 0.076733865 + - 0.04211836 + - 0.465395 + - 0.0042743078 + - 0.0049548885 + laughterScore: 0 + - frameNumber: 782 + frameDelay: 0 + Visemes: + - 0.016599152 + - 0.0009673748 + - 0.0031114789 + - 0.0020437227 + - 0.35724977 + - 0.14725964 + - 0.008169856 + - 0.0003499425 + - 0.008171904 + - 0.03175231 + - 0.057799652 + - 0.02997993 + - 0.32999128 + - 0.002994369 + - 0.0035596343 + laughterScore: 0 + - frameNumber: 783 + frameDelay: 0 + Visemes: + - 0.01652085 + - 0.0009236833 + - 0.0022889834 + - 0.002757139 + - 0.53655285 + - 0.105255924 + - 0.007018451 + - 0.00030795988 + - 0.006054246 + - 0.022261962 + - 0.04204146 + - 0.02104644 + - 0.23235746 + - 0.0020976227 + - 0.0025149735 + laughterScore: 0 + - frameNumber: 784 + frameDelay: 0 + Visemes: + - 0.021681774 + - 0.0008719895 + - 0.00172768 + - 0.003232301 + - 0.63293827 + - 0.07416972 + - 0.032262046 + - 0.0013844096 + - 0.0043877806 + - 0.01566233 + - 0.029968727 + - 0.01475725 + - 0.16368492 + - 0.0014707424 + - 0.001800044 + laughterScore: 0 + - frameNumber: 785 + frameDelay: 0 + Visemes: + - 0.02641061 + - 0.0006427197 + - 0.0012432381 + - 0.0062922006 + - 0.52532893 + - 0.05203464 + - 0.18026057 + - 0.02855245 + - 0.0031577013 + - 0.011092397 + - 0.021741113 + - 0.010344153 + - 0.1303264 + - 0.0010373814 + - 0.0015354694 + laughterScore: 0 + - frameNumber: 786 + frameDelay: 0 + Visemes: + - 0.023639474 + - 0.00058101944 + - 0.00088616746 + - 0.0046161646 + - 0.3703644 + - 0.03696044 + - 0.15541165 + - 0.021052206 + - 0.0023072711 + - 0.008342539 + - 0.021071898 + - 0.007316809 + - 0.33895415 + - 0.0007415195 + - 0.007754295 + laughterScore: 0 + - frameNumber: 787 + frameDelay: 0 + Visemes: + - 0.027765438 + - 0.0035838622 + - 0.00071594416 + - 0.0035271775 + - 0.260735 + - 0.027737448 + - 0.13143897 + - 0.015400019 + - 0.0021252253 + - 0.0076658837 + - 0.01995504 + - 0.007377122 + - 0.45129678 + - 0.0005620398 + - 0.04011402 + laughterScore: 0 + - frameNumber: 788 + frameDelay: 0 + Visemes: + - 0.029577373 + - 0.0032995462 + - 0.00055262214 + - 0.002811951 + - 0.18326539 + - 0.02046901 + - 0.13727924 + - 0.011319367 + - 0.0018008234 + - 0.010221168 + - 0.018123413 + - 0.008637015 + - 0.5149328 + - 0.0006431941 + - 0.057067063 + laughterScore: 0 + - frameNumber: 789 + frameDelay: 0 + Visemes: + - 0.035037108 + - 0.0030410073 + - 0.0005727893 + - 0.003650737 + - 0.13278079 + - 0.050460532 + - 0.112686224 + - 0.010882195 + - 0.0061613913 + - 0.01984382 + - 0.016671598 + - 0.012773631 + - 0.4388751 + - 0.0018340491 + - 0.15472901 + laughterScore: 0 + - frameNumber: 790 + frameDelay: 0 + Visemes: + - 0.04350066 + - 0.002699582 + - 0.0005035797 + - 0.0033579092 + - 0.094749674 + - 0.15699358 + - 0.08564882 + - 0.0103855925 + - 0.011392286 + - 0.024315361 + - 0.036451697 + - 0.031392418 + - 0.35306874 + - 0.0032154198 + - 0.14232464 + laughterScore: 0 + - frameNumber: 791 + frameDelay: 0 + Visemes: + - 0.05529166 + - 0.0021608556 + - 0.00052331726 + - 0.0027984087 + - 0.06843667 + - 0.15668145 + - 0.06088195 + - 0.008053177 + - 0.011034271 + - 0.030987907 + - 0.13842116 + - 0.0688877 + - 0.26206776 + - 0.017814154 + - 0.11595951 + laughterScore: 0 + - frameNumber: 792 + frameDelay: 0 + Visemes: + - 0.05313492 + - 0.0016481435 + - 0.00047402043 + - 0.0020519 + - 0.048430856 + - 0.11374176 + - 0.04310355 + - 0.006050205 + - 0.008391632 + - 0.024355154 + - 0.32790828 + - 0.08443059 + - 0.1841738 + - 0.019663235 + - 0.08244193 + laughterScore: 0 + - frameNumber: 793 + frameDelay: 0 + Visemes: + - 0.047779143 + - 0.0012054195 + - 0.00038909813 + - 0.0014923903 + - 0.034128655 + - 0.080408685 + - 0.030310167 + - 0.0043796124 + - 0.0063209953 + - 0.018975044 + - 0.48979238 + - 0.07198465 + - 0.13025112 + - 0.024551293 + - 0.05803134 + laughterScore: 0 + - frameNumber: 794 + frameDelay: 0 + Visemes: + - 0.04318872 + - 0.0008849471 + - 0.0002890005 + - 0.001077656 + - 0.02402622 + - 0.056586705 + - 0.02125335 + - 0.0031073748 + - 0.004958201 + - 0.01396421 + - 0.6132078 + - 0.06385271 + - 0.09196505 + - 0.020890763 + - 0.040747218 + laughterScore: 0 + - frameNumber: 795 + frameDelay: 0 + Visemes: + - 0.04413379 + - 0.0007302256 + - 0.0002156462 + - 0.0007950927 + - 0.017155081 + - 0.03992265 + - 0.014909338 + - 0.0022159917 + - 0.0044470397 + - 0.010360112 + - 0.6909517 + - 0.060701326 + - 0.065003015 + - 0.019789698 + - 0.028669268 + laughterScore: 0 + - frameNumber: 796 + frameDelay: 0 + Visemes: + - 0.039183833 + - 0.13541968 + - 0.0006233682 + - 0.000652526 + - 0.018132435 + - 0.030795198 + - 0.010441485 + - 0.001610104 + - 0.10992757 + - 0.007451554 + - 0.51966786 + - 0.04383582 + - 0.048270565 + - 0.013895925 + - 0.020092031 + laughterScore: 0 + - frameNumber: 797 + frameDelay: 0 + Visemes: + - 0.037008867 + - 0.27750218 + - 0.0011681068 + - 0.00074557925 + - 0.018858496 + - 0.024436567 + - 0.007316988 + - 0.001219179 + - 0.16966969 + - 0.0053097964 + - 0.36807317 + - 0.030830657 + - 0.034016114 + - 0.009754413 + - 0.0140902 + laughterScore: 0 + - frameNumber: 798 + frameDelay: 0 + Visemes: + - 0.032545038 + - 0.46014744 + - 0.0010293381 + - 0.0013817293 + - 0.015545908 + - 0.017833086 + - 0.0051479046 + - 0.000908419 + - 0.13938348 + - 0.00376445 + - 0.2594517 + - 0.021666417 + - 0.024233598 + - 0.00686002 + - 0.010101457 + laughterScore: 0 + - frameNumber: 799 + frameDelay: 0 + Visemes: + - 0.02814204 + - 0.461407 + - 0.0009996372 + - 0.0031346057 + - 0.014318286 + - 0.014620568 + - 0.0038977275 + - 0.0008700075 + - 0.106058344 + - 0.0028805628 + - 0.20871025 + - 0.019983739 + - 0.12216265 + - 0.0049360474 + - 0.007878493 + laughterScore: 0 + - frameNumber: 800 + frameDelay: 0 + Visemes: + - 0.022070814 + - 0.32440275 + - 0.0012026096 + - 0.0023490896 + - 0.016274944 + - 0.018526342 + - 0.003739304 + - 0.00075697945 + - 0.07855344 + - 0.002530566 + - 0.40086764 + - 0.0143838255 + - 0.10517319 + - 0.003556062 + - 0.005612395 + laughterScore: 0 + - frameNumber: 801 + frameDelay: 0 + Visemes: + - 0.024306549 + - 0.2296094 + - 0.0035731662 + - 0.005631053 + - 0.11847182 + - 0.055169452 + - 0.015159229 + - 0.0013255557 + - 0.06960643 + - 0.0022121686 + - 0.3786652 + - 0.010254347 + - 0.07940553 + - 0.0025860285 + - 0.0040239813 + laughterScore: 0 + - frameNumber: 802 + frameDelay: 0 + Visemes: + - 0.021332135 + - 0.1610124 + - 0.0025667434 + - 0.005300261 + - 0.34374234 + - 0.05345349 + - 0.027231198 + - 0.0012194675 + - 0.049132235 + - 0.0015610728 + - 0.26587048 + - 0.007197053 + - 0.05570232 + - 0.0018355817 + - 0.0028431874 + laughterScore: 0 + - frameNumber: 803 + frameDelay: 0 + Visemes: + - 0.020560553 + - 0.11273076 + - 0.0018512097 + - 0.0044372943 + - 0.52152324 + - 0.04126091 + - 0.025780085 + - 0.0017832424 + - 0.034447487 + - 0.0011626063 + - 0.18638544 + - 0.005060877 + - 0.03935039 + - 0.0012891607 + - 0.0023766677 + laughterScore: 0 + - frameNumber: 804 + frameDelay: 0 + Visemes: + - 0.01927533 + - 0.078921095 + - 0.0013393506 + - 0.0035770661 + - 0.6389277 + - 0.029275194 + - 0.023574848 + - 0.009072727 + - 0.02412036 + - 0.0008722443 + - 0.13543859 + - 0.0035562117 + - 0.028644033 + - 0.00090940855 + - 0.002495775 + laughterScore: 0 + - frameNumber: 805 + frameDelay: 0 + Visemes: + - 0.024072628 + - 0.055352695 + - 0.0010156372 + - 0.0033379858 + - 0.56654537 + - 0.02103622 + - 0.10774864 + - 0.009925793 + - 0.016926179 + - 0.027948208 + - 0.101625346 + - 0.0025675546 + - 0.050727148 + - 0.00069442985 + - 0.010476109 + laughterScore: 0 + - frameNumber: 806 + frameDelay: 0 + Visemes: + - 0.028559487 + - 0.03906144 + - 0.0012043861 + - 0.0027592327 + - 0.41717672 + - 0.017190885 + - 0.15501383 + - 0.0072733057 + - 0.011953102 + - 0.14163774 + - 0.07798396 + - 0.0065331487 + - 0.06447555 + - 0.0012251348 + - 0.02795203 + laughterScore: 0 + - frameNumber: 807 + frameDelay: 0 + Visemes: + - 0.029820941 + - 0.027488528 + - 0.0008997759 + - 0.002171569 + - 0.2922876 + - 0.013116689 + - 0.10920244 + - 0.0051019704 + - 0.008480598 + - 0.30834168 + - 0.05965615 + - 0.021530163 + - 0.080994055 + - 0.0015371193 + - 0.03937074 + laughterScore: 0 + - frameNumber: 808 + frameDelay: 0 + Visemes: + - 0.026267678 + - 0.019589586 + - 0.00068287936 + - 0.0015744598 + - 0.20558949 + - 0.01376648 + - 0.07657495 + - 0.0035861623 + - 0.0068158633 + - 0.33468467 + - 0.04487866 + - 0.0988764 + - 0.12882942 + - 0.0013454683 + - 0.036937878 + laughterScore: 0 + - frameNumber: 809 + frameDelay: 0 + Visemes: + - 0.021982577 + - 0.01412539 + - 0.00061118463 + - 0.0011542232 + - 0.1456625 + - 0.011091688 + - 0.053629808 + - 0.0025384582 + - 0.007414763 + - 0.24251914 + - 0.034176335 + - 0.11846725 + - 0.31718773 + - 0.0011533968 + - 0.028285608 + laughterScore: 0 + - frameNumber: 810 + frameDelay: 0 + Visemes: + - 0.022840401 + - 0.010748792 + - 0.0010523896 + - 0.0014770897 + - 0.108740404 + - 0.013318617 + - 0.03756378 + - 0.0018531716 + - 0.0126482 + - 0.17946823 + - 0.031695556 + - 0.10607906 + - 0.44939148 + - 0.0009635861 + - 0.022159258 + laughterScore: 0 + - frameNumber: 811 + frameDelay: 0 + Visemes: + - 0.023106469 + - 0.0087899035 + - 0.001560094 + - 0.001707446 + - 0.08279548 + - 0.015848752 + - 0.026335374 + - 0.001501537 + - 0.016164606 + - 0.12761454 + - 0.028541815 + - 0.15731117 + - 0.48965698 + - 0.00077572477 + - 0.018290091 + laughterScore: 0 + - frameNumber: 812 + frameDelay: 0 + Visemes: + - 0.020828256 + - 0.00661761 + - 0.001453264 + - 0.002043771 + - 0.060210716 + - 0.016247593 + - 0.018452058 + - 0.001144944 + - 0.012944521 + - 0.08979318 + - 0.02265021 + - 0.13301621 + - 0.5993462 + - 0.00058919465 + - 0.01466224 + laughterScore: 0 + - frameNumber: 813 + frameDelay: 0 + Visemes: + - 0.019326406 + - 0.004861992 + - 0.001151316 + - 0.0016524853 + - 0.04281345 + - 0.012316875 + - 0.012935912 + - 0.00091687124 + - 0.0100292815 + - 0.06328496 + - 0.018072886 + - 0.10142365 + - 0.6944669 + - 0.0004715253 + - 0.016275471 + laughterScore: 0 + - frameNumber: 814 + frameDelay: 0 + Visemes: + - 0.02039263 + - 0.007736208 + - 0.0024382244 + - 0.0014885993 + - 0.043970235 + - 0.016134305 + - 0.009265151 + - 0.0013256159 + - 0.15535764 + - 0.04483176 + - 0.020032937 + - 0.08243415 + - 0.5740795 + - 0.0003804216 + - 0.020132588 + laughterScore: 0 + - frameNumber: 815 + frameDelay: 0 + Visemes: + - 0.022981813 + - 0.006279003 + - 0.002095459 + - 0.012611007 + - 0.08753086 + - 0.014190141 + - 0.013119741 + - 0.0044454294 + - 0.11735425 + - 0.03169399 + - 0.017267793 + - 0.06170405 + - 0.58216757 + - 0.00033223772 + - 0.026226658 + laughterScore: 0 + - frameNumber: 816 + frameDelay: 0 + Visemes: + - 0.020790199 + - 0.0058101136 + - 0.0018536076 + - 0.06265962 + - 0.14388889 + - 0.014387353 + - 0.016186917 + - 0.0039691874 + - 0.08409511 + - 0.0223475 + - 0.012868441 + - 0.044526614 + - 0.5363741 + - 0.00026936588 + - 0.02997296 + laughterScore: 0 + - frameNumber: 817 + frameDelay: 0 + Visemes: + - 0.021995725 + - 0.0066561047 + - 0.0024241896 + - 0.15155672 + - 0.1859948 + - 0.017017756 + - 0.018653976 + - 0.0033271455 + - 0.060205583 + - 0.015747799 + - 0.009452581 + - 0.032203905 + - 0.4514141 + - 0.00022408637 + - 0.02312548 + laughterScore: 0 + - frameNumber: 818 + frameDelay: 0 + Visemes: + - 0.030527335 + - 0.0055468227 + - 0.0019479133 + - 0.19226769 + - 0.18349141 + - 0.017452229 + - 0.01522095 + - 0.002895331 + - 0.043469254 + - 0.011081841 + - 0.007175682 + - 0.024645293 + - 0.44587937 + - 0.00021906401 + - 0.018179825 + laughterScore: 0 + - frameNumber: 819 + frameDelay: 0 + Visemes: + - 0.047910266 + - 0.0043246606 + - 0.0018050837 + - 0.23846516 + - 0.17472067 + - 0.01456622 + - 0.011762927 + - 0.0038886042 + - 0.03243154 + - 0.0078264065 + - 0.0057110926 + - 0.026793744 + - 0.4159143 + - 0.00026520918 + - 0.013614098 + laughterScore: 0 + - frameNumber: 820 + frameDelay: 0 + Visemes: + - 0.12239674 + - 0.003985803 + - 0.0017039776 + - 0.20087843 + - 0.15469503 + - 0.013663907 + - 0.008867232 + - 0.0044886954 + - 0.027197853 + - 0.0055995737 + - 0.0049967854 + - 0.023433346 + - 0.41771016 + - 0.0004960571 + - 0.009886411 + laughterScore: 0 + - frameNumber: 821 + frameDelay: 0 + Visemes: + - 0.28195727 + - 0.004379047 + - 0.0015756981 + - 0.16662608 + - 0.13415727 + - 0.014057605 + - 0.007215875 + - 0.0045602163 + - 0.022783525 + - 0.00415482 + - 0.005332182 + - 0.017595334 + - 0.32466736 + - 0.0020016613 + - 0.008936068 + laughterScore: 0 + - frameNumber: 822 + frameDelay: 0 + Visemes: + - 0.451084 + - 0.004698638 + - 0.0014623718 + - 0.122859485 + - 0.11023276 + - 0.0144655295 + - 0.0064439 + - 0.0051807547 + - 0.018888537 + - 0.0030886845 + - 0.0066236253 + - 0.013447557 + - 0.2309732 + - 0.0028701844 + - 0.007680783 + laughterScore: 0 + - frameNumber: 823 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 824 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 825 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 826 + frameDelay: 0 + Visemes: + - 0.38786715 + - 0.013348402 + - 0.005407989 + - 0.03688577 + - 0.032823104 + - 0.015702454 + - 0.0020118759 + - 0.0038958935 + - 0.04754637 + - 0.045094356 + - 0.18329437 + - 0.017639238 + - 0.059042487 + - 0.12119933 + - 0.028241184 + laughterScore: 0 + - frameNumber: 827 + frameDelay: 0 + Visemes: + - 0.28724614 + - 0.009643264 + - 0.0038584457 + - 0.026166048 + - 0.02308483 + - 0.012224549 + - 0.0014290446 + - 0.0027765986 + - 0.037260562 + - 0.16258918 + - 0.15794371 + - 0.054350737 + - 0.042429596 + - 0.15583476 + - 0.02316253 + laughterScore: 0 + - frameNumber: 828 + frameDelay: 0 + Visemes: + - 0.20739068 + - 0.006851751 + - 0.002772355 + - 0.018397225 + - 0.01793359 + - 0.009049515 + - 0.0010961755 + - 0.0020610131 + - 0.027745329 + - 0.37673852 + - 0.12728208 + - 0.04561135 + - 0.030798415 + - 0.1096918 + - 0.01658021 + laughterScore: 0 + - frameNumber: 829 + frameDelay: 0 + Visemes: + - 0.14917926 + - 0.0048449407 + - 0.0019952902 + - 0.013325832 + - 0.016988717 + - 0.0070657795 + - 0.0012728702 + - 0.0042651207 + - 0.022054221 + - 0.53486633 + - 0.090706006 + - 0.03902102 + - 0.024965795 + - 0.07756803 + - 0.011880782 + laughterScore: 0 + - frameNumber: 830 + frameDelay: 0 + Visemes: + - 0.10678328 + - 0.0034192745 + - 0.0014877098 + - 0.009474864 + - 0.015473761 + - 0.0056322557 + - 0.0017349315 + - 0.27634156 + - 0.015849523 + - 0.3918418 + - 0.06410382 + - 0.027352946 + - 0.01780999 + - 0.054369196 + - 0.0083251195 + laughterScore: 0 + - frameNumber: 831 + frameDelay: 0 + Visemes: + - 0.07590292 + - 0.002402281 + - 0.001079596 + - 0.006692015 + - 0.01184207 + - 0.0040227757 + - 0.0012958925 + - 0.49059045 + - 0.011122053 + - 0.27456713 + - 0.04491015 + - 0.019159378 + - 0.012513138 + - 0.038071897 + - 0.0058283056 + laughterScore: 0 + - frameNumber: 832 + frameDelay: 0 + Visemes: + - 0.05422487 + - 0.0016880701 + - 0.0007760133 + - 0.0047055176 + - 0.009261287 + - 0.002844944 + - 0.0009514065 + - 0.64104784 + - 0.007793896 + - 0.1922776 + - 0.03146828 + - 0.013419905 + - 0.008805613 + - 0.026653783 + - 0.004081005 + laughterScore: 0 + - frameNumber: 833 + frameDelay: 0 + Visemes: + - 0.039245214 + - 0.0011872487 + - 0.0005582231 + - 0.003366834 + - 0.02042939 + - 0.0020166629 + - 0.00072369794 + - 0.7331823 + - 0.0054691094 + - 0.13461931 + - 0.022082184 + - 0.009398542 + - 0.0061974325 + - 0.018662764 + - 0.0028610772 + laughterScore: 0 + - frameNumber: 834 + frameDelay: 0 + Visemes: + - 0.030827267 + - 0.0008913302 + - 0.00043553647 + - 0.0028168082 + - 0.049927205 + - 0.0015089774 + - 0.00057550246 + - 0.7722902 + - 0.004142224 + - 0.09424923 + - 0.015826115 + - 0.0066155433 + - 0.0047150524 + - 0.013106016 + - 0.0020729592 + laughterScore: 0 + - frameNumber: 835 + frameDelay: 0 + Visemes: + - 0.03093008 + - 0.0007222989 + - 0.00032297208 + - 0.004465551 + - 0.06159509 + - 0.0015893779 + - 0.00043393712 + - 0.6166386 + - 0.034829665 + - 0.0660143 + - 0.0557565 + - 0.087887086 + - 0.010622211 + - 0.025691101 + - 0.0025012256 + laughterScore: 0 + - frameNumber: 836 + frameDelay: 0 + Visemes: + - 0.025162293 + - 0.00066474185 + - 0.00028624973 + - 0.0032857887 + - 0.045104623 + - 0.001349275 + - 0.00034423117 + - 0.4320816 + - 0.032133 + - 0.046340648 + - 0.17942204 + - 0.08854378 + - 0.06403088 + - 0.076047055 + - 0.0052037723 + laughterScore: 0 + - frameNumber: 837 + frameDelay: 0 + Visemes: + - 0.022521075 + - 0.00056113896 + - 0.0013736661 + - 0.002428108 + - 0.03242102 + - 0.0025794604 + - 0.0002575687 + - 0.3026349 + - 0.11121338 + - 0.03260778 + - 0.23891011 + - 0.06414401 + - 0.057611216 + - 0.12385519 + - 0.0068813525 + laughterScore: 0 + - frameNumber: 838 + frameDelay: 0 + Visemes: + - 0.017934307 + - 0.00048487366 + - 0.0012029584 + - 0.0022045947 + - 0.02296772 + - 0.0026895753 + - 0.00018253173 + - 0.21190326 + - 0.3675287 + - 0.02288011 + - 0.16804509 + - 0.04512238 + - 0.04062084 + - 0.088888 + - 0.0073449966 + laughterScore: 0 + - frameNumber: 839 + frameDelay: 0 + Visemes: + - 0.014530901 + - 0.0003702805 + - 0.00088271755 + - 0.0021409814 + - 0.016162181 + - 0.0021942456 + - 0.00012833139 + - 0.14834227 + - 0.5514684 + - 0.016062025 + - 0.11823165 + - 0.032826874 + - 0.02881216 + - 0.06235536 + - 0.005491666 + laughterScore: 0 + - frameNumber: 840 + frameDelay: 0 + Visemes: + - 0.01569609 + - 0.00029108574 + - 0.00066291593 + - 0.008361768 + - 0.012031747 + - 0.002268914 + - 0.00009802433 + - 0.1038683 + - 0.55065346 + - 0.011542258 + - 0.124509946 + - 0.09800953 + - 0.023735626 + - 0.043967936 + - 0.004302355 + laughterScore: 0 + - frameNumber: 841 + frameDelay: 0 + Visemes: + - 0.01644145 + - 0.0002103594 + - 0.00047041418 + - 0.0063140523 + - 0.008641009 + - 0.0018972878 + - 0.00007287596 + - 0.07271269 + - 0.38878882 + - 0.008302646 + - 0.25540096 + - 0.18914983 + - 0.017276462 + - 0.031185744 + - 0.003135384 + laughterScore: 0 + - frameNumber: 842 + frameDelay: 0 + Visemes: + - 0.015089191 + - 0.00018932373 + - 0.00038761712 + - 0.0044467757 + - 0.0072217644 + - 0.0014683094 + - 0.00005514459 + - 0.050902016 + - 0.2726733 + - 0.0068524955 + - 0.22553945 + - 0.37766218 + - 0.012515162 + - 0.022275934 + - 0.0027212575 + laughterScore: 0 + - frameNumber: 843 + frameDelay: 0 + Visemes: + - 0.012084018 + - 0.0004963598 + - 0.0030127256 + - 0.003128201 + - 0.0066096103 + - 0.12425296 + - 0.000053478663 + - 0.035648014 + - 0.19089569 + - 0.0048255627 + - 0.15953113 + - 0.4231273 + - 0.009409521 + - 0.015646478 + - 0.0112788975 + laughterScore: 0 + - frameNumber: 844 + frameDelay: 0 + Visemes: + - 0.012142598 + - 0.0006824183 + - 0.002617252 + - 0.0022189303 + - 0.013060059 + - 0.36881924 + - 0.00024246502 + - 0.025098516 + - 0.13363983 + - 0.003387583 + - 0.11194839 + - 0.29866242 + - 0.006685958 + - 0.01099201 + - 0.009802317 + laughterScore: 0 + - frameNumber: 845 + frameDelay: 0 + Visemes: + - 0.01834203 + - 0.00085838593 + - 0.0019608291 + - 0.0016841954 + - 0.023470666 + - 0.53272676 + - 0.00021422106 + - 0.017819671 + - 0.09355925 + - 0.002377942 + - 0.07847307 + - 0.20909724 + - 0.0047116964 + - 0.0077167866 + - 0.006987245 + laughterScore: 0 + - frameNumber: 846 + frameDelay: 0 + Visemes: + - 0.022715326 + - 0.0024640788 + - 0.0018366696 + - 0.008381165 + - 0.10346852 + - 0.5545605 + - 0.0076848282 + - 0.016276976 + - 0.06554325 + - 0.0017009603 + - 0.055199195 + - 0.14637963 + - 0.0034084409 + - 0.0054173805 + - 0.0049631023 + laughterScore: 0 + - frameNumber: 847 + frameDelay: 0 + Visemes: + - 0.027607955 + - 0.0030686047 + - 0.004170338 + - 0.010714954 + - 0.2264517 + - 0.470356 + - 0.02198368 + - 0.03542089 + - 0.045994125 + - 0.0012692041 + - 0.03930443 + - 0.10249425 + - 0.0032656738 + - 0.003813805 + - 0.004084422 + laughterScore: 0 + - frameNumber: 848 + frameDelay: 0 + Visemes: + - 0.03614376 + - 0.007002393 + - 0.18543406 + - 0.008313874 + - 0.21210986 + - 0.3460734 + - 0.017644301 + - 0.03804077 + - 0.03250564 + - 0.002886701 + - 0.02952904 + - 0.07178174 + - 0.0057612434 + - 0.002731345 + - 0.004041872 + laughterScore: 0 + - frameNumber: 849 + frameDelay: 0 + Visemes: + - 0.030151771 + - 0.0059198854 + - 0.41253394 + - 0.006201251 + - 0.15299556 + - 0.24383575 + - 0.012441599 + - 0.02898068 + - 0.022792907 + - 0.0030700779 + - 0.021489609 + - 0.050257336 + - 0.004248746 + - 0.0019310092 + - 0.003149855 + laughterScore: 0 + - frameNumber: 850 + frameDelay: 0 + Visemes: + - 0.026686355 + - 0.0045742383 + - 0.3768611 + - 0.0071763867 + - 0.11059718 + - 0.17384483 + - 0.0090099955 + - 0.028559403 + - 0.017049257 + - 0.18125999 + - 0.018111644 + - 0.035402432 + - 0.0036783693 + - 0.001917257 + - 0.00527151 + laughterScore: 0 + - frameNumber: 851 + frameDelay: 0 + Visemes: + - 0.021465488 + - 0.0034283558 + - 0.27060893 + - 0.0067436225 + - 0.07780079 + - 0.122116804 + - 0.0063124234 + - 0.020015594 + - 0.012258545 + - 0.40153125 + - 0.01774503 + - 0.029249197 + - 0.00376269 + - 0.0019663307 + - 0.0049949065 + laughterScore: 0 + - frameNumber: 852 + frameDelay: 0 + Visemes: + - 0.021216733 + - 0.0037276645 + - 0.18982072 + - 0.0048162164 + - 0.055296846 + - 0.085537665 + - 0.0044617304 + - 0.014040676 + - 0.0099340575 + - 0.3320449 + - 0.1147163 + - 0.12048246 + - 0.035529234 + - 0.004637503 + - 0.0037372871 + laughterScore: 0 + - frameNumber: 853 + frameDelay: 0 + Visemes: + - 0.020738449 + - 0.09444266 + - 0.13891852 + - 0.0038523227 + - 0.042057376 + - 0.06263634 + - 0.0031360127 + - 0.00999582 + - 0.034844883 + - 0.25345734 + - 0.20089717 + - 0.0882411 + - 0.04057287 + - 0.0035207407 + - 0.0026884014 + laughterScore: 0 + - frameNumber: 854 + frameDelay: 0 + Visemes: + - 0.019261539 + - 0.33176503 + - 0.09863774 + - 0.0030827704 + - 0.03640294 + - 0.04530809 + - 0.0022171899 + - 0.007166213 + - 0.037422135 + - 0.1776488 + - 0.14557287 + - 0.061814703 + - 0.029297588 + - 0.0024776647 + - 0.0019247637 + laughterScore: 0 + - frameNumber: 855 + frameDelay: 0 + Visemes: + - 0.017712686 + - 0.5215081 + - 0.069219865 + - 0.0023505762 + - 0.02660472 + - 0.031846598 + - 0.0015619115 + - 0.0050447425 + - 0.028513167 + - 0.12437666 + - 0.10344876 + - 0.043317985 + - 0.021379022 + - 0.0017355622 + - 0.0013796363 + laughterScore: 0 + - frameNumber: 856 + frameDelay: 0 + Visemes: + - 0.019080196 + - 0.6461266 + - 0.048534505 + - 0.0020997399 + - 0.01951018 + - 0.022832882 + - 0.0011119781 + - 0.0035848944 + - 0.022799056 + - 0.08721525 + - 0.07494125 + - 0.031422984 + - 0.018317068 + - 0.0012332135 + - 0.0011901121 + laughterScore: 0 + - frameNumber: 857 + frameDelay: 0 + Visemes: + - 0.017225135 + - 0.46343765 + - 0.034001905 + - 0.001611153 + - 0.0138675645 + - 0.016592901 + - 0.0007981518 + - 0.0025409737 + - 0.016245816 + - 0.06125347 + - 0.15450938 + - 0.05930032 + - 0.15653688 + - 0.000977319 + - 0.001101373 + laughterScore: 0 + - frameNumber: 858 + frameDelay: 0 + Visemes: + - 0.015442386 + - 0.32468638 + - 0.023868987 + - 0.0012355148 + - 0.00986592 + - 0.011679188 + - 0.0005699725 + - 0.0018584132 + - 0.013920775 + - 0.044641737 + - 0.20893826 + - 0.0587579 + - 0.2823582 + - 0.0010923059 + - 0.0010840638 + laughterScore: 0 + - frameNumber: 859 + frameDelay: 0 + Visemes: + - 0.015843948 + - 0.22765616 + - 0.01690438 + - 0.0017804675 + - 0.019739343 + - 0.009814417 + - 0.0027547374 + - 0.0014884837 + - 0.08045065 + - 0.032275967 + - 0.18885992 + - 0.058026418 + - 0.3425178 + - 0.0009302434 + - 0.0009570633 + laughterScore: 0 + - frameNumber: 860 + frameDelay: 0 + Visemes: + - 0.020651042 + - 0.15977916 + - 0.0120234415 + - 0.017570598 + - 0.15017131 + - 0.015185981 + - 0.015791416 + - 0.0017302706 + - 0.1512169 + - 0.022728065 + - 0.14726189 + - 0.04164736 + - 0.2428749 + - 0.00066205603 + - 0.00070557493 + laughterScore: 0 + - frameNumber: 861 + frameDelay: 0 + Visemes: + - 0.045166433 + - 0.11241633 + - 0.008724644 + - 0.018327016 + - 0.14979406 + - 0.011382869 + - 0.011116618 + - 0.0014642882 + - 0.1717798 + - 0.016130136 + - 0.1628478 + - 0.055358022 + - 0.23445044 + - 0.0005068288 + - 0.0005346965 + laughterScore: 0 + - frameNumber: 862 + frameDelay: 0 + Visemes: + - 0.043113675 + - 0.07889706 + - 0.006284229 + - 0.015609488 + - 0.11104142 + - 0.008380056 + - 0.0078293355 + - 0.0010483384 + - 0.1304137 + - 0.011434021 + - 0.14844063 + - 0.2064682 + - 0.23023805 + - 0.00040815634 + - 0.00039362328 + laughterScore: 0 + - frameNumber: 863 + frameDelay: 0 + Visemes: + - 0.04267948 + - 0.055334568 + - 0.0045218347 + - 0.011384383 + - 0.08240274 + - 0.006757384 + - 0.0055135502 + - 0.000753368 + - 0.096924245 + - 0.008242854 + - 0.116608456 + - 0.34220272 + - 0.22605683 + - 0.00032659966 + - 0.00029097302 + laughterScore: 0 + - frameNumber: 864 + frameDelay: 0 + Visemes: + - 0.03893874 + - 0.038798563 + - 0.0032038004 + - 0.00808157 + - 0.05864836 + - 0.0050463006 + - 0.0038702434 + - 0.000534302 + - 0.073753625 + - 0.0058846013 + - 0.089509405 + - 0.41617274 + - 0.25708702 + - 0.00025378968 + - 0.00021692645 + laughterScore: 0 + - frameNumber: 865 + frameDelay: 0 + Visemes: + - 0.03778394 + - 0.027210437 + - 0.002278861 + - 0.0057125827 + - 0.041993592 + - 0.0038644106 + - 0.0027180966 + - 0.0003827989 + - 0.06497186 + - 0.00419906 + - 0.066706985 + - 0.52589023 + - 0.21591678 + - 0.00020868256 + - 0.00016169673 + laughterScore: 0 + - frameNumber: 866 + frameDelay: 0 + Visemes: + - 0.037060253 + - 0.019163294 + - 0.0016129139 + - 0.004039522 + - 0.033137985 + - 0.0030796234 + - 0.0019059293 + - 0.00028452688 + - 0.0838649 + - 0.003094609 + - 0.051936902 + - 0.5427181 + - 0.21779755 + - 0.00016253733 + - 0.0001413532 + laughterScore: 0 + - frameNumber: 867 + frameDelay: 0 + Visemes: + - 0.034452684 + - 0.05916405 + - 0.0018860423 + - 0.0029448704 + - 0.031696107 + - 0.0035296897 + - 0.0013361021 + - 0.00023220648 + - 0.28902492 + - 0.002248321 + - 0.037977535 + - 0.3808385 + - 0.15444595 + - 0.000114285525 + - 0.00010870672 + laughterScore: 0 + - frameNumber: 868 + frameDelay: 0 + Visemes: + - 0.032196052 + - 0.068273604 + - 0.0015532046 + - 0.0032767456 + - 0.02683853 + - 0.0038674974 + - 0.0009430339 + - 0.00021913656 + - 0.45857653 + - 0.0016217824 + - 0.026862169 + - 0.2669101 + - 0.10866494 + - 0.000082897226 + - 0.000113716495 + laughterScore: 0 + - frameNumber: 869 + frameDelay: 0 + Visemes: + - 0.03007985 + - 0.15201285 + - 0.0017458027 + - 0.0063824705 + - 0.02416523 + - 0.008229252 + - 0.00083039794 + - 0.00020264529 + - 0.4696377 + - 0.0013411238 + - 0.027215447 + - 0.18866009 + - 0.088599354 + - 0.000108408254 + - 0.0007893415 + laughterScore: 0 + - frameNumber: 870 + frameDelay: 0 + Visemes: + - 0.035942905 + - 0.11094329 + - 0.0013571032 + - 0.02267246 + - 0.020006308 + - 0.0091274325 + - 0.0008550356 + - 0.00017437432 + - 0.3625587 + - 0.0011050387 + - 0.055671483 + - 0.17306691 + - 0.20485105 + - 0.00045084913 + - 0.0012170505 + laughterScore: 0 + - frameNumber: 871 + frameDelay: 0 + Visemes: + - 0.03224815 + - 0.0782809 + - 0.0010954908 + - 0.022534115 + - 0.016378682 + - 0.007096803 + - 0.0006902991 + - 0.00017877699 + - 0.26633853 + - 0.0010515098 + - 0.10488849 + - 0.15638085 + - 0.31128794 + - 0.00050923205 + - 0.0010402487 + laughterScore: 0 + - frameNumber: 872 + frameDelay: 0 + Visemes: + - 0.030795805 + - 0.055304814 + - 0.00088599033 + - 0.017582564 + - 0.013882922 + - 0.005377711 + - 0.00059934886 + - 0.00027428078 + - 0.2009581 + - 0.0009023216 + - 0.1307459 + - 0.1460249 + - 0.3951828 + - 0.0005724456 + - 0.000910109 + laughterScore: 0 + - frameNumber: 873 + frameDelay: 0 + Visemes: + - 0.026718227 + - 0.03897884 + - 0.00066668197 + - 0.012623968 + - 0.012320735 + - 0.0040092072 + - 0.0005738896 + - 0.00041084984 + - 0.1470602 + - 0.00082082115 + - 0.14273645 + - 0.11597335 + - 0.49573803 + - 0.0006196486 + - 0.00074912456 + laughterScore: 0 + - frameNumber: 874 + frameDelay: 0 + Visemes: + - 0.02476602 + - 0.028153045 + - 0.00084668014 + - 0.009501381 + - 0.11605242 + - 0.0036749032 + - 0.0071814316 + - 0.0007201466 + - 0.15033887 + - 0.0011775682 + - 0.14037955 + - 0.08930254 + - 0.4265843 + - 0.00052868313 + - 0.0007924655 + laughterScore: 0 + - frameNumber: 875 + frameDelay: 0 + Visemes: + - 0.023122638 + - 0.019982914 + - 0.00084939646 + - 0.0075279884 + - 0.23576719 + - 0.0031364658 + - 0.1065461 + - 0.003631767 + - 0.11308123 + - 0.0011219628 + - 0.114174634 + - 0.06279355 + - 0.30728173 + - 0.0003786427 + - 0.0006038442 + laughterScore: 0 + - frameNumber: 876 + frameDelay: 0 + Visemes: + - 0.022854578 + - 0.014070711 + - 0.0008507018 + - 0.0054258797 + - 0.2628675 + - 0.002480758 + - 0.26240227 + - 0.004926403 + - 0.08088146 + - 0.0009069671 + - 0.08151688 + - 0.04398928 + - 0.21608779 + - 0.0002710777 + - 0.000467841 + laughterScore: 0 + - frameNumber: 877 + frameDelay: 0 + Visemes: + - 0.026417663 + - 0.009934854 + - 0.001843735 + - 0.0042675524 + - 0.26050586 + - 0.0020672705 + - 0.354515 + - 0.035554845 + - 0.057259366 + - 0.00090191804 + - 0.057720352 + - 0.030826196 + - 0.15752123 + - 0.00021071326 + - 0.0004535382 + laughterScore: 0 + - frameNumber: 878 + frameDelay: 0 + Visemes: + - 0.036489964 + - 0.0070838453 + - 0.001595396 + - 0.0031715254 + - 0.19985849 + - 0.0018223182 + - 0.34617302 + - 0.1840966 + - 0.04083104 + - 0.00097488554 + - 0.04323779 + - 0.02166047 + - 0.111997284 + - 0.00019577458 + - 0.00081163575 + laughterScore: 0 + - frameNumber: 879 + frameDelay: 0 + Visemes: + - 0.05343035 + - 0.005797614 + - 0.0028353825 + - 0.0030789657 + - 0.1800571 + - 0.0052733407 + - 0.2863571 + - 0.2928215 + - 0.03076506 + - 0.0014408884 + - 0.037562694 + - 0.015393134 + - 0.081825465 + - 0.0004048387 + - 0.0029566023 + laughterScore: 0 + - frameNumber: 880 + frameDelay: 0 + Visemes: + - 0.07293094 + - 0.006476233 + - 0.0042075515 + - 0.009048704 + - 0.21631077 + - 0.01125028 + - 0.25741047 + - 0.283325 + - 0.022672767 + - 0.0029637828 + - 0.03274956 + - 0.010944083 + - 0.06174117 + - 0.00042876304 + - 0.007539952 + laughterScore: 0 + - frameNumber: 881 + frameDelay: 0 + Visemes: + - 0.05832226 + - 0.008396084 + - 0.004451676 + - 0.07697426 + - 0.33879447 + - 0.008644053 + - 0.20401712 + - 0.20100349 + - 0.016942952 + - 0.002365773 + - 0.023153361 + - 0.007686476 + - 0.043462675 + - 0.0003304155 + - 0.0054549556 + laughterScore: 0 + - frameNumber: 882 + frameDelay: 0 + Visemes: + - 0.046117634 + - 0.006212176 + - 0.0032810308 + - 0.20838544 + - 0.37324065 + - 0.0061972295 + - 0.14283344 + - 0.14095783 + - 0.012388939 + - 0.0017973485 + - 0.0171045 + - 0.006595454 + - 0.030801196 + - 0.00024422095 + - 0.0038429382 + laughterScore: 0 + - frameNumber: 883 + frameDelay: 0 + Visemes: + - 0.041624695 + - 0.004928731 + - 0.0024273312 + - 0.23769964 + - 0.30071807 + - 0.007577984 + - 0.10020865 + - 0.09884824 + - 0.0101000555 + - 0.001811811 + - 0.03283779 + - 0.1343843 + - 0.02360335 + - 0.00048877136 + - 0.0027405773 + laughterScore: 0 + - frameNumber: 884 + frameDelay: 0 + Visemes: + - 0.03692659 + - 0.003933698 + - 0.001728134 + - 0.16776682 + - 0.21718042 + - 0.006528875 + - 0.070171796 + - 0.06923451 + - 0.007230918 + - 0.0016221612 + - 0.05941699 + - 0.33531284 + - 0.020304913 + - 0.00067735673 + - 0.0019639463 + laughterScore: 0 + - frameNumber: 885 + frameDelay: 0 + Visemes: + - 0.030262973 + - 0.004479858 + - 0.0012962212 + - 0.11757201 + - 0.16780818 + - 0.004713371 + - 0.049130213 + - 0.048509743 + - 0.005173561 + - 0.0030418173 + - 0.08077738 + - 0.46812773 + - 0.017036567 + - 0.00067899266 + - 0.001391401 + laughterScore: 0 + - frameNumber: 886 + frameDelay: 0 + Visemes: + - 0.02499795 + - 0.03549484 + - 0.002006755 + - 0.08232286 + - 0.18808651 + - 0.0037705374 + - 0.034403767 + - 0.034100384 + - 0.003728664 + - 0.0058654905 + - 0.1144039 + - 0.4556103 + - 0.013616618 + - 0.0006021127 + - 0.0009892813 + laughterScore: 0 + - frameNumber: 887 + frameDelay: 0 + Visemes: + - 0.019234443 + - 0.20544402 + - 0.0036424235 + - 0.057640065 + - 0.24232271 + - 0.0038516177 + - 0.024093788 + - 0.023913596 + - 0.00284635 + - 0.0041942312 + - 0.08252337 + - 0.31922713 + - 0.009944764 + - 0.000425696 + - 0.0006957663 + laughterScore: 0 + - frameNumber: 888 + frameDelay: 0 + Visemes: + - 0.01519151 + - 0.27777147 + - 0.003508967 + - 0.04044345 + - 0.33116984 + - 0.0038582617 + - 0.017031705 + - 0.016775893 + - 0.0020653487 + - 0.0029408343 + - 0.05793772 + - 0.2235099 + - 0.0070028985 + - 0.00030244907 + - 0.00048972736 + laughterScore: 0 + - frameNumber: 889 + frameDelay: 0 + Visemes: + - 0.01651787 + - 0.30210125 + - 0.0040948815 + - 0.030102715 + - 0.4117166 + - 0.0040600663 + - 0.012142929 + - 0.011873123 + - 0.001514038 + - 0.0020660653 + - 0.041591607 + - 0.15657634 + - 0.005062229 + - 0.00021884238 + - 0.00036142897 + laughterScore: 0 + - frameNumber: 890 + frameDelay: 0 + Visemes: + - 0.024566108 + - 0.41458404 + - 0.007053381 + - 0.029561413 + - 0.35358265 + - 0.0065704514 + - 0.00877103 + - 0.0090109715 + - 0.0011289918 + - 0.0014608657 + - 0.029588439 + - 0.10975206 + - 0.0038539553 + - 0.00019542947 + - 0.00032024182 + laughterScore: 0 + - frameNumber: 891 + frameDelay: 0 + Visemes: + - 0.056862477 + - 0.43525195 + - 0.011748405 + - 0.03652345 + - 0.33078036 + - 0.0101133585 + - 0.0064180647 + - 0.0074928375 + - 0.001089362 + - 0.0011081761 + - 0.021566447 + - 0.07717139 + - 0.0031542864 + - 0.00021991893 + - 0.00049953087 + laughterScore: 0 + - frameNumber: 892 + frameDelay: 0 + Visemes: + - 0.12285966 + - 0.33546856 + - 0.011690031 + - 0.04221882 + - 0.3844884 + - 0.012239614 + - 0.004863733 + - 0.007634258 + - 0.0015254947 + - 0.0010101835 + - 0.016436193 + - 0.05475436 + - 0.0037082746 + - 0.00030261575 + - 0.00079980167 + laughterScore: 0 + - frameNumber: 893 + frameDelay: 0 + Visemes: + - 0.20303364 + - 0.254162 + - 0.010444232 + - 0.04137968 + - 0.40494284 + - 0.013113735 + - 0.0036597175 + - 0.006618887 + - 0.0017453579 + - 0.0010025953 + - 0.013742972 + - 0.039888375 + - 0.004564125 + - 0.00041175837 + - 0.0012900911 + laughterScore: 0 + - frameNumber: 894 + frameDelay: 0 + Visemes: + - 0.31307855 + - 0.18432543 + - 0.00796156 + - 0.035132412 + - 0.37372562 + - 0.023623839 + - 0.002797466 + - 0.0055796285 + - 0.0021461449 + - 0.0010629646 + - 0.012327619 + - 0.029922817 + - 0.0060673 + - 0.0005657908 + - 0.0016829033 + laughterScore: 0 + - frameNumber: 895 + frameDelay: 0 + Visemes: + - 0.43376786 + - 0.13368593 + - 0.006153428 + - 0.02833688 + - 0.30901954 + - 0.036035478 + - 0.0022794541 + - 0.004960328 + - 0.0021444326 + - 0.0010134801 + - 0.010507442 + - 0.022582281 + - 0.0071062786 + - 0.0006221758 + - 0.001785091 + laughterScore: 0 + - frameNumber: 896 + frameDelay: 0 + Visemes: + - 0.3458898 + - 0.23550662 + - 0.034835726 + - 0.0755448 + - 0.22328877 + - 0.026755596 + - 0.0016401489 + - 0.0046455786 + - 0.0023358 + - 0.00089386443 + - 0.012029806 + - 0.026194504 + - 0.0067417175 + - 0.0014288805 + - 0.0022684042 + laughterScore: 0 + - frameNumber: 897 + frameDelay: 0 + Visemes: + - 0.2647449 + - 0.19875242 + - 0.0248949 + - 0.061367627 + - 0.15750326 + - 0.019115256 + - 0.0012275631 + - 0.0033242062 + - 0.0020928485 + - 0.0010210722 + - 0.04034751 + - 0.21050107 + - 0.012270426 + - 0.001154206 + - 0.0016827662 + laughterScore: 0 + - frameNumber: 898 + frameDelay: 0 + Visemes: + - 0.2053486 + - 0.15393738 + - 0.01750835 + - 0.043311346 + - 0.110790536 + - 0.013699356 + - 0.0008999754 + - 0.002377631 + - 0.0015635064 + - 0.001703313 + - 0.035138894 + - 0.38176388 + - 0.02942498 + - 0.0011173974 + - 0.0014148696 + laughterScore: 0 + - frameNumber: 899 + frameDelay: 0 + Visemes: + - 0.16742633 + - 0.110637404 + - 0.012295952 + - 0.030460306 + - 0.07973329 + - 0.010092625 + - 0.00065141014 + - 0.0017674974 + - 0.0013012408 + - 0.0048035486 + - 0.03450622 + - 0.513424 + - 0.0289003 + - 0.0024702223 + - 0.0015296633 + laughterScore: 0 + - frameNumber: 900 + frameDelay: 0 + Visemes: + - 0.13692094 + - 0.07960561 + - 0.008684426 + - 0.02137236 + - 0.057178326 + - 0.00849154 + - 0.0004735934 + - 0.0013630211 + - 0.0012542127 + - 0.0052058604 + - 0.044747956 + - 0.6044843 + - 0.025160642 + - 0.0035769544 + - 0.0014802861 + laughterScore: 0 + - frameNumber: 901 + frameDelay: 0 + Visemes: + - 0.10152397 + - 0.05577361 + - 0.006221634 + - 0.015286224 + - 0.04775237 + - 0.0072110067 + - 0.00037141526 + - 0.0027315535 + - 0.0020233523 + - 0.003968101 + - 0.045763135 + - 0.6854337 + - 0.021382192 + - 0.0031844066 + - 0.001373362 + laughterScore: 0 + - frameNumber: 902 + frameDelay: 0 + Visemes: + - 0.07490991 + - 0.039050035 + - 0.004794213 + - 0.012056681 + - 0.060509607 + - 0.005631399 + - 0.00038509013 + - 0.070414014 + - 0.0016122889 + - 0.0028630428 + - 0.033373263 + - 0.6749033 + - 0.016150836 + - 0.0023408784 + - 0.0010054756 + laughterScore: 0 + - frameNumber: 903 + frameDelay: 0 + Visemes: + - 0.055549644 + - 0.027343947 + - 0.003470176 + - 0.009698444 + - 0.0894074 + - 0.0041976813 + - 0.00029974757 + - 0.29679185 + - 0.0012317917 + - 0.0020069946 + - 0.023463072 + - 0.47271433 + - 0.01147202 + - 0.0016422146 + - 0.00071067136 + laughterScore: 0 + - frameNumber: 904 + frameDelay: 0 + Visemes: + - 0.04290723 + - 0.019155843 + - 0.0026102616 + - 0.0075639477 + - 0.076999694 + - 0.0032145723 + - 0.0003505837 + - 0.48776668 + - 0.00088336074 + - 0.0014059367 + - 0.016469168 + - 0.33093032 + - 0.008091748 + - 0.0011515181 + - 0.0004991818 + laughterScore: 0 + - frameNumber: 905 + frameDelay: 0 + Visemes: + - 0.032318648 + - 0.013425041 + - 0.001911089 + - 0.005432715 + - 0.068055086 + - 0.0031543938 + - 0.00029448443 + - 0.6235188 + - 0.0006707166 + - 0.0009853939 + - 0.011584871 + - 0.2316574 + - 0.005825352 + - 0.00080815214 + - 0.0003578669 + laughterScore: 0 + - frameNumber: 906 + frameDelay: 0 + Visemes: + - 0.026145682 + - 0.009474259 + - 0.0014949732 + - 0.0047170385 + - 0.07976425 + - 0.004410307 + - 0.0002855641 + - 0.69464254 + - 0.0007484519 + - 0.0006997663 + - 0.008261147 + - 0.16217808 + - 0.0062386445 + - 0.00057007273 + - 0.0003693214 + laughterScore: 0 + - frameNumber: 907 + frameDelay: 0 + Visemes: + - 0.021639654 + - 0.17481963 + - 0.0013620072 + - 0.0041794013 + - 0.120485425 + - 0.009240668 + - 0.00021462594 + - 0.52029496 + - 0.015879298 + - 0.0005724336 + - 0.008079343 + - 0.11372388 + - 0.006914196 + - 0.00040874066 + - 0.0021858024 + laughterScore: 0 + - frameNumber: 908 + frameDelay: 0 + Visemes: + - 0.01727811 + - 0.3686832 + - 0.0010248118 + - 0.0030315877 + - 0.09139864 + - 0.0065479083 + - 0.00015337513 + - 0.36501348 + - 0.050858587 + - 0.00040725947 + - 0.0066156965 + - 0.07969908 + - 0.0074205226 + - 0.00028684325 + - 0.0015809677 + laughterScore: 0 + - frameNumber: 909 + frameDelay: 0 + Visemes: + - 0.014695173 + - 0.5386399 + - 0.00074676186 + - 0.0022244728 + - 0.0643316 + - 0.0047402214 + - 0.000107737826 + - 0.2555277 + - 0.050737515 + - 0.00028583195 + - 0.00490176 + - 0.055835515 + - 0.0059141843 + - 0.00020131336 + - 0.0011103993 + laughterScore: 0 + - frameNumber: 910 + frameDelay: 0 + Visemes: + - 0.013399225 + - 0.66772246 + - 0.00053331954 + - 0.0015937028 + - 0.045044653 + - 0.0033310582 + - 0.00007582369 + - 0.1788765 + - 0.03915203 + - 0.00020231566 + - 0.0035455932 + - 0.040790755 + - 0.0048088944 + - 0.00014335691 + - 0.00078040594 + laughterScore: 0 + - frameNumber: 911 + frameDelay: 0 + Visemes: + - 0.015647858 + - 0.46877986 + - 0.00042317255 + - 0.0011505283 + - 0.031540945 + - 0.0023629616 + - 0.000059748076 + - 0.12525652 + - 0.027655205 + - 0.00016873416 + - 0.00551501 + - 0.30139843 + - 0.01919802 + - 0.00025991292 + - 0.00058312045 + laughterScore: 0 + - frameNumber: 912 + frameDelay: 0 + Visemes: + - 0.019299239 + - 0.32840675 + - 0.00037356824 + - 0.0009105246 + - 0.022191415 + - 0.0017696869 + - 0.000049947488 + - 0.08770642 + - 0.01967531 + - 0.00013419166 + - 0.014804272 + - 0.48876506 + - 0.0148311 + - 0.00064592966 + - 0.0004365689 + laughterScore: 0 + - frameNumber: 913 + frameDelay: 0 + Visemes: + - 0.0167151 + - 0.22994095 + - 0.00028385915 + - 0.0006631617 + - 0.015673516 + - 0.0014027832 + - 0.000040841398 + - 0.06142597 + - 0.013957915 + - 0.00011793242 + - 0.018403988 + - 0.62961876 + - 0.010833781 + - 0.0006014333 + - 0.00031996594 + laughterScore: 0 + - frameNumber: 914 + frameDelay: 0 + Visemes: + - 0.015258203 + - 0.16111284 + - 0.00023001124 + - 0.00051832636 + - 0.01253008 + - 0.001367761 + - 0.00004600449 + - 0.043061845 + - 0.009972947 + - 0.00020352441 + - 0.019176077 + - 0.727437 + - 0.008187246 + - 0.00066639617 + - 0.0002316452 + laughterScore: 0 + - frameNumber: 915 + frameDelay: 0 + Visemes: + - 0.013204309 + - 0.11345746 + - 0.00019639728 + - 0.00042089328 + - 0.036236435 + - 0.0010560666 + - 0.00009037045 + - 0.030681103 + - 0.008078161 + - 0.00018173203 + - 0.014998655 + - 0.7748219 + - 0.0059006736 + - 0.0005112873 + - 0.00016451305 + laughterScore: 0 + - frameNumber: 916 + frameDelay: 0 + Visemes: + - 0.014902897 + - 0.10292798 + - 0.0007778746 + - 0.0015320865 + - 0.2121577 + - 0.004737276 + - 0.0025932707 + - 0.022775443 + - 0.008266618 + - 0.00029286044 + - 0.012723904 + - 0.61162144 + - 0.004209088 + - 0.00036603506 + - 0.00011549472 + laughterScore: 0 + - frameNumber: 917 + frameDelay: 0 + Visemes: + - 0.018781248 + - 0.26525512 + - 0.00588096 + - 0.0024106065 + - 0.20591925 + - 0.029130317 + - 0.0049745287 + - 0.017898157 + - 0.0072987145 + - 0.00023977782 + - 0.0092588 + - 0.4296132 + - 0.0029972352 + - 0.00026116773 + - 0.00008090553 + laughterScore: 0 + - frameNumber: 918 + frameDelay: 0 + Visemes: + - 0.023425989 + - 0.30985907 + - 0.00914838 + - 0.0021231442 + - 0.19393194 + - 0.039258614 + - 0.078696564 + - 0.02736372 + - 0.005583725 + - 0.00018329301 + - 0.0068043317 + - 0.30117407 + - 0.0021999811 + - 0.00019032705 + - 0.00005689187 + laughterScore: 0 + - frameNumber: 919 + frameDelay: 0 + Visemes: + - 0.026636908 + - 0.21858092 + - 0.0069962265 + - 0.0017323274 + - 0.17284775 + - 0.03032167 + - 0.2872979 + - 0.033428743 + - 0.0040087895 + - 0.00016494447 + - 0.004928511 + - 0.21095657 + - 0.0019170131 + - 0.00013858872 + - 0.000043192016 + laughterScore: 0 + - frameNumber: 920 + frameDelay: 0 + Visemes: + - 0.03715717 + - 0.15437958 + - 0.0058772364 + - 0.0028283782 + - 0.15968108 + - 0.023024114 + - 0.35473663 + - 0.04393056 + - 0.0036527757 + - 0.004082796 + - 0.04626263 + - 0.14929497 + - 0.014482994 + - 0.00022648319 + - 0.00038269046 + laughterScore: 0 + - frameNumber: 921 + frameDelay: 0 + Visemes: + - 0.034907825 + - 0.10827705 + - 0.0043788184 + - 0.0026707025 + - 0.11278864 + - 0.016853759 + - 0.31931704 + - 0.031228483 + - 0.003254827 + - 0.0065794857 + - 0.21396765 + - 0.10827179 + - 0.026997723 + - 0.0003059271 + - 0.010200315 + laughterScore: 0 + - frameNumber: 922 + frameDelay: 0 + Visemes: + - 0.029142309 + - 0.07580677 + - 0.0030726532 + - 0.0020860306 + - 0.079257846 + - 0.011860845 + - 0.22749458 + - 0.021893281 + - 0.0028844783 + - 0.018275885 + - 0.37471557 + - 0.07799313 + - 0.06281468 + - 0.00040290147 + - 0.012299087 + laughterScore: 0 + - frameNumber: 923 + frameDelay: 0 + Visemes: + - 0.02402448 + - 0.05309066 + - 0.0021573415 + - 0.0017013204 + - 0.055688966 + - 0.008380984 + - 0.16097873 + - 0.015404214 + - 0.0041857264 + - 0.03999259 + - 0.46929872 + - 0.055856097 + - 0.09744556 + - 0.0005111495 + - 0.011283471 + laughterScore: 0 + - frameNumber: 924 + frameDelay: 0 + Visemes: + - 0.021953603 + - 0.03723169 + - 0.0015528635 + - 0.0017706513 + - 0.03961833 + - 0.0060473816 + - 0.11368279 + - 0.0112647 + - 0.013229897 + - 0.09848344 + - 0.48317868 + - 0.04033009 + - 0.12091109 + - 0.0009538088 + - 0.009791 + laughterScore: 0 + - frameNumber: 925 + frameDelay: 0 + Visemes: + - 0.018455354 + - 0.026090095 + - 0.001173922 + - 0.00187689 + - 0.028719185 + - 0.004411016 + - 0.080024704 + - 0.01154501 + - 0.03811606 + - 0.11567256 + - 0.5023179 + - 0.029292354 + - 0.13305593 + - 0.0012131683 + - 0.008035863 + laughterScore: 0 + - frameNumber: 926 + frameDelay: 0 + Visemes: + - 0.021001307 + - 0.01829327 + - 0.0012031796 + - 0.0017677306 + - 0.02395026 + - 0.0031939002 + - 0.056179345 + - 0.0923122 + - 0.03503804 + - 0.08532334 + - 0.5027781 + - 0.021401275 + - 0.12825453 + - 0.0020312597 + - 0.007272279 + laughterScore: 0 + - frameNumber: 927 + frameDelay: 0 + Visemes: + - 0.022288326 + - 0.0131214885 + - 0.0013681271 + - 0.0017056307 + - 0.024822384 + - 0.002452291 + - 0.039365847 + - 0.3424005 + - 0.024709437 + - 0.06009232 + - 0.35535765 + - 0.01499616 + - 0.09060616 + - 0.0014426629 + - 0.0052710907 + laughterScore: 0 + - frameNumber: 928 + frameDelay: 0 + Visemes: + - 0.021748573 + - 0.009511173 + - 0.0011740809 + - 0.003912348 + - 0.025582172 + - 0.0018769036 + - 0.027638266 + - 0.5202795 + - 0.017504927 + - 0.04225134 + - 0.24919644 + - 0.010518401 + - 0.06399062 + - 0.001033502 + - 0.0037817664 + laughterScore: 0 + - frameNumber: 929 + frameDelay: 0 + Visemes: + - 0.025132312 + - 0.006892253 + - 0.00085072895 + - 0.11722346 + - 0.061758704 + - 0.0016083444 + - 0.01941668 + - 0.48717785 + - 0.019496437 + - 0.02963866 + - 0.17482957 + - 0.0074607115 + - 0.045077745 + - 0.00074333226 + - 0.0026933046 + laughterScore: 0 + - frameNumber: 930 + frameDelay: 0 + Visemes: + - 0.026828237 + - 0.0049123266 + - 0.0006795049 + - 0.21362421 + - 0.16342664 + - 0.0013284978 + - 0.0136628775 + - 0.372012 + - 0.020429432 + - 0.020756042 + - 0.122788996 + - 0.00528137 + - 0.031807415 + - 0.00054540474 + - 0.0019171187 + laughterScore: 0 + - frameNumber: 931 + frameDelay: 0 + Visemes: + - 0.041662037 + - 0.0036550777 + - 0.0005831821 + - 0.22848135 + - 0.2601174 + - 0.001184005 + - 0.009781267 + - 0.30462676 + - 0.01972463 + - 0.01454001 + - 0.08709042 + - 0.0037627977 + - 0.022958888 + - 0.00042423964 + - 0.0014079164 + laughterScore: 0 + - frameNumber: 932 + frameDelay: 0 + Visemes: + - 0.031108866 + - 0.002620081 + - 0.00047990325 + - 0.43969733 + - 0.1879963 + - 0.0009256292 + - 0.0068581887 + - 0.21531291 + - 0.018657442 + - 0.010192822 + - 0.06440379 + - 0.0033697335 + - 0.017021516 + - 0.00032926176 + - 0.0010262813 + laughterScore: 0 + - frameNumber: 933 + frameDelay: 0 + Visemes: + - 0.024564363 + - 0.0018490916 + - 0.00042113898 + - 0.32896587 + - 0.13272145 + - 0.000964223 + - 0.0048575182 + - 0.15097982 + - 0.013854112 + - 0.008023554 + - 0.2265647 + - 0.03675197 + - 0.06789001 + - 0.00062673294 + - 0.00096549676 + laughterScore: 0 + - frameNumber: 934 + frameDelay: 0 + Visemes: + - 0.018207489 + - 0.0013020979 + - 0.000488554 + - 0.23028761 + - 0.0943032 + - 0.0006883305 + - 0.0034016762 + - 0.10659631 + - 0.010528569 + - 0.0061334223 + - 0.41018078 + - 0.028162036 + - 0.08835169 + - 0.0006685076 + - 0.0006998104 + laughterScore: 0 + - frameNumber: 935 + frameDelay: 0 + Visemes: + - 0.015716475 + - 0.00092096714 + - 0.00046715117 + - 0.16145588 + - 0.06990252 + - 0.0005280705 + - 0.0025236253 + - 0.3593925 + - 0.0075271074 + - 0.0043060724 + - 0.29387924 + - 0.019726947 + - 0.06269287 + - 0.00046882845 + - 0.0004917938 + laughterScore: 0 + - frameNumber: 936 + frameDelay: 0 + Visemes: + - 0.013849186 + - 0.00065231824 + - 0.00052091526 + - 0.11321235 + - 0.05135091 + - 0.0004788495 + - 0.0037774425 + - 0.5429205 + - 0.0052941977 + - 0.0030188437 + - 0.20628178 + - 0.01381345 + - 0.044145484 + - 0.0003304991 + - 0.00035332944 + laughterScore: 0 + - frameNumber: 937 + frameDelay: 0 + Visemes: + - 0.012755005 + - 0.00046684605 + - 0.00058765314 + - 0.0793586 + - 0.043199327 + - 0.0005360545 + - 0.018082526 + - 0.65270054 + - 0.0037209014 + - 0.002123547 + - 0.14480415 + - 0.009671938 + - 0.03149512 + - 0.00023378394 + - 0.00026401563 + laughterScore: 0 + - frameNumber: 938 + frameDelay: 0 + Visemes: + - 0.012868879 + - 0.0004124401 + - 0.0026009013 + - 0.056225847 + - 0.06350617 + - 0.000835262 + - 0.014227451 + - 0.7099643 + - 0.002652986 + - 0.0016596962 + - 0.101768315 + - 0.0067765745 + - 0.025715265 + - 0.00017499494 + - 0.000610964 + laughterScore: 0 + - frameNumber: 939 + frameDelay: 0 + Visemes: + - 0.0107461 + - 0.00096035696 + - 0.0074267285 + - 0.039706394 + - 0.32192227 + - 0.0010626437 + - 0.011192827 + - 0.50803536 + - 0.0018870571 + - 0.0014249845 + - 0.07126797 + - 0.0047501097 + - 0.018718481 + - 0.0001994232 + - 0.00069928414 + laughterScore: 0 + - frameNumber: 940 + frameDelay: 0 + Visemes: + - 0.008933486 + - 0.00078621873 + - 0.0076923305 + - 0.02827912 + - 0.345732 + - 0.0009109554 + - 0.008198806 + - 0.35779983 + - 0.0015052935 + - 0.17154074 + - 0.050307196 + - 0.0033382461 + - 0.013275889 + - 0.00087783684 + - 0.0008220157 + laughterScore: 0 + - frameNumber: 941 + frameDelay: 0 + Visemes: + - 0.008645919 + - 0.00084737083 + - 0.00642801 + - 0.020080796 + - 0.25924852 + - 0.0007709951 + - 0.00697802 + - 0.2505817 + - 0.0012632725 + - 0.3589967 + - 0.06744643 + - 0.0032658784 + - 0.009396055 + - 0.0047180136 + - 0.0013322735 + laughterScore: 0 + - frameNumber: 942 + frameDelay: 0 + Visemes: + - 0.0115563115 + - 0.00065346685 + - 0.0046440796 + - 0.014059597 + - 0.18204035 + - 0.00090698025 + - 0.0057966094 + - 0.17541419 + - 0.0009412545 + - 0.48359555 + - 0.09263317 + - 0.015143907 + - 0.0066625345 + - 0.0049585025 + - 0.0009934581 + laughterScore: 0 + - frameNumber: 943 + frameDelay: 0 + Visemes: + - 0.022961877 + - 0.00056531106 + - 0.0033692014 + - 0.009855142 + - 0.12862173 + - 0.0023445 + - 0.0043079327 + - 0.12283985 + - 0.0011197943 + - 0.34286925 + - 0.2696243 + - 0.07321237 + - 0.008093861 + - 0.009489603 + - 0.00072528975 + laughterScore: 0 + - frameNumber: 944 + frameDelay: 0 + Visemes: + - 0.030022498 + - 0.001022727 + - 0.0025372764 + - 0.006931496 + - 0.09283459 + - 0.0025773612 + - 0.0033579231 + - 0.086049974 + - 0.0017233014 + - 0.24247698 + - 0.38207495 + - 0.12369084 + - 0.010694113 + - 0.013453159 + - 0.0005527701 + laughterScore: 0 + - frameNumber: 945 + frameDelay: 0 + Visemes: + - 0.035908908 + - 0.0014898621 + - 0.0019667093 + - 0.0049386704 + - 0.07001509 + - 0.006973277 + - 0.0029537305 + - 0.060636427 + - 0.016338667 + - 0.17784406 + - 0.33697784 + - 0.25583506 + - 0.012393905 + - 0.015283978 + - 0.00044377902 + laughterScore: 0 + - frameNumber: 946 + frameDelay: 0 + Visemes: + - 0.03554257 + - 0.0042318273 + - 0.0017015033 + - 0.0035039836 + - 0.06246298 + - 0.05230653 + - 0.004536111 + - 0.044712856 + - 0.09690567 + - 0.12504524 + - 0.2660688 + - 0.27974463 + - 0.010668682 + - 0.0122412015 + - 0.00032742805 + laughterScore: 0 + - frameNumber: 947 + frameDelay: 0 + Visemes: + - 0.028695142 + - 0.011944679 + - 0.0012397658 + - 0.0024839675 + - 0.04790223 + - 0.23686008 + - 0.0032282805 + - 0.031322587 + - 0.14886534 + - 0.08754377 + - 0.18714832 + - 0.19593327 + - 0.008007348 + - 0.008575708 + - 0.00024951776 + laughterScore: 0 + - frameNumber: 948 + frameDelay: 0 + Visemes: + - 0.024509955 + - 0.017912023 + - 0.0010708774 + - 0.0019576685 + - 0.04599209 + - 0.36918032 + - 0.002482507 + - 0.02199549 + - 0.16959526 + - 0.06131508 + - 0.13327003 + - 0.13739212 + - 0.0068319235 + - 0.0060218493 + - 0.0004728064 + laughterScore: 0 + - frameNumber: 949 + frameDelay: 0 + Visemes: + - 0.021452216 + - 0.014355502 + - 0.0009864433 + - 0.0028282746 + - 0.06482288 + - 0.37014425 + - 0.0020047813 + - 0.015435705 + - 0.16089825 + - 0.04304098 + - 0.09500677 + - 0.096582524 + - 0.1066095 + - 0.004249137 + - 0.0015827395 + laughterScore: 0 + - frameNumber: 950 + frameDelay: 0 + Visemes: + - 0.027291296 + - 0.010263053 + - 0.00070829666 + - 0.002634142 + - 0.05537748 + - 0.26423982 + - 0.0018537107 + - 0.011003325 + - 0.118138246 + - 0.03701875 + - 0.13894549 + - 0.08868768 + - 0.20971498 + - 0.0034130034 + - 0.030710697 + laughterScore: 0 + - frameNumber: 951 + frameDelay: 0 + Visemes: + - 0.021600785 + - 0.007213029 + - 0.00052444555 + - 0.0019007749 + - 0.04233152 + - 0.18629718 + - 0.0013184415 + - 0.0107399635 + - 0.083695784 + - 0.032255378 + - 0.1294105 + - 0.063186795 + - 0.38921165 + - 0.0028118817 + - 0.027501857 + laughterScore: 0 + - frameNumber: 952 + frameDelay: 0 + Visemes: + - 0.02708805 + - 0.0052135596 + - 0.0007116999 + - 0.0041635456 + - 0.0637007 + - 0.13569707 + - 0.00096918026 + - 0.2232149 + - 0.06467198 + - 0.024162348 + - 0.10720994 + - 0.04428743 + - 0.27608857 + - 0.001973345 + - 0.020847699 + laughterScore: 0 + - frameNumber: 953 + frameDelay: 0 + Visemes: + - 0.026763031 + - 0.003800887 + - 0.0006631874 + - 0.0040848507 + - 0.059026785 + - 0.09522176 + - 0.0007040794 + - 0.43072808 + - 0.04556982 + - 0.016957717 + - 0.075724296 + - 0.031033562 + - 0.19373843 + - 0.0013834718 + - 0.014600041 + laughterScore: 0 + - frameNumber: 954 + frameDelay: 0 + Visemes: + - 0.027102001 + - 0.002988324 + - 0.0006183412 + - 0.0044711344 + - 0.06398168 + - 0.06682323 + - 0.00055258116 + - 0.5665995 + - 0.032041434 + - 0.011891061 + - 0.05360682 + - 0.021809326 + - 0.13628107 + - 0.0009741115 + - 0.010259402 + laughterScore: 0 + - frameNumber: 955 + frameDelay: 0 + Visemes: + - 0.03172342 + - 0.0023282825 + - 0.0005135599 + - 0.008215882 + - 0.08968097 + - 0.047029834 + - 0.0004295896 + - 0.62885845 + - 0.023073385 + - 0.008338612 + - 0.038864966 + - 0.015457382 + - 0.0975124 + - 0.0007137941 + - 0.007259512 + laughterScore: 0 + - frameNumber: 956 + frameDelay: 0 + Visemes: + - 0.045704924 + - 0.0032776785 + - 0.00044683606 + - 0.018500514 + - 0.17442901 + - 0.0334921 + - 0.00036153558 + - 0.57950675 + - 0.02114952 + - 0.0058451258 + - 0.02967713 + - 0.010967968 + - 0.070891045 + - 0.0005387264 + - 0.0052111545 + laughterScore: 0 + - frameNumber: 957 + frameDelay: 0 + Visemes: + - 0.054960143 + - 0.10259319 + - 0.0031014609 + - 0.019034294 + - 0.20232819 + - 0.025295705 + - 0.00050673395 + - 0.47875598 + - 0.015615525 + - 0.0041505187 + - 0.028266827 + - 0.007892102 + - 0.052863937 + - 0.00040934555 + - 0.0042260834 + laughterScore: 0 + - frameNumber: 958 + frameDelay: 0 + Visemes: + - 0.06049994 + - 0.28880864 + - 0.0059526525 + - 0.018979754 + - 0.16920468 + - 0.018678343 + - 0.00079498626 + - 0.34392935 + - 0.016007924 + - 0.0031164407 + - 0.023392117 + - 0.0069929175 + - 0.03926743 + - 0.00030092723 + - 0.004073867 + laughterScore: 0 + - frameNumber: 959 + frameDelay: 0 + Visemes: + - 0.06253725 + - 0.44513124 + - 0.0095913755 + - 0.018058822 + - 0.12311798 + - 0.013769245 + - 0.00093220075 + - 0.24400802 + - 0.018579436 + - 0.0024127557 + - 0.019155717 + - 0.007954375 + - 0.030364465 + - 0.0002631481 + - 0.004123925 + laughterScore: 0 + - frameNumber: 960 + frameDelay: 0 + Visemes: + - 0.053087994 + - 0.5258423 + - 0.009955538 + - 0.014200402 + - 0.09036668 + - 0.01100365 + - 0.0009055764 + - 0.17181513 + - 0.015208943 + - 0.0018271091 + - 0.025236221 + - 0.0070094774 + - 0.06942967 + - 0.00020067694 + - 0.003910614 + laughterScore: 0 + - frameNumber: 961 + frameDelay: 0 + Visemes: + - 0.04235834 + - 0.40975595 + - 0.009284508 + - 0.011500971 + - 0.064271376 + - 0.0085396385 + - 0.0007325043 + - 0.12042114 + - 0.01152233 + - 0.00141452 + - 0.03150407 + - 0.0085292375 + - 0.2766915 + - 0.00015236721 + - 0.0033215433 + laughterScore: 0 + - frameNumber: 962 + frameDelay: 0 + Visemes: + - 0.032304693 + - 0.28720257 + - 0.006639336 + - 0.008373555 + - 0.04548603 + - 0.0060344366 + - 0.0005368834 + - 0.08435292 + - 0.008448287 + - 0.0010915734 + - 0.03227454 + - 0.009295744 + - 0.47472706 + - 0.00013560188 + - 0.0030967356 + laughterScore: 0 + - frameNumber: 963 + frameDelay: 0 + Visemes: + - 0.025008678 + - 0.2010695 + - 0.004696546 + - 0.005961258 + - 0.03326068 + - 0.004271072 + - 0.0003909816 + - 0.059098672 + - 0.0064901984 + - 0.0009217464 + - 0.032473616 + - 0.0094960965 + - 0.6137147 + - 0.00012096445 + - 0.0030252743 + laughterScore: 0 + - frameNumber: 964 + frameDelay: 0 + Visemes: + - 0.01859697 + - 0.14077173 + - 0.003345103 + - 0.0042101257 + - 0.024440128 + - 0.0030219378 + - 0.00040126935 + - 0.048847727 + - 0.004891671 + - 0.00078874646 + - 0.02627121 + - 0.007346365 + - 0.71457976 + - 0.0000921714 + - 0.0023950955 + laughterScore: 0 + - frameNumber: 965 + frameDelay: 0 + Visemes: + - 0.018714504 + - 0.09860104 + - 0.002703967 + - 0.003198107 + - 0.021922294 + - 0.0026092865 + - 0.0039850804 + - 0.3090271 + - 0.003796059 + - 0.00066069234 + - 0.019556575 + - 0.0051842798 + - 0.50827754 + - 0.000065306696 + - 0.0016981629 + laughterScore: 0 + - frameNumber: 966 + frameDelay: 0 + Visemes: + - 0.016490951 + - 0.06908771 + - 0.0021261543 + - 0.0024682377 + - 0.018719848 + - 0.0019534982 + - 0.0034163613 + - 0.50372255 + - 0.0029889166 + - 0.0005763269 + - 0.014043838 + - 0.0036629648 + - 0.35950363 + - 0.00004603847 + - 0.0011929296 + laughterScore: 0 + - frameNumber: 967 + frameDelay: 0 + Visemes: + - 0.015684666 + - 0.04871126 + - 0.0017390156 + - 0.004823502 + - 0.020300608 + - 0.0016592152 + - 0.0038282245 + - 0.6309647 + - 0.0029222064 + - 0.00056563 + - 0.010064234 + - 0.002596757 + - 0.25524697 + - 0.000032364693 + - 0.0008606851 + laughterScore: 0 + - frameNumber: 968 + frameDelay: 0 + Visemes: + - 0.022419577 + - 0.034861024 + - 0.0015404127 + - 0.014687463 + - 0.025047077 + - 0.004263096 + - 0.0034055766 + - 0.6458119 + - 0.00436861 + - 0.00044553602 + - 0.010299101 + - 0.0024980546 + - 0.2294904 + - 0.000028066646 + - 0.00083409995 + laughterScore: 0 + - frameNumber: 969 + frameDelay: 0 + Visemes: + - 0.019539421 + - 0.024655076 + - 0.0011387696 + - 0.011093241 + - 0.018413905 + - 0.0040922835 + - 0.0024658404 + - 0.45280838 + - 0.0037785806 + - 0.0004296838 + - 0.009901637 + - 0.002371419 + - 0.4481697 + - 0.000030297486 + - 0.0011117517 + laughterScore: 0 + - frameNumber: 970 + frameDelay: 0 + Visemes: + - 0.019236375 + - 0.017436149 + - 0.00090025837 + - 0.00807307 + - 0.0143588 + - 0.008058578 + - 0.0019605884 + - 0.31746486 + - 0.004452443 + - 0.00050280604 + - 0.008214877 + - 0.00231775 + - 0.5950124 + - 0.00005076964 + - 0.0019602173 + laughterScore: 0 + - frameNumber: 971 + frameDelay: 0 + Visemes: + - 0.020150594 + - 0.012651581 + - 0.00085740804 + - 0.0057463255 + - 0.012310417 + - 0.060882144 + - 0.0014404133 + - 0.22236058 + - 0.015189215 + - 0.00041817006 + - 0.0068691303 + - 0.002802048 + - 0.6357869 + - 0.000053510703 + - 0.0024815686 + laughterScore: 0 + - frameNumber: 972 + frameDelay: 0 + Visemes: + - 0.019737948 + - 0.009615021 + - 0.00072637503 + - 0.004117283 + - 0.009716813 + - 0.04785225 + - 0.0010607576 + - 0.15572412 + - 0.021466145 + - 0.00032007613 + - 0.005544448 + - 0.00494612 + - 0.7169888 + - 0.0000577463 + - 0.0021260856 + laughterScore: 0 + - frameNumber: 973 + frameDelay: 0 + Visemes: + - 0.019204542 + - 0.008717068 + - 0.00070871424 + - 0.0029443214 + - 0.0072141723 + - 0.05382014 + - 0.00078048516 + - 0.10909988 + - 0.024250917 + - 0.0002655731 + - 0.0043522585 + - 0.005856164 + - 0.76097184 + - 0.000048035523 + - 0.0017658669 + laughterScore: 0 + - frameNumber: 974 + frameDelay: 0 + Visemes: + - 0.019226972 + - 0.032497734 + - 0.0009847839 + - 0.0022410224 + - 0.005474875 + - 0.11143628 + - 0.0005864658 + - 0.07651798 + - 0.06161847 + - 0.00021642391 + - 0.0041348785 + - 0.006908087 + - 0.67543584 + - 0.000052196487 + - 0.0026679388 + laughterScore: 0 + - frameNumber: 975 + frameDelay: 0 + Visemes: + - 0.018059457 + - 0.054321475 + - 0.002328 + - 0.0016745606 + - 0.004657984 + - 0.120654225 + - 0.00044011063 + - 0.05364403 + - 0.06740392 + - 0.00018418775 + - 0.0032179588 + - 0.0059271194 + - 0.66053206 + - 0.000050334736 + - 0.0069045387 + laughterScore: 0 + - frameNumber: 976 + frameDelay: 0 + Visemes: + - 0.017517846 + - 0.16510782 + - 0.0022971248 + - 0.0013724621 + - 0.004159161 + - 0.1479064 + - 0.0003239223 + - 0.037621297 + - 0.12236212 + - 0.00016533022 + - 0.0023829427 + - 0.0043395064 + - 0.48857582 + - 0.000041217896 + - 0.005827026 + laughterScore: 0 + - frameNumber: 977 + frameDelay: 0 + Visemes: + - 0.019667674 + - 0.2860631 + - 0.0020267775 + - 0.0010973965 + - 0.0037777764 + - 0.1572141 + - 0.0002694068 + - 0.02644839 + - 0.124288425 + - 0.00013072089 + - 0.0017781071 + - 0.0033102161 + - 0.36950517 + - 0.00003561072 + - 0.0043870904 + laughterScore: 0 + - frameNumber: 978 + frameDelay: 0 + Visemes: + - 0.023973415 + - 0.37132585 + - 0.0020556028 + - 0.0013451547 + - 0.0072283857 + - 0.14884269 + - 0.00053768 + - 0.018641418 + - 0.12833142 + - 0.000115257484 + - 0.0012952423 + - 0.0030103677 + - 0.28977153 + - 0.00004589586 + - 0.0034800854 + laughterScore: 0 + - frameNumber: 979 + frameDelay: 0 + Visemes: + - 0.038573883 + - 0.43392247 + - 0.0021534802 + - 0.0029458776 + - 0.009375388 + - 0.13486347 + - 0.00071676064 + - 0.0133781135 + - 0.13260293 + - 0.00010472506 + - 0.0009984196 + - 0.0035525614 + - 0.22369291 + - 0.00008414249 + - 0.00303488 + laughterScore: 0 + - frameNumber: 980 + frameDelay: 0 + Visemes: + - 0.05025848 + - 0.44353396 + - 0.0018464056 + - 0.00845408 + - 0.011964655 + - 0.1285254 + - 0.00055013475 + - 0.00952564 + - 0.16499656 + - 0.00008457253 + - 0.00078685966 + - 0.0029899057 + - 0.17411529 + - 0.00014462454 + - 0.0022234486 + laughterScore: 0 + - frameNumber: 981 + frameDelay: 0 + Visemes: + - 0.05551331 + - 0.4172201 + - 0.0014738087 + - 0.008315136 + - 0.011374962 + - 0.14990288 + - 0.00040858574 + - 0.0067752143 + - 0.2186074 + - 0.00006624252 + - 0.00069314067 + - 0.0021793859 + - 0.12564889 + - 0.00019077488 + - 0.0016301974 + laughterScore: 0 + - frameNumber: 982 + frameDelay: 0 + Visemes: + - 0.05348167 + - 0.33999434 + - 0.0010892459 + - 0.0070753815 + - 0.010234745 + - 0.18610555 + - 0.00029988313 + - 0.0048201852 + - 0.29750982 + - 0.00005689893 + - 0.0006694904 + - 0.0015864657 + - 0.09561688 + - 0.0002312392 + - 0.0012282368 + laughterScore: 0 + - frameNumber: 983 + frameDelay: 0 + Visemes: + - 0.12357791 + - 0.34052232 + - 0.00078928686 + - 0.00522446 + - 0.008592434 + - 0.17186633 + - 0.0002386278 + - 0.0033997083 + - 0.27092877 + - 0.000050307404 + - 0.0012404707 + - 0.0011581077 + - 0.071146674 + - 0.00037281215 + - 0.00089178595 + laughterScore: 0 + - frameNumber: 984 + frameDelay: 0 + Visemes: + - 0.29066586 + - 0.2609484 + - 0.0005690464 + - 0.0039466596 + - 0.008116516 + - 0.14072937 + - 0.00031691787 + - 0.0024592418 + - 0.2378025 + - 0.000053449236 + - 0.0013121098 + - 0.0009413609 + - 0.05108589 + - 0.00037169587 + - 0.0006810155 + laughterScore: 0 + - frameNumber: 985 + frameDelay: 0 + Visemes: + - 0.48198384 + - 0.18649976 + - 0.00041365248 + - 0.0030299053 + - 0.008194108 + - 0.100343995 + - 0.0004740507 + - 0.0018261039 + - 0.17781875 + - 0.00006791488 + - 0.0012743102 + - 0.00079374376 + - 0.03629637 + - 0.00037092564 + - 0.00061258214 + laughterScore: 0 + - frameNumber: 986 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 987 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 988 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 989 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 990 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 991 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 992 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 993 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 994 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 995 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 996 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 997 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 998 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 999 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1000 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1001 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1002 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1003 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1004 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1005 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1006 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1007 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1008 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1009 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1010 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1011 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1012 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1013 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1014 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1015 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1016 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1017 + frameDelay: 0 + Visemes: + - 0.42658126 + - 0.064048104 + - 0.002132564 + - 0.0042586913 + - 0.0014137697 + - 0.015785675 + - 0.00034148587 + - 0.0018297853 + - 0.009963066 + - 0.0038365023 + - 0.4016207 + - 0.009147195 + - 0.0031463248 + - 0.051071256 + - 0.004823617 + laughterScore: 0 + - frameNumber: 1018 + frameDelay: 0 + Visemes: + - 0.3104071 + - 0.045016523 + - 0.001528659 + - 0.0030151238 + - 0.0013030627 + - 0.012617132 + - 0.00025156097 + - 0.0013026873 + - 0.0094178645 + - 0.0064915456 + - 0.54344153 + - 0.011570564 + - 0.0026815888 + - 0.047343574 + - 0.00361149 + laughterScore: 0 + - frameNumber: 1019 + frameDelay: 0 + Visemes: + - 0.22710712 + - 0.032844525 + - 0.0013685012 + - 0.002363768 + - 0.0045872014 + - 0.00950341 + - 0.00039072026 + - 0.0010564529 + - 0.016916975 + - 0.016949043 + - 0.6166882 + - 0.01719054 + - 0.0037916922 + - 0.041708626 + - 0.007533237 + laughterScore: 0 + - frameNumber: 1020 + frameDelay: 0 + Visemes: + - 0.16740401 + - 0.024348665 + - 0.0010898458 + - 0.0020669657 + - 0.010078875 + - 0.010926644 + - 0.005398894 + - 0.0019001521 + - 0.04600312 + - 0.019445118 + - 0.6201652 + - 0.016029848 + - 0.023160674 + - 0.040703297 + - 0.011278677 + laughterScore: 0 + - frameNumber: 1021 + frameDelay: 0 + Visemes: + - 0.12324391 + - 0.017516738 + - 0.0009555345 + - 0.007325324 + - 0.041923888 + - 0.22681208 + - 0.005085355 + - 0.0031246715 + - 0.03696464 + - 0.01427801 + - 0.45453137 + - 0.0121264085 + - 0.017300364 + - 0.030689694 + - 0.008122 + laughterScore: 0 + - frameNumber: 1022 + frameDelay: 0 + Visemes: + - 0.09025888 + - 0.012376374 + - 0.0009035983 + - 0.027144369 + - 0.054688577 + - 0.39212418 + - 0.004289097 + - 0.003027288 + - 0.026150776 + - 0.010034623 + - 0.3306186 + - 0.008552166 + - 0.012431453 + - 0.021703983 + - 0.0056960243 + laughterScore: 0 + - frameNumber: 1023 + frameDelay: 0 + Visemes: + - 0.06606217 + - 0.008700602 + - 0.0006518513 + - 0.021578962 + - 0.16205983 + - 0.37764648 + - 0.066401005 + - 0.0049218833 + - 0.018377792 + - 0.007054597 + - 0.23232846 + - 0.00606088 + - 0.008872467 + - 0.015279023 + - 0.0040039914 + laughterScore: 0 + - frameNumber: 1024 + frameDelay: 0 + Visemes: + - 0.05123214 + - 0.006201233 + - 0.0005647736 + - 0.015588177 + - 0.14229527 + - 0.44188562 + - 0.10821539 + - 0.028992973 + - 0.012877425 + - 0.0049564536 + - 0.16297165 + - 0.0042842478 + - 0.0063697244 + - 0.010729597 + - 0.0028352928 + laughterScore: 0 + - frameNumber: 1025 + frameDelay: 0 + Visemes: + - 0.043665595 + - 0.00439199 + - 0.00044229307 + - 0.011033387 + - 0.099784836 + - 0.41029018 + - 0.08748126 + - 0.02047142 + - 0.009059206 + - 0.0036894062 + - 0.2589589 + - 0.01583192 + - 0.020928761 + - 0.007604953 + - 0.0063658906 + laughterScore: 0 + - frameNumber: 1026 + frameDelay: 0 + Visemes: + - 0.04040278 + - 0.0031580045 + - 0.00034842675 + - 0.007920551 + - 0.070030615 + - 0.29291967 + - 0.123992145 + - 0.014541473 + - 0.0066040726 + - 0.004171798 + - 0.30566588 + - 0.0670447 + - 0.041515477 + - 0.0077448417 + - 0.013939586 + laughterScore: 0 + - frameNumber: 1027 + frameDelay: 0 + Visemes: + - 0.048723683 + - 0.0028424007 + - 0.00036965145 + - 0.005759733 + - 0.050837293 + - 0.20756444 + - 0.08846383 + - 0.010752219 + - 0.05383969 + - 0.00984933 + - 0.33156893 + - 0.06412068 + - 0.048392616 + - 0.05000975 + - 0.026905786 + laughterScore: 0 + - frameNumber: 1028 + frameDelay: 0 + Visemes: + - 0.04115918 + - 0.0021503528 + - 0.00037914663 + - 0.004107533 + - 0.036408707 + - 0.14632879 + - 0.06198157 + - 0.008170103 + - 0.2708713 + - 0.011534924 + - 0.26178265 + - 0.04658715 + - 0.0422453 + - 0.038211018 + - 0.028082296 + laughterScore: 0 + - frameNumber: 1029 + frameDelay: 0 + Visemes: + - 0.03159604 + - 0.0016383277 + - 0.00036336225 + - 0.0030783003 + - 0.02582352 + - 0.102657415 + - 0.04341185 + - 0.0059411135 + - 0.47478694 + - 0.009940373 + - 0.18560538 + - 0.032683443 + - 0.029794022 + - 0.027877148 + - 0.024802797 + laughterScore: 0 + - frameNumber: 1030 + frameDelay: 0 + Visemes: + - 0.02415364 + - 0.0011908473 + - 0.0002909103 + - 0.0022801554 + - 0.018290168 + - 0.07202554 + - 0.030398555 + - 0.0041952315 + - 0.6108599 + - 0.007490032 + - 0.13626991 + - 0.023059502 + - 0.021952547 + - 0.019992508 + - 0.027550599 + laughterScore: 0 + - frameNumber: 1031 + frameDelay: 0 + Visemes: + - 0.020098222 + - 0.00088735926 + - 0.0003552385 + - 0.0018282493 + - 0.013075833 + - 0.050893094 + - 0.02135701 + - 0.0031731185 + - 0.4590854 + - 0.006464045 + - 0.32143202 + - 0.017407933 + - 0.04092169 + - 0.016187215 + - 0.026833564 + laughterScore: 0 + - frameNumber: 1032 + frameDelay: 0 + Visemes: + - 0.018628579 + - 0.00073103904 + - 0.0008072255 + - 0.0034636017 + - 0.019439835 + - 0.035762433 + - 0.014965455 + - 0.25589606 + - 0.33594096 + - 0.004827879 + - 0.23681 + - 0.01222532 + - 0.030171432 + - 0.011477527 + - 0.018852698 + laughterScore: 0 + - frameNumber: 1033 + frameDelay: 0 + Visemes: + - 0.027597226 + - 0.000814803 + - 0.0009872969 + - 0.009204561 + - 0.038591865 + - 0.025400907 + - 0.01050865 + - 0.42870283 + - 0.23560764 + - 0.0034432115 + - 0.16779616 + - 0.008570864 + - 0.021477452 + - 0.008066838 + - 0.013229727 + laughterScore: 0 + - frameNumber: 1034 + frameDelay: 0 + Visemes: + - 0.03197291 + - 0.0008273469 + - 0.00094395387 + - 0.00954037 + - 0.039318006 + - 0.017983522 + - 0.007389347 + - 0.5695145 + - 0.16526142 + - 0.0024463485 + - 0.11816774 + - 0.0060247607 + - 0.015544762 + - 0.0056908857 + - 0.009374161 + laughterScore: 0 + - frameNumber: 1035 + frameDelay: 0 + Visemes: + - 0.034675397 + - 0.0007034048 + - 0.00084172504 + - 0.009174735 + - 0.053776495 + - 0.01285767 + - 0.0052509806 + - 0.65458655 + - 0.11617397 + - 0.0017334576 + - 0.08379325 + - 0.004245988 + - 0.0114528155 + - 0.00406467 + - 0.0066688964 + laughterScore: 0 + - frameNumber: 1036 + frameDelay: 0 + Visemes: + - 0.046198055 + - 0.0026597101 + - 0.0010534378 + - 0.015458972 + - 0.16003498 + - 0.011718802 + - 0.0037585353 + - 0.58921325 + - 0.08943184 + - 0.001237802 + - 0.05995091 + - 0.0029937467 + - 0.008560456 + - 0.0029088426 + - 0.0048206546 + laughterScore: 0 + - frameNumber: 1037 + frameDelay: 0 + Visemes: + - 0.04480037 + - 0.04485724 + - 0.001269772 + - 0.040292315 + - 0.1837745 + - 0.0094013475 + - 0.0027205572 + - 0.45069286 + - 0.12851179 + - 0.00096782227 + - 0.07052671 + - 0.0029249815 + - 0.012385346 + - 0.0021302123 + - 0.0047441665 + laughterScore: 0 + - frameNumber: 1038 + frameDelay: 0 + Visemes: + - 0.03448589 + - 0.032294672 + - 0.0010519612 + - 0.02878504 + - 0.1294042 + - 0.0066674026 + - 0.0019121857 + - 0.31578884 + - 0.3703557 + - 0.00076963584 + - 0.051173232 + - 0.0022275331 + - 0.009165484 + - 0.0016599036 + - 0.014258347 + laughterScore: 0 + - frameNumber: 1039 + frameDelay: 0 + Visemes: + - 0.032531016 + - 0.025522364 + - 0.0007902708 + - 0.020460626 + - 0.09100208 + - 0.00483049 + - 0.0013478874 + - 0.22113313 + - 0.53448606 + - 0.00060065265 + - 0.037064545 + - 0.004006061 + - 0.009081859 + - 0.0013076387 + - 0.015835337 + laughterScore: 0 + - frameNumber: 1040 + frameDelay: 0 + Visemes: + - 0.037606318 + - 0.017945932 + - 0.0005570568 + - 0.014618428 + - 0.06385166 + - 0.003710733 + - 0.0009829596 + - 0.15481521 + - 0.47456712 + - 0.0005870714 + - 0.060155198 + - 0.08011406 + - 0.0773294 + - 0.00094089756 + - 0.012217965 + laughterScore: 0 + - frameNumber: 1041 + frameDelay: 0 + Visemes: + - 0.04246874 + - 0.012672184 + - 0.0003964062 + - 0.010853063 + - 0.045546297 + - 0.0031879619 + - 0.00077512674 + - 0.10843576 + - 0.33772048 + - 0.0012993445 + - 0.07440512 + - 0.14471254 + - 0.20687792 + - 0.0010555865 + - 0.009593494 + laughterScore: 0 + - frameNumber: 1042 + frameDelay: 0 + Visemes: + - 0.040411107 + - 0.010198717 + - 0.0017049159 + - 0.01009034 + - 0.065866075 + - 0.008472483 + - 0.0006857586 + - 0.076041095 + - 0.23794217 + - 0.0016242433 + - 0.059416626 + - 0.14071235 + - 0.33475685 + - 0.0010840889 + - 0.010993171 + laughterScore: 0 + - frameNumber: 1043 + frameDelay: 0 + Visemes: + - 0.038429897 + - 0.09922688 + - 0.0059234 + - 0.02368396 + - 0.15393232 + - 0.016879842 + - 0.0030388157 + - 0.053532764 + - 0.16783744 + - 0.0012766641 + - 0.04305951 + - 0.102653675 + - 0.2796644 + - 0.0010273872 + - 0.009833026 + laughterScore: 0 + - frameNumber: 1044 + frameDelay: 0 + Visemes: + - 0.03344217 + - 0.24873844 + - 0.006074282 + - 0.033359643 + - 0.18106538 + - 0.028068783 + - 0.005820572 + - 0.03764172 + - 0.1176828 + - 0.00091979554 + - 0.030459404 + - 0.07199561 + - 0.19703412 + - 0.0007451378 + - 0.0069520976 + laughterScore: 0 + - frameNumber: 1045 + frameDelay: 0 + Visemes: + - 0.030960385 + - 0.40244442 + - 0.006451702 + - 0.03707806 + - 0.15869232 + - 0.033088565 + - 0.0052649393 + - 0.026535522 + - 0.08241678 + - 0.00067713246 + - 0.021672685 + - 0.050441667 + - 0.13833101 + - 0.00053857913 + - 0.0054061958 + laughterScore: 0 + - frameNumber: 1046 + frameDelay: 0 + Visemes: + - 0.031278603 + - 0.40701523 + - 0.007182819 + - 0.057601213 + - 0.22570063 + - 0.027115382 + - 0.012521839 + - 0.020910686 + - 0.05779771 + - 0.00051852735 + - 0.015489189 + - 0.035384443 + - 0.0971005 + - 0.0004065202 + - 0.0039767283 + laughterScore: 0 + - frameNumber: 1047 + frameDelay: 0 + Visemes: + - 0.03129887 + - 0.43658698 + - 0.006592441 + - 0.041853625 + - 0.19887172 + - 0.020945165 + - 0.010932414 + - 0.10392283 + - 0.040665437 + - 0.00059792644 + - 0.011577726 + - 0.024801707 + - 0.06814651 + - 0.0003154378 + - 0.002891185 + laughterScore: 0 + - frameNumber: 1048 + frameDelay: 0 + Visemes: + - 0.029437058 + - 0.3395295 + - 0.005177903 + - 0.029575689 + - 0.14283447 + - 0.0152041735 + - 0.007764162 + - 0.32513425 + - 0.028501676 + - 0.00046882633 + - 0.00886801 + - 0.017377652 + - 0.04783824 + - 0.00023087247 + - 0.0020574539 + laughterScore: 0 + - frameNumber: 1049 + frameDelay: 0 + Visemes: + - 0.027527388 + - 0.2393789 + - 0.0040442124 + - 0.021037003 + - 0.10289417 + - 0.010898182 + - 0.0054713455 + - 0.51309484 + - 0.019981675 + - 0.0003419509 + - 0.007907616 + - 0.012177017 + - 0.03357853 + - 0.00016880089 + - 0.0014983173 + laughterScore: 0 + - frameNumber: 1050 + frameDelay: 0 + Visemes: + - 0.027869642 + - 0.16765162 + - 0.0030458327 + - 0.016383916 + - 0.07897197 + - 0.008140994 + - 0.00387265 + - 0.63757986 + - 0.014219485 + - 0.00027706506 + - 0.007312709 + - 0.0087509975 + - 0.024515525 + - 0.00023948587 + - 0.0011682217 + laughterScore: 0 + - frameNumber: 1051 + frameDelay: 0 + Visemes: + - 0.028546965 + - 0.11815252 + - 0.0028275326 + - 0.015887085 + - 0.075115815 + - 0.007254896 + - 0.0028635445 + - 0.6323663 + - 0.011323531 + - 0.0010431595 + - 0.021453325 + - 0.008445611 + - 0.06541017 + - 0.001825326 + - 0.007484189 + laughterScore: 0 + - frameNumber: 1052 + frameDelay: 0 + Visemes: + - 0.025879398 + - 0.082756154 + - 0.0020194955 + - 0.011764858 + - 0.053313844 + - 0.005862061 + - 0.0021045664 + - 0.4456439 + - 0.008519836 + - 0.0010888011 + - 0.022168761 + - 0.18815619 + - 0.13869739 + - 0.0058083637 + - 0.0062163696 + laughterScore: 0 + - frameNumber: 1053 + frameDelay: 0 + Visemes: + - 0.027031831 + - 0.05805615 + - 0.0014248692 + - 0.00865816 + - 0.037488684 + - 0.0042603766 + - 0.0015097958 + - 0.31233257 + - 0.0062769423 + - 0.0011409681 + - 0.017123371 + - 0.3507676 + - 0.16071805 + - 0.008114256 + - 0.005096326 + laughterScore: 0 + - frameNumber: 1054 + frameDelay: 0 + Visemes: + - 0.02617629 + - 0.040895764 + - 0.0010643206 + - 0.006225196 + - 0.02647015 + - 0.0034220046 + - 0.0010868915 + - 0.21874832 + - 0.0049073687 + - 0.0009687048 + - 0.0138002345 + - 0.4891395 + - 0.15607181 + - 0.007228608 + - 0.003794826 + laughterScore: 0 + - frameNumber: 1055 + frameDelay: 0 + Visemes: + - 0.021195367 + - 0.028925247 + - 0.0008063136 + - 0.0043587144 + - 0.018798035 + - 0.2295965 + - 0.0007665855 + - 0.15313722 + - 0.020271568 + - 0.00070969336 + - 0.01055224 + - 0.3597582 + - 0.14329262 + - 0.0050792415 + - 0.0027524647 + laughterScore: 0 + - frameNumber: 1056 + frameDelay: 0 + Visemes: + - 0.016958952 + - 0.02112634 + - 0.00064902357 + - 0.0030553679 + - 0.013409373 + - 0.44774315 + - 0.00054651423 + - 0.1072063 + - 0.021199943 + - 0.0005075536 + - 0.0075294366 + - 0.25325477 + - 0.10129873 + - 0.0035580164 + - 0.0019565588 + laughterScore: 0 + - frameNumber: 1057 + frameDelay: 0 + Visemes: + - 0.013321004 + - 0.018393777 + - 0.00048414562 + - 0.0021586781 + - 0.009719657 + - 0.60366714 + - 0.0003904587 + - 0.075048104 + - 0.018408386 + - 0.00035803532 + - 0.005318798 + - 0.1777419 + - 0.071080334 + - 0.0024915393 + - 0.0014180728 + laughterScore: 0 + - frameNumber: 1058 + frameDelay: 0 + Visemes: + - 0.012934391 + - 0.017082531 + - 0.0003954369 + - 0.0016315847 + - 0.0075127394 + - 0.7111578 + - 0.0002938756 + - 0.052541472 + - 0.014936796 + - 0.00025406518 + - 0.0037928615 + - 0.1247183 + - 0.049925033 + - 0.0017449537 + - 0.0010782162 + laughterScore: 0 + - frameNumber: 1059 + frameDelay: 0 + Visemes: + - 0.016719937 + - 0.013543136 + - 0.00036935328 + - 0.0016753373 + - 0.0066135693 + - 0.78518987 + - 0.00022865798 + - 0.036797065 + - 0.011198235 + - 0.00018478217 + - 0.002775658 + - 0.087422356 + - 0.035127997 + - 0.0012249897 + - 0.0009291518 + laughterScore: 0 + - frameNumber: 1060 + frameDelay: 0 + Visemes: + - 0.020957721 + - 0.012864247 + - 0.00041783214 + - 0.0027177753 + - 0.008449633 + - 0.8305756 + - 0.00018822345 + - 0.025820127 + - 0.008190892 + - 0.00013622617 + - 0.0021021527 + - 0.06122058 + - 0.024667667 + - 0.0008728642 + - 0.00081849226 + laughterScore: 0 + - frameNumber: 1061 + frameDelay: 0 + Visemes: + - 0.05307485 + - 0.013304092 + - 0.00085188553 + - 0.005312586 + - 0.012398552 + - 0.824516 + - 0.00020455319 + - 0.018180095 + - 0.006165231 + - 0.00017310219 + - 0.0021641862 + - 0.043055616 + - 0.017925074 + - 0.00078536815 + - 0.0018888218 + laughterScore: 0 + - frameNumber: 1062 + frameDelay: 0 + Visemes: + - 0.040512417 + - 0.009569286 + - 0.00075521215 + - 0.0042817467 + - 0.019766662 + - 0.85927033 + - 0.0012820588 + - 0.013716564 + - 0.004342361 + - 0.00012369726 + - 0.0015616982 + - 0.030161226 + - 0.012759144 + - 0.00055313087 + - 0.0013444313 + laughterScore: 0 + - frameNumber: 1063 + frameDelay: 0 + Visemes: + - 0.033382863 + - 0.0073526334 + - 0.0007753367 + - 0.0047026267 + - 0.03602679 + - 0.86356115 + - 0.0010967121 + - 0.0097311 + - 0.003100391 + - 0.0002047123 + - 0.002912961 + - 0.021185366 + - 0.013447542 + - 0.00040033332 + - 0.0021194946 + laughterScore: 0 + - frameNumber: 1064 + frameDelay: 0 + Visemes: + - 0.03096889 + - 0.005902182 + - 0.0006160217 + - 0.004239904 + - 0.077754095 + - 0.8226775 + - 0.0008921389 + - 0.0068930867 + - 0.0023186887 + - 0.00044599385 + - 0.013493644 + - 0.015144407 + - 0.012763755 + - 0.00029697173 + - 0.005592744 + laughterScore: 0 + - frameNumber: 1065 + frameDelay: 0 + Visemes: + - 0.028913502 + - 0.0044922833 + - 0.00046243746 + - 0.003041778 + - 0.059662007 + - 0.6754173 + - 0.00083654164 + - 0.0048372545 + - 0.0017042095 + - 0.00044262374 + - 0.019267134 + - 0.1615783 + - 0.03498335 + - 0.000259097 + - 0.0041021626 + laughterScore: 0 + - frameNumber: 1066 + frameDelay: 0 + Visemes: + - 0.02710897 + - 0.0032053986 + - 0.00033071585 + - 0.002175303 + - 0.04218019 + - 0.47535038 + - 0.00066847587 + - 0.003398365 + - 0.001287351 + - 0.00056101475 + - 0.028803963 + - 0.3247977 + - 0.08637632 + - 0.00029762153 + - 0.003458282 + laughterScore: 0 + - frameNumber: 1067 + frameDelay: 0 + Visemes: + - 0.022474153 + - 0.002259506 + - 0.00023384839 + - 0.001542949 + - 0.029875344 + - 0.33284962 + - 0.0005074329 + - 0.0023961384 + - 0.001443893 + - 0.00069807493 + - 0.025081713 + - 0.45971584 + - 0.117616214 + - 0.0005206898 + - 0.0027845553 + laughterScore: 0 + - frameNumber: 1068 + frameDelay: 0 + Visemes: + - 0.02476598 + - 0.0017534049 + - 0.00023027044 + - 0.0012061468 + - 0.03629093 + - 0.23369625 + - 0.0008822485 + - 0.010119793 + - 0.014086633 + - 0.0018682049 + - 0.037894238 + - 0.49569598 + - 0.13756424 + - 0.0011847554 + - 0.0027609132 + laughterScore: 0 + - frameNumber: 1069 + frameDelay: 0 + Visemes: + - 0.01940561 + - 0.0018313467 + - 0.0001855684 + - 0.0008943339 + - 0.030287126 + - 0.16493323 + - 0.000630343 + - 0.0071214954 + - 0.30005422 + - 0.0013142742 + - 0.026803076 + - 0.3472267 + - 0.09654357 + - 0.0008302988 + - 0.00193879 + laughterScore: 0 + - frameNumber: 1070 + frameDelay: 0 + Visemes: + - 0.014750229 + - 0.002243171 + - 0.00018372801 + - 0.00076065044 + - 0.043151475 + - 0.11815174 + - 0.0005929876 + - 0.005013846 + - 0.48260632 + - 0.00092308404 + - 0.018958082 + - 0.2430793 + - 0.06763702 + - 0.0005819083 + - 0.0013664511 + laughterScore: 0 + - frameNumber: 1071 + frameDelay: 0 + Visemes: + - 0.013342479 + - 0.012836866 + - 0.0020213388 + - 0.002014455 + - 0.14971349 + - 0.08383971 + - 0.0013894029 + - 0.0040617334 + - 0.4968492 + - 0.0006742884 + - 0.014185681 + - 0.1701725 + - 0.047519628 + - 0.00040952 + - 0.00096968136 + laughterScore: 0 + - frameNumber: 1072 + frameDelay: 0 + Visemes: + - 0.020427829 + - 0.09609775 + - 0.002891987 + - 0.004664641 + - 0.19815755 + - 0.060664725 + - 0.0018941478 + - 0.003354061 + - 0.44625667 + - 0.0005609275 + - 0.0112043 + - 0.11914427 + - 0.03350599 + - 0.00029513176 + - 0.0008800548 + laughterScore: 0 + - frameNumber: 1073 + frameDelay: 0 + Visemes: + - 0.018240672 + - 0.3542924 + - 0.0022579394 + - 0.0044478266 + - 0.14408691 + - 0.043127418 + - 0.0013310779 + - 0.0023540384 + - 0.31248578 + - 0.00045794784 + - 0.007986051 + - 0.08345013 + - 0.024598945 + - 0.0002070908 + - 0.0006757787 + laughterScore: 0 + - frameNumber: 1074 + frameDelay: 0 + Visemes: + - 0.019851184 + - 0.34107813 + - 0.0016398987 + - 0.003273362 + - 0.10107563 + - 0.030339211 + - 0.0009739508 + - 0.001651347 + - 0.2197483 + - 0.00048385546 + - 0.0059784953 + - 0.05936284 + - 0.21366927 + - 0.00014705873 + - 0.00072746765 + laughterScore: 0 + - frameNumber: 1075 + frameDelay: 0 + Visemes: + - 0.018679874 + - 0.24042326 + - 0.001204733 + - 0.0023030268 + - 0.07081666 + - 0.021341013 + - 0.0007015833 + - 0.0011579723 + - 0.15390456 + - 0.00037024068 + - 0.004283551 + - 0.04245954 + - 0.4416076 + - 0.000103910184 + - 0.0006425099 + laughterScore: 0 + - frameNumber: 1076 + frameDelay: 0 + Visemes: + - 0.015899904 + - 0.16877235 + - 0.0008527129 + - 0.0016171922 + - 0.04964805 + - 0.014992879 + - 0.00049477175 + - 0.0008116865 + - 0.107782096 + - 0.0002737464 + - 0.0030273474 + - 0.030202318 + - 0.6050721 + - 0.00007297951 + - 0.0004798996 + laughterScore: 0 + - frameNumber: 1077 + frameDelay: 0 + Visemes: + - 0.012571749 + - 0.11816863 + - 0.000599025 + - 0.001133162 + - 0.034811884 + - 0.010603453 + - 0.00035324914 + - 0.00057022227 + - 0.07545609 + - 0.00019797722 + - 0.0021482953 + - 0.021826684 + - 0.72115755 + - 0.000051176023 + - 0.0003508277 + laughterScore: 0 + - frameNumber: 1078 + frameDelay: 0 + Visemes: + - 0.010066563 + - 0.0827436 + - 0.00042760614 + - 0.00079837244 + - 0.024431063 + - 0.0076319585 + - 0.00025192264 + - 0.00040455887 + - 0.05283972 + - 0.00014288229 + - 0.0015241612 + - 0.01616772 + - 0.8022733 + - 0.00003595656 + - 0.00026060484 + laughterScore: 0 + - frameNumber: 1079 + frameDelay: 0 + Visemes: + - 0.008423304 + - 0.057944916 + - 0.00030425878 + - 0.0005657534 + - 0.017178962 + - 0.0065761665 + - 0.00019014456 + - 0.00029781178 + - 0.037006892 + - 0.000103293416 + - 0.0010898679 + - 0.012503495 + - 0.8575913 + - 0.000025428084 + - 0.00019837599 + laughterScore: 0 + - frameNumber: 1080 + frameDelay: 0 + Visemes: + - 0.007269717 + - 0.040583692 + - 0.00021585113 + - 0.00040566793 + - 0.012118719 + - 0.005566519 + - 0.00014129668 + - 0.00021833928 + - 0.0259187 + - 0.00007624435 + - 0.0007951603 + - 0.009358377 + - 0.897149 + - 0.00001895854 + - 0.00016373761 + laughterScore: 0 + - frameNumber: 1081 + frameDelay: 0 + Visemes: + - 0.0077732764 + - 0.028431194 + - 0.00015838146 + - 0.00030709855 + - 0.008701767 + - 0.004664845 + - 0.00011942298 + - 0.00017100759 + - 0.018187568 + - 0.00007946048 + - 0.0007031711 + - 0.008840772 + - 0.92156374 + - 0.000027363025 + - 0.00027098903 + laughterScore: 0 + - frameNumber: 1082 + frameDelay: 0 + Visemes: + - 0.009275752 + - 0.019914545 + - 0.00012258363 + - 0.00026508173 + - 0.0064738104 + - 0.0041053924 + - 0.000113261296 + - 0.00015565695 + - 0.012796029 + - 0.000102363134 + - 0.00079275534 + - 0.009479782 + - 0.93530154 + - 0.000051676798 + - 0.0010497959 + laughterScore: 0 + - frameNumber: 1083 + frameDelay: 0 + Visemes: + - 0.011301918 + - 0.013965583 + - 0.00015483474 + - 0.0003363166 + - 0.0055039166 + - 0.0033054943 + - 0.00012698736 + - 0.00022555093 + - 0.009132036 + - 0.00012913563 + - 0.0011527584 + - 0.011988177 + - 0.93937725 + - 0.00008199811 + - 0.0032180585 + laughterScore: 0 + - frameNumber: 1084 + frameDelay: 0 + Visemes: + - 0.012440493 + - 0.009904363 + - 0.00049509655 + - 0.00067850866 + - 0.0065409327 + - 0.003062043 + - 0.00018279554 + - 0.00042220356 + - 0.006947244 + - 0.00024908566 + - 0.0015909241 + - 0.013237443 + - 0.93254054 + - 0.00008749225 + - 0.011620862 + laughterScore: 0 + - frameNumber: 1085 + frameDelay: 0 + Visemes: + - 0.01618553 + - 0.00703458 + - 0.0017166676 + - 0.00092534546 + - 0.008573639 + - 0.0027855267 + - 0.0002908429 + - 0.0008938152 + - 0.005763199 + - 0.0007594587 + - 0.002393754 + - 0.01093857 + - 0.8504261 + - 0.00011391762 + - 0.09119915 + laughterScore: 0 + - frameNumber: 1086 + frameDelay: 0 + Visemes: + - 0.017082622 + - 0.004961364 + - 0.0020135792 + - 0.0007982729 + - 0.007416142 + - 0.002173933 + - 0.00029385457 + - 0.0011206963 + - 0.004347604 + - 0.0013442633 + - 0.0030405447 + - 0.008453607 + - 0.6967687 + - 0.00011376345 + - 0.25007108 + laughterScore: 0 + - frameNumber: 1087 + frameDelay: 0 + Visemes: + - 0.013781238 + - 0.0034783958 + - 0.0015599107 + - 0.00059021544 + - 0.005440212 + - 0.001569212 + - 0.00023322612 + - 0.0009443948 + - 0.0030655859 + - 0.0012164625 + - 0.0023899472 + - 0.006062581 + - 0.53038925 + - 0.00009665343 + - 0.4291827 + laughterScore: 0 + - frameNumber: 1088 + frameDelay: 0 + Visemes: + - 0.010912314 + - 0.0024383962 + - 0.0011348077 + - 0.00044687232 + - 0.0039695483 + - 0.0011252942 + - 0.00019930334 + - 0.00088788336 + - 0.0021588758 + - 0.0010739155 + - 0.0019221235 + - 0.0043820916 + - 0.38037148 + - 0.00011774053 + - 0.5888593 + laughterScore: 0 + - frameNumber: 1089 + frameDelay: 0 + Visemes: + - 0.008759682 + - 0.001710073 + - 0.0008057998 + - 0.0003618008 + - 0.002846636 + - 0.0007950523 + - 0.00016043475 + - 0.00079829653 + - 0.0015263136 + - 0.0009130607 + - 0.001652882 + - 0.003220515 + - 0.268533 + - 0.00015660345 + - 0.70775986 + laughterScore: 0 + - frameNumber: 1090 + frameDelay: 0 + Visemes: + - 0.0077003106 + - 0.0012034005 + - 0.0005761104 + - 0.00030442068 + - 0.0020920103 + - 0.0005683265 + - 0.00013132275 + - 0.00080170296 + - 0.0010880874 + - 0.0007940233 + - 0.0014592647 + - 0.002512102 + - 0.18977964 + - 0.00020976434 + - 0.7907795 + laughterScore: 0 + - frameNumber: 1091 + frameDelay: 0 + Visemes: + - 0.0076332586 + - 0.000850973 + - 0.0004393519 + - 0.00034119288 + - 0.0016520369 + - 0.0004353086 + - 0.00028492653 + - 0.020260816 + - 0.00081866665 + - 0.00090049196 + - 0.0025962354 + - 0.002088543 + - 0.1389903 + - 0.00021714988 + - 0.8224907 + laughterScore: 0 + - frameNumber: 1092 + frameDelay: 0 + Visemes: + - 0.008997755 + - 0.00062284985 + - 0.00041872577 + - 0.0004663862 + - 0.0023282296 + - 0.00033273385 + - 0.00021480737 + - 0.29201773 + - 0.00084124814 + - 0.0006700427 + - 0.0031373305 + - 0.0015153809 + - 0.098771654 + - 0.00015717171 + - 0.589508 + laughterScore: 0 + - frameNumber: 1093 + frameDelay: 0 + Visemes: + - 0.010690993 + - 0.00055969355 + - 0.00036596047 + - 0.00073320797 + - 0.0026068988 + - 0.00040429956 + - 0.00020825281 + - 0.49496534 + - 0.00078143453 + - 0.0004919987 + - 0.0023780197 + - 0.0010765532 + - 0.069672294 + - 0.00011702975 + - 0.41494805 + laughterScore: 0 + - frameNumber: 1094 + frameDelay: 0 + Visemes: + - 0.011537031 + - 0.00042996538 + - 0.0003087082 + - 0.0011702796 + - 0.0027884194 + - 0.00043271098 + - 0.00032496452 + - 0.6389913 + - 0.00061803975 + - 0.00036555872 + - 0.0017144134 + - 0.00076716486 + - 0.04924228 + - 0.00008776431 + - 0.29122147 + laughterScore: 0 + - frameNumber: 1095 + frameDelay: 0 + Visemes: + - 0.019328926 + - 0.00062919233 + - 0.00027399982 + - 0.006574189 + - 0.026523182 + - 0.0013992214 + - 0.0012654107 + - 0.7020941 + - 0.0006717221 + - 0.0002631281 + - 0.0012556798 + - 0.0005605391 + - 0.03511435 + - 0.00007013159 + - 0.2039763 + laughterScore: 0 + - frameNumber: 1096 + frameDelay: 0 + Visemes: + - 0.027519017 + - 0.0005897128 + - 0.00023226926 + - 0.02049381 + - 0.24370511 + - 0.0018670519 + - 0.0067280224 + - 0.5269218 + - 0.0021934565 + - 0.0001926184 + - 0.0011848457 + - 0.00043795595 + - 0.024908794 + - 0.00018716753 + - 0.14283836 + laughterScore: 0 + - frameNumber: 1097 + frameDelay: 0 + Visemes: + - 0.028243657 + - 0.0009539197 + - 0.00044328877 + - 0.06585243 + - 0.33139518 + - 0.0020736093 + - 0.005476476 + - 0.38124898 + - 0.006744692 + - 0.00045599404 + - 0.040751204 + - 0.002933824 + - 0.03223399 + - 0.00056953507 + - 0.10062318 + laughterScore: 0 + - frameNumber: 1098 + frameDelay: 0 + Visemes: + - 0.025973065 + - 0.0009501087 + - 0.00042458563 + - 0.055038493 + - 0.3528152 + - 0.0019621297 + - 0.0052260403 + - 0.26793218 + - 0.005201125 + - 0.0004152513 + - 0.037570875 + - 0.06897484 + - 0.105539925 + - 0.0004989874 + - 0.07147718 + laughterScore: 0 + - frameNumber: 1099 + frameDelay: 0 + Visemes: + - 0.025533587 + - 0.0008497902 + - 0.0004175168 + - 0.039319362 + - 0.2521536 + - 0.0017420353 + - 0.004171427 + - 0.1875921 + - 0.0043763113 + - 0.00043915902 + - 0.036095165 + - 0.23506515 + - 0.16095784 + - 0.0004478948 + - 0.050839018 + laughterScore: 0 + - frameNumber: 1100 + frameDelay: 0 + Visemes: + - 0.025835132 + - 0.00085300265 + - 0.00040175 + - 0.027531363 + - 0.18064183 + - 0.14967601 + - 0.0029667919 + - 0.1313451 + - 0.10645365 + - 0.00040396635 + - 0.040431492 + - 0.1663085 + - 0.13112223 + - 0.0003320441 + - 0.03569713 + laughterScore: 0 + - frameNumber: 1101 + frameDelay: 0 + Visemes: + - 0.027079701 + - 0.0010333152 + - 0.00038228347 + - 0.019311547 + - 0.1320508 + - 0.24127477 + - 0.002140259 + - 0.091988996 + - 0.21937022 + - 0.00031363548 + - 0.029707273 + - 0.11714943 + - 0.09291992 + - 0.0002384293 + - 0.025039416 + laughterScore: 0 + - frameNumber: 1102 + frameDelay: 0 + Visemes: + - 0.028546168 + - 0.003407456 + - 0.00050480524 + - 0.0140176695 + - 0.1142836 + - 0.27211267 + - 0.0047884965 + - 0.06499087 + - 0.30869752 + - 0.00030070634 + - 0.021643814 + - 0.08287773 + - 0.06602201 + - 0.00017705122 + - 0.01762946 + laughterScore: 0 + - frameNumber: 1103 + frameDelay: 0 + Visemes: + - 0.027232502 + - 0.005151936 + - 0.00058962917 + - 0.010033972 + - 0.0879462 + - 0.43759155 + - 0.003986184 + - 0.045651354 + - 0.24825881 + - 0.00026336577 + - 0.01566784 + - 0.05816842 + - 0.04690093 + - 0.00013800335 + - 0.012419308 + laughterScore: 0 + - frameNumber: 1104 + frameDelay: 0 + Visemes: + - 0.02564773 + - 0.0058055506 + - 0.0035166426 + - 0.009661616 + - 0.115239576 + - 0.5335189 + - 0.004009799 + - 0.033080854 + - 0.17509714 + - 0.00019934235 + - 0.01121393 + - 0.040759105 + - 0.033418354 + - 0.00010199196 + - 0.008729413 + laughterScore: 0 + - frameNumber: 1105 + frameDelay: 0 + Visemes: + - 0.026919171 + - 0.008986574 + - 0.0063844165 + - 0.013135863 + - 0.1132015 + - 0.60068905 + - 0.0029565315 + - 0.023939842 + - 0.12287051 + - 0.00033969787 + - 0.011146404 + - 0.028710714 + - 0.0335441 + - 0.00010353982 + - 0.0070720627 + laughterScore: 0 + - frameNumber: 1106 + frameDelay: 0 + Visemes: + - 0.028599074 + - 0.009294916 + - 0.004837838 + - 0.011061834 + - 0.10517057 + - 0.5985261 + - 0.0021914172 + - 0.017040474 + - 0.08681055 + - 0.0015337248 + - 0.07469128 + - 0.022078272 + - 0.029596392 + - 0.00037135035 + - 0.008196205 + laughterScore: 0 + - frameNumber: 1107 + frameDelay: 0 + Visemes: + - 0.02591911 + - 0.0066318214 + - 0.0034217804 + - 0.0082070585 + - 0.07662235 + - 0.4192547 + - 0.0017433604 + - 0.011977924 + - 0.066865295 + - 0.001593394 + - 0.26057363 + - 0.029267637 + - 0.06933365 + - 0.00032112567 + - 0.018267186 + laughterScore: 0 + - frameNumber: 1108 + frameDelay: 0 + Visemes: + - 0.026045704 + - 0.0068619493 + - 0.0024373422 + - 0.0058903154 + - 0.05623138 + - 0.3132853 + - 0.0012367951 + - 0.008427283 + - 0.30369928 + - 0.0011341461 + - 0.18868692 + - 0.022332376 + - 0.05051716 + - 0.0002301434 + - 0.012983915 + laughterScore: 0 + - frameNumber: 1109 + frameDelay: 0 + Visemes: + - 0.023792315 + - 0.0063725626 + - 0.0017803938 + - 0.004680195 + - 0.05159853 + - 0.22866069 + - 0.0008989299 + - 0.0059281443 + - 0.48154363 + - 0.0007979848 + - 0.13318563 + - 0.01582455 + - 0.035654243 + - 0.00016282275 + - 0.009119372 + laughterScore: 0 + - frameNumber: 1110 + frameDelay: 0 + Visemes: + - 0.021115763 + - 0.0070962096 + - 0.0016269698 + - 0.007499406 + - 0.10906436 + - 0.16594872 + - 0.0040249284 + - 0.0046987645 + - 0.5405249 + - 0.0005719985 + - 0.09494219 + - 0.011147459 + - 0.025213216 + - 0.00011729304 + - 0.006407839 + laughterScore: 0 + - frameNumber: 1111 + frameDelay: 0 + Visemes: + - 0.021417385 + - 0.010662957 + - 0.0015100085 + - 0.005348906 + - 0.14402154 + - 0.11903562 + - 0.14513098 + - 0.011387794 + - 0.4431754 + - 0.00048834115 + - 0.06724166 + - 0.0078095556 + - 0.018163426 + - 0.00008842558 + - 0.0045180446 + laughterScore: 0 + - frameNumber: 1112 + frameDelay: 0 + Visemes: + - 0.020391323 + - 0.0075138696 + - 0.0011311582 + - 0.004097576 + - 0.13763788 + - 0.08367099 + - 0.3120762 + - 0.011787849 + - 0.3105729 + - 0.0036600265 + - 0.047213066 + - 0.005481669 + - 0.05095352 + - 0.000070152106 + - 0.00374186 + laughterScore: 0 + - frameNumber: 1113 + frameDelay: 0 + Visemes: + - 0.01602154 + - 0.0053110835 + - 0.00085421785 + - 0.0029879427 + - 0.09821011 + - 0.058705088 + - 0.48295444 + - 0.008324796 + - 0.21754737 + - 0.022354426 + - 0.036453567 + - 0.003918894 + - 0.04312988 + - 0.00009792691 + - 0.0031287638 + laughterScore: 0 + - frameNumber: 1114 + frameDelay: 0 + Visemes: + - 0.014692923 + - 0.0037802968 + - 0.00063043856 + - 0.0022025183 + - 0.068967566 + - 0.04117904 + - 0.6083313 + - 0.005885222 + - 0.15254456 + - 0.028860722 + - 0.03277917 + - 0.0053464817 + - 0.032094147 + - 0.00016413667 + - 0.0025414764 + laughterScore: 0 + - frameNumber: 1115 + frameDelay: 0 + Visemes: + - 0.022307403 + - 0.002706374 + - 0.00045030974 + - 0.0016191354 + - 0.048519284 + - 0.029304426 + - 0.48527923 + - 0.004138586 + - 0.106874 + - 0.051075347 + - 0.1341006 + - 0.0860242 + - 0.023335528 + - 0.0018045633 + - 0.002461039 + laughterScore: 0 + - frameNumber: 1116 + frameDelay: 0 + Visemes: + - 0.0400042 + - 0.0019863457 + - 0.00032840605 + - 0.0012062242 + - 0.03456996 + - 0.02099928 + - 0.35683894 + - 0.0029650838 + - 0.07529045 + - 0.040093247 + - 0.22909458 + - 0.16746241 + - 0.02244026 + - 0.004309883 + - 0.0024107187 + laughterScore: 0 + - frameNumber: 1117 + frameDelay: 0 + Visemes: + - 0.052647993 + - 0.0046561724 + - 0.0009571976 + - 0.0011525926 + - 0.025102515 + - 0.015728429 + - 0.2536407 + - 0.0029578735 + - 0.05391841 + - 0.029708512 + - 0.30305827 + - 0.22265944 + - 0.019027324 + - 0.012371965 + - 0.00241266 + laughterScore: 0 + - frameNumber: 1118 + frameDelay: 0 + Visemes: + - 0.057500497 + - 0.004226851 + - 0.0013723124 + - 0.0010210843 + - 0.018479574 + - 0.021898964 + - 0.17967412 + - 0.014330215 + - 0.0403922 + - 0.021274721 + - 0.33981234 + - 0.26978588 + - 0.015675236 + - 0.012596571 + - 0.0019594508 + laughterScore: 0 + - frameNumber: 1119 + frameDelay: 0 + Visemes: + - 0.057094328 + - 0.009748004 + - 0.0011026206 + - 0.000924123 + - 0.013847596 + - 0.18351424 + - 0.1276171 + - 0.01333559 + - 0.11058445 + - 0.015028575 + - 0.25108194 + - 0.19212472 + - 0.012145603 + - 0.010423654 + - 0.0014274907 + laughterScore: 0 + - frameNumber: 1120 + frameDelay: 0 + Visemes: + - 0.044871658 + - 0.011585902 + - 0.0009466258 + - 0.00071010273 + - 0.012050429 + - 0.30228987 + - 0.08994876 + - 0.009928764 + - 0.18800518 + - 0.010565709 + - 0.17712636 + - 0.1345898 + - 0.0087207975 + - 0.007566626 + - 0.0010934744 + laughterScore: 0 + - frameNumber: 1121 + frameDelay: 0 + Visemes: + - 0.04205019 + - 0.010799387 + - 0.0010670016 + - 0.0018471733 + - 0.031315085 + - 0.40498042 + - 0.063668236 + - 0.008284138 + - 0.19294757 + - 0.007492982 + - 0.12815276 + - 0.09426563 + - 0.0067439973 + - 0.0054670516 + - 0.00091844687 + laughterScore: 0 + - frameNumber: 1122 + frameDelay: 0 + Visemes: + - 0.040149678 + - 0.009207715 + - 0.001206771 + - 0.00155502 + - 0.111596 + - 0.37575483 + - 0.08714673 + - 0.06673215 + - 0.13573243 + - 0.0052635465 + - 0.09028748 + - 0.06600456 + - 0.004786559 + - 0.0038453573 + - 0.0007311847 + laughterScore: 0 + - frameNumber: 1123 + frameDelay: 0 + Visemes: + - 0.04029078 + - 0.007149008 + - 0.0018440764 + - 0.0014683388 + - 0.09844518 + - 0.27163285 + - 0.14378473 + - 0.21890044 + - 0.09520868 + - 0.0037247757 + - 0.06399586 + - 0.04634643 + - 0.003632725 + - 0.0027209292 + - 0.0008551723 + laughterScore: 0 + - frameNumber: 1124 + frameDelay: 0 + Visemes: + - 0.04589954 + - 0.0056635947 + - 0.0026944703 + - 0.0025092121 + - 0.104190364 + - 0.19353196 + - 0.16983062 + - 0.3167004 + - 0.06700939 + - 0.0028817605 + - 0.04618647 + - 0.032704312 + - 0.0055547883 + - 0.0019880172 + - 0.0026551199 + laughterScore: 0 + - frameNumber: 1125 + frameDelay: 0 + Visemes: + - 0.04706925 + - 0.0052216365 + - 0.0028284844 + - 0.0041659707 + - 0.08608457 + - 0.14712857 + - 0.22553883 + - 0.28354388 + - 0.048241243 + - 0.0066052135 + - 0.04239491 + - 0.023617098 + - 0.06693473 + - 0.0014994283 + - 0.009126258 + laughterScore: 0 + - frameNumber: 1126 + frameDelay: 0 + Visemes: + - 0.04621528 + - 0.0049731266 + - 0.0022332114 + - 0.0054032835 + - 0.06326787 + - 0.10498506 + - 0.21174924 + - 0.19996467 + - 0.036264066 + - 0.012797736 + - 0.1442894 + - 0.035381667 + - 0.11028436 + - 0.00147189 + - 0.020719169 + laughterScore: 0 + - frameNumber: 1127 + frameDelay: 0 + Visemes: + - 0.039130967 + - 0.0035171057 + - 0.0015879582 + - 0.0046570394 + - 0.044905886 + - 0.07400393 + - 0.1507302 + - 0.14014602 + - 0.025937524 + - 0.024709404 + - 0.25321826 + - 0.028501911 + - 0.16681433 + - 0.0018131861 + - 0.040326294 + laughterScore: 0 + - frameNumber: 1128 + frameDelay: 0 + Visemes: + - 0.03252101 + - 0.0068859425 + - 0.0017237728 + - 0.0044068443 + - 0.05261191 + - 0.081591964 + - 0.106603734 + - 0.0982407 + - 0.09915213 + - 0.024125082 + - 0.2668301 + - 0.028649852 + - 0.16235444 + - 0.001883917 + - 0.03241861 + laughterScore: 0 + - frameNumber: 1129 + frameDelay: 0 + Visemes: + - 0.031198416 + - 0.015215383 + - 0.0013451799 + - 0.003727124 + - 0.043671053 + - 0.11670226 + - 0.07482585 + - 0.068918616 + - 0.27375025 + - 0.017043844 + - 0.19121833 + - 0.02103898 + - 0.1167714 + - 0.0013761516 + - 0.023197172 + laughterScore: 0 + - frameNumber: 1130 + frameDelay: 0 + Visemes: + - 0.029468734 + - 0.029732548 + - 0.0017703187 + - 0.0107635 + - 0.05137703 + - 0.14171082 + - 0.053420164 + - 0.048801884 + - 0.36466506 + - 0.013070801 + - 0.13779192 + - 0.015397903 + - 0.083290264 + - 0.00112257 + - 0.017616468 + laughterScore: 0 + - frameNumber: 1131 + frameDelay: 0 + Visemes: + - 0.02684253 + - 0.0802155 + - 0.0072798254 + - 0.015882166 + - 0.04642287 + - 0.11670993 + - 0.03817108 + - 0.03471198 + - 0.37696713 + - 0.0504478 + - 0.101096526 + - 0.011224513 + - 0.0595723 + - 0.0012463431 + - 0.033209495 + laughterScore: 0 + - frameNumber: 1132 + frameDelay: 0 + Visemes: + - 0.025544545 + - 0.07300247 + - 0.0077859266 + - 0.011580419 + - 0.032739624 + - 0.08350418 + - 0.026756117 + - 0.024321685 + - 0.2927878 + - 0.057507243 + - 0.07589668 + - 0.008613984 + - 0.043124035 + - 0.0017467882 + - 0.23508851 + laughterScore: 0 + - frameNumber: 1133 + frameDelay: 0 + Visemes: + - 0.026151594 + - 0.052567918 + - 0.005862569 + - 0.00916197 + - 0.023355737 + - 0.06052949 + - 0.01880224 + - 0.01706702 + - 0.26706326 + - 0.044965163 + - 0.1745821 + - 0.012501257 + - 0.10270819 + - 0.0031212987 + - 0.1815602 + laughterScore: 0 + - frameNumber: 1134 + frameDelay: 0 + Visemes: + - 0.021732977 + - 0.03682168 + - 0.0041315015 + - 0.008203596 + - 0.016826399 + - 0.04243891 + - 0.013195611 + - 0.011993491 + - 0.19071135 + - 0.034814276 + - 0.24313578 + - 0.012578003 + - 0.2298341 + - 0.0032407183 + - 0.13034162 + laughterScore: 0 + - frameNumber: 1135 + frameDelay: 0 + Visemes: + - 0.020990834 + - 0.025845982 + - 0.0032550865 + - 0.049058203 + - 0.026491433 + - 0.029773325 + - 0.009663592 + - 0.008885681 + - 0.13799609 + - 0.027174963 + - 0.19075847 + - 0.009630913 + - 0.36429217 + - 0.0027763231 + - 0.093406916 + laughterScore: 0 + - frameNumber: 1136 + frameDelay: 0 + Visemes: + - 0.023369242 + - 0.01872382 + - 0.012417125 + - 0.24928318 + - 0.055089004 + - 0.021159949 + - 0.0104702655 + - 0.012204157 + - 0.09966329 + - 0.02010664 + - 0.14378248 + - 0.007252051 + - 0.2589965 + - 0.0019865045 + - 0.06549581 + laughterScore: 0 + - frameNumber: 1137 + frameDelay: 0 + Visemes: + - 0.030733775 + - 0.01866344 + - 0.02087602 + - 0.27941933 + - 0.17239821 + - 0.015551424 + - 0.010752814 + - 0.021362038 + - 0.0708272 + - 0.014396952 + - 0.110642806 + - 0.0052240696 + - 0.18183179 + - 0.0014118229 + - 0.045908283 + laughterScore: 0 + - frameNumber: 1138 + frameDelay: 0 + Visemes: + - 0.047233414 + - 0.04990811 + - 0.019591903 + - 0.2684037 + - 0.24670732 + - 0.012153383 + - 0.010582922 + - 0.024787191 + - 0.05059407 + - 0.010379963 + - 0.09458406 + - 0.0038529192 + - 0.12783758 + - 0.001020839 + - 0.032362584 + laughterScore: 0 + - frameNumber: 1139 + frameDelay: 0 + Visemes: + - 0.06228929 + - 0.06223717 + - 0.020027673 + - 0.29526806 + - 0.27693105 + - 0.009638681 + - 0.010778674 + - 0.028852258 + - 0.03651451 + - 0.0073594223 + - 0.073694006 + - 0.0027951424 + - 0.090037726 + - 0.0007516549 + - 0.022824656 + laughterScore: 0 + - frameNumber: 1140 + frameDelay: 0 + Visemes: + - 0.069939606 + - 0.08119953 + - 0.024244431 + - 0.33456892 + - 0.2600181 + - 0.008185923 + - 0.010878343 + - 0.030229567 + - 0.033180468 + - 0.005662293 + - 0.056584552 + - 0.0021380733 + - 0.06551521 + - 0.00055863906 + - 0.017096309 + laughterScore: 0 + - frameNumber: 1141 + frameDelay: 0 + Visemes: + - 0.06964057 + - 0.15705976 + - 0.032460492 + - 0.23690604 + - 0.18278037 + - 0.007164458 + - 0.0076515013 + - 0.021698393 + - 0.09710926 + - 0.00670928 + - 0.04142808 + - 0.0018411487 + - 0.04792372 + - 0.012242789 + - 0.07738412 + laughterScore: 0 + - frameNumber: 1142 + frameDelay: 0 + Visemes: + - 0.06178087 + - 0.1930295 + - 0.031917118 + - 0.16638435 + - 0.1281911 + - 0.0069277575 + - 0.005369698 + - 0.015271598 + - 0.13822767 + - 0.0050766068 + - 0.049019404 + - 0.0020310706 + - 0.06301793 + - 0.04637005 + - 0.087385245 + laughterScore: 0 + - frameNumber: 1143 + frameDelay: 0 + Visemes: + - 0.058291335 + - 0.14052464 + - 0.02547101 + - 0.1167927 + - 0.08997122 + - 0.005384442 + - 0.0037890163 + - 0.010712756 + - 0.13396153 + - 0.0041881506 + - 0.06931212 + - 0.004044284 + - 0.05599007 + - 0.1572875 + - 0.124279216 + laughterScore: 0 + - frameNumber: 1144 + frameDelay: 0 + Visemes: + - 0.044270232 + - 0.09907834 + - 0.017919112 + - 0.08185237 + - 0.063313134 + - 0.003806648 + - 0.0026566668 + - 0.0075130593 + - 0.1273003 + - 0.0035813674 + - 0.05239021 + - 0.002997437 + - 0.03941523 + - 0.34567758 + - 0.10822827 + laughterScore: 0 + - frameNumber: 1145 + frameDelay: 0 + Visemes: + - 0.0321545 + - 0.06936349 + - 0.012551311 + - 0.057317965 + - 0.04439026 + - 0.0026724886 + - 0.001864634 + - 0.005265176 + - 0.093860075 + - 0.006012352 + - 0.037025794 + - 0.002142553 + - 0.027651252 + - 0.5308196 + - 0.07690858 + laughterScore: 0 + - frameNumber: 1146 + frameDelay: 0 + Visemes: + - 0.022612931 + - 0.048554827 + - 0.008786406 + - 0.040125113 + - 0.031096132 + - 0.0018720956 + - 0.0013093849 + - 0.0036860514 + - 0.06605219 + - 0.004708688 + - 0.025930112 + - 0.0015352576 + - 0.01944891 + - 0.6703862 + - 0.053895712 + laughterScore: 0 + - frameNumber: 1147 + frameDelay: 0 + Visemes: + - 0.015860796 + - 0.03398854 + - 0.0061506797 + - 0.028089304 + - 0.021804553 + - 0.0013125007 + - 0.00091887946 + - 0.0025808178 + - 0.046275407 + - 0.003466016 + - 0.018152822 + - 0.001114884 + - 0.013701378 + - 0.7688503 + - 0.037733074 + laughterScore: 0 + - frameNumber: 1148 + frameDelay: 0 + Visemes: + - 0.011196271 + - 0.023792168 + - 0.004310458 + - 0.019745165 + - 0.015320769 + - 0.00092279026 + - 0.0006610092 + - 0.0018477603 + - 0.03242399 + - 0.0040457947 + - 0.012716665 + - 0.00087347685 + - 0.009735099 + - 0.8359931 + - 0.026415436 + laughterScore: 0 + - frameNumber: 1149 + frameDelay: 0 + Visemes: + - 0.007930346 + - 0.016654572 + - 0.0030215515 + - 0.014086075 + - 0.011015256 + - 0.00064793235 + - 0.00046724748 + - 0.0068564834 + - 0.02270562 + - 0.0036666035 + - 0.008914763 + - 0.0006930544 + - 0.0069389977 + - 0.87790823 + - 0.018493257 + laughterScore: 0 + - frameNumber: 1150 + frameDelay: 0 + Visemes: + - 0.0069191484 + - 0.011659434 + - 0.002169095 + - 0.010831651 + - 0.009898937 + - 0.00047417797 + - 0.00038019617 + - 0.26164225 + - 0.015902754 + - 0.002640436 + - 0.0062815268 + - 0.0005587124 + - 0.0050235293 + - 0.6526715 + - 0.012946613 + laughterScore: 0 + - frameNumber: 1151 + frameDelay: 0 + Visemes: + - 0.0057573146 + - 0.008163405 + - 0.0015446114 + - 0.008203158 + - 0.00811621 + - 0.0003396833 + - 0.000292069 + - 0.4793768 + - 0.011136582 + - 0.0018551715 + - 0.0044088555 + - 0.00041663024 + - 0.0035487816 + - 0.4577771 + - 0.009063584 + laughterScore: 0 + - frameNumber: 1152 + frameDelay: 0 + Visemes: + - 0.012801075 + - 0.0072486745 + - 0.001135455 + - 0.009136816 + - 0.014891736 + - 0.00073195016 + - 0.0002797857 + - 0.5234332 + - 0.009157142 + - 0.001377372 + - 0.020285312 + - 0.0021550972 + - 0.06986696 + - 0.3207517 + - 0.006747724 + laughterScore: 0 + - frameNumber: 1153 + frameDelay: 0 + Visemes: + - 0.027484544 + - 0.0073015 + - 0.00087052595 + - 0.008975687 + - 0.017262833 + - 0.0008134902 + - 0.0002386196 + - 0.38223794 + - 0.008280735 + - 0.004146951 + - 0.15949099 + - 0.031897083 + - 0.110205024 + - 0.23436013 + - 0.0064339386 + laughterScore: 0 + - frameNumber: 1154 + frameDelay: 0 + Visemes: + - 0.039148457 + - 0.005496179 + - 0.0008470678 + - 0.011979938 + - 0.02737441 + - 0.0015725542 + - 0.00026615857 + - 0.27818784 + - 0.006708291 + - 0.004424045 + - 0.27615356 + - 0.04341896 + - 0.11537788 + - 0.18267979 + - 0.006364882 + laughterScore: 0 + - frameNumber: 1155 + frameDelay: 0 + Visemes: + - 0.03852335 + - 0.0049654488 + - 0.0018781999 + - 0.010298571 + - 0.030306954 + - 0.0015031458 + - 0.00022263163 + - 0.19585423 + - 0.0058274805 + - 0.0035966693 + - 0.40698436 + - 0.036097422 + - 0.10141398 + - 0.15698595 + - 0.005541609 + laughterScore: 0 + - frameNumber: 1156 + frameDelay: 0 + Visemes: + - 0.050302982 + - 0.0103433635 + - 0.0052640717 + - 0.007847658 + - 0.03091313 + - 0.0017314949 + - 0.00028550415 + - 0.13817605 + - 0.008201618 + - 0.0034916329 + - 0.4283201 + - 0.03492312 + - 0.0843827 + - 0.19044611 + - 0.0053704297 + laughterScore: 0 + - frameNumber: 1157 + frameDelay: 0 + Visemes: + - 0.055733368 + - 0.008596012 + - 0.0044716354 + - 0.0057103364 + - 0.024382535 + - 0.0014983127 + - 0.00023040737 + - 0.09681793 + - 0.014340239 + - 0.0038053133 + - 0.3718637 + - 0.043104563 + - 0.0755255 + - 0.28638715 + - 0.007532949 + laughterScore: 0 + - frameNumber: 1158 + frameDelay: 0 + Visemes: + - 0.049073216 + - 0.006546648 + - 0.0034162565 + - 0.0040732627 + - 0.017956212 + - 0.0012578737 + - 0.00017018858 + - 0.06780535 + - 0.031787567 + - 0.00323339 + - 0.2701499 + - 0.043722793 + - 0.060143206 + - 0.43224475 + - 0.008419357 + laughterScore: 0 + - frameNumber: 1159 + frameDelay: 0 + Visemes: + - 0.0470718 + - 0.010349691 + - 0.015168292 + - 0.0031567006 + - 0.0141177615 + - 0.0022882656 + - 0.000166935 + - 0.047586262 + - 0.07131555 + - 0.0055837194 + - 0.22831541 + - 0.03193908 + - 0.04462957 + - 0.46727878 + - 0.011032213 + laughterScore: 0 + - frameNumber: 1160 + frameDelay: 0 + Visemes: + - 0.034771103 + - 0.01053179 + - 0.29940048 + - 0.0032821011 + - 0.009996655 + - 0.0016558946 + - 0.00012255735 + - 0.033368833 + - 0.051198844 + - 0.0044536437 + - 0.16177328 + - 0.022363175 + - 0.031443648 + - 0.32773724 + - 0.007900767 + laughterScore: 0 + - frameNumber: 1161 + frameDelay: 0 + Visemes: + - 0.026494324 + - 0.010928841 + - 0.49926835 + - 0.0030281341 + - 0.007168792 + - 0.0013651117 + - 0.00009682936 + - 0.023449961 + - 0.03647985 + - 0.0043413537 + - 0.113814175 + - 0.015657123 + - 0.022071518 + - 0.22973421 + - 0.0061014304 + laughterScore: 0 + - frameNumber: 1162 + frameDelay: 0 + Visemes: + - 0.020495974 + - 0.008069216 + - 0.6347716 + - 0.0026824805 + - 0.005063636 + - 0.001231593 + - 0.00007196427 + - 0.016668262 + - 0.025743583 + - 0.0133173205 + - 0.080116406 + - 0.010969788 + - 0.015483016 + - 0.16085434 + - 0.004460789 + laughterScore: 0 + - frameNumber: 1163 + frameDelay: 0 + Visemes: + - 0.015845902 + - 0.0057595335 + - 0.62968814 + - 0.0020413955 + - 0.0035612825 + - 0.0010316272 + - 0.00005183433 + - 0.011686291 + - 0.018057903 + - 0.11709336 + - 0.06020313 + - 0.00793806 + - 0.01100656 + - 0.11282185 + - 0.0032131097 + laughterScore: 0 + - frameNumber: 1164 + frameDelay: 0 + Visemes: + - 0.012208516 + - 0.004085842 + - 0.4477977 + - 0.001471663 + - 0.0025050074 + - 0.0007884842 + - 0.000036753878 + - 0.008187899 + - 0.012657555 + - 0.37080026 + - 0.043760087 + - 0.0065246955 + - 0.007862992 + - 0.07904404 + - 0.002268524 + laughterScore: 0 + - frameNumber: 1165 + frameDelay: 0 + Visemes: + - 0.009624417 + - 0.0029622507 + - 0.31429943 + - 0.0010636428 + - 0.0017850841 + - 0.0006205583 + - 0.000026017378 + - 0.0057360935 + - 0.008876293 + - 0.5559809 + - 0.031064708 + - 0.005362133 + - 0.0056404225 + - 0.055353116 + - 0.0016049105 + laughterScore: 0 + - frameNumber: 1166 + frameDelay: 0 + Visemes: + - 0.007510297 + - 0.0020915589 + - 0.2200583 + - 0.0007483602 + - 0.0013016779 + - 0.000642906 + - 0.000018533816 + - 0.004016829 + - 0.0062217116 + - 0.6874411 + - 0.02193642 + - 0.004135716 + - 0.0039937035 + - 0.038753286 + - 0.0011295683 + laughterScore: 0 + - frameNumber: 1167 + frameDelay: 0 + Visemes: + - 0.011247342 + - 0.0015712039 + - 0.15432996 + - 0.00055457844 + - 0.0034958096 + - 0.0014923029 + - 0.0000145501235 + - 0.0028631636 + - 0.005644083 + - 0.72987723 + - 0.041420188 + - 0.0140740005 + - 0.0039649685 + - 0.028599443 + - 0.00085115095 + laughterScore: 0 + - frameNumber: 1168 + frameDelay: 0 + Visemes: + - 0.01726021 + - 0.0011404358 + - 0.108255394 + - 0.00044890025 + - 0.0054717446 + - 0.0016894809 + - 0.00001885986 + - 0.0020292483 + - 0.005706623 + - 0.55386496 + - 0.15111183 + - 0.12379444 + - 0.0036117926 + - 0.024957862 + - 0.00063819083 + laughterScore: 0 + - frameNumber: 1169 + frameDelay: 0 + Visemes: + - 0.016582634 + - 0.0008257555 + - 0.07583325 + - 0.00035117075 + - 0.004725996 + - 0.0013980343 + - 0.000025066753 + - 0.0014277685 + - 0.0042601824 + - 0.3948704 + - 0.2906769 + - 0.18753952 + - 0.0028869007 + - 0.018138379 + - 0.00045804016 + laughterScore: 0 + - frameNumber: 1170 + frameDelay: 0 + Visemes: + - 0.013900173 + - 0.0006338401 + - 0.05316896 + - 0.00028242473 + - 0.0038047838 + - 0.0011048438 + - 0.00006428764 + - 0.0010292076 + - 0.003108494 + - 0.27749962 + - 0.4904399 + - 0.13926843 + - 0.0023782174 + - 0.012928888 + - 0.00038792886 + laughterScore: 0 + - frameNumber: 1171 + frameDelay: 0 + Visemes: + - 0.012469498 + - 0.0008989945 + - 0.037598114 + - 0.00031283527 + - 0.004481595 + - 0.0018064886 + - 0.00092952483 + - 0.0008406242 + - 0.0027510405 + - 0.19515924 + - 0.6291053 + - 0.10030592 + - 0.0020780133 + - 0.009275876 + - 0.0019868652 + laughterScore: 0 + - frameNumber: 1172 + frameDelay: 0 + Visemes: + - 0.012186045 + - 0.0012768907 + - 0.026730964 + - 0.0003301266 + - 0.0048955632 + - 0.003256944 + - 0.0013388891 + - 0.00086005905 + - 0.003691738 + - 0.13789643 + - 0.7227385 + - 0.07248827 + - 0.002092438 + - 0.0066290027 + - 0.0035881046 + laughterScore: 0 + - frameNumber: 1173 + frameDelay: 0 + Visemes: + - 0.013521989 + - 0.0022111237 + - 0.019400477 + - 0.00074217 + - 0.007840966 + - 0.026085095 + - 0.004071281 + - 0.0021651275 + - 0.0060899416 + - 0.09851382 + - 0.7523378 + - 0.052671555 + - 0.0061357887 + - 0.004710697 + - 0.0035021964 + laughterScore: 0 + - frameNumber: 1174 + frameDelay: 0 + Visemes: + - 0.015194796 + - 0.003081854 + - 0.0145489955 + - 0.0009393606 + - 0.012822805 + - 0.05543303 + - 0.0044569243 + - 0.0040900903 + - 0.0072821863 + - 0.06930743 + - 0.7507601 + - 0.039647777 + - 0.016213967 + - 0.0033410767 + - 0.0028796908 + laughterScore: 0 + - frameNumber: 1175 + frameDelay: 0 + Visemes: + - 0.012158694 + - 0.27962974 + - 0.013637922 + - 0.002481964 + - 0.019494865 + - 0.039464235 + - 0.0032372267 + - 0.0029842444 + - 0.0051602237 + - 0.048532084 + - 0.5293648 + - 0.027800782 + - 0.011631169 + - 0.0023430025 + - 0.0020791362 + laughterScore: 0 + - frameNumber: 1176 + frameDelay: 0 + Visemes: + - 0.0098799495 + - 0.47406015 + - 0.01322913 + - 0.0040790164 + - 0.025045728 + - 0.028298082 + - 0.0023470228 + - 0.002236446 + - 0.0036234776 + - 0.033976372 + - 0.3724639 + - 0.0194686 + - 0.008170761 + - 0.0016417176 + - 0.0014797145 + laughterScore: 0 + - frameNumber: 1177 + frameDelay: 0 + Visemes: + - 0.009162122 + - 0.6161079 + - 0.011679169 + - 0.005236461 + - 0.02379108 + - 0.020414956 + - 0.0016692796 + - 0.0016638048 + - 0.0025419865 + - 0.023785394 + - 0.26234525 + - 0.013639612 + - 0.005747633 + - 0.0011522372 + - 0.0010631427 + laughterScore: 0 + - frameNumber: 1178 + frameDelay: 0 + Visemes: + - 0.008393799 + - 0.7240654 + - 0.009602342 + - 0.0044028074 + - 0.019091463 + - 0.014476219 + - 0.0011811096 + - 0.0013001219 + - 0.0017858007 + - 0.01665104 + - 0.18387333 + - 0.009559641 + - 0.004056961 + - 0.00080894906 + - 0.00075099256 + laughterScore: 0 + - frameNumber: 1179 + frameDelay: 0 + Visemes: + - 0.0090322895 + - 0.7868211 + - 0.008727552 + - 0.0032273899 + - 0.02169174 + - 0.011040393 + - 0.0031264992 + - 0.0036095076 + - 0.0012990905 + - 0.011680377 + - 0.12888546 + - 0.006703496 + - 0.0030457128 + - 0.0005719884 + - 0.0005373951 + laughterScore: 0 + - frameNumber: 1180 + frameDelay: 0 + Visemes: + - 0.009652863 + - 0.8207675 + - 0.0075872717 + - 0.0024503635 + - 0.016484402 + - 0.00927342 + - 0.0067157233 + - 0.019579927 + - 0.0010369943 + - 0.008205367 + - 0.090274274 + - 0.004702722 + - 0.002481098 + - 0.00040328834 + - 0.00038480907 + laughterScore: 0 + - frameNumber: 1181 + frameDelay: 0 + Visemes: + - 0.010709776 + - 0.84896195 + - 0.0064012026 + - 0.001987009 + - 0.011994424 + - 0.010957712 + - 0.007970734 + - 0.023474686 + - 0.0010127719 + - 0.0058003855 + - 0.06326058 + - 0.0033359393 + - 0.003540806 + - 0.00028797355 + - 0.0003040651 + laughterScore: 0 + - frameNumber: 1182 + frameDelay: 0 + Visemes: + - 0.0122722415 + - 0.7075705 + - 0.0046846764 + - 0.001525108 + - 0.008970717 + - 0.061146274 + - 0.0075109624 + - 0.018059572 + - 0.008758116 + - 0.004682619 + - 0.045780975 + - 0.00285633 + - 0.11451484 + - 0.0002743019 + - 0.0013927398 + laughterScore: 0 + - frameNumber: 1183 + frameDelay: 0 + Visemes: + - 0.021999745 + - 0.49550185 + - 0.0032952551 + - 0.0011120569 + - 0.006410323 + - 0.063140035 + - 0.005521372 + - 0.012784795 + - 0.007574862 + - 0.00336776 + - 0.03671683 + - 0.024812955 + - 0.30289957 + - 0.0002557499 + - 0.014606844 + laughterScore: 0 + - frameNumber: 1184 + frameDelay: 0 + Visemes: + - 0.029578155 + - 0.3469226 + - 0.002316769 + - 0.00080198864 + - 0.00468195 + - 0.052369602 + - 0.0039750296 + - 0.009062935 + - 0.006219741 + - 0.0024216014 + - 0.028039515 + - 0.038528375 + - 0.45397705 + - 0.0002082121 + - 0.020896472 + laughterScore: 0 + - frameNumber: 1185 + frameDelay: 0 + Visemes: + - 0.033204183 + - 0.24299254 + - 0.0016332744 + - 0.0006354802 + - 0.0041641206 + - 0.03865209 + - 0.0029557564 + - 0.0064201723 + - 0.0075111883 + - 0.0019540277 + - 0.021608904 + - 0.030395418 + - 0.5869957 + - 0.00016992398 + - 0.020707225 + laughterScore: 0 + - frameNumber: 1186 + frameDelay: 0 + Visemes: + - 0.030575309 + - 0.17021945 + - 0.001150785 + - 0.00050793507 + - 0.0035012783 + - 0.02905805 + - 0.0021509135 + - 0.0045351116 + - 0.009469673 + - 0.0014401377 + - 0.015465588 + - 0.022264125 + - 0.6933838 + - 0.00013225371 + - 0.016145615 + laughterScore: 0 + - frameNumber: 1187 + frameDelay: 0 + Visemes: + - 0.02822485 + - 0.11924937 + - 0.00082247413 + - 0.00039318722 + - 0.003002979 + - 0.026192518 + - 0.0015857157 + - 0.0032975394 + - 0.013545133 + - 0.001048264 + - 0.010932889 + - 0.01625496 + - 0.7633382 + - 0.00009676537 + - 0.012015181 + laughterScore: 0 + - frameNumber: 1188 + frameDelay: 0 + Visemes: + - 0.025236037 + - 0.08352037 + - 0.00059917074 + - 0.00029731577 + - 0.0028203344 + - 0.019365525 + - 0.0012164684 + - 0.0024567142 + - 0.010602981 + - 0.00075208186 + - 0.0077204085 + - 0.012131476 + - 0.82420194 + - 0.000070261995 + - 0.009009004 + laughterScore: 0 + - frameNumber: 1189 + frameDelay: 0 + Visemes: + - 0.023363914 + - 0.058503825 + - 0.00046862714 + - 0.00022428928 + - 0.0025083474 + - 0.015014736 + - 0.0010756818 + - 0.0021057143 + - 0.008220525 + - 0.0005542512 + - 0.0054737707 + - 0.0097981775 + - 0.8657204 + - 0.00005358617 + - 0.006914242 + laughterScore: 0 + - frameNumber: 1190 + frameDelay: 0 + Visemes: + - 0.021650849 + - 0.041105356 + - 0.0003818278 + - 0.00016693329 + - 0.0056745503 + - 0.010859365 + - 0.0009001666 + - 0.0018972019 + - 0.006180124 + - 0.0004135275 + - 0.0038569528 + - 0.009015188 + - 0.8927496 + - 0.000042386564 + - 0.0051060044 + laughterScore: 0 + - frameNumber: 1191 + frameDelay: 0 + Visemes: + - 0.027343562 + - 0.029997228 + - 0.0006058721 + - 0.0002870285 + - 0.023069207 + - 0.009601121 + - 0.0013906371 + - 0.0028002667 + - 0.0068041766 + - 0.0003921552 + - 0.0027904774 + - 0.009411246 + - 0.88120556 + - 0.000046040448 + - 0.0042554433 + laughterScore: 0 + - frameNumber: 1192 + frameDelay: 0 + Visemes: + - 0.029888626 + - 0.03097651 + - 0.0006760934 + - 0.0004750961 + - 0.06656174 + - 0.009904623 + - 0.00512038 + - 0.0032722794 + - 0.0051042326 + - 0.0002991419 + - 0.0020081718 + - 0.008107623 + - 0.83397824 + - 0.000036120826 + - 0.0035911296 + laughterScore: 0 + - frameNumber: 1193 + frameDelay: 0 + Visemes: + - 0.031067472 + - 0.13273048 + - 0.0007191464 + - 0.002023657 + - 0.12550607 + - 0.010579429 + - 0.0077315895 + - 0.00342898 + - 0.0037658918 + - 0.00022343935 + - 0.0014519533 + - 0.005886072 + - 0.6720886 + - 0.000029142588 + - 0.0027680523 + laughterScore: 0 + - frameNumber: 1194 + frameDelay: 0 + Visemes: + - 0.034356076 + - 0.28117153 + - 0.0007081003 + - 0.0040075975 + - 0.1490885 + - 0.009366403 + - 0.0063842908 + - 0.00328709 + - 0.002853726 + - 0.00016629708 + - 0.0010537732 + - 0.0042521027 + - 0.5012587 + - 0.000026306916 + - 0.0020195204 + laughterScore: 0 + - frameNumber: 1195 + frameDelay: 0 + Visemes: + - 0.042694137 + - 0.36560115 + - 0.0008327003 + - 0.010839514 + - 0.17909482 + - 0.010293597 + - 0.006179614 + - 0.003931697 + - 0.0022817478 + - 0.00013889147 + - 0.00080732745 + - 0.0031569435 + - 0.3726032 + - 0.000034226156 + - 0.0015103631 + laughterScore: 0 + - frameNumber: 1196 + frameDelay: 0 + Visemes: + - 0.03807202 + - 0.25681713 + - 0.00060315337 + - 0.013431598 + - 0.40379483 + - 0.0073596956 + - 0.0045067593 + - 0.008525078 + - 0.0017931033 + - 0.000119750504 + - 0.00062643207 + - 0.0022304268 + - 0.26098767 + - 0.00004141015 + - 0.0010908406 + laughterScore: 0 + - frameNumber: 1197 + frameDelay: 0 + Visemes: + - 0.038931377 + - 0.17983189 + - 0.0005002815 + - 0.010996152 + - 0.5509997 + - 0.0054060877 + - 0.0039409287 + - 0.009254048 + - 0.0013751743 + - 0.00012444165 + - 0.009047459 + - 0.0016861304 + - 0.1863738 + - 0.000060785664 + - 0.0014716818 + laughterScore: 0 + - frameNumber: 1198 + frameDelay: 0 + Visemes: + - 0.0306423 + - 0.1258949 + - 0.0003650821 + - 0.008170255 + - 0.66049093 + - 0.005032493 + - 0.003131328 + - 0.006761707 + - 0.00097455457 + - 0.00010069875 + - 0.023894163 + - 0.001504221 + - 0.13166462 + - 0.00006625916 + - 0.001306403 + laughterScore: 0 + - frameNumber: 1199 + frameDelay: 0 + Visemes: + - 0.024360398 + - 0.08814555 + - 0.00027669643 + - 0.0061760414 + - 0.631112 + - 0.003964761 + - 0.0023087342 + - 0.0048220465 + - 0.00076627784 + - 0.00020316016 + - 0.06213823 + - 0.062261667 + - 0.105512135 + - 0.00062380935 + - 0.007328464 + laughterScore: 0 + - frameNumber: 1200 + frameDelay: 0 + Visemes: + - 0.019036073 + - 0.061704755 + - 0.00019792824 + - 0.0044255448 + - 0.4447225 + - 0.0028295761 + - 0.0016399834 + - 0.003381651 + - 0.0006515655 + - 0.00023031764 + - 0.06911138 + - 0.24482353 + - 0.093910694 + - 0.00076837104 + - 0.05256616 + laughterScore: 0 + - frameNumber: 1201 + frameDelay: 0 + Visemes: + - 0.020433826 + - 0.043206215 + - 0.00014300495 + - 0.0032503302 + - 0.31320986 + - 0.002113919 + - 0.0011612395 + - 0.0023756996 + - 0.0005238437 + - 0.000282877 + - 0.08604811 + - 0.3184209 + - 0.12179266 + - 0.00061352097 + - 0.08642402 + laughterScore: 0 + - frameNumber: 1202 + frameDelay: 0 + Visemes: + - 0.025891328 + - 0.030446218 + - 0.00012374192 + - 0.0026623756 + - 0.22532177 + - 0.0022750814 + - 0.00085773214 + - 0.0016884495 + - 0.0006238825 + - 0.0012048208 + - 0.09758019 + - 0.3185691 + - 0.17306706 + - 0.0005491207 + - 0.119139135 + laughterScore: 0 + - frameNumber: 1203 + frameDelay: 0 + Visemes: + - 0.047007706 + - 0.022109171 + - 0.00012936592 + - 0.00218958 + - 0.17324139 + - 0.0046725296 + - 0.0007249033 + - 0.0012144976 + - 0.00075169536 + - 0.0024122729 + - 0.10240587 + - 0.34631473 + - 0.17667188 + - 0.0005645795 + - 0.11958982 + laughterScore: 0 + - frameNumber: 1204 + frameDelay: 0 + Visemes: + - 0.098993905 + - 0.017112033 + - 0.00015058382 + - 0.0017184028 + - 0.13719653 + - 0.007825188 + - 0.00060248806 + - 0.00085560355 + - 0.00086174003 + - 0.0021478548 + - 0.13030204 + - 0.33835763 + - 0.16018197 + - 0.0008069691 + - 0.10288705 + laughterScore: 0 + - frameNumber: 1205 + frameDelay: 0 + Visemes: + - 0.21849254 + - 0.016555106 + - 0.00018625407 + - 0.0020010052 + - 0.1474811 + - 0.017409831 + - 0.0023097934 + - 0.0007031099 + - 0.0009331118 + - 0.0021768839 + - 0.098916665 + - 0.26613078 + - 0.13635778 + - 0.0017117411 + - 0.088634305 + laughterScore: 0 + - frameNumber: 1206 + frameDelay: 0 + Visemes: + - 0.3050971 + - 0.018601716 + - 0.00024133072 + - 0.0019201485 + - 0.12274438 + - 0.02904765 + - 0.0025472343 + - 0.00068985095 + - 0.0012487133 + - 0.002624344 + - 0.07488421 + - 0.22670887 + - 0.14390261 + - 0.0032109246 + - 0.06653088 + laughterScore: 0 + - frameNumber: 1207 + frameDelay: 0 + Visemes: + - 0.25975212 + - 0.017319739 + - 0.00024469307 + - 0.0015756898 + - 0.103754796 + - 0.024140595 + - 0.002218307 + - 0.00057977566 + - 0.0016167169 + - 0.001926209 + - 0.05832834 + - 0.29730168 + - 0.18171099 + - 0.002533196 + - 0.046997163 + laughterScore: 0 + - frameNumber: 1208 + frameDelay: 0 + Visemes: + - 0.19187225 + - 0.012684426 + - 0.00020386247 + - 0.0012399097 + - 0.074674465 + - 0.018993892 + - 0.0015780292 + - 0.00043076248 + - 0.0023323349 + - 0.0014294584 + - 0.042927038 + - 0.4552756 + - 0.16154817 + - 0.0018590185 + - 0.03295078 + laughterScore: 0 + - frameNumber: 1209 + frameDelay: 0 + Visemes: + - 0.14063981 + - 0.009037939 + - 0.00015371534 + - 0.00089289463 + - 0.052709028 + - 0.013715733 + - 0.0011103833 + - 0.00030591857 + - 0.0041850787 + - 0.0010283916 + - 0.030785708 + - 0.5907686 + - 0.13026002 + - 0.0013155978 + - 0.023091225 + laughterScore: 0 + - frameNumber: 1210 + frameDelay: 0 + Visemes: + - 0.10299453 + - 0.006387797 + - 0.00010911489 + - 0.00063436205 + - 0.03720719 + - 0.009785137 + - 0.00077903894 + - 0.00021800023 + - 0.0065385676 + - 0.00076722424 + - 0.022125373 + - 0.6956922 + - 0.09965225 + - 0.0009279454 + - 0.016181355 + laughterScore: 0 + - frameNumber: 1211 + frameDelay: 0 + Visemes: + - 0.075787716 + - 0.004499558 + - 0.000076669836 + - 0.00045067468 + - 0.026226422 + - 0.0069003487 + - 0.00054613646 + - 0.00015640986 + - 0.007870626 + - 0.00056486536 + - 0.01567607 + - 0.7750402 + - 0.07421247 + - 0.00065554597 + - 0.011336341 + laughterScore: 0 + - frameNumber: 1212 + frameDelay: 0 + Visemes: + - 0.056587987 + - 0.0031761148 + - 0.000054130218 + - 0.0003267053 + - 0.01876162 + - 0.004862233 + - 0.000383541 + - 0.0001136143 + - 0.010425447 + - 0.0005286293 + - 0.011358423 + - 0.82896996 + - 0.055967815 + - 0.00047386243 + - 0.008009953 + laughterScore: 0 + - frameNumber: 1213 + frameDelay: 0 + Visemes: + - 0.043662112 + - 0.002367389 + - 0.000041726114 + - 0.0002598554 + - 0.014128944 + - 0.0034815075 + - 0.00027079726 + - 0.00008857055 + - 0.0410554 + - 0.00076239626 + - 0.008469908 + - 0.83289975 + - 0.046497792 + - 0.00034758574 + - 0.0056662923 + laughterScore: 0 + - frameNumber: 1214 + frameDelay: 0 + Visemes: + - 0.032387823 + - 0.0022808257 + - 0.000039246603 + - 0.00018777756 + - 0.010060371 + - 0.0026573446 + - 0.00019155185 + - 0.00006676997 + - 0.32164216 + - 0.00054061523 + - 0.006023484 + - 0.586921 + - 0.03278834 + - 0.0002435709 + - 0.0039690887 + laughterScore: 0 + - frameNumber: 1215 + frameDelay: 0 + Visemes: + - 0.03113684 + - 0.001845146 + - 0.000113748225 + - 0.0002014936 + - 0.01290353 + - 0.0022396408 + - 0.0001540044 + - 0.000091087844 + - 0.5089133 + - 0.00038591435 + - 0.0044878973 + - 0.41151115 + - 0.023055846 + - 0.00017689254 + - 0.0027834857 + laughterScore: 0 + - frameNumber: 1216 + frameDelay: 0 + Visemes: + - 0.032990523 + - 0.0014199222 + - 0.00013243602 + - 0.0009631249 + - 0.12012703 + - 0.0034472211 + - 0.000117571355 + - 0.000093441435 + - 0.5262443 + - 0.0002865846 + - 0.004542565 + - 0.2891444 + - 0.01830018 + - 0.00017668842 + - 0.0020140198 + laughterScore: 0 + - frameNumber: 1217 + frameDelay: 0 + Visemes: + - 0.03665495 + - 0.0010693511 + - 0.000100291894 + - 0.007359431 + - 0.10146378 + - 0.0041321707 + - 0.00010949459 + - 0.00008687894 + - 0.3999033 + - 0.000596117 + - 0.10868549 + - 0.24451126 + - 0.09308902 + - 0.0006653681 + - 0.0015730737 + laughterScore: 0 + - frameNumber: 1218 + frameDelay: 0 + Visemes: + - 0.034322664 + - 0.008698754 + - 0.0003263115 + - 0.0052282624 + - 0.07191051 + - 0.0044347188 + - 0.000087693734 + - 0.000064285145 + - 0.3259353 + - 0.0008094216 + - 0.20030499 + - 0.19235086 + - 0.15370779 + - 0.0006571324 + - 0.0011613129 + laughterScore: 0 + - frameNumber: 1219 + frameDelay: 0 + Visemes: + - 0.033014268 + - 0.16806927 + - 0.0024030888 + - 0.0038251928 + - 0.054401156 + - 0.004926926 + - 0.00007887508 + - 0.00008658931 + - 0.27734312 + - 0.00066181284 + - 0.20947433 + - 0.13507764 + - 0.10929855 + - 0.00047502818 + - 0.00086412986 + laughterScore: 0 + - frameNumber: 1220 + frameDelay: 0 + Visemes: + - 0.027281996 + - 0.40574488 + - 0.00217473 + - 0.0029568558 + - 0.039047312 + - 0.0036652978 + - 0.00008707737 + - 0.00012997551 + - 0.19778238 + - 0.0005340264 + - 0.14832982 + - 0.0945986 + - 0.0766353 + - 0.00033690865 + - 0.0006948327 + laughterScore: 0 + - frameNumber: 1221 + frameDelay: 0 + Visemes: + - 0.020976633 + - 0.57849467 + - 0.0015788442 + - 0.0021403523 + - 0.027452044 + - 0.0026854258 + - 0.000072227835 + - 0.00010379584 + - 0.1396009 + - 0.00040817086 + - 0.10434137 + - 0.06696564 + - 0.054349385 + - 0.00024196725 + - 0.0005885363 + laughterScore: 0 + - frameNumber: 1222 + frameDelay: 0 + Visemes: + - 0.016412605 + - 0.42027056 + - 0.0011626963 + - 0.001523191 + - 0.019259501 + - 0.0020224936 + - 0.00006275613 + - 0.00008809721 + - 0.09783116 + - 0.00028969455 + - 0.07820958 + - 0.25267097 + - 0.10947849 + - 0.00018393242 + - 0.00053427654 + laughterScore: 0 + - frameNumber: 1223 + frameDelay: 0 + Visemes: + - 0.014558399 + - 0.2948337 + - 0.000834129 + - 0.0011128276 + - 0.013528227 + - 0.0015554752 + - 0.000051106796 + - 0.0000846598 + - 0.068644546 + - 0.00022345799 + - 0.057166647 + - 0.39241508 + - 0.15311736 + - 0.00021494718 + - 0.0016594322 + laughterScore: 0 + - frameNumber: 1224 + frameDelay: 0 + Visemes: + - 0.012911333 + - 0.20670767 + - 0.00059115916 + - 0.0007932757 + - 0.009531681 + - 0.0011753571 + - 0.00003835589 + - 0.00007734568 + - 0.04821088 + - 0.00016286681 + - 0.041199792 + - 0.54550314 + - 0.13156295 + - 0.00017583426 + - 0.0013583915 + laughterScore: 0 + - frameNumber: 1225 + frameDelay: 0 + Visemes: + - 0.011429248 + - 0.14540784 + - 0.0004242987 + - 0.00057308865 + - 0.0068272906 + - 0.0017509887 + - 0.000036851434 + - 0.00007560658 + - 0.034987148 + - 0.00015614378 + - 0.030236857 + - 0.6584194 + - 0.10844559 + - 0.000151829 + - 0.0010778327 + laughterScore: 0 + - frameNumber: 1226 + frameDelay: 0 + Visemes: + - 0.016191576 + - 0.102385215 + - 0.00031662645 + - 0.00045186983 + - 0.005312439 + - 0.0047463547 + - 0.00005065928 + - 0.00010079966 + - 0.029319406 + - 0.00021301271 + - 0.022907862 + - 0.68559974 + - 0.13141024 + - 0.00015018697 + - 0.00084399374 + laughterScore: 0 + - frameNumber: 1227 + frameDelay: 0 + Visemes: + - 0.017357128 + - 0.07231872 + - 0.00023341597 + - 0.00046282166 + - 0.007181471 + - 0.004872456 + - 0.00007912338 + - 0.00012936612 + - 0.030522073 + - 0.00033117103 + - 0.01983612 + - 0.6925171 + - 0.15316275 + - 0.00020572863 + - 0.0007905429 + laughterScore: 0 + - frameNumber: 1228 + frameDelay: 0 + Visemes: + - 0.020753093 + - 0.052441537 + - 0.00025198527 + - 0.00056877534 + - 0.060532723 + - 0.016174506 + - 0.00038321983 + - 0.0002693228 + - 0.069095805 + - 0.00035019853 + - 0.016475545 + - 0.5843319 + - 0.1774723 + - 0.00015973308 + - 0.0007393143 + laughterScore: 0 + - frameNumber: 1229 + frameDelay: 0 + Visemes: + - 0.031015076 + - 0.03763005 + - 0.000207911 + - 0.00052929233 + - 0.14635414 + - 0.015723892 + - 0.0003029921 + - 0.0003101009 + - 0.10230068 + - 0.00045751006 + - 0.030077428 + - 0.45004115 + - 0.18425998 + - 0.00019373343 + - 0.00059605256 + laughterScore: 0 + - frameNumber: 1230 + frameDelay: 0 + Visemes: + - 0.07412298 + - 0.028534159 + - 0.0002664752 + - 0.0007517213 + - 0.19815286 + - 0.014625482 + - 0.00039618372 + - 0.00033777903 + - 0.101166554 + - 0.0006065816 + - 0.03402923 + - 0.33797473 + - 0.20816457 + - 0.00023982758 + - 0.00063085184 + laughterScore: 0 + - frameNumber: 1231 + frameDelay: 0 + Visemes: + - 0.14171393 + - 0.020752218 + - 0.00024086461 + - 0.0008552176 + - 0.26423714 + - 0.01299157 + - 0.000711612 + - 0.0009944999 + - 0.07984269 + - 0.0016678858 + - 0.045528226 + - 0.26600352 + - 0.16262594 + - 0.0011728562 + - 0.0006618177 + laughterScore: 0 + - frameNumber: 1232 + frameDelay: 0 + Visemes: + - 0.12669717 + - 0.014685301 + - 0.00019805614 + - 0.0006646105 + - 0.20905069 + - 0.00947143 + - 0.00066727604 + - 0.0008864951 + - 0.05943265 + - 0.0013355968 + - 0.21082364 + - 0.24703361 + - 0.11716416 + - 0.0013497398 + - 0.00053961045 + laughterScore: 0 + - frameNumber: 1233 + frameDelay: 0 + Visemes: + - 0.09915816 + - 0.010344127 + - 0.00015744871 + - 0.000524524 + - 0.14780138 + - 0.007091085 + - 0.0004998158 + - 0.00064150186 + - 0.042307205 + - 0.00099893 + - 0.303392 + - 0.30114508 + - 0.08315123 + - 0.0023889407 + - 0.00039858485 + laughterScore: 0 + - frameNumber: 1234 + frameDelay: 0 + Visemes: + - 0.076409474 + - 0.0072630034 + - 0.000113010494 + - 0.00037691998 + - 0.10365665 + - 0.0051399465 + - 0.00035650644 + - 0.00045316818 + - 0.02972836 + - 0.00071981037 + - 0.33008873 + - 0.38479412 + - 0.058698896 + - 0.0019123807 + - 0.00028902022 + laughterScore: 0 + - frameNumber: 1235 + frameDelay: 0 + Visemes: + - 0.059163228 + - 0.005139177 + - 0.00008990359 + - 0.00026813717 + - 0.073720716 + - 0.003760451 + - 0.00025160474 + - 0.00032905006 + - 0.02087291 + - 0.00059426477 + - 0.28934443 + - 0.5030401 + - 0.041203808 + - 0.0018045243 + - 0.0004176881 + laughterScore: 0 + - frameNumber: 1236 + frameDelay: 0 + Visemes: + - 0.050660208 + - 0.0049341326 + - 0.00016337557 + - 0.00020229729 + - 0.06232454 + - 0.0028179039 + - 0.00018914722 + - 0.00032293604 + - 0.017193548 + - 0.0008160143 + - 0.23810948 + - 0.57517105 + - 0.028943982 + - 0.002561113 + - 0.015590244 + laughterScore: 0 + - frameNumber: 1237 + frameDelay: 0 + Visemes: + - 0.04726168 + - 0.01873561 + - 0.008920169 + - 0.00023128325 + - 0.050843634 + - 0.0020757602 + - 0.00015599428 + - 0.00031640375 + - 0.024318665 + - 0.0016963547 + - 0.1891291 + - 0.6152983 + - 0.020393906 + - 0.0021938193 + - 0.018429311 + laughterScore: 0 + - frameNumber: 1238 + frameDelay: 0 + Visemes: + - 0.050058693 + - 0.16467425 + - 0.103591025 + - 0.00086271163 + - 0.044528037 + - 0.0017899959 + - 0.00014187847 + - 0.00046093308 + - 0.018219281 + - 0.0014076731 + - 0.14629541 + - 0.4387143 + - 0.014419923 + - 0.0016244086 + - 0.013211465 + laughterScore: 0 + - frameNumber: 1239 + frameDelay: 0 + Visemes: + - 0.044881307 + - 0.21211815 + - 0.2323208 + - 0.01317755 + - 0.04145176 + - 0.0014038176 + - 0.00022415572 + - 0.00041381747 + - 0.013871172 + - 0.0012756098 + - 0.10561421 + - 0.30730972 + - 0.010270757 + - 0.0011790326 + - 0.014488143 + laughterScore: 0 + - frameNumber: 1240 + frameDelay: 0 + Visemes: + - 0.038033713 + - 0.16597074 + - 0.2390505 + - 0.013501156 + - 0.031628717 + - 0.0014939038 + - 0.00093806663 + - 0.00041322486 + - 0.010643441 + - 0.0014075902 + - 0.23352706 + - 0.21679075 + - 0.031576954 + - 0.00085548934 + - 0.014168699 + laughterScore: 0 + - frameNumber: 1241 + frameDelay: 0 + Visemes: + - 0.028227147 + - 0.116215624 + - 0.16790165 + - 0.00950941 + - 0.022318205 + - 0.0010570479 + - 0.000678982 + - 0.00030196685 + - 0.007578712 + - 0.002162274 + - 0.43350232 + - 0.15288797 + - 0.044592522 + - 0.0006929086 + - 0.012373258 + laughterScore: 0 + - frameNumber: 1242 + frameDelay: 0 + Visemes: + - 0.030853271 + - 0.08172088 + - 0.1281305 + - 0.0136264255 + - 0.15096769 + - 0.0062329504 + - 0.0031232075 + - 0.0012046668 + - 0.013103463 + - 0.0049642306 + - 0.39573318 + - 0.10761938 + - 0.053182274 + - 0.00067344005 + - 0.00886442 + laughterScore: 0 + - frameNumber: 1243 + frameDelay: 0 + Visemes: + - 0.0232637 + - 0.05724054 + - 0.089957625 + - 0.010935338 + - 0.39625448 + - 0.0051134005 + - 0.006039572 + - 0.0010441015 + - 0.009402512 + - 0.0035451385 + - 0.277744 + - 0.07534838 + - 0.037390348 + - 0.00047777995 + - 0.0062430985 + laughterScore: 0 + - frameNumber: 1244 + frameDelay: 0 + Visemes: + - 0.01940469 + - 0.04011406 + - 0.06301965 + - 0.008272621 + - 0.57097197 + - 0.003953674 + - 0.004608088 + - 0.0020068472 + - 0.0066358144 + - 0.0025145842 + - 0.19468601 + - 0.0527558 + - 0.026281893 + - 0.00034440015 + - 0.0044299 + laughterScore: 0 + - frameNumber: 1245 + frameDelay: 0 + Visemes: + - 0.014604036 + - 0.02812452 + - 0.044176683 + - 0.005921759 + - 0.68864655 + - 0.007410084 + - 0.0034324655 + - 0.0014780103 + - 0.004652866 + - 0.0018709429 + - 0.14020792 + - 0.03697152 + - 0.018467722 + - 0.00044285343 + - 0.0035920942 + laughterScore: 0 + - frameNumber: 1246 + frameDelay: 0 + Visemes: + - 0.012066167 + - 0.019702468 + - 0.030958004 + - 0.004202295 + - 0.76902235 + - 0.00924144 + - 0.00249329 + - 0.0010667968 + - 0.0032623087 + - 0.0013658226 + - 0.1022929 + - 0.026176115 + - 0.013005238 + - 0.0022491387 + - 0.0028956912 + laughterScore: 0 + - frameNumber: 1247 + frameDelay: 0 + Visemes: + - 0.0129036475 + - 0.01390392 + - 0.021698456 + - 0.0029654836 + - 0.7441751 + - 0.014077563 + - 0.0018557325 + - 0.00075288414 + - 0.0022943974 + - 0.0011231252 + - 0.118258715 + - 0.030281015 + - 0.009210336 + - 0.024237234 + - 0.002262438 + laughterScore: 0 + - frameNumber: 1248 + frameDelay: 0 + Visemes: + - 0.012125017 + - 0.009753623 + - 0.015214887 + - 0.002087848 + - 0.52544516 + - 0.011591323 + - 0.00132599 + - 0.0005291327 + - 0.0016569945 + - 0.0010421412 + - 0.32445255 + - 0.023566432 + - 0.0065541156 + - 0.06298722 + - 0.0016676129 + laughterScore: 0 + - frameNumber: 1249 + frameDelay: 0 + Visemes: + - 0.011876388 + - 0.0068338155 + - 0.010655744 + - 0.0014706808 + - 0.36821708 + - 0.00857171 + - 0.0009306755 + - 0.0003713943 + - 0.0012889974 + - 0.009081625 + - 0.38380283 + - 0.017515263 + - 0.0046475143 + - 0.17354235 + - 0.0011940035 + laughterScore: 0 + - frameNumber: 1250 + frameDelay: 0 + Visemes: + - 0.01769444 + - 0.0048907134 + - 0.007461588 + - 0.001061565 + - 0.2580955 + - 0.0067754523 + - 0.00065540354 + - 0.00026360448 + - 0.0010542008 + - 0.030715756 + - 0.48739457 + - 0.013199969 + - 0.0035182873 + - 0.16635157 + - 0.0008674253 + laughterScore: 0 + - frameNumber: 1251 + frameDelay: 0 + Visemes: + - 0.024909273 + - 0.030280607 + - 0.005274495 + - 0.00079640554 + - 0.18147185 + - 0.005209717 + - 0.00047445262 + - 0.00020409214 + - 0.0012808805 + - 0.1968523 + - 0.37335098 + - 0.0106092915 + - 0.004275397 + - 0.16434571 + - 0.0006645635 + laughterScore: 0 + - frameNumber: 1252 + frameDelay: 0 + Visemes: + - 0.024706006 + - 0.04868532 + - 0.0142189395 + - 0.0006063083 + - 0.12881842 + - 0.05271399 + - 0.0004966138 + - 0.00032393582 + - 0.0016561256 + - 0.32421845 + - 0.26421565 + - 0.008307599 + - 0.0038008313 + - 0.12634985 + - 0.0008819781 + laughterScore: 0 + - frameNumber: 1253 + frameDelay: 0 + Visemes: + - 0.021290902 + - 0.09151481 + - 0.13960196 + - 0.0004767434 + - 0.096217595 + - 0.1190348 + - 0.0004332541 + - 0.0013889056 + - 0.0014394581 + - 0.24426287 + - 0.18646169 + - 0.0058308984 + - 0.0029375162 + - 0.088460095 + - 0.0006485421 + laughterScore: 0 + - frameNumber: 1254 + frameDelay: 0 + Visemes: + - 0.020179 + - 0.08667867 + - 0.319496 + - 0.0005406051 + - 0.07545609 + - 0.11749952 + - 0.0004283936 + - 0.0059032557 + - 0.0011231184 + - 0.17287236 + - 0.13120759 + - 0.0040886034 + - 0.002121023 + - 0.06193467 + - 0.00047120656 + laughterScore: 0 + - frameNumber: 1255 + frameDelay: 0 + Visemes: + - 0.016973522 + - 0.07569651 + - 0.4916526 + - 0.0009504348 + - 0.056913666 + - 0.087951474 + - 0.00033422367 + - 0.0058633983 + - 0.000822245 + - 0.12233208 + - 0.09230745 + - 0.0028710272 + - 0.0016284237 + - 0.043361407 + - 0.00034158785 + laughterScore: 0 + - frameNumber: 1256 + frameDelay: 0 + Visemes: + - 0.016309343 + - 0.07048908 + - 0.59626436 + - 0.0031266427 + - 0.056782708 + - 0.06297773 + - 0.0003298545 + - 0.00583794 + - 0.00066283776 + - 0.08727351 + - 0.06582207 + - 0.0020446202 + - 0.0014269445 + - 0.030370886 + - 0.00028154196 + laughterScore: 0 + - frameNumber: 1257 + frameDelay: 0 + Visemes: + - 0.016874257 + - 0.06145585 + - 0.5464445 + - 0.0048828097 + - 0.04950262 + - 0.04539798 + - 0.00045291416 + - 0.004485166 + - 0.0048122867 + - 0.06650789 + - 0.088353716 + - 0.0046076914 + - 0.081915505 + - 0.021729723 + - 0.002577179 + laughterScore: 0 + - frameNumber: 1258 + frameDelay: 0 + Visemes: + - 0.015547459 + - 0.0506515 + - 0.4025331 + - 0.005027392 + - 0.03652492 + - 0.032174207 + - 0.00036154373 + - 0.003145939 + - 0.004136904 + - 0.05076586 + - 0.08914952 + - 0.048700444 + - 0.24366009 + - 0.015384081 + - 0.0022371092 + laughterScore: 0 + - frameNumber: 1259 + frameDelay: 0 + Visemes: + - 0.013966768 + - 0.03618666 + - 0.28301853 + - 0.0037353574 + - 0.025777308 + - 0.02261471 + - 0.00028332873 + - 0.002214867 + - 0.0033496316 + - 0.036141023 + - 0.07277663 + - 0.19277114 + - 0.29447228 + - 0.010861717 + - 0.0018301306 + laughterScore: 0 + - frameNumber: 1260 + frameDelay: 0 + Visemes: + - 0.012900049 + - 0.025498018 + - 0.1983806 + - 0.002709665 + - 0.018218186 + - 0.01593056 + - 0.0002322092 + - 0.0015898824 + - 0.0032440892 + - 0.02546625 + - 0.051716212 + - 0.38963714 + - 0.24513309 + - 0.0077368845 + - 0.0016072013 + laughterScore: 0 + - frameNumber: 1261 + frameDelay: 0 + Visemes: + - 0.011904718 + - 0.01791623 + - 0.1389399 + - 0.0019287935 + - 0.012940293 + - 0.011806386 + - 0.00018087277 + - 0.0011601218 + - 0.0028335238 + - 0.018108353 + - 0.036496084 + - 0.5490855 + - 0.18986605 + - 0.005502069 + - 0.001331148 + laughterScore: 0 + - frameNumber: 1262 + frameDelay: 0 + Visemes: + - 0.009873347 + - 0.012566126 + - 0.09729107 + - 0.0013853076 + - 0.009239645 + - 0.008504709 + - 0.00014566898 + - 0.0008876126 + - 0.0022335642 + - 0.012818011 + - 0.025750479 + - 0.6755572 + - 0.13883956 + - 0.0038983715 + - 0.0010093929 + laughterScore: 0 + - frameNumber: 1263 + frameDelay: 0 + Visemes: + - 0.0075122714 + - 0.008807645 + - 0.06815085 + - 0.0009870327 + - 0.006604 + - 0.0059673674 + - 0.00011886487 + - 0.004848599 + - 0.0015757655 + - 0.009045166 + - 0.018070322 + - 0.76619 + - 0.09864971 + - 0.0027620886 + - 0.00071036955 + laughterScore: 0 + - frameNumber: 1264 + frameDelay: 0 + Visemes: + - 0.0073669977 + - 0.0061929016 + - 0.04775608 + - 0.000796814 + - 0.0053607086 + - 0.0043400954 + - 0.0001418322 + - 0.28104421 + - 0.0011381701 + - 0.006344048 + - 0.012717452 + - 0.5548718 + - 0.06948323 + - 0.0019449894 + - 0.00050067436 + laughterScore: 0 + - frameNumber: 1265 + frameDelay: 0 + Visemes: + - 0.0071141412 + - 0.0043931864 + - 0.033498876 + - 0.0008139858 + - 0.0047168913 + - 0.0031013524 + - 0.00014014501 + - 0.4891475 + - 0.00080164964 + - 0.0044451943 + - 0.008928323 + - 0.39243007 + - 0.048747897 + - 0.001366697 + - 0.00035408488 + laughterScore: 0 + - frameNumber: 1266 + frameDelay: 0 + Visemes: + - 0.008835824 + - 0.0031243654 + - 0.023510171 + - 0.0010439387 + - 0.017483164 + - 0.0022578274 + - 0.00015626484 + - 0.6226856 + - 0.000583218 + - 0.0031173474 + - 0.0063089 + - 0.2749213 + - 0.03474591 + - 0.00096115103 + - 0.00026502687 + laughterScore: 0 + - frameNumber: 1267 + frameDelay: 0 + Visemes: + - 0.016031915 + - 0.0050321496 + - 0.017210463 + - 0.0035327848 + - 0.040420447 + - 0.002838492 + - 0.00016103144 + - 0.6544403 + - 0.0011281038 + - 0.0022898505 + - 0.008024826 + - 0.19280298 + - 0.05423077 + - 0.00077841274 + - 0.0010774956 + laughterScore: 0 + - frameNumber: 1268 + frameDelay: 0 + Visemes: + - 0.019582933 + - 0.00395468 + - 0.012110069 + - 0.005577623 + - 0.03237936 + - 0.0032951147 + - 0.00027318735 + - 0.49928764 + - 0.0018599203 + - 0.0017387904 + - 0.020527273 + - 0.3006688 + - 0.093954936 + - 0.0037693253 + - 0.0010203556 + laughterScore: 0 + - frameNumber: 1269 + frameDelay: 0 + Visemes: + - 0.019011483 + - 0.0028079518 + - 0.008547261 + - 0.0052445796 + - 0.02411074 + - 0.0024523549 + - 0.00024330005 + - 0.34988132 + - 0.0016615725 + - 0.001955687 + - 0.066997394 + - 0.29467046 + - 0.21831255 + - 0.0031628746 + - 0.00094050996 + laughterScore: 0 + - frameNumber: 1270 + frameDelay: 0 + Visemes: + - 0.017824402 + - 0.001991359 + - 0.0061374097 + - 0.0038605237 + - 0.020057894 + - 0.0017670458 + - 0.00022127337 + - 0.2453196 + - 0.0016671834 + - 0.0027965843 + - 0.13408582 + - 0.2755637 + - 0.28508073 + - 0.0024847595 + - 0.0011417363 + laughterScore: 0 + - frameNumber: 1271 + frameDelay: 0 + Visemes: + - 0.017829038 + - 0.0014776664 + - 0.0047318437 + - 0.0031916504 + - 0.028294481 + - 0.0013483975 + - 0.0003042164 + - 0.17409904 + - 0.0037484425 + - 0.0030501422 + - 0.14338052 + - 0.25997573 + - 0.35557693 + - 0.002006727 + - 0.0009852267 + laughterScore: 0 + - frameNumber: 1272 + frameDelay: 0 + Visemes: + - 0.019880451 + - 0.0010767203 + - 0.0034708597 + - 0.0023029775 + - 0.031394064 + - 0.0010669421 + - 0.00028507726 + - 0.20765544 + - 0.0051931487 + - 0.0030188411 + - 0.10700056 + - 0.19066878 + - 0.42476663 + - 0.0015094467 + - 0.0007101185 + laughterScore: 0 + - frameNumber: 1273 + frameDelay: 0 + Visemes: + - 0.019889005 + - 0.00083044823 + - 0.0025397292 + - 0.0016681424 + - 0.032353655 + - 0.0010068207 + - 0.0002511982 + - 0.41982144 + - 0.0043037375 + - 0.002154579 + - 0.07672095 + - 0.13360734 + - 0.30328727 + - 0.0010606596 + - 0.0005050802 + laughterScore: 0 + - frameNumber: 1274 + frameDelay: 0 + Visemes: + - 0.019282773 + - 0.00066415715 + - 0.0018596048 + - 0.0013337592 + - 0.033247 + - 0.00083303254 + - 0.00024602495 + - 0.575589 + - 0.0032695578 + - 0.0015333488 + - 0.054115172 + - 0.093597494 + - 0.21331538 + - 0.00074668217 + - 0.00036704034 + laughterScore: 0 + - frameNumber: 1275 + frameDelay: 0 + Visemes: + - 0.016500112 + - 0.0004968872 + - 0.0014488723 + - 0.005812753 + - 0.02647138 + - 0.000959274 + - 0.00030241336 + - 0.69003624 + - 0.002552407 + - 0.0011223296 + - 0.03822113 + - 0.06558239 + - 0.14964142 + - 0.00052984495 + - 0.00032258927 + laughterScore: 0 + - frameNumber: 1276 + frameDelay: 0 + Visemes: + - 0.05657187 + - 0.00052094937 + - 0.0015121031 + - 0.005935324 + - 0.02787169 + - 0.0008353985 + - 0.00022508971 + - 0.69555795 + - 0.0026935777 + - 0.00086007203 + - 0.033130534 + - 0.062741674 + - 0.10879195 + - 0.0021212206 + - 0.00063065754 + laughterScore: 0 + - frameNumber: 1277 + frameDelay: 0 + Visemes: + - 0.10180966 + - 0.00048953417 + - 0.0013333401 + - 0.0043110745 + - 0.04029037 + - 0.00060661987 + - 0.00016009723 + - 0.62021434 + - 0.0027545376 + - 0.00063283724 + - 0.07433702 + - 0.07264757 + - 0.07689145 + - 0.0029946514 + - 0.0005269702 + laughterScore: 0 + - frameNumber: 1278 + frameDelay: 0 + Visemes: + - 0.09250779 + - 0.00039773932 + - 0.0009473335 + - 0.004254079 + - 0.041054077 + - 0.0006109101 + - 0.00011726623 + - 0.43570864 + - 0.002120602 + - 0.00048013552 + - 0.28554067 + - 0.07500377 + - 0.05479524 + - 0.005981567 + - 0.00048024353 + laughterScore: 0 + - frameNumber: 1279 + frameDelay: 0 + Visemes: + - 0.10030508 + - 0.00035359478 + - 0.00069108215 + - 0.004358399 + - 0.037152782 + - 0.0014475901 + - 0.00009856102 + - 0.30580685 + - 0.0022066063 + - 0.00046637433 + - 0.4016279 + - 0.0907902 + - 0.042648427 + - 0.011477148 + - 0.00056949316 + laughterScore: 0 + - frameNumber: 1280 + frameDelay: 0 + Visemes: + - 0.076639324 + - 0.023052704 + - 0.002109335 + - 0.0035405078 + - 0.027368203 + - 0.013780893 + - 0.00036654103 + - 0.21410438 + - 0.0029095802 + - 0.0004964235 + - 0.5199785 + - 0.06906921 + - 0.03201145 + - 0.009930019 + - 0.0046429574 + laughterScore: 0 + - frameNumber: 1281 + frameDelay: 0 + Visemes: + - 0.06279372 + - 0.025171135 + - 0.003379561 + - 0.0066038556 + - 0.021831118 + - 0.24599446 + - 0.00043671744 + - 0.14996068 + - 0.0023170663 + - 0.00038288406 + - 0.39459866 + - 0.04901038 + - 0.023258928 + - 0.010439703 + - 0.0038211425 + laughterScore: 0 + - frameNumber: 1282 + frameDelay: 0 + Visemes: + - 0.054390684 + - 0.017659225 + - 0.002542117 + - 0.004657302 + - 0.015467998 + - 0.4586214 + - 0.00033148788 + - 0.10543817 + - 0.0016752791 + - 0.00029959242 + - 0.27756384 + - 0.034341875 + - 0.016325513 + - 0.007954368 + - 0.002731193 + laughterScore: 0 + - frameNumber: 1283 + frameDelay: 0 + Visemes: + - 0.05299094 + - 0.012584209 + - 0.0021839007 + - 0.003439969 + - 0.014282134 + - 0.58896804 + - 0.00027305144 + - 0.08269228 + - 0.0013202182 + - 0.00031153217 + - 0.1973746 + - 0.02408639 + - 0.011576008 + - 0.0058404594 + - 0.002076289 + laughterScore: 0 + - frameNumber: 1284 + frameDelay: 0 + Visemes: + - 0.05864079 + - 0.009197662 + - 0.0050799726 + - 0.0054340176 + - 0.017060403 + - 0.5967839 + - 0.00024558004 + - 0.12920463 + - 0.0015265457 + - 0.00192122 + - 0.14099501 + - 0.016901575 + - 0.0085278815 + - 0.004487434 + - 0.0039933827 + laughterScore: 0 + - frameNumber: 1285 + frameDelay: 0 + Visemes: + - 0.056661054 + - 0.007177671 + - 0.0043635266 + - 0.0048507396 + - 0.024456818 + - 0.60791206 + - 0.0002501211 + - 0.11751737 + - 0.010308211 + - 0.015019181 + - 0.102775514 + - 0.011884075 + - 0.0064407187 + - 0.0044045835 + - 0.025978388 + laughterScore: 0 + - frameNumber: 1286 + frameDelay: 0 + Visemes: + - 0.051168524 + - 0.0053032283 + - 0.0035343023 + - 0.003895144 + - 0.01783875 + - 0.43644634 + - 0.00019057622 + - 0.08255456 + - 0.060202695 + - 0.145592 + - 0.10621792 + - 0.010087098 + - 0.0046307 + - 0.026691362 + - 0.045646828 + laughterScore: 0 + - frameNumber: 1287 + frameDelay: 0 + Visemes: + - 0.046707906 + - 0.005072189 + - 0.0027697522 + - 0.0027760935 + - 0.013038742 + - 0.30601242 + - 0.00021937145 + - 0.05780788 + - 0.046731457 + - 0.24517867 + - 0.17422125 + - 0.011778014 + - 0.0034579802 + - 0.050974414 + - 0.033253867 + laughterScore: 0 + - frameNumber: 1288 + frameDelay: 0 + Visemes: + - 0.03926765 + - 0.004460465 + - 0.0020095492 + - 0.0019519847 + - 0.009468265 + - 0.21439576 + - 0.00019104328 + - 0.040478732 + - 0.033714775 + - 0.1757016 + - 0.37841314 + - 0.010917423 + - 0.0025360426 + - 0.06314793 + - 0.023345657 + laughterScore: 0 + - frameNumber: 1289 + frameDelay: 0 + Visemes: + - 0.03193019 + - 0.008001575 + - 0.0014560851 + - 0.0013695133 + - 0.0068564853 + - 0.15017353 + - 0.0001540036 + - 0.028343815 + - 0.023798125 + - 0.123851225 + - 0.53743005 + - 0.00970618 + - 0.0020642981 + - 0.058508012 + - 0.016356904 + laughterScore: 0 + - frameNumber: 1290 + frameDelay: 0 + Visemes: + - 0.025972567 + - 0.00737051 + - 0.0013255365 + - 0.0009969624 + - 0.0054229656 + - 0.105482385 + - 0.00016168253 + - 0.021149557 + - 0.018675346 + - 0.086741045 + - 0.6394621 + - 0.013518394 + - 0.0017563861 + - 0.06050462 + - 0.011459965 + laughterScore: 0 + - frameNumber: 1291 + frameDelay: 0 + Visemes: + - 0.028477523 + - 0.0074566593 + - 0.02082155 + - 0.0011514974 + - 0.0073766243 + - 0.075315036 + - 0.0034903423 + - 0.18865578 + - 0.019996349 + - 0.060861148 + - 0.51599604 + - 0.015142212 + - 0.0020558033 + - 0.045175567 + - 0.0080279065 + laughterScore: 0 + - frameNumber: 1292 + frameDelay: 0 + Visemes: + - 0.020635776 + - 0.0054906677 + - 0.014831079 + - 0.0008111989 + - 0.0054462915 + - 0.052766796 + - 0.0025041779 + - 0.4292881 + - 0.014392945 + - 0.04260819 + - 0.3618979 + - 0.010611597 + - 0.001468978 + - 0.031626645 + - 0.0056197233 + laughterScore: 0 + - frameNumber: 1293 + frameDelay: 0 + Visemes: + - 0.01589005 + - 0.0050115036 + - 0.010538633 + - 0.00059604703 + - 0.0059888754 + - 0.036986 + - 0.0019087145 + - 0.5947455 + - 0.010139412 + - 0.029847126 + - 0.25373638 + - 0.0074573085 + - 0.0010671217 + - 0.022149963 + - 0.003937342 + laughterScore: 0 + - frameNumber: 1294 + frameDelay: 0 + Visemes: + - 0.013335278 + - 0.005455197 + - 0.007462987 + - 0.00064206787 + - 0.01992028 + - 0.026019387 + - 0.0016283821 + - 0.69517446 + - 0.0071452865 + - 0.020916106 + - 0.17782418 + - 0.005259831 + - 0.00092480297 + - 0.015513348 + - 0.002778381 + laughterScore: 0 + - frameNumber: 1295 + frameDelay: 0 + Visemes: + - 0.0136532355 + - 0.004165308 + - 0.0054604197 + - 0.009731385 + - 0.048575528 + - 0.018918317 + - 0.001262715 + - 0.63786745 + - 0.00803649 + - 0.0147670545 + - 0.17393348 + - 0.01749763 + - 0.03252832 + - 0.011308799 + - 0.002293853 + laughterScore: 0 + - frameNumber: 1296 + frameDelay: 0 + Visemes: + - 0.013794266 + - 0.0029623709 + - 0.0038503944 + - 0.013487516 + - 0.040114347 + - 0.013533019 + - 0.00091288425 + - 0.449648 + - 0.006464538 + - 0.010573174 + - 0.22541858 + - 0.14782614 + - 0.05952567 + - 0.01014477 + - 0.0017443387 + laughterScore: 0 + - frameNumber: 1297 + frameDelay: 0 + Visemes: + - 0.019494466 + - 0.0021325937 + - 0.0029582856 + - 0.010026887 + - 0.029489003 + - 0.009555998 + - 0.00072426634 + - 0.31581482 + - 0.0055078487 + - 0.008066861 + - 0.2667057 + - 0.24236652 + - 0.07164599 + - 0.014205699 + - 0.0013050613 + laughterScore: 0 + - frameNumber: 1298 + frameDelay: 0 + Visemes: + - 0.01878847 + - 0.0018054792 + - 0.0035980516 + - 0.0074535604 + - 0.059049614 + - 0.0076794503 + - 0.00076923886 + - 0.22136255 + - 0.009100112 + - 0.006336879 + - 0.30222648 + - 0.24083117 + - 0.10852741 + - 0.011362359 + - 0.0011091976 + laughterScore: 0 + - frameNumber: 1299 + frameDelay: 0 + Visemes: + - 0.019893095 + - 0.0024153758 + - 0.0029943767 + - 0.0069336696 + - 0.08523595 + - 0.014735021 + - 0.0019298026 + - 0.1551268 + - 0.21924223 + - 0.0045873364 + - 0.2225984 + - 0.17264962 + - 0.08283836 + - 0.008019656 + - 0.0008003315 + laughterScore: 0 + - frameNumber: 1300 + frameDelay: 0 + Visemes: + - 0.01973484 + - 0.0037372464 + - 0.0022455864 + - 0.006091346 + - 0.11307138 + - 0.0155550195 + - 0.001580671 + - 0.1087802 + - 0.37826502 + - 0.0032325962 + - 0.160296 + - 0.12208881 + - 0.059101608 + - 0.005631104 + - 0.00058854476 + laughterScore: 0 + - frameNumber: 1301 + frameDelay: 0 + Visemes: + - 0.020774748 + - 0.015561005 + - 0.0016202674 + - 0.009569621 + - 0.09630641 + - 0.012947491 + - 0.0011880394 + - 0.07626327 + - 0.5140648 + - 0.002281011 + - 0.11590591 + - 0.08593042 + - 0.04312683 + - 0.0039618467 + - 0.00049830927 + laughterScore: 0 + - frameNumber: 1302 + frameDelay: 0 + Visemes: + - 0.02458471 + - 0.025454424 + - 0.0012580239 + - 0.038578913 + - 0.07437787 + - 0.017532878 + - 0.0049310923 + - 0.053548377 + - 0.55099964 + - 0.0018774692 + - 0.08258951 + - 0.061123453 + - 0.05907063 + - 0.0028759085 + - 0.001197061 + laughterScore: 0 + - frameNumber: 1303 + frameDelay: 0 + Visemes: + - 0.023170017 + - 0.01873576 + - 0.0009014614 + - 0.04637348 + - 0.059162706 + - 0.01301902 + - 0.0036264213 + - 0.03761164 + - 0.59633154 + - 0.0013961165 + - 0.064283565 + - 0.076220945 + - 0.05603401 + - 0.0021754482 + - 0.00095787644 + laughterScore: 0 + - frameNumber: 1304 + frameDelay: 0 + Visemes: + - 0.028660636 + - 0.013302565 + - 0.00065566256 + - 0.07482225 + - 0.04760178 + - 0.009996432 + - 0.0026202796 + - 0.026428107 + - 0.51062834 + - 0.0010853077 + - 0.07818934 + - 0.15767868 + - 0.04175607 + - 0.0055264896 + - 0.0010480487 + laughterScore: 0 + - frameNumber: 1305 + frameDelay: 0 + Visemes: + - 0.03460923 + - 0.0094971005 + - 0.00058940845 + - 0.061591797 + - 0.035482213 + - 0.008321095 + - 0.0019420969 + - 0.018675571 + - 0.36576584 + - 0.00088221533 + - 0.1207908 + - 0.3012978 + - 0.031341862 + - 0.008320295 + - 0.0008926557 + laughterScore: 0 + - frameNumber: 1306 + frameDelay: 0 + Visemes: + - 0.036265675 + - 0.009611525 + - 0.0030669712 + - 0.043313317 + - 0.051823337 + - 0.0060257325 + - 0.0013728187 + - 0.013150028 + - 0.2695205 + - 0.0009078656 + - 0.10477143 + - 0.42702246 + - 0.024576271 + - 0.007734719 + - 0.0008373367 + laughterScore: 0 + - frameNumber: 1307 + frameDelay: 0 + Visemes: + - 0.026483633 + - 0.009383435 + - 0.0037088932 + - 0.03032269 + - 0.3181334 + - 0.004241024 + - 0.00096136186 + - 0.009206416 + - 0.18935668 + - 0.0007294654 + - 0.075111635 + - 0.30796877 + - 0.017356094 + - 0.006062704 + - 0.00097377587 + laughterScore: 0 + - frameNumber: 1308 + frameDelay: 0 + Visemes: + - 0.019360634 + - 0.009520227 + - 0.0037745764 + - 0.021234028 + - 0.51256794 + - 0.0030038054 + - 0.0006748346 + - 0.0064494093 + - 0.13281648 + - 0.000575169 + - 0.052926175 + - 0.21564393 + - 0.012179294 + - 0.004563639 + - 0.0047098403 + laughterScore: 0 + - frameNumber: 1309 + frameDelay: 0 + Visemes: + - 0.015708013 + - 0.011674284 + - 0.0028865375 + - 0.014892699 + - 0.61621255 + - 0.0023403398 + - 0.00048677478 + - 0.004546666 + - 0.09320684 + - 0.00045380846 + - 0.037544947 + - 0.15109555 + - 0.008588807 + - 0.0034053791 + - 0.036956802 + laughterScore: 0 + - frameNumber: 1310 + frameDelay: 0 + Visemes: + - 0.013129223 + - 0.008207956 + - 0.002029188 + - 0.01043079 + - 0.43216884 + - 0.00172434 + - 0.00034133875 + - 0.003194473 + - 0.06529626 + - 0.0003410408 + - 0.026634403 + - 0.105780356 + - 0.006037645 + - 0.0026815138 + - 0.32200262 + laughterScore: 0 + - frameNumber: 1311 + frameDelay: 0 + Visemes: + - 0.013941292 + - 0.005765928 + - 0.0014253383 + - 0.0073120706 + - 0.3026252 + - 0.0013135347 + - 0.00023971195 + - 0.002243003 + - 0.045746416 + - 0.013812959 + - 0.022832938 + - 0.088474415 + - 0.014938258 + - 0.0026762132 + - 0.47665268 + laughterScore: 0 + - frameNumber: 1312 + frameDelay: 0 + Visemes: + - 0.010654053 + - 0.004037846 + - 0.0009985649 + - 0.0051214206 + - 0.21184641 + - 0.0009213604 + - 0.00016784435 + - 0.0015715386 + - 0.03202446 + - 0.2640148 + - 0.016401784 + - 0.08344747 + - 0.029271295 + - 0.002487591 + - 0.33703357 + laughterScore: 0 + - frameNumber: 1313 + frameDelay: 0 + Visemes: + - 0.009135587 + - 0.0028299938 + - 0.0007008924 + - 0.0035895258 + - 0.14831083 + - 0.00064908917 + - 0.00011758545 + - 0.0011023395 + - 0.022425197 + - 0.4531122 + - 0.011793974 + - 0.07603928 + - 0.03204849 + - 0.0018556513 + - 0.23628937 + laughterScore: 0 + - frameNumber: 1314 + frameDelay: 0 + Visemes: + - 0.009063825 + - 0.0020299414 + - 0.0005001659 + - 0.0025411756 + - 0.10394971 + - 0.00047818865 + - 0.00008266868 + - 0.0007817927 + - 0.015750924 + - 0.6049117 + - 0.008410391 + - 0.05686313 + - 0.027542274 + - 0.0013508936 + - 0.16574325 + laughterScore: 0 + - frameNumber: 1315 + frameDelay: 0 + Visemes: + - 0.0068965196 + - 0.0014812571 + - 0.00035687705 + - 0.0017958892 + - 0.0729115 + - 0.00037584314 + - 0.000058011894 + - 0.0005603768 + - 0.01106011 + - 0.7220749 + - 0.005921442 + - 0.039935935 + - 0.019517237 + - 0.00095020706 + - 0.11610387 + laughterScore: 0 + - frameNumber: 1316 + frameDelay: 0 + Visemes: + - 0.0060380436 + - 0.0010721025 + - 0.00025932898 + - 0.001314807 + - 0.05137599 + - 0.00041476198 + - 0.000040978633 + - 0.00041591036 + - 0.0077854167 + - 0.8020034 + - 0.0041984967 + - 0.028321639 + - 0.014718479 + - 0.0006830979 + - 0.08135755 + laughterScore: 0 + - frameNumber: 1317 + frameDelay: 0 + Visemes: + - 0.00937624 + - 0.00082878675 + - 0.0001952922 + - 0.0016051519 + - 0.05119867 + - 0.14333424 + - 0.0001565395 + - 0.00034212015 + - 0.0057346756 + - 0.69440365 + - 0.003006035 + - 0.020361364 + - 0.012004157 + - 0.0004954169 + - 0.056957703 + laughterScore: 0 + - frameNumber: 1318 + frameDelay: 0 + Visemes: + - 0.014039369 + - 0.000759869 + - 0.00014935232 + - 0.0016023718 + - 0.06980668 + - 0.34613645 + - 0.00059035537 + - 0.00027502936 + - 0.004179304 + - 0.4963664 + - 0.0021718529 + - 0.014564262 + - 0.009123402 + - 0.0003593085 + - 0.03987605 + laughterScore: 0 + - frameNumber: 1319 + frameDelay: 0 + Visemes: + - 0.017404357 + - 0.0007629995 + - 0.00011180336 + - 0.0017712325 + - 0.083520755 + - 0.49560654 + - 0.0009533133 + - 0.00024218955 + - 0.0029561117 + - 0.34963936 + - 0.0015603541 + - 0.010330461 + - 0.006957371 + - 0.0002621969 + - 0.027921045 + laughterScore: 0 + - frameNumber: 1320 + frameDelay: 0 + Visemes: + - 0.014363669 + - 0.0012470363 + - 0.000103242965 + - 0.0014774842 + - 0.074770056 + - 0.62604773 + - 0.0010291338 + - 0.00024611098 + - 0.0020802142 + - 0.24549092 + - 0.0011216445 + - 0.007312128 + - 0.004972077 + - 0.00018969648 + - 0.019548908 + laughterScore: 0 + - frameNumber: 1321 + frameDelay: 0 + Visemes: + - 0.011775199 + - 0.00088352046 + - 0.000118019845 + - 0.0010795859 + - 0.05382453 + - 0.7341282 + - 0.0007332562 + - 0.0007505473 + - 0.001460304 + - 0.17200473 + - 0.0007978986 + - 0.005127181 + - 0.0034964026 + - 0.00013410112 + - 0.013686548 + laughterScore: 0 + - frameNumber: 1322 + frameDelay: 0 + Visemes: + - 0.015143235 + - 0.00066854025 + - 0.000113944174 + - 0.00093560317 + - 0.04134028 + - 0.8019213 + - 0.0005233848 + - 0.0006241001 + - 0.0010438991 + - 0.12108227 + - 0.0007291652 + - 0.0036195295 + - 0.0025517126 + - 0.00009784338 + - 0.009605193 + laughterScore: 0 + - frameNumber: 1323 + frameDelay: 0 + Visemes: + - 0.025128586 + - 0.00061790843 + - 0.00009709981 + - 0.00073490746 + - 0.03510699 + - 0.8398241 + - 0.00039628614 + - 0.00047842646 + - 0.0007400773 + - 0.0849153 + - 0.00062360713 + - 0.0025761432 + - 0.0019413416 + - 0.00007372531 + - 0.0067455685 + laughterScore: 0 + - frameNumber: 1324 + frameDelay: 0 + Visemes: + - 0.044093974 + - 0.00051980786 + - 0.00008635226 + - 0.00062592415 + - 0.027774313 + - 0.85728025 + - 0.0002906706 + - 0.00034509893 + - 0.000532214 + - 0.059489977 + - 0.0005671832 + - 0.0019271488 + - 0.0016554099 + - 0.000075151074 + - 0.004736561 + laughterScore: 0 + - frameNumber: 1325 + frameDelay: 0 + Visemes: + - 0.08006029 + - 0.00068303593 + - 0.00013131477 + - 0.0014062293 + - 0.022819052 + - 0.8416153 + - 0.00023550683 + - 0.00034781848 + - 0.0004117536 + - 0.041712385 + - 0.0020310252 + - 0.0019150575 + - 0.002929458 + - 0.0003027713 + - 0.0033989875 + laughterScore: 0 + - frameNumber: 1326 + frameDelay: 0 + Visemes: + - 0.23023465 + - 0.01614146 + - 0.004064439 + - 0.017327167 + - 0.025438776 + - 0.64327544 + - 0.00035541918 + - 0.0010539036 + - 0.0010783443 + - 0.029501222 + - 0.011380943 + - 0.003479742 + - 0.006908586 + - 0.0014936498 + - 0.008266296 + laughterScore: 0 + - frameNumber: 1327 + frameDelay: 0 + Visemes: + - 0.20679048 + - 0.03714519 + - 0.012010425 + - 0.015325582 + - 0.018231966 + - 0.45367378 + - 0.00029790436 + - 0.0014421109 + - 0.0059318533 + - 0.02236156 + - 0.014581902 + - 0.002717943 + - 0.0061105303 + - 0.021200292 + - 0.18217851 + laughterScore: 0 + - frameNumber: 1328 + frameDelay: 0 + Visemes: + - 0.17702262 + - 0.106862746 + - 0.022965364 + - 0.011293082 + - 0.013141231 + - 0.31962222 + - 0.00024314213 + - 0.0013145264 + - 0.011105936 + - 0.016695913 + - 0.025563229 + - 0.004958627 + - 0.013927229 + - 0.056951147 + - 0.21833304 + laughterScore: 0 + - frameNumber: 1329 + frameDelay: 0 + Visemes: + - 0.14338247 + - 0.07632009 + - 0.016514556 + - 0.007994592 + - 0.009606177 + - 0.22429986 + - 0.00017629824 + - 0.000931553 + - 0.024560213 + - 0.0129503375 + - 0.08698216 + - 0.04452475 + - 0.010595683 + - 0.11504397 + - 0.22611734 + laughterScore: 0 + - frameNumber: 1330 + frameDelay: 0 + Visemes: + - 0.10965793 + - 0.05347831 + - 0.011586078 + - 0.005664924 + - 0.006913977 + - 0.15725555 + - 0.00012503433 + - 0.00065495056 + - 0.023749286 + - 0.05920358 + - 0.10513808 + - 0.040204033 + - 0.007773264 + - 0.25088948 + - 0.16770555 + laughterScore: 0 + - frameNumber: 1331 + frameDelay: 0 + Visemes: + - 0.08253557 + - 0.037438817 + - 0.008112765 + - 0.0039950944 + - 0.0049360143 + - 0.11023444 + - 0.00009094094 + - 0.00046374722 + - 0.01706364 + - 0.29069957 + - 0.07694488 + - 0.034748748 + - 0.005913258 + - 0.20825411 + - 0.11856841 + laughterScore: 0 + - frameNumber: 1332 + frameDelay: 0 + Visemes: + - 0.061317854 + - 0.026219502 + - 0.005684598 + - 0.0028661548 + - 0.0042621405 + - 0.07721419 + - 0.00006691578 + - 0.0003332559 + - 0.012067894 + - 0.4254991 + - 0.056180965 + - 0.024648331 + - 0.0049297055 + - 0.21543281 + - 0.08327659 + laughterScore: 0 + - frameNumber: 1333 + frameDelay: 0 + Visemes: + - 0.050376076 + - 0.018402122 + - 0.0040093646 + - 0.0021268046 + - 0.006278525 + - 0.057681978 + - 0.00010071472 + - 0.00034909052 + - 0.009524819 + - 0.54113925 + - 0.055155363 + - 0.018716617 + - 0.013922778 + - 0.16383228 + - 0.05838427 + laughterScore: 0 + - frameNumber: 1334 + frameDelay: 0 + Visemes: + - 0.040255066 + - 0.012925543 + - 0.002833662 + - 0.0015365016 + - 0.007175044 + - 0.17290471 + - 0.00035460998 + - 0.00036971242 + - 0.006974437 + - 0.4245882 + - 0.04471218 + - 0.01349719 + - 0.11618826 + - 0.11479456 + - 0.040890332 + laughterScore: 0 + - frameNumber: 1335 + frameDelay: 0 + Visemes: + - 0.030845959 + - 0.009087655 + - 0.0020208352 + - 0.001159967 + - 0.010369077 + - 0.3858797 + - 0.001930594 + - 0.00038040284 + - 0.0051399237 + - 0.30916107 + - 0.031742677 + - 0.00955955 + - 0.09360221 + - 0.08040166 + - 0.028718725 + laughterScore: 0 + - frameNumber: 1336 + frameDelay: 0 + Visemes: + - 0.02261664 + - 0.006366077 + - 0.0014256479 + - 0.0008585727 + - 0.008066826 + - 0.5624633 + - 0.0019657938 + - 0.0003066635 + - 0.0036228686 + - 0.2173067 + - 0.02226089 + - 0.0067052734 + - 0.069628336 + - 0.05628651 + - 0.020119965 + laughterScore: 0 + - frameNumber: 1337 + frameDelay: 0 + Visemes: + - 0.028080866 + - 0.0049429005 + - 0.0014622542 + - 0.0025389327 + - 0.11863187 + - 0.51330423 + - 0.018301224 + - 0.015920913 + - 0.0040099886 + - 0.1592228 + - 0.017980892 + - 0.0050409934 + - 0.056319356 + - 0.03975072 + - 0.014492097 + laughterScore: 0 + - frameNumber: 1338 + frameDelay: 0 + Visemes: + - 0.048808087 + - 0.005425227 + - 0.003395164 + - 0.004831954 + - 0.15361181 + - 0.43572676 + - 0.016401049 + - 0.10883312 + - 0.004312467 + - 0.11507946 + - 0.014818516 + - 0.004028808 + - 0.04575795 + - 0.02806987 + - 0.01089975 + laughterScore: 0 + - frameNumber: 1339 + frameDelay: 0 + Visemes: + - 0.062691905 + - 0.010681506 + - 0.004238624 + - 0.061378814 + - 0.17223737 + - 0.32339615 + - 0.018860416 + - 0.17699757 + - 0.005334642 + - 0.08220591 + - 0.012615975 + - 0.00393503 + - 0.037518166 + - 0.019706842 + - 0.008201091 + laughterScore: 0 + - frameNumber: 1340 + frameDelay: 0 + Visemes: + - 0.053986676 + - 0.011589957 + - 0.0041504884 + - 0.15336818 + - 0.20231575 + - 0.2282907 + - 0.013526026 + - 0.1266125 + - 0.010402978 + - 0.057660922 + - 0.02043229 + - 0.044503126 + - 0.053355593 + - 0.013969216 + - 0.0058356123 + laughterScore: 0 + - frameNumber: 1341 + frameDelay: 0 + Visemes: + - 0.04566674 + - 0.009417611 + - 0.0029709884 + - 0.11423692 + - 0.15615664 + - 0.15992838 + - 0.009587386 + - 0.08866914 + - 0.01377205 + - 0.04041916 + - 0.02053501 + - 0.20411733 + - 0.120537385 + - 0.009804021 + - 0.0041812784 + laughterScore: 0 + - frameNumber: 1342 + frameDelay: 0 + Visemes: + - 0.04231701 + - 0.0070923227 + - 0.0020967582 + - 0.080223516 + - 0.110303804 + - 0.11249157 + - 0.0067825355 + - 0.06208861 + - 0.01571657 + - 0.028344996 + - 0.02369409 + - 0.3532791 + - 0.14545894 + - 0.006906715 + - 0.0032034982 + laughterScore: 0 + - frameNumber: 1343 + frameDelay: 0 + Visemes: + - 0.036533028 + - 0.006030763 + - 0.0014722428 + - 0.05638291 + - 0.0777407 + - 0.08058188 + - 0.0047534117 + - 0.043486074 + - 0.023184486 + - 0.020039873 + - 0.080247395 + - 0.44699404 + - 0.115275145 + - 0.0048881005 + - 0.0023900298 + laughterScore: 0 + - frameNumber: 1344 + frameDelay: 0 + Visemes: + - 0.035714544 + - 0.033925544 + - 0.0010557342 + - 0.039521605 + - 0.056607515 + - 0.063116685 + - 0.0033331816 + - 0.030546287 + - 0.03146695 + - 0.014350582 + - 0.1224448 + - 0.4720496 + - 0.09043234 + - 0.0036267461 + - 0.0018079239 + laughterScore: 0 + - frameNumber: 1345 + frameDelay: 0 + Visemes: + - 0.027169546 + - 0.29864615 + - 0.000858187 + - 0.027677761 + - 0.041657284 + - 0.048086934 + - 0.002336471 + - 0.021464776 + - 0.033196695 + - 0.010223816 + - 0.08773003 + - 0.33296576 + - 0.06414088 + - 0.0025459467 + - 0.001299806 + laughterScore: 0 + - frameNumber: 1346 + frameDelay: 0 + Visemes: + - 0.021120843 + - 0.46648592 + - 0.00065832323 + - 0.019404119 + - 0.037900824 + - 0.03796295 + - 0.0016428553 + - 0.015071489 + - 0.050009288 + - 0.00718924 + - 0.061691437 + - 0.23319085 + - 0.044952802 + - 0.0017857518 + - 0.0009333609 + laughterScore: 0 + - frameNumber: 1347 + frameDelay: 0 + Visemes: + - 0.021706615 + - 0.548428 + - 0.008692244 + - 0.015825033 + - 0.03838674 + - 0.030031137 + - 0.0012379863 + - 0.011335828 + - 0.07621974 + - 0.005131206 + - 0.044493772 + - 0.1634522 + - 0.033087503 + - 0.0012826015 + - 0.0006893729 + laughterScore: 0 + - frameNumber: 1348 + frameDelay: 0 + Visemes: + - 0.03286959 + - 0.59764916 + - 0.019459639 + - 0.019719193 + - 0.04737786 + - 0.038988028 + - 0.0012338243 + - 0.008624731 + - 0.057797454 + - 0.0036781773 + - 0.031960282 + - 0.11496006 + - 0.024148889 + - 0.0009863724 + - 0.00054666057 + laughterScore: 0 + - frameNumber: 1349 + frameDelay: 0 + Visemes: + - 0.051691644 + - 0.61267126 + - 0.027568724 + - 0.033441313 + - 0.048851125 + - 0.04961433 + - 0.0011345866 + - 0.00670353 + - 0.043061238 + - 0.0026663064 + - 0.023177804 + - 0.08062504 + - 0.017368687 + - 0.0008940106 + - 0.0005303227 + laughterScore: 0 + - frameNumber: 1350 + frameDelay: 0 + Visemes: + - 0.054169208 + - 0.62403154 + - 0.055288833 + - 0.03272044 + - 0.035560653 + - 0.035795335 + - 0.0008067256 + - 0.0048056035 + - 0.033314638 + - 0.0025831051 + - 0.018108737 + - 0.056633215 + - 0.013197327 + - 0.017416343 + - 0.015568246 + laughterScore: 0 + - frameNumber: 1351 + frameDelay: 0 + Visemes: + - 0.05339791 + - 0.62261224 + - 0.04502343 + - 0.02345064 + - 0.025324842 + - 0.025769593 + - 0.0005809543 + - 0.003460296 + - 0.034417875 + - 0.0050955745 + - 0.07100216 + - 0.04021193 + - 0.012711886 + - 0.023220066 + - 0.0137206055 + laughterScore: 0 + - frameNumber: 1352 + frameDelay: 0 + Visemes: + - 0.06363203 + - 0.44392213 + - 0.046458445 + - 0.016489428 + - 0.020955794 + - 0.01831205 + - 0.00041595518 + - 0.0024464035 + - 0.075129144 + - 0.0064677875 + - 0.1126732 + - 0.029658476 + - 0.011334106 + - 0.13935812 + - 0.012746945 + laughterScore: 0 + - frameNumber: 1353 + frameDelay: 0 + Visemes: + - 0.09288105 + - 0.3204329 + - 0.038244326 + - 0.011651287 + - 0.021038326 + - 0.013751059 + - 0.00033083616 + - 0.0018365798 + - 0.14036372 + - 0.010547702 + - 0.14227834 + - 0.021630505 + - 0.008473329 + - 0.15353337 + - 0.023006659 + laughterScore: 0 + - frameNumber: 1354 + frameDelay: 0 + Visemes: + - 0.10660159 + - 0.22615872 + - 0.028682228 + - 0.00830025 + - 0.020915354 + - 0.0102235945 + - 0.00024913327 + - 0.0013570096 + - 0.1440554 + - 0.009263465 + - 0.19123058 + - 0.017794177 + - 0.006783707 + - 0.2003572 + - 0.028027564 + laughterScore: 0 + - frameNumber: 1355 + frameDelay: 0 + Visemes: + - 0.09025629 + - 0.1599449 + - 0.020277478 + - 0.005904173 + - 0.017408216 + - 0.0073601557 + - 0.00017852827 + - 0.0010563836 + - 0.1966709 + - 0.008156471 + - 0.17367923 + - 0.012650761 + - 0.0048765326 + - 0.28108662 + - 0.020493321 + laughterScore: 0 + - frameNumber: 1356 + frameDelay: 0 + Visemes: + - 0.085471295 + - 0.11608898 + - 0.015614787 + - 0.0047899983 + - 0.020702433 + - 0.005887363 + - 0.00017405894 + - 0.0014521969 + - 0.3295461 + - 0.009996712 + - 0.13979185 + - 0.008989159 + - 0.00377599 + - 0.24225852 + - 0.015460561 + laughterScore: 0 + - frameNumber: 1357 + frameDelay: 0 + Visemes: + - 0.09999569 + - 0.08728666 + - 0.018102605 + - 0.0071890485 + - 0.055287305 + - 0.009059954 + - 0.00034609778 + - 0.0038916217 + - 0.39330775 + - 0.014504399 + - 0.10711277 + - 0.006495616 + - 0.0034223318 + - 0.18199866 + - 0.011999516 + laughterScore: 0 + - frameNumber: 1358 + frameDelay: 0 + Visemes: + - 0.10552561 + - 0.068843424 + - 0.02275025 + - 0.0063287304 + - 0.10338564 + - 0.087067045 + - 0.00035314157 + - 0.00555518 + - 0.3631462 + - 0.011218831 + - 0.07893835 + - 0.004662604 + - 0.0030908557 + - 0.13059905 + - 0.008535094 + laughterScore: 0 + - frameNumber: 1359 + frameDelay: 0 + Visemes: + - 0.100431725 + - 0.054130554 + - 0.01724615 + - 0.0047402116 + - 0.091147035 + - 0.2944546 + - 0.0005093966 + - 0.0043890756 + - 0.26447183 + - 0.00826804 + - 0.05639792 + - 0.0034103242 + - 0.0022991262 + - 0.09208158 + - 0.006022453 + laughterScore: 0 + - frameNumber: 1360 + frameDelay: 0 + Visemes: + - 0.105656065 + - 0.039459366 + - 0.012236032 + - 0.0033605306 + - 0.06562767 + - 0.46414164 + - 0.00038697894 + - 0.003133367 + - 0.18698373 + - 0.005878054 + - 0.03996081 + - 0.002395488 + - 0.0016400127 + - 0.06491762 + - 0.004222636 + laughterScore: 0 + - frameNumber: 1361 + frameDelay: 0 + Visemes: + - 0.12083781 + - 0.027936762 + - 0.008604399 + - 0.0024221886 + - 0.046888966 + - 0.57117635 + - 0.00028021517 + - 0.002251733 + - 0.13474876 + - 0.004155096 + - 0.02853022 + - 0.0016969529 + - 0.0012458886 + - 0.046229135 + - 0.0029955672 + laughterScore: 0 + - frameNumber: 1362 + frameDelay: 0 + Visemes: + - 0.2091055 + - 0.020525044 + - 0.0060894894 + - 0.0019354958 + - 0.03455906 + - 0.56590414 + - 0.00039345134 + - 0.0017774345 + - 0.09564839 + - 0.0029849713 + - 0.020713015 + - 0.0015909773 + - 0.0016468674 + - 0.034808077 + - 0.0023181266 + laughterScore: 0 + - frameNumber: 1363 + frameDelay: 0 + Visemes: + - 0.40854365 + - 0.01547009 + - 0.0043341517 + - 0.0018911918 + - 0.025813067 + - 0.42615944 + - 0.0003726989 + - 0.00137853 + - 0.06750201 + - 0.0021544204 + - 0.015971089 + - 0.0013770487 + - 0.0016163265 + - 0.025477119 + - 0.0019391632 + laughterScore: 0 + - frameNumber: 1364 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1365 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1366 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1367 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1368 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1369 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1370 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1371 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1372 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1373 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1374 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1375 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1376 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1377 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1378 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1379 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1380 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1381 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1382 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1383 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1384 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1385 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1386 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1387 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1388 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1389 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1390 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1391 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1392 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1393 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1394 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1395 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1396 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1397 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1398 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1399 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1400 + frameDelay: 0 + Visemes: + - 0.40231508 + - 0.012121885 + - 0.00021421068 + - 0.016491452 + - 0.014622609 + - 0.040401377 + - 0.009405596 + - 0.0014480894 + - 0.0045841737 + - 0.00018694128 + - 0.00771501 + - 0.3389134 + - 0.14976808 + - 0.0010078151 + - 0.0008043178 + laughterScore: 0 + - frameNumber: 1401 + frameDelay: 0 + Visemes: + - 0.28655696 + - 0.008583151 + - 0.00032390357 + - 0.011765443 + - 0.013444288 + - 0.046516333 + - 0.006636044 + - 0.001031989 + - 0.004023904 + - 0.00034752162 + - 0.0116079915 + - 0.40504554 + - 0.20151737 + - 0.0013847575 + - 0.0012148651 + laughterScore: 0 + - frameNumber: 1402 + frameDelay: 0 + Visemes: + - 0.2101282 + - 0.006856123 + - 0.0008821767 + - 0.010878272 + - 0.05739034 + - 0.24354494 + - 0.0049690064 + - 0.0008762976 + - 0.010366111 + - 0.0004797725 + - 0.011188302 + - 0.29718077 + - 0.14322555 + - 0.0010597755 + - 0.00097441534 + laughterScore: 0 + - frameNumber: 1403 + frameDelay: 0 + Visemes: + - 0.15693852 + - 0.005684613 + - 0.0012453175 + - 0.008444035 + - 0.08107822 + - 0.40905 + - 0.0040522153 + - 0.00086359045 + - 0.009781461 + - 0.00051928527 + - 0.008734169 + - 0.21074039 + - 0.10118162 + - 0.0008987343 + - 0.0007878905 + laughterScore: 0 + - frameNumber: 1404 + frameDelay: 0 + Visemes: + - 0.11861635 + - 0.03314973 + - 0.0020152328 + - 0.009585552 + - 0.09619408 + - 0.49875972 + - 0.004601992 + - 0.0011900035 + - 0.0075672767 + - 0.0005005694 + - 0.006617867 + - 0.14797835 + - 0.071371235 + - 0.0007756262 + - 0.0010764229 + laughterScore: 0 + - frameNumber: 1405 + frameDelay: 0 + Visemes: + - 0.117233194 + - 0.054212965 + - 0.014078635 + - 0.008030516 + - 0.09622916 + - 0.5223568 + - 0.004390036 + - 0.015589742 + - 0.0060532615 + - 0.00045535812 + - 0.0051511014 + - 0.1039359 + - 0.050747745 + - 0.00065102096 + - 0.00088456075 + laughterScore: 0 + - frameNumber: 1406 + frameDelay: 0 + Visemes: + - 0.109615535 + - 0.06419109 + - 0.01185804 + - 0.0059735314 + - 0.07253851 + - 0.598094 + - 0.0036888025 + - 0.01442375 + - 0.0044867615 + - 0.00053467444 + - 0.003903155 + - 0.072979994 + - 0.03639018 + - 0.0005088477 + - 0.0008131162 + laughterScore: 0 + - frameNumber: 1407 + frameDelay: 0 + Visemes: + - 0.08647159 + - 0.045674734 + - 0.008326859 + - 0.00469128 + - 0.051975824 + - 0.6483948 + - 0.0027421513 + - 0.010370528 + - 0.003855622 + - 0.00046661258 + - 0.029901065 + - 0.07558417 + - 0.028415564 + - 0.0017221107 + - 0.0014070601 + laughterScore: 0 + - frameNumber: 1408 + frameDelay: 0 + Visemes: + - 0.07578865 + - 0.03199778 + - 0.0058470266 + - 0.0034618303 + - 0.036496725 + - 0.4587028 + - 0.0020453827 + - 0.007411231 + - 0.0029704273 + - 0.0005491684 + - 0.08002499 + - 0.24538264 + - 0.029157199 + - 0.017968422 + - 0.0021957434 + laughterScore: 0 + - frameNumber: 1409 + frameDelay: 0 + Visemes: + - 0.06543196 + - 0.02294834 + - 0.004099982 + - 0.0025342077 + - 0.026547091 + - 0.32123446 + - 0.0015093117 + - 0.0052530235 + - 0.008641937 + - 0.0036838935 + - 0.07811458 + - 0.38934982 + - 0.034285296 + - 0.031385034 + - 0.0049810726 + laughterScore: 0 + - frameNumber: 1410 + frameDelay: 0 + Visemes: + - 0.051616054 + - 0.018716095 + - 0.0029022715 + - 0.0018304974 + - 0.024981288 + - 0.22525124 + - 0.001090056 + - 0.0038536845 + - 0.269414 + - 0.0032787917 + - 0.057873867 + - 0.28662273 + - 0.026365217 + - 0.022220183 + - 0.0039840126 + laughterScore: 0 + - frameNumber: 1411 + frameDelay: 0 + Visemes: + - 0.04229338 + - 0.022374753 + - 0.0020665878 + - 0.0013583916 + - 0.037015848 + - 0.15839544 + - 0.0008031826 + - 0.0027788426 + - 0.45129627 + - 0.0023669142 + - 0.04071797 + - 0.2014326 + - 0.018536929 + - 0.015640413 + - 0.0029224767 + laughterScore: 0 + - frameNumber: 1412 + frameDelay: 0 + Visemes: + - 0.046428815 + - 0.017215014 + - 0.0016378795 + - 0.0015603513 + - 0.07438852 + - 0.115328416 + - 0.0006345018 + - 0.0020222121 + - 0.53796196 + - 0.0021874227 + - 0.030499985 + - 0.14125298 + - 0.0142042935 + - 0.012005772 + - 0.0026719435 + laughterScore: 0 + - frameNumber: 1413 + frameDelay: 0 + Visemes: + - 0.045232587 + - 0.017080352 + - 0.0012016151 + - 0.0011688771 + - 0.05713505 + - 0.083867125 + - 0.00044994344 + - 0.0014470926 + - 0.5163488 + - 0.0017473632 + - 0.110456936 + - 0.098990194 + - 0.010436339 + - 0.05233082 + - 0.0021069928 + laughterScore: 0 + - frameNumber: 1414 + frameDelay: 0 + Visemes: + - 0.0433075 + - 0.014939649 + - 0.0009250969 + - 0.000854952 + - 0.0438312 + - 0.06042734 + - 0.0003175586 + - 0.0010286795 + - 0.3992069 + - 0.0014620067 + - 0.13412382 + - 0.070075236 + - 0.007818279 + - 0.21975188 + - 0.0019299347 + laughterScore: 0 + - frameNumber: 1415 + frameDelay: 0 + Visemes: + - 0.033582594 + - 0.010591512 + - 0.0006618527 + - 0.000600158 + - 0.030812118 + - 0.04246754 + - 0.00022260776 + - 0.00072140933 + - 0.27981254 + - 0.0010420606 + - 0.19039235 + - 0.04914296 + - 0.005600956 + - 0.3528892 + - 0.0014601265 + laughterScore: 0 + - frameNumber: 1416 + frameDelay: 0 + Visemes: + - 0.02475606 + - 0.007423247 + - 0.00046816317 + - 0.00042075446 + - 0.021584332 + - 0.029766735 + - 0.00015602379 + - 0.0005052758 + - 0.19610602 + - 0.0007318234 + - 0.1742438 + - 0.03445728 + - 0.003961331 + - 0.50437444 + - 0.0010447243 + laughterScore: 0 + - frameNumber: 1417 + frameDelay: 0 + Visemes: + - 0.018924808 + - 0.005209384 + - 0.00034310544 + - 0.00029611727 + - 0.015139014 + - 0.020858366 + - 0.00010946062 + - 0.00035446245 + - 0.13873762 + - 0.00051977445 + - 0.13951093 + - 0.024245428 + - 0.0028014309 + - 0.63216615 + - 0.000783929 + laughterScore: 0 + - frameNumber: 1418 + frameDelay: 0 + Visemes: + - 0.015961012 + - 0.003670767 + - 0.0002683126 + - 0.00020982718 + - 0.010719651 + - 0.014651982 + - 0.00007817397 + - 0.00025444556 + - 0.10468581 + - 0.00040314224 + - 0.122250676 + - 0.01705794 + - 0.0019715412 + - 0.70720947 + - 0.0006071783 + laughterScore: 0 + - frameNumber: 1419 + frameDelay: 0 + Visemes: + - 0.015214475 + - 0.0029734843 + - 0.0005903361 + - 0.00018089164 + - 0.008230207 + - 0.010604716 + - 0.00007392234 + - 0.0002539276 + - 0.24684635 + - 0.00052309263 + - 0.09399735 + - 0.01211785 + - 0.0014159854 + - 0.60575825 + - 0.0012190817 + laughterScore: 0 + - frameNumber: 1420 + frameDelay: 0 + Visemes: + - 0.011820246 + - 0.0024572783 + - 0.002855156 + - 0.00026960275 + - 0.0059394073 + - 0.0074501513 + - 0.00007356873 + - 0.0022879913 + - 0.4088955 + - 0.00075346197 + - 0.071902044 + - 0.009072259 + - 0.00101737 + - 0.4743309 + - 0.00087504584 + laughterScore: 0 + - frameNumber: 1421 + frameDelay: 0 + Visemes: + - 0.010152178 + - 0.0031166868 + - 0.0037668503 + - 0.0003452851 + - 0.0082656685 + - 0.0052507455 + - 0.00012134003 + - 0.12328666 + - 0.4523515 + - 0.0007148485 + - 0.05178131 + - 0.0063704476 + - 0.00077560527 + - 0.3330791 + - 0.00062174216 + laughterScore: 0 + - frameNumber: 1422 + frameDelay: 0 + Visemes: + - 0.009463219 + - 0.0030973747 + - 0.0030182495 + - 0.00040363282 + - 0.007314403 + - 0.0036988924 + - 0.00015568075 + - 0.3791666 + - 0.3180404 + - 0.0005201981 + - 0.036360323 + - 0.004462322 + - 0.0005811733 + - 0.23326674 + - 0.0004507921 + laughterScore: 0 + - frameNumber: 1423 + frameDelay: 0 + Visemes: + - 0.009007502 + - 0.0023857444 + - 0.0023068744 + - 0.00046165127 + - 0.0091513 + - 0.0026547862 + - 0.00013559309 + - 0.5577131 + - 0.22290254 + - 0.0003701948 + - 0.02551716 + - 0.0031283102 + - 0.0005136139 + - 0.16340725 + - 0.0003444116 + laughterScore: 0 + - frameNumber: 1424 + frameDelay: 0 + Visemes: + - 0.010190153 + - 0.0019243754 + - 0.0019570356 + - 0.0017152743 + - 0.025996648 + - 0.0026635427 + - 0.00011214719 + - 0.66231036 + - 0.1569065 + - 0.00027164465 + - 0.018026888 + - 0.0022139216 + - 0.0006430963 + - 0.11465899 + - 0.00040941575 + laughterScore: 0 + - frameNumber: 1425 + frameDelay: 0 + Visemes: + - 0.012934383 + - 0.0015099712 + - 0.0014309477 + - 0.0042338455 + - 0.02895835 + - 0.0021691043 + - 0.00009016389 + - 0.67770565 + - 0.11293418 + - 0.0002621652 + - 0.029822525 + - 0.036462612 + - 0.0050881742 + - 0.08556838 + - 0.000829515 + laughterScore: 0 + - frameNumber: 1426 + frameDelay: 0 + Visemes: + - 0.017517347 + - 0.0012492654 + - 0.0010600943 + - 0.0037255925 + - 0.02315025 + - 0.0018347164 + - 0.000101243655 + - 0.4820173 + - 0.079786584 + - 0.002372933 + - 0.06497949 + - 0.05688382 + - 0.035214826 + - 0.2285739 + - 0.0015325876 + laughterScore: 0 + - frameNumber: 1427 + frameDelay: 0 + Visemes: + - 0.019275144 + - 0.0010109281 + - 0.000829091 + - 0.003262117 + - 0.017918691 + - 0.0014665904 + - 0.00009166011 + - 0.3377375 + - 0.056760363 + - 0.005010506 + - 0.06957462 + - 0.058830358 + - 0.043895885 + - 0.38174474 + - 0.0025918055 + laughterScore: 0 + - frameNumber: 1428 + frameDelay: 0 + Visemes: + - 0.026234671 + - 0.00092902326 + - 0.002177237 + - 0.024195073 + - 0.016073313 + - 0.002410865 + - 0.00020022315 + - 0.23667002 + - 0.04416724 + - 0.0065468485 + - 0.062478382 + - 0.049706645 + - 0.041493315 + - 0.48155338 + - 0.005163788 + laughterScore: 0 + - frameNumber: 1429 + frameDelay: 0 + Visemes: + - 0.029035551 + - 0.0048687197 + - 0.013081432 + - 0.02476805 + - 0.027063958 + - 0.0021114654 + - 0.00023677312 + - 0.1659705 + - 0.041079983 + - 0.011883383 + - 0.08111398 + - 0.04339059 + - 0.07685727 + - 0.47395098 + - 0.004587381 + laughterScore: 0 + - frameNumber: 1430 + frameDelay: 0 + Visemes: + - 0.027817996 + - 0.099490605 + - 0.023691643 + - 0.029491533 + - 0.05062771 + - 0.0021802296 + - 0.00063830387 + - 0.11641902 + - 0.031358495 + - 0.010659577 + - 0.1593172 + - 0.03050852 + - 0.07026162 + - 0.34374064 + - 0.0037969616 + laughterScore: 0 + - frameNumber: 1431 + frameDelay: 0 + Visemes: + - 0.035221606 + - 0.22469093 + - 0.05413234 + - 0.03053742 + - 0.07606202 + - 0.0025048542 + - 0.0017911638 + - 0.08202889 + - 0.022703242 + - 0.007792198 + - 0.14471915 + - 0.021492649 + - 0.051784467 + - 0.24146336 + - 0.0030757799 + laughterScore: 0 + - frameNumber: 1432 + frameDelay: 0 + Visemes: + - 0.03731206 + - 0.35571003 + - 0.1029896 + - 0.025406182 + - 0.057899177 + - 0.0019022753 + - 0.0013572718 + - 0.05794094 + - 0.016297542 + - 0.0057607507 + - 0.11110729 + - 0.015099953 + - 0.039302375 + - 0.16911364 + - 0.0028010316 + laughterScore: 0 + - frameNumber: 1433 + frameDelay: 0 + Visemes: + - 0.031734727 + - 0.5183409 + - 0.07972399 + - 0.018791893 + - 0.04070848 + - 0.003025514 + - 0.0009837167 + - 0.040564306 + - 0.011710288 + - 0.0043427213 + - 0.078359224 + - 0.010694669 + - 0.04058843 + - 0.118381515 + - 0.0020497693 + laughterScore: 0 + - frameNumber: 1434 + frameDelay: 0 + Visemes: + - 0.030864501 + - 0.3678953 + - 0.05628569 + - 0.01330146 + - 0.028641557 + - 0.0032717143 + - 0.00073175604 + - 0.028404653 + - 0.008399439 + - 0.0032130005 + - 0.05512825 + - 0.007793442 + - 0.31113836 + - 0.082872145 + - 0.002058827 + laughterScore: 0 + - frameNumber: 1435 + frameDelay: 0 + Visemes: + - 0.03506261 + - 0.2632014 + - 0.03970253 + - 0.009363617 + - 0.020200554 + - 0.00395088 + - 0.000558215 + - 0.019903377 + - 0.006039805 + - 0.0023588466 + - 0.039037604 + - 0.005715748 + - 0.49221832 + - 0.058015093 + - 0.004671496 + laughterScore: 0 + - frameNumber: 1436 + frameDelay: 0 + Visemes: + - 0.035383575 + - 0.18662424 + - 0.027916728 + - 0.006578923 + - 0.014263187 + - 0.0042536063 + - 0.00042892015 + - 0.013955191 + - 0.004331061 + - 0.0017281454 + - 0.027713468 + - 0.0043190448 + - 0.6275304 + - 0.040612817 + - 0.0043607485 + laughterScore: 0 + - frameNumber: 1437 + frameDelay: 0 + Visemes: + - 0.03138398 + - 0.13085486 + - 0.019718189 + - 0.00466739 + - 0.010317412 + - 0.02721046 + - 0.00046964313 + - 0.009913623 + - 0.0035648854 + - 0.0012410629 + - 0.01959939 + - 0.0035736626 + - 0.70471203 + - 0.02843115 + - 0.0043422803 + laughterScore: 0 + - frameNumber: 1438 + frameDelay: 0 + Visemes: + - 0.02755533 + - 0.09172956 + - 0.0138489 + - 0.0033312314 + - 0.007434324 + - 0.09719862 + - 0.00035929182 + - 0.0069814185 + - 0.0026279956 + - 0.00089614425 + - 0.013915232 + - 0.002679889 + - 0.7075508 + - 0.019904371 + - 0.0039868313 + laughterScore: 0 + - frameNumber: 1439 + frameDelay: 0 + Visemes: + - 0.029186614 + - 0.064392835 + - 0.009733298 + - 0.0024128144 + - 0.0055397656 + - 0.1288841 + - 0.0002911935 + - 0.0049425205 + - 0.001982538 + - 0.0006892923 + - 0.010254012 + - 0.002464176 + - 0.716277 + - 0.013945371 + - 0.009004403 + laughterScore: 0 + - frameNumber: 1440 + frameDelay: 0 + Visemes: + - 0.025481753 + - 0.045134034 + - 0.0068261176 + - 0.0017159237 + - 0.0040590195 + - 0.09474669 + - 0.00022600585 + - 0.0034901951 + - 0.0014439701 + - 0.00064636604 + - 0.0073939837 + - 0.0020581763 + - 0.77748895 + - 0.009781044 + - 0.019507755 + laughterScore: 0 + - frameNumber: 1441 + frameDelay: 0 + Visemes: + - 0.023736557 + - 0.031672787 + - 0.004814749 + - 0.0013012545 + - 0.0032655604 + - 0.06773499 + - 0.00019097212 + - 0.0025265412 + - 0.0011482586 + - 0.000763312 + - 0.005536406 + - 0.0025027264 + - 0.80505073 + - 0.006910277 + - 0.042844914 + laughterScore: 0 + - frameNumber: 1442 + frameDelay: 0 + Visemes: + - 0.019457495 + - 0.022199681 + - 0.0034550342 + - 0.0009933512 + - 0.0028038088 + - 0.047569234 + - 0.00015894866 + - 0.0018087344 + - 0.0009395573 + - 0.0006503164 + - 0.0040055662 + - 0.0018914796 + - 0.81928426 + - 0.004847 + - 0.06993555 + laughterScore: 0 + - frameNumber: 1443 + frameDelay: 0 + Visemes: + - 0.015702652 + - 0.015554803 + - 0.0025155982 + - 0.00076404517 + - 0.0022158986 + - 0.033380188 + - 0.00015482618 + - 0.0013006849 + - 0.0007245819 + - 0.0005146965 + - 0.002896963 + - 0.0014058889 + - 0.8145691 + - 0.0034007982 + - 0.10489928 + laughterScore: 0 + - frameNumber: 1444 + frameDelay: 0 + Visemes: + - 0.013143802 + - 0.010901242 + - 0.0018458217 + - 0.00058172934 + - 0.001726661 + - 0.023447867 + - 0.00012490682 + - 0.0009569169 + - 0.00056885846 + - 0.00044087594 + - 0.002211343 + - 0.001107298 + - 0.73858875 + - 0.002402177 + - 0.20195179 + laughterScore: 0 + - frameNumber: 1445 + frameDelay: 0 + Visemes: + - 0.010683618 + - 0.007634673 + - 0.0014299555 + - 0.00046486894 + - 0.0013786979 + - 0.016482573 + - 0.00011757459 + - 0.0009453032 + - 0.0004250917 + - 0.00039519026 + - 0.0017721459 + - 0.00088305824 + - 0.54827946 + - 0.0017068838 + - 0.40740094 + laughterScore: 0 + - frameNumber: 1446 + frameDelay: 0 + Visemes: + - 0.009399449 + - 0.0053484715 + - 0.0012934273 + - 0.00043033878 + - 0.0011661098 + - 0.011574159 + - 0.00021371031 + - 0.012519824 + - 0.00033103902 + - 0.0017965343 + - 0.00468404 + - 0.0011606594 + - 0.39570513 + - 0.0012424388 + - 0.5531347 + laughterScore: 0 + - frameNumber: 1447 + frameDelay: 0 + Visemes: + - 0.010049192 + - 0.003780989 + - 0.0019517906 + - 0.0007409022 + - 0.0018012171 + - 0.008170244 + - 0.00015460537 + - 0.22542365 + - 0.0004219843 + - 0.0016510221 + - 0.0077859387 + - 0.0009241482 + - 0.28788775 + - 0.00089511846 + - 0.4483615 + laughterScore: 0 + - frameNumber: 1448 + frameDelay: 0 + Visemes: + - 0.012196187 + - 0.0028345855 + - 0.0016360196 + - 0.003956969 + - 0.0027992858 + - 0.0059303553 + - 0.00011869247 + - 0.43787062 + - 0.0003856197 + - 0.0012196449 + - 0.0056513315 + - 0.00068577094 + - 0.20364055 + - 0.0006413322 + - 0.32043305 + laughterScore: 0 + - frameNumber: 1449 + frameDelay: 0 + Visemes: + - 0.01792625 + - 0.0021610921 + - 0.0012343469 + - 0.0090281125 + - 0.0070012184 + - 0.0043808096 + - 0.00013345602 + - 0.58096427 + - 0.00040206473 + - 0.0008836872 + - 0.0040763165 + - 0.00053738104 + - 0.14517087 + - 0.0004826661 + - 0.22561747 + laughterScore: 0 + - frameNumber: 1450 + frameDelay: 0 + Visemes: + - 0.029371377 + - 0.001889651 + - 0.0009480822 + - 0.01443238 + - 0.026896738 + - 0.0037679 + - 0.0001823678 + - 0.65333503 + - 0.00086639985 + - 0.0006309832 + - 0.003032481 + - 0.0004149543 + - 0.10499706 + - 0.00044890656 + - 0.15878572 + laughterScore: 0 + - frameNumber: 1451 + frameDelay: 0 + Visemes: + - 0.049128585 + - 0.002915082 + - 0.0007889376 + - 0.020160832 + - 0.05470082 + - 0.00704516 + - 0.0008674939 + - 0.6696194 + - 0.0031590885 + - 0.0004643543 + - 0.002451227 + - 0.00039018673 + - 0.076255515 + - 0.00041098875 + - 0.11164235 + laughterScore: 0 + - frameNumber: 1452 + frameDelay: 0 + Visemes: + - 0.040818647 + - 0.002180948 + - 0.00056643214 + - 0.018581316 + - 0.31757408 + - 0.0064436835 + - 0.0017433981 + - 0.47426972 + - 0.003133249 + - 0.00033124097 + - 0.0019603553 + - 0.00028565017 + - 0.05356341 + - 0.00036493997 + - 0.078182936 + laughterScore: 0 + - frameNumber: 1453 + frameDelay: 0 + Visemes: + - 0.030904124 + - 0.0015444679 + - 0.0004304439 + - 0.014127445 + - 0.5143034 + - 0.0049199825 + - 0.002009362 + - 0.33367312 + - 0.0022241143 + - 0.00024556913 + - 0.002201307 + - 0.00021624265 + - 0.03810928 + - 0.00026343676 + - 0.05482768 + laughterScore: 0 + - frameNumber: 1454 + frameDelay: 0 + Visemes: + - 0.026895074 + - 0.0011714135 + - 0.00033490622 + - 0.010464521 + - 0.5333041 + - 0.00447669 + - 0.0022850437 + - 0.24029778 + - 0.0016270548 + - 0.00021336335 + - 0.10827038 + - 0.00056065613 + - 0.030233119 + - 0.0003616056 + - 0.03950427 + laughterScore: 0 + - frameNumber: 1455 + frameDelay: 0 + Visemes: + - 0.020204876 + - 0.000841089 + - 0.0002456426 + - 0.007503536 + - 0.37943774 + - 0.003259833 + - 0.0020131245 + - 0.16850153 + - 0.0011740106 + - 0.0010121687 + - 0.2238183 + - 0.0010260392 + - 0.029309202 + - 0.004517978 + - 0.15713492 + laughterScore: 0 + - frameNumber: 1456 + frameDelay: 0 + Visemes: + - 0.015515201 + - 0.00061067333 + - 0.00018467398 + - 0.005458338 + - 0.26625308 + - 0.0023434956 + - 0.0014486976 + - 0.117975615 + - 0.0008824258 + - 0.0020682132 + - 0.40583402 + - 0.0010628279 + - 0.028433353 + - 0.0041824365 + - 0.14774692 + laughterScore: 0 + - frameNumber: 1457 + frameDelay: 0 + Visemes: + - 0.012165708 + - 0.00044327724 + - 0.0002185289 + - 0.0064190133 + - 0.22050458 + - 0.0019755436 + - 0.0016004764 + - 0.082588114 + - 0.0007700737 + - 0.0062233745 + - 0.5133644 + - 0.0011437663 + - 0.027731342 + - 0.0030881613 + - 0.12176367 + laughterScore: 0 + - frameNumber: 1458 + frameDelay: 0 + Visemes: + - 0.013015572 + - 0.0005504634 + - 0.0013594427 + - 0.010259436 + - 0.3291074 + - 0.0023894794 + - 0.021273365 + - 0.057871778 + - 0.000962278 + - 0.00557246 + - 0.43912476 + - 0.0010891748 + - 0.02547921 + - 0.00222795 + - 0.08971723 + laughterScore: 0 + - frameNumber: 1459 + frameDelay: 0 + Visemes: + - 0.021781173 + - 0.003868598 + - 0.0025901962 + - 0.011146109 + - 0.36085916 + - 0.013004463 + - 0.107932 + - 0.04055065 + - 0.0008690419 + - 0.004157825 + - 0.34768245 + - 0.00089763355 + - 0.019697627 + - 0.0016467762 + - 0.063316345 + laughterScore: 0 + - frameNumber: 1460 + frameDelay: 0 + Visemes: + - 0.02246181 + - 0.0027788472 + - 0.0018648043 + - 0.008835883 + - 0.52806544 + - 0.009485177 + - 0.08572102 + - 0.0310535 + - 0.0006292868 + - 0.0029428073 + - 0.2455935 + - 0.0006362417 + - 0.014387817 + - 0.0011551777 + - 0.044388693 + laughterScore: 0 + - frameNumber: 1461 + frameDelay: 0 + Visemes: + - 0.024799094 + - 0.002024884 + - 0.001357051 + - 0.0069909166 + - 0.49139562 + - 0.00694384 + - 0.075884834 + - 0.022241455 + - 0.0005273166 + - 0.073210746 + - 0.23772585 + - 0.0006550867 + - 0.014622219 + - 0.0010937671 + - 0.040527306 + laughterScore: 0 + - frameNumber: 1462 + frameDelay: 0 + Visemes: + - 0.03104595 + - 0.0026148907 + - 0.0010809592 + - 0.005554727 + - 0.3529261 + - 0.00555856 + - 0.05887781 + - 0.015708275 + - 0.0012395659 + - 0.2538957 + - 0.18391575 + - 0.0067133396 + - 0.0169822 + - 0.0147651 + - 0.049121108 + laughterScore: 0 + - frameNumber: 1463 + frameDelay: 0 + Visemes: + - 0.024222486 + - 0.002166233 + - 0.0008727511 + - 0.003958909 + - 0.24714272 + - 0.0039540743 + - 0.041599058 + - 0.011002167 + - 0.000982098 + - 0.4679443 + - 0.13237794 + - 0.006086814 + - 0.0119287 + - 0.010597298 + - 0.0351645 + laughterScore: 0 + - frameNumber: 1464 + frameDelay: 0 + Visemes: + - 0.020137208 + - 0.0016154359 + - 0.0006395471 + - 0.002790897 + - 0.1731265 + - 0.0031705538 + - 0.029234964 + - 0.007706502 + - 0.0007534901 + - 0.5948049 + - 0.10423464 + - 0.020817969 + - 0.008496481 + - 0.0076085553 + - 0.024862414 + laughterScore: 0 + - frameNumber: 1465 + frameDelay: 0 + Visemes: + - 0.025011797 + - 0.0012113618 + - 0.00048206118 + - 0.0019697903 + - 0.12176973 + - 0.0035563936 + - 0.02055163 + - 0.0054035326 + - 0.00063396664 + - 0.46537873 + - 0.21260984 + - 0.10891115 + - 0.009331844 + - 0.0055453843 + - 0.017632836 + laughterScore: 0 + - frameNumber: 1466 + frameDelay: 0 + Visemes: + - 0.024525393 + - 0.000976269 + - 0.0003738589 + - 0.0013941487 + - 0.08596756 + - 0.002879917 + - 0.014650275 + - 0.003805469 + - 0.00064460665 + - 0.33000183 + - 0.2443624 + - 0.26195478 + - 0.011733743 + - 0.0043161875 + - 0.012413576 + laughterScore: 0 + - frameNumber: 1467 + frameDelay: 0 + Visemes: + - 0.01982759 + - 0.00071262574 + - 0.00034765943 + - 0.0010175202 + - 0.060579248 + - 0.0020703438 + - 0.010326319 + - 0.002691317 + - 0.0004984871 + - 0.23105772 + - 0.43523046 + - 0.21513975 + - 0.008665229 + - 0.0031408707 + - 0.008694866 + laughterScore: 0 + - frameNumber: 1468 + frameDelay: 0 + Visemes: + - 0.015352129 + - 0.0006192571 + - 0.001009146 + - 0.00076702377 + - 0.043135434 + - 0.0015138685 + - 0.007297243 + - 0.0019053607 + - 0.00045670517 + - 0.16178127 + - 0.59589946 + - 0.15505174 + - 0.0068601193 + - 0.0022518854 + - 0.006099358 + laughterScore: 0 + - frameNumber: 1469 + frameDelay: 0 + Visemes: + - 0.012345662 + - 0.0017546425 + - 0.00525936 + - 0.00067255914 + - 0.031449664 + - 0.0011873913 + - 0.0051449174 + - 0.001375079 + - 0.0004268078 + - 0.11327991 + - 0.7060053 + - 0.10944922 + - 0.005551536 + - 0.0016653612 + - 0.0044326 + laughterScore: 0 + - frameNumber: 1470 + frameDelay: 0 + Visemes: + - 0.011213447 + - 0.0048013646 + - 0.020766348 + - 0.00064726593 + - 0.023932386 + - 0.0027718043 + - 0.0037489603 + - 0.0011458639 + - 0.00071783573 + - 0.079381876 + - 0.7610321 + - 0.078012474 + - 0.0073264437 + - 0.0012045832 + - 0.0032972407 + laughterScore: 0 + - frameNumber: 1471 + frameDelay: 0 + Visemes: + - 0.010973762 + - 0.031610753 + - 0.23829994 + - 0.0010899802 + - 0.024455972 + - 0.0052316217 + - 0.0028263552 + - 0.0014773624 + - 0.0013304645 + - 0.055838667 + - 0.5609954 + - 0.055455197 + - 0.006963074 + - 0.0008665457 + - 0.0025848886 + laughterScore: 0 + - frameNumber: 1472 + frameDelay: 0 + Visemes: + - 0.009484883 + - 0.040597636 + - 0.42013294 + - 0.0069796992 + - 0.019028258 + - 0.006162613 + - 0.0020486496 + - 0.0028626146 + - 0.0010151612 + - 0.03912733 + - 0.40602484 + - 0.038852397 + - 0.0052465177 + - 0.00061054475 + - 0.0018258923 + laughterScore: 0 + - frameNumber: 1473 + frameDelay: 0 + Visemes: + - 0.009781221 + - 0.043655444 + - 0.5355858 + - 0.02098358 + - 0.020344745 + - 0.00945348 + - 0.0015143887 + - 0.006416156 + - 0.0007635132 + - 0.027408315 + - 0.29138762 + - 0.027209748 + - 0.0037761892 + - 0.00042992225 + - 0.0012898052 + laughterScore: 0 + - frameNumber: 1474 + frameDelay: 0 + Visemes: + - 0.015824217 + - 0.055181716 + - 0.58779293 + - 0.033866845 + - 0.033717826 + - 0.012109705 + - 0.0011291349 + - 0.007820282 + - 0.00060466776 + - 0.019242866 + - 0.20951945 + - 0.019094625 + - 0.0028296502 + - 0.00030940902 + - 0.00095661293 + laughterScore: 0 + - frameNumber: 1475 + frameDelay: 0 + Visemes: + - 0.020205613 + - 0.047482 + - 0.4158803 + - 0.0253118 + - 0.13333754 + - 0.16560754 + - 0.006738024 + - 0.0069262814 + - 0.0004803477 + - 0.013488767 + - 0.14785531 + - 0.013556801 + - 0.0022034708 + - 0.00023541998 + - 0.00069075136 + laughterScore: 0 + - frameNumber: 1476 + frameDelay: 0 + Visemes: + - 0.024861224 + - 0.046370614 + - 0.29450738 + - 0.018611316 + - 0.16758424 + - 0.30035678 + - 0.0118932845 + - 0.007593095 + - 0.00048364507 + - 0.009483894 + - 0.10390939 + - 0.0095517095 + - 0.0035605705 + - 0.0002161072 + - 0.0010167697 + laughterScore: 0 + - frameNumber: 1477 + frameDelay: 0 + Visemes: + - 0.030543767 + - 0.054327928 + - 0.20752767 + - 0.013497911 + - 0.1288383 + - 0.44748864 + - 0.009008329 + - 0.008651755 + - 0.0009024838 + - 0.006770955 + - 0.07599627 + - 0.0069480543 + - 0.007260649 + - 0.00026395184 + - 0.0019733743 + laughterScore: 0 + - frameNumber: 1478 + frameDelay: 0 + Visemes: + - 0.030642554 + - 0.045162264 + - 0.14593822 + - 0.009613273 + - 0.09514528 + - 0.5740129 + - 0.0064655873 + - 0.0066289 + - 0.0033213093 + - 0.0051685353 + - 0.05681409 + - 0.0053423834 + - 0.012786115 + - 0.00024378927 + - 0.0027148903 + laughterScore: 0 + - frameNumber: 1479 + frameDelay: 0 + Visemes: + - 0.024974354 + - 0.03200194 + - 0.102162495 + - 0.006740393 + - 0.067107946 + - 0.6777212 + - 0.0045919083 + - 0.00465706 + - 0.0025345974 + - 0.003682407 + - 0.04255283 + - 0.014386363 + - 0.0145399105 + - 0.0001851653 + - 0.0021614505 + laughterScore: 0 + - frameNumber: 1480 + frameDelay: 0 + Visemes: + - 0.01959934 + - 0.022423238 + - 0.07151419 + - 0.0047191097 + - 0.047000848 + - 0.47745192 + - 0.003229916 + - 0.0032610942 + - 0.0018818909 + - 0.0025867524 + - 0.030613586 + - 0.2983229 + - 0.015560592 + - 0.00013136842 + - 0.0017033024 + laughterScore: 0 + - frameNumber: 1481 + frameDelay: 0 + Visemes: + - 0.017603105 + - 0.015727587 + - 0.050060466 + - 0.0033047854 + - 0.032981753 + - 0.33509734 + - 0.002292309 + - 0.0022855264 + - 0.0018363653 + - 0.0018387319 + - 0.021875016 + - 0.4881096 + - 0.025121517 + - 0.00010009419 + - 0.0017658626 + laughterScore: 0 + - frameNumber: 1482 + frameDelay: 0 + Visemes: + - 0.013375451 + - 0.011039834 + - 0.035042346 + - 0.0023140581 + - 0.023109784 + - 0.2345891 + - 0.0016066745 + - 0.0016005116 + - 0.0018551984 + - 0.0012934705 + - 0.015481044 + - 0.63678676 + - 0.020479953 + - 0.00007385468 + - 0.0013520069 + laughterScore: 0 + - frameNumber: 1483 + frameDelay: 0 + Visemes: + - 0.009746785 + - 0.007737999 + - 0.024529643 + - 0.001620068 + - 0.016185293 + - 0.16421758 + - 0.0011251646 + - 0.0011205463 + - 0.0018612256 + - 0.0009088435 + - 0.011029607 + - 0.7439688 + - 0.014939277 + - 0.00005417368 + - 0.00095502654 + laughterScore: 0 + - frameNumber: 1484 + frameDelay: 0 + Visemes: + - 0.007219243 + - 0.005424215 + - 0.017170753 + - 0.0011348688 + - 0.011336724 + - 0.11496146 + - 0.0007880893 + - 0.0007845852 + - 0.0020123047 + - 0.0006458043 + - 0.008782599 + - 0.81784475 + - 0.01117628 + - 0.000042336014 + - 0.00067597465 + laughterScore: 0 + - frameNumber: 1485 + frameDelay: 0 + Visemes: + - 0.0055466797 + - 0.003810258 + - 0.0120195355 + - 0.00079566415 + - 0.007944021 + - 0.080483876 + - 0.00055229414 + - 0.000549389 + - 0.0039171795 + - 0.00047826432 + - 0.006726335 + - 0.8679 + - 0.008759065 + - 0.000035292793 + - 0.00048206458 + laughterScore: 0 + - frameNumber: 1486 + frameDelay: 0 + Visemes: + - 0.0047868965 + - 0.003100865 + - 0.008413835 + - 0.0005580522 + - 0.0056184065 + - 0.056364328 + - 0.0003886079 + - 0.00038529604 + - 0.06939216 + - 0.00038733316 + - 0.0051928274 + - 0.837014 + - 0.00801746 + - 0.000031078645 + - 0.00034880094 + laughterScore: 0 + - frameNumber: 1487 + frameDelay: 0 + Visemes: + - 0.0034553865 + - 0.002873597 + - 0.0058898623 + - 0.00039158226 + - 0.004002697 + - 0.03962416 + - 0.00027536025 + - 0.00027203024 + - 0.34667322 + - 0.0002719166 + - 0.0036576705 + - 0.5866826 + - 0.005663831 + - 0.000021780683 + - 0.0002442427 + laughterScore: 0 + - frameNumber: 1488 + frameDelay: 0 + Visemes: + - 0.002646019 + - 0.002445359 + - 0.004123639 + - 0.00027647748 + - 0.0034534312 + - 0.027919842 + - 0.00019761079 + - 0.00019555108 + - 0.54110706 + - 0.0001906367 + - 0.0025698137 + - 0.41069692 + - 0.0039912923 + - 0.000015254932 + - 0.00017102798 + laughterScore: 0 + - frameNumber: 1489 + frameDelay: 0 + Visemes: + - 0.0027534922 + - 0.0020579412 + - 0.0029232062 + - 0.00067435595 + - 0.038092036 + - 0.019758552 + - 0.00042340334 + - 0.0006246516 + - 0.64025736 + - 0.00013414299 + - 0.0018419751 + - 0.2874938 + - 0.0028343496 + - 0.00001080446 + - 0.00011987812 + laughterScore: 0 + - frameNumber: 1490 + frameDelay: 0 + Visemes: + - 0.0043771807 + - 0.001585825 + - 0.0021468154 + - 0.0015602175 + - 0.051329754 + - 0.013930656 + - 0.0003097169 + - 0.2690596 + - 0.45089075 + - 0.000098314624 + - 0.0013482246 + - 0.20125198 + - 0.0020179562 + - 0.000008057724 + - 0.00008491447 + laughterScore: 0 + - frameNumber: 1491 + frameDelay: 0 + Visemes: + - 0.004244365 + - 0.0011449163 + - 0.0016920808 + - 0.0021051099 + - 0.039371245 + - 0.009765295 + - 0.00022507881 + - 0.48222327 + - 0.31576428 + - 0.00007202044 + - 0.0009986223 + - 0.14088371 + - 0.0014432075 + - 0.000006238025 + - 0.000060531944 + laughterScore: 0 + - frameNumber: 1492 + frameDelay: 0 + Visemes: + - 0.00582679 + - 0.00086234557 + - 0.0012474892 + - 0.0016457045 + - 0.032861102 + - 0.006873283 + - 0.00016203529 + - 0.62876785 + - 0.22117306 + - 0.000057427067 + - 0.00075585605 + - 0.0986397 + - 0.0010741514 + - 0.000007508369 + - 0.000045665496 + laughterScore: 0 + - frameNumber: 1493 + frameDelay: 0 + Visemes: + - 0.009705748 + - 0.0007505276 + - 0.00093526504 + - 0.0015502026 + - 0.038176227 + - 0.00521339 + - 0.00011886465 + - 0.71776307 + - 0.15493414 + - 0.000049161397 + - 0.00060913456 + - 0.06909143 + - 0.0010555462 + - 0.000011162746 + - 0.000036112117 + laughterScore: 0 + - frameNumber: 1494 + frameDelay: 0 + Visemes: + - 0.013623999 + - 0.0006256532 + - 0.00071166083 + - 0.0014786093 + - 0.035775535 + - 0.0040387716 + - 0.00009150965 + - 0.7849753 + - 0.1084892 + - 0.00003957731 + - 0.0005063705 + - 0.04840751 + - 0.001183475 + - 0.000013152765 + - 0.00003971447 + laughterScore: 0 + - frameNumber: 1495 + frameDelay: 0 + Visemes: + - 0.022930441 + - 0.002955382 + - 0.00071373535 + - 0.0036907513 + - 0.047274545 + - 0.007841856 + - 0.000074093296 + - 0.78280216 + - 0.087647006 + - 0.00027234634 + - 0.0037111288 + - 0.034398716 + - 0.003768521 + - 0.00016541773 + - 0.0017539554 + laughterScore: 0 + - frameNumber: 1496 + frameDelay: 0 + Visemes: + - 0.03990929 + - 0.04847368 + - 0.0028960088 + - 0.008471885 + - 0.09924002 + - 0.07647838 + - 0.0001088115 + - 0.6261004 + - 0.06169929 + - 0.00027327152 + - 0.0057131364 + - 0.024321165 + - 0.0042763883 + - 0.00019081346 + - 0.0018474993 + laughterScore: 0 + - frameNumber: 1497 + frameDelay: 0 + Visemes: + - 0.06570641 + - 0.18660048 + - 0.0056295376 + - 0.011265671 + - 0.11323415 + - 0.08292906 + - 0.0003565393 + - 0.4574014 + - 0.043505732 + - 0.00031550697 + - 0.0062924065 + - 0.01762707 + - 0.005273465 + - 0.0003727675 + - 0.0034898878 + laughterScore: 0 + - frameNumber: 1498 + frameDelay: 0 + Visemes: + - 0.07538032 + - 0.3363117 + - 0.019317592 + - 0.016394988 + - 0.09213198 + - 0.067038774 + - 0.0006031785 + - 0.3282889 + - 0.03095283 + - 0.0010344917 + - 0.005486686 + - 0.012848121 + - 0.0051961634 + - 0.00057401723 + - 0.008440368 + laughterScore: 0 + - frameNumber: 1499 + frameDelay: 0 + Visemes: + - 0.06560146 + - 0.41845667 + - 0.014626716 + - 0.012471409 + - 0.071018785 + - 0.06068314 + - 0.00053265505 + - 0.22989188 + - 0.023354873 + - 0.0013060414 + - 0.004468754 + - 0.009563929 + - 0.080887586 + - 0.00041178474 + - 0.0067243557 + laughterScore: 0 + - frameNumber: 1500 + frameDelay: 0 + Visemes: + - 0.052087285 + - 0.32172477 + - 0.010508505 + - 0.009004491 + - 0.050100464 + - 0.042857286 + - 0.00047239132 + - 0.16100155 + - 0.017355822 + - 0.0012713589 + - 0.0034690618 + - 0.007864441 + - 0.31665885 + - 0.000309164 + - 0.005314589 + laughterScore: 0 + - frameNumber: 1501 + frameDelay: 0 + Visemes: + - 0.043604877 + - 0.22799309 + - 0.0074080424 + - 0.00635443 + - 0.03517486 + - 0.030143501 + - 0.00035489682 + - 0.11272909 + - 0.012565708 + - 0.0009930087 + - 0.0025213102 + - 0.0061989226 + - 0.5095411 + - 0.00022805415 + - 0.0041891783 + laughterScore: 0 + - frameNumber: 1502 + frameDelay: 0 + Visemes: + - 0.039141465 + - 0.16144738 + - 0.0052133896 + - 0.0044872826 + - 0.024809526 + - 0.021282796 + - 0.0002833132 + - 0.078939304 + - 0.009028403 + - 0.00079589 + - 0.0018822579 + - 0.0065827593 + - 0.6426674 + - 0.0001684997 + - 0.0032703453 + laughterScore: 0 + - frameNumber: 1503 + frameDelay: 0 + Visemes: + - 0.035057504 + - 0.11312228 + - 0.0036532108 + - 0.0031499604 + - 0.017541265 + - 0.015192474 + - 0.00022354462 + - 0.05528835 + - 0.0064831483 + - 0.0005951505 + - 0.0013781631 + - 0.00968273 + - 0.7361363 + - 0.00012053365 + - 0.002375403 + laughterScore: 0 + - frameNumber: 1504 + frameDelay: 0 + Visemes: + - 0.03595139 + - 0.07940032 + - 0.002573135 + - 0.0022139717 + - 0.012900102 + - 0.011061255 + - 0.00021331651 + - 0.038809925 + - 0.004648831 + - 0.00044709045 + - 0.0010908564 + - 0.025948917 + - 0.78289735 + - 0.00008736739 + - 0.0017561379 + laughterScore: 0 + - frameNumber: 1505 + frameDelay: 0 + Visemes: + - 0.03557153 + - 0.05605738 + - 0.0019091415 + - 0.0016039296 + - 0.010893373 + - 0.00804888 + - 0.00022745624 + - 0.027483787 + - 0.0034395393 + - 0.0003410258 + - 0.0008370437 + - 0.0328084 + - 0.81934536 + - 0.000069723246 + - 0.0013633713 + laughterScore: 0 + - frameNumber: 1506 + frameDelay: 0 + Visemes: + - 0.031027522 + - 0.042313 + - 0.0016754117 + - 0.0015171022 + - 0.032637157 + - 0.00642075 + - 0.0021379557 + - 0.02004337 + - 0.0028120426 + - 0.0002734208 + - 0.0006433832 + - 0.042350367 + - 0.8147276 + - 0.00006135294 + - 0.0013595503 + laughterScore: 0 + - frameNumber: 1507 + frameDelay: 0 + Visemes: + - 0.032496274 + - 0.036833655 + - 0.0019507059 + - 0.0031108335 + - 0.1297475 + - 0.007598186 + - 0.04545889 + - 0.01575696 + - 0.0022707735 + - 0.00025015685 + - 0.00057038665 + - 0.03515838 + - 0.68743837 + - 0.000056317782 + - 0.0013026705 + laughterScore: 0 + - frameNumber: 1508 + frameDelay: 0 + Visemes: + - 0.024387032 + - 0.025842655 + - 0.0014243658 + - 0.0022423756 + - 0.11003699 + - 0.0056047314 + - 0.3090293 + - 0.011602319 + - 0.0016583973 + - 0.0002016996 + - 0.00040990577 + - 0.024633598 + - 0.48195523 + - 0.000040243805 + - 0.0009312043 + laughterScore: 0 + - frameNumber: 1509 + frameDelay: 0 + Visemes: + - 0.018453896 + - 0.018091552 + - 0.0010010004 + - 0.00175575 + - 0.08406003 + - 0.003953896 + - 0.50611293 + - 0.008859393 + - 0.0011717919 + - 0.00016001039 + - 0.00029828 + - 0.017246228 + - 0.3381473 + - 0.000028312523 + - 0.00065961404 + laughterScore: 0 + - frameNumber: 1510 + frameDelay: 0 + Visemes: + - 0.015686773 + - 0.012671172 + - 0.00070684863 + - 0.0019343513 + - 0.067636415 + - 0.0027851982 + - 0.6380974 + - 0.00706272 + - 0.00083875447 + - 0.00018649818 + - 0.00024990295 + - 0.012074164 + - 0.23951748 + - 0.00002085649 + - 0.0005314735 + laughterScore: 0 + - frameNumber: 1511 + frameDelay: 0 + Visemes: + - 0.016856503 + - 0.008936042 + - 0.0007400935 + - 0.0017277432 + - 0.06954828 + - 0.0020896916 + - 0.6921746 + - 0.0072909147 + - 0.00064171216 + - 0.0020013528 + - 0.00036436634 + - 0.008461262 + - 0.18827958 + - 0.000051987714 + - 0.0008358391 + laughterScore: 0 + - frameNumber: 1512 + frameDelay: 0 + Visemes: + - 0.017467009 + - 0.0063220644 + - 0.0017465919 + - 0.0013571857 + - 0.0652919 + - 0.002577989 + - 0.7242743 + - 0.0064364024 + - 0.00049455976 + - 0.005272267 + - 0.00061971985 + - 0.00596712 + - 0.16119857 + - 0.000061624494 + - 0.00091265456 + laughterScore: 0 + - frameNumber: 1513 + frameDelay: 0 + Visemes: + - 0.0192969 + - 0.004630027 + - 0.0043202746 + - 0.0014672675 + - 0.056751527 + - 0.0026053772 + - 0.7294431 + - 0.006365332 + - 0.00044195293 + - 0.034929585 + - 0.0022050887 + - 0.0042443434 + - 0.13162403 + - 0.00022418691 + - 0.0014510169 + laughterScore: 0 + - frameNumber: 1514 + frameDelay: 0 + Visemes: + - 0.017596528 + - 0.0035054227 + - 0.005492743 + - 0.0011790605 + - 0.047956217 + - 0.001949134 + - 0.7621216 + - 0.005350275 + - 0.0003883513 + - 0.05297479 + - 0.0020339193 + - 0.0029887164 + - 0.09469799 + - 0.0002480314 + - 0.0015172157 + laughterScore: 0 + - frameNumber: 1515 + frameDelay: 0 + Visemes: + - 0.023335267 + - 0.009218659 + - 0.0074034054 + - 0.0011210083 + - 0.041296422 + - 0.0021183288 + - 0.7876125 + - 0.0062414696 + - 0.00078681443 + - 0.042007565 + - 0.005607648 + - 0.002117479 + - 0.068158425 + - 0.00025210378 + - 0.0027229232 + laughterScore: 0 + - frameNumber: 1516 + frameDelay: 0 + Visemes: + - 0.041287176 + - 0.02110147 + - 0.009016001 + - 0.0013219909 + - 0.03753078 + - 0.0024560695 + - 0.77565753 + - 0.011405552 + - 0.0009700394 + - 0.036509827 + - 0.0051416783 + - 0.0015904605 + - 0.049696326 + - 0.00030345906 + - 0.0060116067 + laughterScore: 0 + - frameNumber: 1517 + frameDelay: 0 + Visemes: + - 0.074467 + - 0.046244085 + - 0.015149868 + - 0.002489576 + - 0.038425207 + - 0.0040662074 + - 0.7224221 + - 0.017817058 + - 0.0017697203 + - 0.026453137 + - 0.0045945314 + - 0.002491079 + - 0.037478507 + - 0.00033801026 + - 0.0057939384 + laughterScore: 0 + - frameNumber: 1518 + frameDelay: 0 + Visemes: + - 0.12549862 + - 0.094114885 + - 0.07560311 + - 0.0038501876 + - 0.04749638 + - 0.0075094253 + - 0.5525768 + - 0.030260857 + - 0.0016337803 + - 0.019588597 + - 0.004348686 + - 0.0029707188 + - 0.028100446 + - 0.00050207815 + - 0.00594542 + laughterScore: 0 + - frameNumber: 1519 + frameDelay: 0 + Visemes: + - 0.10129568 + - 0.21601796 + - 0.15852492 + - 0.006079612 + - 0.053061917 + - 0.007514448 + - 0.38758403 + - 0.023043662 + - 0.0013223393 + - 0.014684232 + - 0.0035308793 + - 0.0022109803 + - 0.019904599 + - 0.0005449677 + - 0.0046797623 + laughterScore: 0 + - frameNumber: 1520 + frameDelay: 0 + Visemes: + - 0.075464405 + - 0.16838554 + - 0.20477602 + - 0.006317066 + - 0.04316119 + - 0.0058248476 + - 0.27138188 + - 0.018645765 + - 0.0021077935 + - 0.17663848 + - 0.0055992827 + - 0.00175986 + - 0.014097689 + - 0.002204223 + - 0.0036359318 + laughterScore: 0 + - frameNumber: 1521 + frameDelay: 0 + Visemes: + - 0.06077362 + - 0.11883936 + - 0.15245019 + - 0.004596932 + - 0.030438649 + - 0.0041524414 + - 0.18997195 + - 0.0131041985 + - 0.0028425981 + - 0.295328 + - 0.05713234 + - 0.0059676236 + - 0.009966274 + - 0.04893146 + - 0.0055043567 + laughterScore: 0 + - frameNumber: 1522 + frameDelay: 0 + Visemes: + - 0.04792914 + - 0.08328149 + - 0.10696719 + - 0.0032214895 + - 0.021325666 + - 0.0029228588 + - 0.13298085 + - 0.009177418 + - 0.0020458598 + - 0.48783612 + - 0.043212198 + - 0.007753334 + - 0.0070638265 + - 0.03950146 + - 0.0047810827 + laughterScore: 0 + - frameNumber: 1523 + frameDelay: 0 + Visemes: + - 0.03753532 + - 0.058471967 + - 0.07496216 + - 0.0022636808 + - 0.01513668 + - 0.0020661189 + - 0.09308781 + - 0.006436386 + - 0.00145256 + - 0.63166726 + - 0.032003164 + - 0.007746601 + - 0.0053846235 + - 0.028080821 + - 0.0037048243 + laughterScore: 0 + - frameNumber: 1524 + frameDelay: 0 + Visemes: + - 0.029678784 + - 0.041413642 + - 0.052496698 + - 0.0016123843 + - 0.014552021 + - 0.0015204309 + - 0.06516458 + - 0.004527589 + - 0.0017451411 + - 0.72564983 + - 0.024489487 + - 0.008743012 + - 0.005450668 + - 0.02022338 + - 0.0027323207 + laughterScore: 0 + - frameNumber: 1525 + frameDelay: 0 + Visemes: + - 0.024990186 + - 0.029119316 + - 0.036753964 + - 0.0012088048 + - 0.046037298 + - 0.0011658763 + - 0.04567418 + - 0.0034214095 + - 0.22501701 + - 0.5379551 + - 0.01859785 + - 0.008531117 + - 0.0054305126 + - 0.014171379 + - 0.001926022 + laughterScore: 0 + - frameNumber: 1526 + frameDelay: 0 + Visemes: + - 0.020566076 + - 0.020471757 + - 0.025733894 + - 0.0009593392 + - 0.043054968 + - 0.00095738017 + - 0.031976018 + - 0.0024985857 + - 0.44269532 + - 0.37683496 + - 0.013106489 + - 0.0060180905 + - 0.0038550838 + - 0.009921537 + - 0.0013504988 + laughterScore: 0 + - frameNumber: 1527 + frameDelay: 0 + Visemes: + - 0.019186627 + - 0.017629204 + - 0.018024355 + - 0.0012945097 + - 0.03999825 + - 0.0009036451 + - 0.022396669 + - 0.001792838 + - 0.5877478 + - 0.2638213 + - 0.011154419 + - 0.0046014036 + - 0.003510537 + - 0.006957591 + - 0.000980861 + laughterScore: 0 + - frameNumber: 1528 + frameDelay: 0 + Visemes: + - 0.015541659 + - 0.012716638 + - 0.012619939 + - 0.0010457349 + - 0.03247855 + - 0.00078188686 + - 0.015679492 + - 0.0012706526 + - 0.70290864 + - 0.18468967 + - 0.008456554 + - 0.003565288 + - 0.002652509 + - 0.0048839627 + - 0.0007088562 + laughterScore: 0 + - frameNumber: 1529 + frameDelay: 0 + Visemes: + - 0.015122085 + - 0.00898329 + - 0.008835789 + - 0.0008753082 + - 0.028619591 + - 0.000648665 + - 0.01099098 + - 0.0008964977 + - 0.6545406 + - 0.12929812 + - 0.11588279 + - 0.0042141574 + - 0.0019901295 + - 0.01852291 + - 0.0005791298 + laughterScore: 0 + - frameNumber: 1530 + frameDelay: 0 + Visemes: + - 0.020406209 + - 0.006412379 + - 0.0062062256 + - 0.0013070161 + - 0.021712469 + - 0.0007006743 + - 0.007717904 + - 0.00063652673 + - 0.4641996 + - 0.09058618 + - 0.31452522 + - 0.005651233 + - 0.0017328747 + - 0.05758083 + - 0.0006246738 + laughterScore: 0 + - frameNumber: 1531 + frameDelay: 0 + Visemes: + - 0.019997988 + - 0.0045337304 + - 0.004374015 + - 0.0011211188 + - 0.015696794 + - 0.0011882035 + - 0.0054130275 + - 0.00045440526 + - 0.3258428 + - 0.063440904 + - 0.4947303 + - 0.0060545756 + - 0.0012819178 + - 0.055390462 + - 0.00047975016 + laughterScore: 0 + - frameNumber: 1532 + frameDelay: 0 + Visemes: + - 0.01984907 + - 0.0032341818 + - 0.0031016201 + - 0.0009896269 + - 0.012230362 + - 0.0020749075 + - 0.0037951285 + - 0.00033811285 + - 0.22892879 + - 0.044453677 + - 0.61954236 + - 0.0067600626 + - 0.0010060335 + - 0.05331939 + - 0.0003766616 + laughterScore: 0 + - frameNumber: 1533 + frameDelay: 0 + Visemes: + - 0.017779283 + - 0.002405659 + - 0.0021960516 + - 0.00087519846 + - 0.011947944 + - 0.0022926605 + - 0.0026663162 + - 0.0002636246 + - 0.1615335 + - 0.031226993 + - 0.71558183 + - 0.008522807 + - 0.00084859517 + - 0.04155091 + - 0.00030858692 + laughterScore: 0 + - frameNumber: 1534 + frameDelay: 0 + Visemes: + - 0.015575854 + - 0.0017510412 + - 0.0015457636 + - 0.0013950533 + - 0.012395417 + - 0.003253463 + - 0.001952868 + - 0.00022251715 + - 0.11542346 + - 0.022075312 + - 0.7839211 + - 0.007951639 + - 0.0010892029 + - 0.031181667 + - 0.0002656801 + laughterScore: 0 + - frameNumber: 1535 + frameDelay: 0 + Visemes: + - 0.016477894 + - 0.0028574644 + - 0.001169209 + - 0.0018268246 + - 0.06347237 + - 0.006457447 + - 0.0022949656 + - 0.0005754746 + - 0.09936535 + - 0.015689436 + - 0.7536305 + - 0.008644024 + - 0.003301993 + - 0.023736328 + - 0.0005007199 + laughterScore: 0 + - frameNumber: 1536 + frameDelay: 0 + Visemes: + - 0.018310469 + - 0.092598565 + - 0.0024666823 + - 0.0055248197 + - 0.1663523 + - 0.0048091365 + - 0.0017221498 + - 0.0006985783 + - 0.088568896 + - 0.011082895 + - 0.573495 + - 0.011250453 + - 0.005714816 + - 0.01687832 + - 0.0005269713 + laughterScore: 0 + - frameNumber: 1537 + frameDelay: 0 + Visemes: + - 0.019414669 + - 0.3270986 + - 0.0023268284 + - 0.0041192407 + - 0.13252829 + - 0.0034631677 + - 0.0012131553 + - 0.00057235657 + - 0.070445195 + - 0.007769013 + - 0.40662774 + - 0.007896227 + - 0.004302989 + - 0.011834786 + - 0.0003877436 + laughterScore: 0 + - frameNumber: 1538 + frameDelay: 0 + Visemes: + - 0.026921423 + - 0.44276392 + - 0.0025648195 + - 0.008152206 + - 0.11502564 + - 0.0029246095 + - 0.00096394256 + - 0.0005957881 + - 0.08270767 + - 0.0054772194 + - 0.29309058 + - 0.0055785603 + - 0.0044484995 + - 0.008495929 + - 0.0002892301 + laughterScore: 0 + - frameNumber: 1539 + frameDelay: 0 + Visemes: + - 0.035745356 + - 0.4736495 + - 0.0031376432 + - 0.027489364 + - 0.1575127 + - 0.005032921 + - 0.0012158618 + - 0.0008354542 + - 0.06951808 + - 0.0038539942 + - 0.20838752 + - 0.0039553223 + - 0.003361051 + - 0.0060831415 + - 0.00022210949 + laughterScore: 0 + - frameNumber: 1540 + frameDelay: 0 + Visemes: + - 0.037210435 + - 0.50494504 + - 0.0062245023 + - 0.052686356 + - 0.17110597 + - 0.010720421 + - 0.0019558817 + - 0.0009824698 + - 0.052751515 + - 0.0027180333 + - 0.14849122 + - 0.0028554178 + - 0.0027867192 + - 0.004386348 + - 0.00017976176 + laughterScore: 0 + - frameNumber: 1541 + frameDelay: 0 + Visemes: + - 0.03560883 + - 0.57730454 + - 0.03749323 + - 0.04589267 + - 0.13701038 + - 0.011824615 + - 0.0014394844 + - 0.0017942777 + - 0.03739572 + - 0.0020174698 + - 0.104524106 + - 0.0020763695 + - 0.0021275696 + - 0.0032648097 + - 0.00022603724 + laughterScore: 0 + - frameNumber: 1542 + frameDelay: 0 + Visemes: + - 0.053277425 + - 0.58024514 + - 0.043326795 + - 0.039904818 + - 0.12248386 + - 0.013298416 + - 0.0011652958 + - 0.019918103 + - 0.031076116 + - 0.0048288377 + - 0.07896779 + - 0.0016614853 + - 0.0023787296 + - 0.004256269 + - 0.0032110263 + laughterScore: 0 + - frameNumber: 1543 + frameDelay: 0 + Visemes: + - 0.062338345 + - 0.58369786 + - 0.033268575 + - 0.031736802 + - 0.09369967 + - 0.013596966 + - 0.001000401 + - 0.026269883 + - 0.06490895 + - 0.0076274634 + - 0.068627164 + - 0.0012662621 + - 0.0034859383 + - 0.004675584 + - 0.0038002292 + laughterScore: 0 + - frameNumber: 1544 + frameDelay: 0 + Visemes: + - 0.044246253 + - 0.40878308 + - 0.023304276 + - 0.022259163 + - 0.06562311 + - 0.009535149 + - 0.0007010441 + - 0.018389914 + - 0.34027135 + - 0.0053903842 + - 0.04825879 + - 0.0009046374 + - 0.0025016095 + - 0.0034096201 + - 0.006421694 + laughterScore: 0 + - frameNumber: 1545 + frameDelay: 0 + Visemes: + - 0.03227548 + - 0.28615415 + - 0.016314529 + - 0.01560036 + - 0.045946706 + - 0.0066837054 + - 0.00049079984 + - 0.012873192 + - 0.5320353 + - 0.0037800225 + - 0.034110002 + - 0.0030586543 + - 0.0036316684 + - 0.0024005414 + - 0.004644969 + laughterScore: 0 + - frameNumber: 1546 + frameDelay: 0 + Visemes: + - 0.02767887 + - 0.20031717 + - 0.011420277 + - 0.010925027 + - 0.03219153 + - 0.004682746 + - 0.00034403437 + - 0.009011737 + - 0.3814485 + - 0.0026538789 + - 0.028605688 + - 0.2776906 + - 0.007955139 + - 0.001696901 + - 0.0033779335 + laughterScore: 0 + - frameNumber: 1547 + frameDelay: 0 + Visemes: + - 0.023280198 + - 0.14023013 + - 0.007994356 + - 0.00765076 + - 0.022680197 + - 0.0033114206 + - 0.00024120905 + - 0.0063096285 + - 0.2673473 + - 0.0018672992 + - 0.023369053 + - 0.46606448 + - 0.025925517 + - 0.0012817864 + - 0.0024466307 + laughterScore: 0 + - frameNumber: 1548 + frameDelay: 0 + Visemes: + - 0.018120797 + - 0.09816596 + - 0.0055987816 + - 0.0053684134 + - 0.016282367 + - 0.0024041606 + - 0.00017158587 + - 0.004421371 + - 0.18749614 + - 0.0014153159 + - 0.017860414 + - 0.5824202 + - 0.05625055 + - 0.0011652489 + - 0.0028586956 + laughterScore: 0 + - frameNumber: 1549 + frameDelay: 0 + Visemes: + - 0.018134467 + - 0.06874831 + - 0.0039589996 + - 0.0037904314 + - 0.012290278 + - 0.002292972 + - 0.00012632286 + - 0.0031238648 + - 0.13199864 + - 0.006602091 + - 0.01726751 + - 0.5490285 + - 0.15938312 + - 0.016242335 + - 0.0070121093 + laughterScore: 0 + - frameNumber: 1550 + frameDelay: 0 + Visemes: + - 0.017727135 + - 0.048315138 + - 0.0031268033 + - 0.0027314338 + - 0.00927692 + - 0.0022525967 + - 0.00009111123 + - 0.0022403016 + - 0.09274592 + - 0.059379116 + - 0.030958511 + - 0.43548095 + - 0.17531462 + - 0.04327691 + - 0.07708251 + laughterScore: 0 + - frameNumber: 1551 + frameDelay: 0 + Visemes: + - 0.019785592 + - 0.033898626 + - 0.0024103904 + - 0.0019786363 + - 0.006890921 + - 0.001764976 + - 0.00006583783 + - 0.0015952088 + - 0.065124825 + - 0.21627647 + - 0.030458018 + - 0.33432782 + - 0.1433155 + - 0.04996203 + - 0.09214516 + laughterScore: 0 + - frameNumber: 1552 + frameDelay: 0 + Visemes: + - 0.027173664 + - 0.023951678 + - 0.0020833418 + - 0.0014441552 + - 0.0050989995 + - 0.0014118263 + - 0.0000494489 + - 0.0012256567 + - 0.046168018 + - 0.40288782 + - 0.032836482 + - 0.23897074 + - 0.10204493 + - 0.047998287 + - 0.06665496 + laughterScore: 0 + - frameNumber: 1553 + frameDelay: 0 + Visemes: + - 0.022864345 + - 0.016802905 + - 0.0015183822 + - 0.0010553743 + - 0.0046155453 + - 0.0067012007 + - 0.00031015652 + - 0.001074862 + - 0.03279558 + - 0.55138606 + - 0.029761449 + - 0.16841717 + - 0.08204371 + - 0.033912532 + - 0.046740722 + laughterScore: 0 + - frameNumber: 1554 + frameDelay: 0 + Visemes: + - 0.02039954 + - 0.01178994 + - 0.0010819302 + - 0.0022315849 + - 0.0064919535 + - 0.19029818 + - 0.0005142966 + - 0.0008126241 + - 0.023288913 + - 0.46361914 + - 0.024454467 + - 0.11883659 + - 0.07961637 + - 0.023812143 + - 0.03275234 + laughterScore: 0 + - frameNumber: 1555 + frameDelay: 0 + Visemes: + - 0.017700035 + - 0.008310116 + - 0.0007750682 + - 0.003434592 + - 0.022186922 + - 0.4005333 + - 0.0015016441 + - 0.00060783816 + - 0.016393773 + - 0.33029112 + - 0.017886918 + - 0.08331639 + - 0.05743928 + - 0.016677212 + - 0.022945844 + laughterScore: 0 + - frameNumber: 1556 + frameDelay: 0 + Visemes: + - 0.013821002 + - 0.005854363 + - 0.0005508531 + - 0.002500303 + - 0.020443346 + - 0.57264566 + - 0.0014421456 + - 0.00046891026 + - 0.01148232 + - 0.23183107 + - 0.012581636 + - 0.058334704 + - 0.040290985 + - 0.01167779 + - 0.016074976 + laughterScore: 0 + - frameNumber: 1557 + frameDelay: 0 + Visemes: + - 0.012533603 + - 0.004175959 + - 0.0005913699 + - 0.0017832974 + - 0.015703088 + - 0.6936265 + - 0.0010208762 + - 0.0005867431 + - 0.008051498 + - 0.16345954 + - 0.009951511 + - 0.040839676 + - 0.028218403 + - 0.008178959 + - 0.011279055 + laughterScore: 0 + - frameNumber: 1558 + frameDelay: 0 + Visemes: + - 0.0115638375 + - 0.003013347 + - 0.00043705833 + - 0.0012579842 + - 0.011775299 + - 0.7253811 + - 0.0007173473 + - 0.00043532852 + - 0.005727128 + - 0.115366444 + - 0.060725693 + - 0.028637208 + - 0.019801216 + - 0.0057505416 + - 0.009410554 + laughterScore: 0 + - frameNumber: 1559 + frameDelay: 0 + Visemes: + - 0.012609279 + - 0.002201497 + - 0.0003133735 + - 0.0010158911 + - 0.008732956 + - 0.57447565 + - 0.00051110616 + - 0.00031923107 + - 0.0065853586 + - 0.08114557 + - 0.24567068 + - 0.021461038 + - 0.015071393 + - 0.0056199725 + - 0.024267014 + laughterScore: 0 + - frameNumber: 1560 + frameDelay: 0 + Visemes: + - 0.010263626 + - 0.0016415184 + - 0.00022112597 + - 0.00072611705 + - 0.006236549 + - 0.40272623 + - 0.00035967847 + - 0.00024455244 + - 0.02697882 + - 0.05680999 + - 0.43718085 + - 0.017246872 + - 0.011683928 + - 0.003973058 + - 0.02370711 + laughterScore: 0 + - frameNumber: 1561 + frameDelay: 0 + Visemes: + - 0.012229547 + - 0.0030590966 + - 0.00016315209 + - 0.0005905195 + - 0.0055903965 + - 0.2835092 + - 0.0002571616 + - 0.00023392921 + - 0.30649358 + - 0.039770573 + - 0.30799922 + - 0.012284157 + - 0.0082414495 + - 0.002782524 + - 0.016795544 + laughterScore: 0 + - frameNumber: 1562 + frameDelay: 0 + Visemes: + - 0.011584445 + - 0.0048905294 + - 0.00014839374 + - 0.0014861231 + - 0.0130615365 + - 0.200637 + - 0.0002120565 + - 0.0002493289 + - 0.49507552 + - 0.027843054 + - 0.21648067 + - 0.008671865 + - 0.0058661574 + - 0.0019503434 + - 0.011843022 + laughterScore: 0 + - frameNumber: 1563 + frameDelay: 0 + Visemes: + - 0.008971191 + - 0.007852586 + - 0.0003290912 + - 0.0012846522 + - 0.034932893 + - 0.14084919 + - 0.00026735244 + - 0.00026986797 + - 0.61408186 + - 0.01949184 + - 0.1517346 + - 0.0060713985 + - 0.004202158 + - 0.0013671414 + - 0.00829422 + laughterScore: 0 + - frameNumber: 1564 + frameDelay: 0 + Visemes: + - 0.012397831 + - 0.006426595 + - 0.0006815286 + - 0.0014620402 + - 0.26842567 + - 0.106962875 + - 0.010983075 + - 0.001390958 + - 0.4571437 + - 0.013667055 + - 0.106429085 + - 0.0042518843 + - 0.002992009 + - 0.0009634427 + - 0.005822297 + laughterScore: 0 + - frameNumber: 1565 + frameDelay: 0 + Visemes: + - 0.0180844 + - 0.0054196487 + - 0.032453977 + - 0.0063637854 + - 0.41200858 + - 0.07920381 + - 0.008916928 + - 0.014290115 + - 0.32008606 + - 0.01673782 + - 0.07564239 + - 0.0029919236 + - 0.0026895897 + - 0.00072227005 + - 0.004388707 + laughterScore: 0 + - frameNumber: 1566 + frameDelay: 0 + Visemes: + - 0.021960102 + - 0.005133787 + - 0.07180774 + - 0.0071106814 + - 0.34841865 + - 0.057823434 + - 0.0072062938 + - 0.018878466 + - 0.2245998 + - 0.15991066 + - 0.0624036 + - 0.0021084398 + - 0.004250033 + - 0.00093034643 + - 0.0074579623 + laughterScore: 0 + - frameNumber: 1567 + frameDelay: 0 + Visemes: + - 0.019793108 + - 0.004223618 + - 0.06303971 + - 0.005303377 + - 0.25191253 + - 0.043323707 + - 0.006624371 + - 0.015600491 + - 0.15845323 + - 0.33521384 + - 0.05045531 + - 0.0014819959 + - 0.0036994305 + - 0.0020283926 + - 0.038846925 + laughterScore: 0 + - frameNumber: 1568 + frameDelay: 0 + Visemes: + - 0.022291709 + - 0.0033393265 + - 0.061765175 + - 0.0041422215 + - 0.17985366 + - 0.031693287 + - 0.011723496 + - 0.011307247 + - 0.115177974 + - 0.40455168 + - 0.08921213 + - 0.0016531153 + - 0.005264371 + - 0.0121301515 + - 0.045894533 + laughterScore: 0 + - frameNumber: 1569 + frameDelay: 0 + Visemes: + - 0.028562449 + - 0.0026497322 + - 0.04480133 + - 0.003451091 + - 0.12735215 + - 0.023130432 + - 0.00902004 + - 0.007963928 + - 0.0846565 + - 0.39491564 + - 0.17417298 + - 0.0070373993 + - 0.012095029 + - 0.034903243 + - 0.045288157 + laughterScore: 0 + - frameNumber: 1570 + frameDelay: 0 + Visemes: + - 0.024579529 + - 0.0021902209 + - 0.03143952 + - 0.0026155354 + - 0.09003092 + - 0.016658612 + - 0.0063951565 + - 0.0055920826 + - 0.07922012 + - 0.2778002 + - 0.3514919 + - 0.011525619 + - 0.016201315 + - 0.051491592 + - 0.032767724 + laughterScore: 0 + - frameNumber: 1571 + frameDelay: 0 + Visemes: + - 0.02140421 + - 0.0030815788 + - 0.022063622 + - 0.0019447976 + - 0.06339242 + - 0.011847844 + - 0.004498377 + - 0.0039465134 + - 0.174551 + - 0.19458689 + - 0.38966686 + - 0.01380544 + - 0.014382344 + - 0.057653103 + - 0.023175009 + laughterScore: 0 + - frameNumber: 1572 + frameDelay: 0 + Visemes: + - 0.018297546 + - 0.0036209368 + - 0.015488363 + - 0.001861932 + - 0.0447921 + - 0.008375811 + - 0.0031516324 + - 0.002840514 + - 0.39583045 + - 0.13639791 + - 0.2860973 + - 0.009737264 + - 0.010163368 + - 0.04704567 + - 0.016299244 + laughterScore: 0 + - frameNumber: 1573 + frameDelay: 0 + Visemes: + - 0.01669388 + - 0.0033402476 + - 0.011023946 + - 0.006378824 + - 0.032363255 + - 0.006470427 + - 0.002232138 + - 0.002211884 + - 0.53991485 + - 0.095862076 + - 0.2151271 + - 0.006831414 + - 0.0074867997 + - 0.04235801 + - 0.011705179 + laughterScore: 0 + - frameNumber: 1574 + frameDelay: 0 + Visemes: + - 0.014426451 + - 0.004600984 + - 0.008294397 + - 0.0066932878 + - 0.042208895 + - 0.004937968 + - 0.00188242 + - 0.0018263736 + - 0.6142083 + - 0.06770936 + - 0.16928136 + - 0.0048006494 + - 0.0059315353 + - 0.044895016 + - 0.008303071 + laughterScore: 0 + - frameNumber: 1575 + frameDelay: 0 + Visemes: + - 0.011268493 + - 0.003671077 + - 0.006014866 + - 0.009375706 + - 0.31203344 + - 0.003928502 + - 0.0040487493 + - 0.0020003112 + - 0.43519825 + - 0.04745094 + - 0.11961871 + - 0.0033637774 + - 0.004222182 + - 0.03194643 + - 0.005858592 + laughterScore: 0 + - frameNumber: 1576 + frameDelay: 0 + Visemes: + - 0.012878361 + - 0.0035346341 + - 0.00523056 + - 0.013089195 + - 0.48571348 + - 0.0056373603 + - 0.008537439 + - 0.0038865185 + - 0.30915967 + - 0.033321004 + - 0.08644308 + - 0.0023885556 + - 0.0030877048 + - 0.022937153 + - 0.004155325 + laughterScore: 0 + - frameNumber: 1577 + frameDelay: 0 + Visemes: + - 0.023095947 + - 0.011177185 + - 0.005776196 + - 0.024517186 + - 0.5327136 + - 0.047638867 + - 0.009088316 + - 0.004089113 + - 0.21932115 + - 0.023586785 + - 0.07097567 + - 0.0017856959 + - 0.0032017713 + - 0.0199237 + - 0.0031089261 + laughterScore: 0 + - frameNumber: 1578 + frameDelay: 0 + Visemes: + - 0.02535111 + - 0.017190203 + - 0.008181993 + - 0.026768025 + - 0.59361666 + - 0.04395932 + - 0.03832935 + - 0.0051517026 + - 0.15380208 + - 0.016634688 + - 0.050200406 + - 0.0013270796 + - 0.0027914483 + - 0.0143532315 + - 0.002342705 + laughterScore: 0 + - frameNumber: 1579 + frameDelay: 0 + Visemes: + - 0.026222758 + - 0.014627138 + - 0.008410072 + - 0.022162614 + - 0.6761266 + - 0.0349295 + - 0.03301322 + - 0.010559473 + - 0.10788646 + - 0.011799889 + - 0.037324518 + - 0.001052514 + - 0.0036452482 + - 0.010139712 + - 0.0021003291 + laughterScore: 0 + - frameNumber: 1580 + frameDelay: 0 + Visemes: + - 0.03222257 + - 0.014827659 + - 0.00850824 + - 0.021096174 + - 0.60608745 + - 0.07450226 + - 0.023710266 + - 0.01110956 + - 0.07685393 + - 0.008661638 + - 0.0979931 + - 0.00093898457 + - 0.004345396 + - 0.0073378757 + - 0.011804918 + laughterScore: 0 + - frameNumber: 1581 + frameDelay: 0 + Visemes: + - 0.030440371 + - 0.010871508 + - 0.006246762 + - 0.016409967 + - 0.52034515 + - 0.18338788 + - 0.017047793 + - 0.00879351 + - 0.05553001 + - 0.0063175126 + - 0.10603331 + - 0.007604338 + - 0.01380828 + - 0.005254096 + - 0.011909528 + laughterScore: 0 + - frameNumber: 1582 + frameDelay: 0 + Visemes: + - 0.028663134 + - 0.007663916 + - 0.0044094776 + - 0.011596153 + - 0.37317303 + - 0.1556088 + - 0.012260987 + - 0.006190028 + - 0.039042424 + - 0.0045383237 + - 0.09043852 + - 0.15008964 + - 0.100639924 + - 0.0037180402 + - 0.011967622 + laughterScore: 0 + - frameNumber: 1583 + frameDelay: 0 + Visemes: + - 0.024670897 + - 0.005374427 + - 0.0030938236 + - 0.00815896 + - 0.2616113 + - 0.111131415 + - 0.008596929 + - 0.004339691 + - 0.027358012 + - 0.0032286188 + - 0.06545958 + - 0.365098 + - 0.0993363 + - 0.0026204926 + - 0.009921523 + laughterScore: 0 + - frameNumber: 1584 + frameDelay: 0 + Visemes: + - 0.018954016 + - 0.0037689775 + - 0.002168371 + - 0.0057150126 + - 0.1831868 + - 0.07828833 + - 0.0060199923 + - 0.0030385847 + - 0.0191797 + - 0.0027720495 + - 0.04599882 + - 0.5453977 + - 0.07637024 + - 0.0018484693 + - 0.007292916 + laughterScore: 0 + - frameNumber: 1585 + frameDelay: 0 + Visemes: + - 0.013707639 + - 0.002644622 + - 0.0015196573 + - 0.0040028924 + - 0.12826963 + - 0.054831944 + - 0.0042143865 + - 0.0021272898 + - 0.013449868 + - 0.006011352 + - 0.032270815 + - 0.67541516 + - 0.05508775 + - 0.0013078562 + - 0.005139098 + laughterScore: 0 + - frameNumber: 1586 + frameDelay: 0 + Visemes: + - 0.0104144355 + - 0.001864606 + - 0.0010817995 + - 0.002806408 + - 0.089832686 + - 0.038399745 + - 0.002950225 + - 0.0014893035 + - 0.009473983 + - 0.03738027 + - 0.022872394 + - 0.73434436 + - 0.04248522 + - 0.00096438354 + - 0.0036401644 + laughterScore: 0 + - frameNumber: 1587 + frameDelay: 0 + Visemes: + - 0.011008754 + - 0.0023694164 + - 0.0024802368 + - 0.001976885 + - 0.063371815 + - 0.029866977 + - 0.0021018547 + - 0.0011593148 + - 0.011172028 + - 0.27778673 + - 0.021864459 + - 0.5236142 + - 0.04767578 + - 0.0009444931 + - 0.0026070399 + laughterScore: 0 + - frameNumber: 1588 + frameDelay: 0 + Visemes: + - 0.009662807 + - 0.002017231 + - 0.0019252123 + - 0.0014013503 + - 0.045545228 + - 0.27455598 + - 0.0015407853 + - 0.0009883945 + - 0.008187815 + - 0.23393507 + - 0.015970452 + - 0.36742505 + - 0.034311175 + - 0.00068318506 + - 0.0018502736 + laughterScore: 0 + - frameNumber: 1589 + frameDelay: 0 + Visemes: + - 0.008565 + - 0.0014789454 + - 0.0013744802 + - 0.0010017026 + - 0.03517449 + - 0.4739299 + - 0.0012676186 + - 0.0008156974 + - 0.0058895363 + - 0.1753299 + - 0.011457448 + - 0.2574082 + - 0.024476267 + - 0.0004921299 + - 0.00133869 + laughterScore: 0 + - frameNumber: 1590 + frameDelay: 0 + Visemes: + - 0.0089809075 + - 0.0011241853 + - 0.0009907761 + - 0.0007741105 + - 0.029326055 + - 0.61398035 + - 0.0009831216 + - 0.0006268649 + - 0.0041744947 + - 0.13194025 + - 0.008216456 + - 0.18021615 + - 0.017258264 + - 0.00035620006 + - 0.0010517858 + laughterScore: 0 + - frameNumber: 1591 + frameDelay: 0 + Visemes: + - 0.009024597 + - 0.0009636467 + - 0.00075378997 + - 0.00071372447 + - 0.02577244 + - 0.71337134 + - 0.00072462147 + - 0.00053010066 + - 0.0029546637 + - 0.099928826 + - 0.005928328 + - 0.12615746 + - 0.012144012 + - 0.0002553909 + - 0.0007770757 + laughterScore: 0 + - frameNumber: 1592 + frameDelay: 0 + Visemes: + - 0.011876095 + - 0.0014879708 + - 0.0007584336 + - 0.0007273686 + - 0.025855333 + - 0.7661701 + - 0.0005403469 + - 0.00045644492 + - 0.0021258814 + - 0.0878368 + - 0.0044718585 + - 0.08833999 + - 0.008558412 + - 0.00019212635 + - 0.0006028904 + laughterScore: 0 + - frameNumber: 1593 + frameDelay: 0 + Visemes: + - 0.011641646 + - 0.0011902777 + - 0.0005995687 + - 0.00090808654 + - 0.05746887 + - 0.79168224 + - 0.0010147875 + - 0.00049401773 + - 0.001508651 + - 0.061801862 + - 0.003202706 + - 0.061854478 + - 0.0060518896 + - 0.00014333623 + - 0.0004376366 + laughterScore: 0 + - frameNumber: 1594 + frameDelay: 0 + Visemes: + - 0.014004656 + - 0.0012990257 + - 0.0014055513 + - 0.007867978 + - 0.1027592 + - 0.7263802 + - 0.0012204167 + - 0.0005244375 + - 0.001499623 + - 0.04840384 + - 0.027096244 + - 0.044088576 + - 0.021743465 + - 0.0006696087 + - 0.0010372231 + laughterScore: 0 + - frameNumber: 1595 + frameDelay: 0 + Visemes: + - 0.011782762 + - 0.0009827384 + - 0.0010254805 + - 0.006081374 + - 0.07310576 + - 0.5133701 + - 0.0008853881 + - 0.0003704851 + - 0.0011585947 + - 0.2893505 + - 0.029581126 + - 0.03255498 + - 0.030481666 + - 0.0032976095 + - 0.0059714667 + laughterScore: 0 + - frameNumber: 1596 + frameDelay: 0 + Visemes: + - 0.009367154 + - 0.0007084736 + - 0.0007562148 + - 0.004342713 + - 0.0513066 + - 0.3600122 + - 0.0006257658 + - 0.00026055067 + - 0.0009546727 + - 0.49255788 + - 0.023993168 + - 0.023283465 + - 0.023509258 + - 0.003184627 + - 0.005137282 + laughterScore: 0 + - frameNumber: 1597 + frameDelay: 0 + Visemes: + - 0.009016513 + - 0.00060578337 + - 0.00071627455 + - 0.0031529283 + - 0.0364185 + - 0.25254634 + - 0.00048401635 + - 0.00022854452 + - 0.000994297 + - 0.63342464 + - 0.019655988 + - 0.017220635 + - 0.019350326 + - 0.002365057 + - 0.0038201592 + laughterScore: 0 + - frameNumber: 1598 + frameDelay: 0 + Visemes: + - 0.010189034 + - 0.0006934176 + - 0.0008866279 + - 0.0025716145 + - 0.026938038 + - 0.17758092 + - 0.00041455703 + - 0.00035491172 + - 0.0025984824 + - 0.7265898 + - 0.016744701 + - 0.012977883 + - 0.01669843 + - 0.0019076674 + - 0.0028539367 + laughterScore: 0 + - frameNumber: 1599 + frameDelay: 0 + Visemes: + - 0.01324749 + - 0.00073742657 + - 0.00084773486 + - 0.002683871 + - 0.050849743 + - 0.12495437 + - 0.0010056465 + - 0.0016547294 + - 0.022038983 + - 0.7239538 + - 0.01688056 + - 0.015227197 + - 0.021629535 + - 0.0017961344 + - 0.0024927962 + laughterScore: 0 + - frameNumber: 1600 + frameDelay: 0 + Visemes: + - 0.012640758 + - 0.0007862941 + - 0.0008406928 + - 0.0019270586 + - 0.0627549 + - 0.08765932 + - 0.0018191382 + - 0.23558538 + - 0.019152235 + - 0.51716346 + - 0.023712842 + - 0.011427836 + - 0.021084089 + - 0.0013920387 + - 0.002053987 + laughterScore: 0 + - frameNumber: 1601 + frameDelay: 0 + Visemes: + - 0.014517346 + - 0.00065921736 + - 0.0009575895 + - 0.0017205939 + - 0.074837714 + - 0.061982915 + - 0.0013658376 + - 0.41964912 + - 0.0141147375 + - 0.36404634 + - 0.019403797 + - 0.008354359 + - 0.015917022 + - 0.0009862428 + - 0.0014871336 + laughterScore: 0 + - frameNumber: 1602 + frameDelay: 0 + Visemes: + - 0.018896788 + - 0.00063604675 + - 0.000799282 + - 0.0022539436 + - 0.0654688 + - 0.04364917 + - 0.0011248961 + - 0.56865275 + - 0.010148264 + - 0.2553861 + - 0.013832307 + - 0.0060056834 + - 0.011382636 + - 0.00070749427 + - 0.0010558193 + laughterScore: 0 + - frameNumber: 1603 + frameDelay: 0 + Visemes: + - 0.022226103 + - 0.0005862942 + - 0.00064801937 + - 0.006212488 + - 0.12732725 + - 0.030861534 + - 0.00080967543 + - 0.6007068 + - 0.0074589127 + - 0.1789736 + - 0.010263827 + - 0.0043419097 + - 0.008298488 + - 0.0005240318 + - 0.00076108135 + laughterScore: 0 + - frameNumber: 1604 + frameDelay: 0 + Visemes: + - 0.029812055 + - 0.0009947631 + - 0.00065794616 + - 0.014000926 + - 0.22206691 + - 0.022133414 + - 0.00061416626 + - 0.5592597 + - 0.005979513 + - 0.125358 + - 0.007902681 + - 0.0034878016 + - 0.0065335976 + - 0.00057229924 + - 0.00062622933 + laughterScore: 0 + - frameNumber: 1605 + frameDelay: 0 + Visemes: + - 0.056863107 + - 0.0058006016 + - 0.00086178526 + - 0.016453793 + - 0.3006823 + - 0.017142896 + - 0.0005054675 + - 0.47418436 + - 0.010848455 + - 0.08787144 + - 0.013957214 + - 0.004599564 + - 0.008361377 + - 0.0009199689 + - 0.000947646 + laughterScore: 0 + - frameNumber: 1606 + frameDelay: 0 + Visemes: + - 0.110044174 + - 0.0138674015 + - 0.0012554369 + - 0.017761216 + - 0.33603424 + - 0.019672764 + - 0.0010229413 + - 0.38495907 + - 0.008699105 + - 0.061681304 + - 0.017490016 + - 0.012993083 + - 0.012343084 + - 0.0012763215 + - 0.00089988415 + laughterScore: 0 + - frameNumber: 1607 + frameDelay: 0 + Visemes: + - 0.16506973 + - 0.016331859 + - 0.0018167172 + - 0.018834032 + - 0.27802557 + - 0.01760696 + - 0.0013996249 + - 0.36498016 + - 0.0076269987 + - 0.043451626 + - 0.026983656 + - 0.035928927 + - 0.017794829 + - 0.0031803257 + - 0.0009690153 + laughterScore: 0 + - frameNumber: 1608 + frameDelay: 0 + Visemes: + - 0.27584624 + - 0.014421396 + - 0.0021453996 + - 0.016582765 + - 0.21386978 + - 0.015385123 + - 0.0013742298 + - 0.3237663 + - 0.0066016577 + - 0.030552324 + - 0.025433071 + - 0.052043926 + - 0.017032031 + - 0.0035773802 + - 0.0013684134 + laughterScore: 0 + - frameNumber: 1609 + frameDelay: 0 + Visemes: + - 0.43150866 + - 0.012684445 + - 0.002002335 + - 0.013623749 + - 0.15764767 + - 0.011390564 + - 0.0012081338 + - 0.2549606 + - 0.0063731605 + - 0.021507392 + - 0.019693315 + - 0.046476517 + - 0.01499858 + - 0.0029158166 + - 0.0030090567 + laughterScore: 0 + - frameNumber: 1610 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1611 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1612 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1613 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1614 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1615 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1616 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1617 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1618 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1619 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1620 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1621 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1622 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1623 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1624 + frameDelay: 0 + Visemes: + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + laughterScore: 0 + - frameNumber: 1625 + frameDelay: 0 + Visemes: + - 0.4326374 + - 0.09823957 + - 0.004780448 + - 0.07564538 + - 0.020154918 + - 0.0148359705 + - 0.008765404 + - 0.015609408 + - 0.20915672 + - 0.0032493346 + - 0.014775831 + - 0.038283266 + - 0.049214307 + - 0.003086518 + - 0.011565513 + laughterScore: 0 + - frameNumber: 1626 + frameDelay: 0 + Visemes: + - 0.31692192 + - 0.25056648 + - 0.0034286638 + - 0.05598577 + - 0.01438419 + - 0.010618476 + - 0.006162571 + - 0.010970364 + - 0.24244177 + - 0.002771386 + - 0.010709949 + - 0.026852965 + - 0.035203487 + - 0.0023392488 + - 0.010642765 + laughterScore: 0 + - frameNumber: 1627 + frameDelay: 0 + Visemes: + - 0.25640658 + - 0.38334888 + - 0.0024535372 + - 0.040685833 + - 0.010341758 + - 0.007609743 + - 0.0043286434 + - 0.007715157 + - 0.22070448 + - 0.0022483522 + - 0.008244719 + - 0.018874682 + - 0.02487724 + - 0.0018317631 + - 0.010328636 + laughterScore: 0 + - frameNumber: 1628 + frameDelay: 0 + Visemes: + - 0.18545283 + - 0.49890375 + - 0.0017223629 + - 0.028839089 + - 0.0072654723 + - 0.005377652 + - 0.0030308191 + - 0.0054068575 + - 0.21687472 + - 0.0015886618 + - 0.006202523 + - 0.013239418 + - 0.017426813 + - 0.001372756 + - 0.0072962916 + laughterScore: 0 + - frameNumber: 1629 + frameDelay: 0 + Visemes: + - 0.14728992 + - 0.55805886 + - 0.0012280629 + - 0.020540256 + - 0.005129936 + - 0.0038593113 + - 0.00213235 + - 0.0038240722 + - 0.17658429 + - 0.001152504 + - 0.043419547 + - 0.017665364 + - 0.0127454735 + - 0.0010687527 + - 0.005301257 + laughterScore: 0 + - frameNumber: 1630 + frameDelay: 0 + Visemes: + - 0.112591535 + - 0.39129663 + - 0.0008622493 + - 0.014478737 + - 0.0036332444 + - 0.0027591074 + - 0.0014990721 + - 0.0026874524 + - 0.12478603 + - 0.00084697094 + - 0.2801547 + - 0.047607947 + - 0.011164237 + - 0.0017937716 + - 0.0038382632 + laughterScore: 0 + - frameNumber: 1631 + frameDelay: 0 + Visemes: + - 0.09643489 + - 0.27521703 + - 0.00065926136 + - 0.010281467 + - 0.0072022122 + - 0.0022526237 + - 0.0011005875 + - 0.0019016409 + - 0.08916039 + - 0.0006935947 + - 0.43475533 + - 0.06522047 + - 0.009780642 + - 0.0023384904 + - 0.0030013556 + laughterScore: 0 + - frameNumber: 1632 + frameDelay: 0 + Visemes: + - 0.07301489 + - 0.1939823 + - 0.0006484802 + - 0.007962361 + - 0.042143162 + - 0.010908612 + - 0.0011168992 + - 0.001363809 + - 0.062753685 + - 0.00054691423 + - 0.537258 + - 0.057295986 + - 0.006974324 + - 0.0016856423 + - 0.0023448328 + laughterScore: 0 + - frameNumber: 1633 + frameDelay: 0 + Visemes: + - 0.073098525 + - 0.14068897 + - 0.0005794554 + - 0.013997445 + - 0.17871453 + - 0.046476822 + - 0.06466088 + - 0.0015507219 + - 0.044564374 + - 0.00040061603 + - 0.38670784 + - 0.040548764 + - 0.0051267077 + - 0.0011979837 + - 0.0016863189 + laughterScore: 0 + - frameNumber: 1634 + frameDelay: 0 + Visemes: + - 0.054776035 + - 0.0986745 + - 0.00044733463 + - 0.010179825 + - 0.2037968 + - 0.035012633 + - 0.25343433 + - 0.007241483 + - 0.031238368 + - 0.00028590058 + - 0.27085516 + - 0.028390644 + - 0.0036428242 + - 0.0008405116 + - 0.0011836236 + laughterScore: 0 + - frameNumber: 1635 + frameDelay: 0 + Visemes: + - 0.04325081 + - 0.06911098 + - 0.000392312 + - 0.007238111 + - 0.15676963 + - 0.024978157 + - 0.40834546 + - 0.05420705 + - 0.02187776 + - 0.00020573394 + - 0.18970308 + - 0.019883351 + - 0.0026165466 + - 0.0005904932 + - 0.0008305419 + laughterScore: 0 + - frameNumber: 1636 + frameDelay: 0 + Visemes: + - 0.03318508 + - 0.048378732 + - 0.00029328253 + - 0.005158391 + - 0.11375493 + - 0.017515054 + - 0.5595478 + - 0.056893677 + - 0.015325592 + - 0.00015185947 + - 0.13291398 + - 0.013921347 + - 0.0019468728 + - 0.00041864967 + - 0.0005948578 + laughterScore: 0 + - frameNumber: 1637 + frameDelay: 0 + Visemes: + - 0.027100334 + - 0.03389039 + - 0.00029369627 + - 0.0037038932 + - 0.080799334 + - 0.012440339 + - 0.6717936 + - 0.05043509 + - 0.010805736 + - 0.00028165954 + - 0.09417932 + - 0.009779035 + - 0.0034174207 + - 0.00032370968 + - 0.00075648085 + laughterScore: 0 + - frameNumber: 1638 + frameDelay: 0 + Visemes: + - 0.022872545 + - 0.024639519 + - 0.0003922882 + - 0.0028869729 + - 0.05758281 + - 0.009718577 + - 0.5859405 + - 0.03781112 + - 0.008531662 + - 0.0055149193 + - 0.084779195 + - 0.006984859 + - 0.018255185 + - 0.0005412968 + - 0.1335486 + laughterScore: 0 + - frameNumber: 1639 + frameDelay: 0 + Visemes: + - 0.018410724 + - 0.017324576 + - 0.00030634296 + - 0.0021399597 + - 0.040474195 + - 0.007066477 + - 0.41466102 + - 0.026706835 + - 0.008186537 + - 0.0046622814 + - 0.091546156 + - 0.004974928 + - 0.02128889 + - 0.00464677 + - 0.33760434 + laughterScore: 0 + - frameNumber: 1640 + frameDelay: 0 + Visemes: + - 0.024601294 + - 0.012264937 + - 0.0002582104 + - 0.0048663337 + - 0.02916926 + - 0.0057214536 + - 0.29029486 + - 0.01896349 + - 0.23360391 + - 0.005037195 + - 0.06794178 + - 0.004402973 + - 0.015588762 + - 0.0038732474 + - 0.28341234 + laughterScore: 0 + - frameNumber: 1641 + frameDelay: 0 + Visemes: + - 0.023219427 + - 0.008616558 + - 0.0001856882 + - 0.0040948256 + - 0.020813968 + - 0.0050886404 + - 0.20321886 + - 0.013326338 + - 0.3769219 + - 0.004145744 + - 0.11493711 + - 0.007677472 + - 0.012653538 + - 0.0029535582 + - 0.20214641 + laughterScore: 0 + - frameNumber: 1642 + frameDelay: 0 + Visemes: + - 0.020671662 + - 0.0060350215 + - 0.00013263291 + - 0.0029210295 + - 0.014686325 + - 0.0036413968 + - 0.14226456 + - 0.009340672 + - 0.2691562 + - 0.0029227799 + - 0.36281115 + - 0.012219725 + - 0.009438652 + - 0.0020734644 + - 0.14168476 + laughterScore: 0 + - frameNumber: 1643 + frameDelay: 0 + Visemes: + - 0.02610513 + - 0.0042288327 + - 0.00009737015 + - 0.002046916 + - 0.010392371 + - 0.0030985516 + - 0.099594265 + - 0.0065415585 + - 0.18855377 + - 0.002050177 + - 0.5402222 + - 0.009745508 + - 0.0066847783 + - 0.0014521276 + - 0.0991864 + laughterScore: 0 + - frameNumber: 1644 + frameDelay: 0 + Visemes: + - 0.03044194 + - 0.0029840944 + - 0.00011619816 + - 0.0014335023 + - 0.0074389144 + - 0.23302874 + - 0.06973187 + - 0.0045836708 + - 0.1319994 + - 0.0014458582 + - 0.43463454 + - 0.00694797 + - 0.004725849 + - 0.0010198633 + - 0.069467545 + laughterScore: 0 + - frameNumber: 1645 + frameDelay: 0 + Visemes: + - 0.037015803 + - 0.0021052568 + - 0.00012685642 + - 0.001005239 + - 0.005437449 + - 0.44517386 + - 0.04883831 + - 0.0032199693 + - 0.09241168 + - 0.0010265961 + - 0.3059401 + - 0.0049279584 + - 0.0033919287 + - 0.0007221239 + - 0.04865686 + laughterScore: 0 + - frameNumber: 1646 + frameDelay: 0 + Visemes: + - 0.052480973 + - 0.0015400106 + - 0.00027815145 + - 0.0007534001 + - 0.0045312704 + - 0.58245325 + - 0.034258332 + - 0.0022907774 + - 0.06473333 + - 0.0007353428 + - 0.21511196 + - 0.0034887 + - 0.0024528904 + - 0.00052226067 + - 0.034369316 + laughterScore: 0 + - frameNumber: 1647 + frameDelay: 0 + Visemes: + - 0.05481901 + - 0.0017860474 + - 0.00034145737 + - 0.014510425 + - 0.011446064 + - 0.66476506 + - 0.02399998 + - 0.0016225944 + - 0.045375865 + - 0.0005321101 + - 0.15080436 + - 0.0024595105 + - 0.001775683 + - 0.00039210988 + - 0.025369728 + laughterScore: 0 + - frameNumber: 1648 + frameDelay: 0 + Visemes: + - 0.06919685 + - 0.005523429 + - 0.0004931948 + - 0.05236185 + - 0.028202605 + - 0.6650764 + - 0.016851446 + - 0.0011675277 + - 0.03189736 + - 0.0004111876 + - 0.10587984 + - 0.0017460729 + - 0.0013113357 + - 0.00031355282 + - 0.019567398 + laughterScore: 0 + - frameNumber: 1649 + frameDelay: 0 + Visemes: + - 0.055167552 + - 0.03531008 + - 0.0016565508 + - 0.1901347 + - 0.038914304 + - 0.55231684 + - 0.011858425 + - 0.0008782535 + - 0.02238426 + - 0.00031142368 + - 0.07449726 + - 0.0012536664 + - 0.001002244 + - 0.00024179362 + - 0.014072666 + laughterScore: 0 + - frameNumber: 1650 + frameDelay: 0 + Visemes: + - 0.040613692 + - 0.026110284 + - 0.0012462988 + - 0.37797588 + - 0.030364428 + - 0.38686728 + - 0.008306245 + - 0.00062269095 + - 0.015749404 + - 0.00032538606 + - 0.0968478 + - 0.0015349988 + - 0.0032122727 + - 0.0002070215 + - 0.010016344 + laughterScore: 0 + - frameNumber: 1651 + frameDelay: 0 + Visemes: + - 0.03447516 + - 0.018593453 + - 0.00095373916 + - 0.3797755 + - 0.023568254 + - 0.2711191 + - 0.0058467924 + - 0.00050879637 + - 0.01116518 + - 0.0012448169 + - 0.16398166 + - 0.023748724 + - 0.05733934 + - 0.00021252464 + - 0.0074669984 + laughterScore: 0 + - frameNumber: 1652 + frameDelay: 0 + Visemes: + - 0.028409237 + - 0.0130684525 + - 0.0008049074 + - 0.2679226 + - 0.018424444 + - 0.18982317 + - 0.0041154916 + - 0.00042869104 + - 0.008069381 + - 0.0012763524 + - 0.15074271 + - 0.04293741 + - 0.26804346 + - 0.00038121198 + - 0.0055525503 + laughterScore: 0 + - frameNumber: 1653 + frameDelay: 0 + Visemes: + - 0.022211954 + - 0.00915963 + - 0.00068047206 + - 0.18758477 + - 0.021048468 + - 0.13303173 + - 0.002884574 + - 0.005680232 + - 0.0062709656 + - 0.0017569531 + - 0.16160512 + - 0.031128868 + - 0.41267675 + - 0.0003500671 + - 0.003929507 + laughterScore: 0 + - frameNumber: 1654 + frameDelay: 0 + Visemes: + - 0.020226222 + - 0.006441312 + - 0.0007277273 + - 0.13171162 + - 0.031324603 + - 0.09338752 + - 0.002030865 + - 0.24682343 + - 0.0052174977 + - 0.0015176435 + - 0.14475454 + - 0.0219059 + - 0.29090616 + - 0.0002460763 + - 0.002778949 + laughterScore: 0 + - frameNumber: 1655 + frameDelay: 0 + Visemes: + - 0.016944055 + - 0.0045211995 + - 0.00060534617 + - 0.09263279 + - 0.02373783 + - 0.06540352 + - 0.00143783 + - 0.46690154 + - 0.0036801414 + - 0.0010691958 + - 0.10187368 + - 0.015346477 + - 0.20371743 + - 0.0001756628 + - 0.001953317 + laughterScore: 0 + - frameNumber: 1656 + frameDelay: 0 + Visemes: + - 0.014027642 + - 0.0031744684 + - 0.0004403205 + - 0.06510863 + - 0.020071546 + - 0.0458518 + - 0.0010201731 + - 0.619151 + - 0.00261073 + - 0.0007552355 + - 0.07266797 + - 0.010751439 + - 0.1428665 + - 0.00012480903 + - 0.0013777467 + laughterScore: 0 + - frameNumber: 1657 + frameDelay: 0 + Visemes: + - 0.01945586 + - 0.0041722045 + - 0.00039702747 + - 0.048771378 + - 0.05075195 + - 0.03429152 + - 0.0007452845 + - 0.6756917 + - 0.0022214232 + - 0.00053588557 + - 0.053699873 + - 0.0075568925 + - 0.100624844 + - 0.00009089114 + - 0.0009932239 + laughterScore: 0 + - frameNumber: 1658 + frameDelay: 0 + Visemes: + - 0.031026125 + - 0.0062977797 + - 0.00040615303 + - 0.10901244 + - 0.17073956 + - 0.025617197 + - 0.0005791564 + - 0.53542906 + - 0.0037659067 + - 0.0003857016 + - 0.038530707 + - 0.0055100946 + - 0.07185627 + - 0.0000801087 + - 0.0007636988 + laughterScore: 0 + - frameNumber: 1659 + frameDelay: 0 + Visemes: + - 0.02553728 + - 0.0044635036 + - 0.0003079756 + - 0.08874732 + - 0.39884603 + - 0.018100334 + - 0.00082040497 + - 0.37825608 + - 0.002726767 + - 0.0002782584 + - 0.027028318 + - 0.003874391 + - 0.050393786 + - 0.00007051922 + - 0.0005489905 + laughterScore: 0 + - frameNumber: 1660 + frameDelay: 0 + Visemes: + - 0.02370285 + - 0.0032987162 + - 0.0003607911 + - 0.07357116 + - 0.5406896 + - 0.012873466 + - 0.00059951266 + - 0.2650715 + - 0.002134772 + - 0.00043885625 + - 0.026197817 + - 0.0073181377 + - 0.043151487 + - 0.00010889716 + - 0.00048239535 + laughterScore: 0 + - frameNumber: 1661 + frameDelay: 0 + Visemes: + - 0.024129037 + - 0.0031069762 + - 0.0005970894 + - 0.06597137 + - 0.47354293 + - 0.0096766725 + - 0.00067815883 + - 0.1861503 + - 0.0018961706 + - 0.0018880118 + - 0.06691757 + - 0.10248044 + - 0.06071577 + - 0.0016229303 + - 0.0006265504 + laughterScore: 0 + - frameNumber: 1662 + frameDelay: 0 + Visemes: + - 0.023168048 + - 0.0054438855 + - 0.00057074137 + - 0.046627373 + - 0.33679 + - 0.007509942 + - 0.0005161318 + - 0.13033764 + - 0.0026097838 + - 0.003686268 + - 0.20445985 + - 0.18305376 + - 0.04674788 + - 0.007851317 + - 0.00062736426 + laughterScore: 0 + - frameNumber: 1663 + frameDelay: 0 + Visemes: + - 0.028911643 + - 0.016767964 + - 0.0013759298 + - 0.0330078 + - 0.24039184 + - 0.0061438233 + - 0.00040626648 + - 0.09136943 + - 0.005069603 + - 0.009429588 + - 0.22557813 + - 0.27981943 + - 0.04205477 + - 0.019096328 + - 0.00057740597 + laughterScore: 0 + - frameNumber: 1664 + frameDelay: 0 + Visemes: + - 0.035754938 + - 0.10737595 + - 0.036070623 + - 0.023140943 + - 0.18293785 + - 0.0050847405 + - 0.00029304862 + - 0.06397689 + - 0.016921945 + - 0.015177387 + - 0.18660198 + - 0.27081326 + - 0.041728154 + - 0.013502854 + - 0.0006193806 + laughterScore: 0 + - frameNumber: 1665 + frameDelay: 0 + Visemes: + - 0.031633683 + - 0.29397604 + - 0.027951382 + - 0.016327614 + - 0.14567766 + - 0.0042038583 + - 0.00020988227 + - 0.044835996 + - 0.06395667 + - 0.0106694205 + - 0.13156836 + - 0.1896617 + - 0.029411608 + - 0.009467398 + - 0.00044871468 + laughterScore: 0 + - frameNumber: 1666 + frameDelay: 0 + Visemes: + - 0.0316322 + - 0.47086966 + - 0.019748101 + - 0.012006633 + - 0.10593448 + - 0.0031513288 + - 0.00015684511 + - 0.031426612 + - 0.061479732 + - 0.0075145587 + - 0.09464285 + - 0.13294147 + - 0.02144756 + - 0.006640692 + - 0.00040727918 + laughterScore: 0 + - frameNumber: 1667 + frameDelay: 0 + Visemes: + - 0.030057399 + - 0.5419156 + - 0.015691735 + - 0.009561591 + - 0.085422985 + - 0.0026538782 + - 0.00022444167 + - 0.02217587 + - 0.05748747 + - 0.006134694 + - 0.09620137 + - 0.095426016 + - 0.029399283 + - 0.004873712 + - 0.0027739657 + laughterScore: 0 + - frameNumber: 1668 + frameDelay: 0 + Visemes: + - 0.02462821 + - 0.38464627 + - 0.01123675 + - 0.00842111 + - 0.060864355 + - 0.0023821085 + - 0.00017744386 + - 0.01564222 + - 0.043579772 + - 0.005382123 + - 0.26887876 + - 0.08164454 + - 0.082670264 + - 0.0069937566 + - 0.0028523116 + laughterScore: 0 + - frameNumber: 1669 + frameDelay: 0 + Visemes: + - 0.022077145 + - 0.27109444 + - 0.008106643 + - 0.007715325 + - 0.04368564 + - 0.0023539735 + - 0.00014520447 + - 0.011215313 + - 0.035037674 + - 0.008515917 + - 0.33245167 + - 0.07573357 + - 0.15488721 + - 0.017286737 + - 0.009693529 + laughterScore: 0 + - frameNumber: 1670 + frameDelay: 0 + Visemes: + - 0.022547312 + - 0.19067866 + - 0.006748719 + - 0.0076069604 + - 0.03444413 + - 0.0022684454 + - 0.000118167845 + - 0.00805083 + - 0.029636139 + - 0.012573777 + - 0.4144405 + - 0.057064045 + - 0.13618448 + - 0.059141256 + - 0.018496558 + laughterScore: 0 + - frameNumber: 1671 + frameDelay: 0 + Visemes: + - 0.024417859 + - 0.13375962 + - 0.0064104036 + - 0.0060044485 + - 0.033200424 + - 0.0023277798 + - 0.000089150846 + - 0.0057924073 + - 0.034941457 + - 0.012391709 + - 0.44219622 + - 0.053854577 + - 0.11096373 + - 0.114409626 + - 0.01924055 + laughterScore: 0 + - frameNumber: 1672 + frameDelay: 0 + Visemes: + - 0.027765278 + - 0.09415244 + - 0.0055815373 + - 0.0044170837 + - 0.0409766 + - 0.0033071286 + - 0.00008927416 + - 0.0041183676 + - 0.11657961 + - 0.011775827 + - 0.3817839 + - 0.05525902 + - 0.09387024 + - 0.13453941 + - 0.025784262 + laughterScore: 0 + - frameNumber: 1673 + frameDelay: 0 + Visemes: + - 0.027058834 + - 0.066103116 + - 0.0045703473 + - 0.0031921428 + - 0.031342983 + - 0.0049944613 + - 0.00006934126 + - 0.002932096 + - 0.17991328 + - 0.0087933075 + - 0.27989534 + - 0.0434024 + - 0.0705686 + - 0.24994831 + - 0.027215432 + laughterScore: 0 + - frameNumber: 1674 + frameDelay: 0 + Visemes: + - 0.024068763 + - 0.046456397 + - 0.0035559316 + - 0.0023324357 + - 0.022615911 + - 0.0043731052 + - 0.000052110587 + - 0.0020820324 + - 0.21010622 + - 0.0064356206 + - 0.20096564 + - 0.03200193 + - 0.052304305 + - 0.36830378 + - 0.0243458 + laughterScore: 0 + - frameNumber: 1675 + frameDelay: 0 + Visemes: + - 0.024176147 + - 0.032652013 + - 0.0026367123 + - 0.0029256563 + - 0.018536767 + - 0.005645993 + - 0.00014734581 + - 0.0015851838 + - 0.18613234 + - 0.004881187 + - 0.16251808 + - 0.022836503 + - 0.042610236 + - 0.45276636 + - 0.039949447 + laughterScore: 0 + - frameNumber: 1676 + frameDelay: 0 + Visemes: + - 0.03006421 + - 0.022906082 + - 0.001901035 + - 0.0026096199 + - 0.021588678 + - 0.0050577195 + - 0.00029239446 + - 0.0013359783 + - 0.1537514 + - 0.0036522076 + - 0.12094063 + - 0.022991516 + - 0.14529705 + - 0.43872473 + - 0.028886713 + laughterScore: 0 + - frameNumber: 1677 + frameDelay: 0 + Visemes: + - 0.03358429 + - 0.016069902 + - 0.0013398651 + - 0.0022883094 + - 0.031435896 + - 0.0044568526 + - 0.0008514854 + - 0.0011971745 + - 0.110173196 + - 0.0027133424 + - 0.09164445 + - 0.02791024 + - 0.34344906 + - 0.31246147 + - 0.020424468 + laughterScore: 0 + - frameNumber: 1678 + frameDelay: 0 + Visemes: + - 0.027832313 + - 0.011258642 + - 0.0009452559 + - 0.0021382058 + - 0.027357459 + - 0.0033684392 + - 0.001132167 + - 0.0013713221 + - 0.077497825 + - 0.0019367789 + - 0.06479863 + - 0.034536287 + - 0.51243 + - 0.21896134 + - 0.014435342 + laughterScore: 0 + - frameNumber: 1679 + frameDelay: 0 + Visemes: + - 0.021375895 + - 0.007908471 + - 0.0006768584 + - 0.0019934303 + - 0.019660296 + - 0.0024763574 + - 0.00092897913 + - 0.0010366051 + - 0.054586288 + - 0.0013668855 + - 0.04598831 + - 0.03866796 + - 0.6397472 + - 0.1533502 + - 0.010236272 + laughterScore: 0 + - frameNumber: 1680 + frameDelay: 0 + Visemes: + - 0.0176596 + - 0.0055537787 + - 0.0005386485 + - 0.0017193299 + - 0.01614023 + - 0.0018244184 + - 0.0008252475 + - 0.0010201142 + - 0.038451497 + - 0.0010314748 + - 0.03287965 + - 0.03464327 + - 0.7329725 + - 0.10738973 + - 0.007350499 + laughterScore: 0 + - frameNumber: 1681 + frameDelay: 0 + Visemes: + - 0.016110446 + - 0.0038938136 + - 0.0007947183 + - 0.0015050655 + - 0.036254983 + - 0.0013047666 + - 0.0010489952 + - 0.010541187 + - 0.02741001 + - 0.0010292304 + - 0.024759896 + - 0.02876484 + - 0.76615024 + - 0.07521112 + - 0.0052206772 + laughterScore: 0 + - frameNumber: 1682 + frameDelay: 0 + Visemes: + - 0.020345034 + - 0.0027543188 + - 0.0006665318 + - 0.0014587677 + - 0.090627044 + - 0.0009911014 + - 0.0007758406 + - 0.1965011 + - 0.023014242 + - 0.0008493139 + - 0.020278199 + - 0.02425412 + - 0.56107664 + - 0.052710384 + - 0.0036972857 + laughterScore: 0 + - frameNumber: 1683 + frameDelay: 0 + Visemes: + - 0.019109283 + - 0.0019755126 + - 0.0007192042 + - 0.0011983253 + - 0.11783238 + - 0.00074109074 + - 0.0005790161 + - 0.37697238 + - 0.016292052 + - 0.00061401655 + - 0.014361997 + - 0.016999371 + - 0.39310357 + - 0.036898017 + - 0.002603766 + laughterScore: 0 + - frameNumber: 1684 + frameDelay: 0 + Visemes: + - 0.0171444 + - 0.001558296 + - 0.00056597113 + - 0.0015005437 + - 0.089662634 + - 0.0006873314 + - 0.0005580571 + - 0.5512562 + - 0.011489847 + - 0.00045883105 + - 0.010144215 + - 0.011911715 + - 0.27538437 + - 0.025829127 + - 0.0018485013 + laughterScore: 0 + - frameNumber: 1685 + frameDelay: 0 + Visemes: + - 0.02175197 + - 0.00605106 + - 0.0005911134 + - 0.014598234 + - 0.122710094 + - 0.016044606 + - 0.003414957 + - 0.57823676 + - 0.008289723 + - 0.00035091746 + - 0.00731872 + - 0.008351211 + - 0.19290806 + - 0.018081328 + - 0.0013012488 + laughterScore: 0 + - frameNumber: 1686 + frameDelay: 0 + Visemes: + - 0.021920368 + - 0.0053553316 + - 0.00054733356 + - 0.063715585 + - 0.28548965 + - 0.01186396 + - 0.029807132 + - 0.41486526 + - 0.006455181 + - 0.0002537661 + - 0.0052074175 + - 0.0058488613 + - 0.13509035 + - 0.012665109 + - 0.00091473444 + laughterScore: 0 + - frameNumber: 1687 + frameDelay: 0 + Visemes: + - 0.030285332 + - 0.004005788 + - 0.00042868682 + - 0.08818014 + - 0.3469882 + - 0.008533467 + - 0.10825751 + - 0.29521698 + - 0.0051453556 + - 0.00021699016 + - 0.0037351616 + - 0.0041078534 + - 0.095340446 + - 0.008887026 + - 0.00067109364 + laughterScore: 0 + - frameNumber: 1688 + frameDelay: 0 + Visemes: + - 0.025545133 + - 0.0032612684 + - 0.0005663147 + - 0.07725022 + - 0.47026438 + - 0.00632971 + - 0.113488734 + - 0.20730491 + - 0.0036500168 + - 0.0006931653 + - 0.0048780683 + - 0.0029684675 + - 0.074975185 + - 0.0062293014 + - 0.002595155 + laughterScore: 0 + - frameNumber: 1689 + frameDelay: 0 + Visemes: + - 0.018811885 + - 0.0023184747 + - 0.0004065559 + - 0.0541672 + - 0.34738064 + - 0.0044583734 + - 0.0964928 + - 0.14514256 + - 0.0025667995 + - 0.0019226965 + - 0.010392562 + - 0.0021439441 + - 0.06370972 + - 0.0047694086 + - 0.24531645 + laughterScore: 0 + - frameNumber: 1690 + frameDelay: 0 + Visemes: + - 0.015589207 + - 0.0016508009 + - 0.0002907491 + - 0.038005285 + - 0.24893676 + - 0.0031728318 + - 0.0835781 + - 0.101646565 + - 0.0018299539 + - 0.0022066473 + - 0.009797826 + - 0.0018101227 + - 0.099365175 + - 0.004489054 + - 0.38763094 + laughterScore: 0 + - frameNumber: 1691 + frameDelay: 0 + Visemes: + - 0.012609828 + - 0.0012007137 + - 0.00022507754 + - 0.026629692 + - 0.17445718 + - 0.0022404236 + - 0.05880784 + - 0.07118713 + - 0.0014134946 + - 0.0018419096 + - 0.008366263 + - 0.0013450639 + - 0.088808164 + - 0.004738564 + - 0.54612863 + laughterScore: 0 + - frameNumber: 1692 + frameDelay: 0 + Visemes: + - 0.013427609 + - 0.0009707125 + - 0.00049221405 + - 0.018780943 + - 0.12273898 + - 0.0023109731 + - 0.041179128 + - 0.04983751 + - 0.0017158446 + - 0.004089744 + - 0.010031162 + - 0.0070782932 + - 0.090276055 + - 0.005648491 + - 0.63142234 + laughterScore: 0 + - frameNumber: 1693 + frameDelay: 0 + Visemes: + - 0.0114653865 + - 0.0009933006 + - 0.0010275149 + - 0.013432571 + - 0.08608806 + - 0.003998322 + - 0.02883855 + - 0.03488748 + - 0.0015067713 + - 0.0037286463 + - 0.013222569 + - 0.018746302 + - 0.3270355 + - 0.004266084 + - 0.45076296 + laughterScore: 0 + - frameNumber: 1694 + frameDelay: 0 + Visemes: + - 0.009364433 + - 0.0007618861 + - 0.00086234335 + - 0.0095902225 + - 0.060395442 + - 0.0042030406 + - 0.020189231 + - 0.024421759 + - 0.0011634406 + - 0.0026755573 + - 0.011863301 + - 0.039446153 + - 0.49497825 + - 0.0033407272 + - 0.31674418 + laughterScore: 0 + - frameNumber: 1695 + frameDelay: 0 + Visemes: + - 0.0076985736 + - 0.00055489823 + - 0.0006338491 + - 0.0067831017 + - 0.04237164 + - 0.0038173904 + - 0.014133811 + - 0.01709605 + - 0.001317861 + - 0.0019290922 + - 0.009113297 + - 0.043956794 + - 0.6252009 + - 0.0031585845 + - 0.22223413 + laughterScore: 0 + - frameNumber: 1696 + frameDelay: 0 + Visemes: + - 0.0056157317 + - 0.00040566738 + - 0.00044800772 + - 0.004750355 + - 0.029716315 + - 0.059166264 + - 0.009895092 + - 0.01196779 + - 0.0013776545 + - 0.0013673332 + - 0.006556239 + - 0.031202942 + - 0.6797349 + - 0.0022181268 + - 0.15557759 + laughterScore: 0 + - frameNumber: 1697 + frameDelay: 0 + Visemes: + - 0.00447434 + - 0.0004616805 + - 0.0003173679 + - 0.003329356 + - 0.02086685 + - 0.33164677 + - 0.0069273016 + - 0.008378941 + - 0.005354036 + - 0.0009675406 + - 0.0048997225 + - 0.021868184 + - 0.48004475 + - 0.0015533452 + - 0.10890983 + laughterScore: 0 + - frameNumber: 1698 + frameDelay: 0 + Visemes: + - 0.0048389155 + - 0.000714581 + - 0.00022585125 + - 0.0023466109 + - 0.01481323 + - 0.5157385 + - 0.004851233 + - 0.005870085 + - 0.017308699 + - 0.00068069773 + - 0.0036305424 + - 0.015346861 + - 0.33630484 + - 0.0010875905 + - 0.076241806 + laughterScore: 0 + - frameNumber: 1699 + frameDelay: 0 + Visemes: + - 0.0068638786 + - 0.0012831939 + - 0.00024568418 + - 0.002221032 + - 0.011905018 + - 0.634773 + - 0.0034277847 + - 0.0041482216 + - 0.028368598 + - 0.000501787 + - 0.0052572014 + - 0.010867118 + - 0.23593439 + - 0.000764344 + - 0.05343873 + laughterScore: 0 + - frameNumber: 1700 + frameDelay: 0 + Visemes: + - 0.0091375 + - 0.113350414 + - 0.00496512 + - 0.0037338107 + - 0.019799156 + - 0.58847916 + - 0.0029471659 + - 0.003160519 + - 0.027485318 + - 0.0027256913 + - 0.012636409 + - 0.007650793 + - 0.16536173 + - 0.00054040103 + - 0.03802688 + laughterScore: 0 + - frameNumber: 1701 + frameDelay: 0 + Visemes: + - 0.0118324915 + - 0.28930765 + - 0.0081286235 + - 0.005143309 + - 0.017825212 + - 0.46264288 + - 0.002339667 + - 0.0024576024 + - 0.0204997 + - 0.017789146 + - 0.009908143 + - 0.0053709797 + - 0.11595009 + - 0.00039409366 + - 0.0304105 + laughterScore: 0 + - frameNumber: 1702 + frameDelay: 0 + Visemes: + - 0.008998784 + - 0.2528688 + - 0.0064919186 + - 0.0037187224 + - 0.012516146 + - 0.32905594 + - 0.0016404073 + - 0.0017228662 + - 0.014408429 + - 0.25430357 + - 0.0070482134 + - 0.0038194936 + - 0.08117355 + - 0.00029737985 + - 0.021935824 + laughterScore: 0 + - frameNumber: 1703 + frameDelay: 0 + Visemes: + - 0.007938224 + - 0.17887096 + - 0.0045895134 + - 0.002617434 + - 0.008780161 + - 0.23041125 + - 0.0011493814 + - 0.0012112632 + - 0.0101161795 + - 0.47243083 + - 0.005130853 + - 0.0042074802 + - 0.056854032 + - 0.00022224731 + - 0.015470212 + laughterScore: 0 + - frameNumber: 1704 + frameDelay: 0 + Visemes: + - 0.0135057075 + - 0.12524927 + - 0.003229973 + - 0.0018376375 + - 0.0061939056 + - 0.16155833 + - 0.0008089861 + - 0.0008493026 + - 0.0071124276 + - 0.39294565 + - 0.16254953 + - 0.072028615 + - 0.04110779 + - 0.00018593989 + - 0.0108369775 + laughterScore: 0 + - frameNumber: 1705 + frameDelay: 0 + Visemes: + - 0.012269545 + - 0.087676436 + - 0.002262391 + - 0.0012909487 + - 0.004445326 + - 0.11310701 + - 0.0005742799 + - 0.00059504894 + - 0.004982465 + - 0.27554202 + - 0.37954283 + - 0.080555215 + - 0.029425595 + - 0.00014460586 + - 0.007586345 + laughterScore: 0 + - frameNumber: 1706 + frameDelay: 0 + Visemes: + - 0.011384368 + - 0.061379828 + - 0.0015852712 + - 0.0009055258 + - 0.004178194 + - 0.07924991 + - 0.00040969826 + - 0.00042049043 + - 0.0034930564 + - 0.19294584 + - 0.5555303 + - 0.06228103 + - 0.020819744 + - 0.00010402016 + - 0.0053127347 + laughterScore: 0 + - frameNumber: 1707 + frameDelay: 0 + Visemes: + - 0.011029856 + - 0.043012276 + - 0.0011211068 + - 0.00064358365 + - 0.05269026 + - 0.055553548 + - 0.0002886354 + - 0.00030670455 + - 0.0025695318 + - 0.13509418 + - 0.6280063 + - 0.050469115 + - 0.015348686 + - 0.00010887548 + - 0.0037574205 + laughterScore: 0 + - frameNumber: 1708 + frameDelay: 0 + Visemes: + - 0.01025928 + - 0.030144664 + - 0.0008142831 + - 0.00049953343 + - 0.17717588 + - 0.03898273 + - 0.00020390176 + - 0.00023509389 + - 0.0020591845 + - 0.09458849 + - 0.5890977 + - 0.04169894 + - 0.011391512 + - 0.00016317115 + - 0.0026857404 + laughterScore: 0 + - frameNumber: 1709 + frameDelay: 0 + Visemes: + - 0.00764376 + - 0.021104436 + - 0.0005732816 + - 0.00035426408 + - 0.41652548 + - 0.02733045 + - 0.00014395952 + - 0.00017263395 + - 0.0016111695 + - 0.06621635 + - 0.41839105 + - 0.029818365 + - 0.008099073 + - 0.00012374179 + - 0.0018920464 + laughterScore: 0 + - frameNumber: 1710 + frameDelay: 0 + Visemes: + - 0.005595039 + - 0.014780703 + - 0.00040191502 + - 0.0002487124 + - 0.59047544 + - 0.019177647 + - 0.0001014787 + - 0.00012483551 + - 0.001194893 + - 0.046352223 + - 0.29345775 + - 0.020978976 + - 0.005694094 + - 0.00008722919 + - 0.0013290951 + laughterScore: 0 + - frameNumber: 1711 + frameDelay: 0 + Visemes: + - 0.00436395 + - 0.010427894 + - 0.00028554784 + - 0.00019281672 + - 0.7091142 + - 0.013611743 + - 0.00008153118 + - 0.00010264393 + - 0.0040136925 + - 0.032449417 + - 0.20554698 + - 0.014712728 + - 0.0040820027 + - 0.000061762155 + - 0.0009530999 + laughterScore: 0 + - frameNumber: 1712 + frameDelay: 0 + Visemes: + - 0.0112152975 + - 0.013651627 + - 0.00028111765 + - 0.0011962429 + - 0.5841553 + - 0.009944413 + - 0.000543588 + - 0.00019380011 + - 0.19061333 + - 0.022756174 + - 0.1487477 + - 0.011376026 + - 0.004344857 + - 0.000050228693 + - 0.0009303628 + laughterScore: 0 + - frameNumber: 1713 + frameDelay: 0 + Visemes: + - 0.009359646 + - 0.00967558 + - 0.00020339226 + - 0.0008808374 + - 0.41085288 + - 0.0071267076 + - 0.000383246 + - 0.00014073156 + - 0.42899328 + - 0.015933786 + - 0.10435244 + - 0.008200229 + - 0.0032009073 + - 0.000040918836 + - 0.00065550185 + laughterScore: 0 + - frameNumber: 1714 + frameDelay: 0 + Visemes: + - 0.007746935 + - 0.006875518 + - 0.0001451063 + - 0.00070074695 + - 0.28805685 + - 0.005143824 + - 0.00026930534 + - 0.00010086848 + - 0.58288264 + - 0.011158542 + - 0.077879414 + - 0.01564505 + - 0.0028327252 + - 0.000101018755 + - 0.0004615108 + laughterScore: 0 + - frameNumber: 1715 + frameDelay: 0 + Visemes: + - 0.006211487 + - 0.0048198747 + - 0.00010332148 + - 0.000536544 + - 0.20169978 + - 0.0036875098 + - 0.00018917728 + - 0.000071239985 + - 0.41134953 + - 0.007839621 + - 0.33687383 + - 0.02334978 + - 0.0023236908 + - 0.0006187556 + - 0.00032589637 + laughterScore: 0 + - frameNumber: 1716 + frameDelay: 0 + Visemes: + - 0.0046220287 + - 0.0033760548 + - 0.0000730077 + - 0.00038013892 + - 0.14123818 + - 0.0025932519 + - 0.00013266316 + - 0.000050204475 + - 0.28818142 + - 0.005489358 + - 0.5305593 + - 0.02039814 + - 0.001658931 + - 0.0010183593 + - 0.00022902124 + laughterScore: 0 + - frameNumber: 1717 + frameDelay: 0 + Visemes: + - 0.0034306243 + - 0.0023660436 + - 0.000051593674 + - 0.00026707663 + - 0.09890944 + - 0.0018264961 + - 0.000092954295 + - 0.000035454927 + - 0.20177908 + - 0.0038434735 + - 0.6679102 + - 0.017072374 + - 0.0011668778 + - 0.0010873936 + - 0.00016090975 + laughterScore: 0 + - frameNumber: 1718 + frameDelay: 0 + Visemes: + - 0.0026260458 + - 0.0016599597 + - 0.000036825986 + - 0.00018881104 + - 0.06931118 + - 0.0012997888 + - 0.00006517073 + - 0.000025111647 + - 0.14128892 + - 0.002691418 + - 0.76527643 + - 0.013604639 + - 0.0008205748 + - 0.0009915043 + - 0.000113571805 + laughterScore: 0 + - frameNumber: 1719 + frameDelay: 0 + Visemes: + - 0.0020938613 + - 0.0011717376 + - 0.000026450636 + - 0.00013259046 + - 0.048612762 + - 0.00092092843 + - 0.00004567061 + - 0.000017770353 + - 0.098947786 + - 0.0018865137 + - 0.83382356 + - 0.010654418 + - 0.00057937775 + - 0.0010013871 + - 0.00008512983 + laughterScore: 0 + - frameNumber: 1720 + frameDelay: 0 + Visemes: + - 0.0018785242 + - 0.0008872522 + - 0.000022983764 + - 0.0000930821 + - 0.034246426 + - 0.00065473106 + - 0.000032091346 + - 0.000013025403 + - 0.069504976 + - 0.0013304353 + - 0.8809706 + - 0.008402473 + - 0.00041888305 + - 0.001464075 + - 0.000080361875 + laughterScore: 0 + - frameNumber: 1721 + frameDelay: 0 + Visemes: + - 0.0019368066 + - 0.00070265745 + - 0.000018144365 + - 0.000065470194 + - 0.024123874 + - 0.00047231198 + - 0.000022596912 + - 0.000009858705 + - 0.048994943 + - 0.00093920674 + - 0.91359377 + - 0.006431631 + - 0.00031940706 + - 0.0022863292 + - 0.00008296365 + laughterScore: 0 + - frameNumber: 1722 + frameDelay: 0 + Visemes: + - 0.002021866 + - 0.00054181315 + - 0.00001400105 + - 0.00004625838 + - 0.017199406 + - 0.0003447869 + - 0.000015949954 + - 0.0000075176104 + - 0.03520753 + - 0.0006610326 + - 0.9344246 + - 0.004636823 + - 0.00026365076 + - 0.00451152 + - 0.000103277605 + laughterScore: 0 + - frameNumber: 1723 + frameDelay: 0 + Visemes: + - 0.002076109 + - 0.0004372355 + - 0.000012248076 + - 0.000034380057 + - 0.013377839 + - 0.0002779652 + - 0.000011518468 + - 0.000007213639 + - 0.025515568 + - 0.00046764026 + - 0.9477645 + - 0.0032706424 + - 0.00019868932 + - 0.0063874526 + - 0.00016094797 + laughterScore: 0 + - frameNumber: 1724 + frameDelay: 0 + Visemes: + - 0.0026420727 + - 0.0011506272 + - 0.000014346766 + - 0.000040033505 + - 0.011070025 + - 0.0002953094 + - 0.000010158477 + - 0.000011802324 + - 0.01976177 + - 0.0003336218 + - 0.9486648 + - 0.0022955837 + - 0.00014950726 + - 0.012960099 + - 0.0006002558 + laughterScore: 0 + - frameNumber: 1725 + frameDelay: 0 + Visemes: + - 0.0025938721 + - 0.00090729835 + - 0.000033182838 + - 0.00003477501 + - 0.008651171 + - 0.00021911967 + - 0.000010503352 + - 0.00004483215 + - 0.015179472 + - 0.00023726064 + - 0.95366263 + - 0.0016102862 + - 0.00012045559 + - 0.016258985 + - 0.00043620475 + laughterScore: 0 + - frameNumber: 1726 + frameDelay: 0 + Visemes: + - 0.0043054866 + - 0.0009236059 + - 0.00016958729 + - 0.000099473655 + - 0.008428909 + - 0.00025252078 + - 0.000016539167 + - 0.00016001947 + - 0.015146984 + - 0.00017994472 + - 0.9391557 + - 0.0011367929 + - 0.00009727459 + - 0.029558491 + - 0.00036873555 + laughterScore: 0 + - frameNumber: 1727 + frameDelay: 0 + Visemes: + - 0.01006989 + - 0.001787623 + - 0.0010824092 + - 0.0010312522 + - 0.014497006 + - 0.00078517286 + - 0.0000350562 + - 0.0006309569 + - 0.027128138 + - 0.00019624132 + - 0.884647 + - 0.0008214609 + - 0.00008294711 + - 0.056884546 + - 0.00032035256 + laughterScore: 0 + - frameNumber: 1728 + frameDelay: 0 + Visemes: + - 0.01500289 + - 0.0018927768 + - 0.00095709285 + - 0.00091119675 + - 0.012313212 + - 0.00081833557 + - 0.000038913764 + - 0.00061368995 + - 0.027144447 + - 0.00023310704 + - 0.8828161 + - 0.0009056311 + - 0.000073280484 + - 0.055773742 + - 0.00050565874 + laughterScore: 0 + - frameNumber: 1729 + frameDelay: 0 + Visemes: + - 0.03216509 + - 0.0016413443 + - 0.0008493659 + - 0.0008601892 + - 0.010493972 + - 0.0007546112 + - 0.000035504145 + - 0.00069544266 + - 0.03965719 + - 0.0003974741 + - 0.856471 + - 0.004541324 + - 0.00015041394 + - 0.05076932 + - 0.00051779975 + laughterScore: 0 + - frameNumber: 1730 + frameDelay: 0 + Visemes: + - 0.3224964 + - 0.0011489426 + - 0.0005945564 + - 0.00060213264 + - 0.007345783 + - 0.00054183346 + - 0.000024875217 + - 0.00048711634 + - 0.027760033 + - 0.00027823186 + - 0.5995347 + - 0.0031789269 + - 0.00010529223 + - 0.035538714 + - 0.00036246446 + laughterScore: 0 + length: 36.89996 diff --git a/Assets/Oculus/LipSync/Audio/vox_lp_01_lipSync.asset.meta b/Assets/Oculus/LipSync/Audio/vox_lp_01_lipSync.asset.meta new file mode 100644 index 0000000..1648604 --- /dev/null +++ b/Assets/Oculus/LipSync/Audio/vox_lp_01_lipSync.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1ccea2acd443f4ad4bb9a9f33fc960c0 +timeCreated: 1536698747 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Editor.meta b/Assets/Oculus/LipSync/Editor.meta new file mode 100644 index 0000000..cce863d --- /dev/null +++ b/Assets/Oculus/LipSync/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7152fa4bbe0044f12886bfb6274626bf +folderAsset: yes +timeCreated: 1496772356 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Editor/OVRLipSyncTool.cs b/Assets/Oculus/LipSync/Editor/OVRLipSyncTool.cs new file mode 100644 index 0000000..a9cefac --- /dev/null +++ b/Assets/Oculus/LipSync/Editor/OVRLipSyncTool.cs @@ -0,0 +1,141 @@ +/************************************************************************************ +Filename : OVRLipSyncTool.cs +Content : Editor tool for generating lip sync assets +Created : May 17th, 2018 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Collections; +using System.Collections.Generic; + +class OVRLipSyncToolLoader +{ + public static List clipQueue; + public static IEnumerator processor; + + // To show progress we use the total seconds of clip + public static float totalLengthOfClips; + public static float totalLengthOfClipsProcessed; + + public static IEnumerator ProcessClips() + { + if (clipQueue == null || clipQueue.Count == 0) + { + yield break; + } + + while (clipQueue.Count > 0) + { + // Pop a clip off the list + AudioClip clip = clipQueue[0]; + clipQueue.RemoveAt(0); + + if (clip.loadType != AudioClipLoadType.DecompressOnLoad) + { + Debug.LogError(clip.name + + ": Cannot process phonemes from an audio clip unless " + + "its load type is set to DecompressOnLoad."); + continue; + } + + // Update progress + if (totalLengthOfClips > 0.0f) + { + EditorUtility.DisplayProgressBar("Generating Lip Sync Assets...", "Processing clip " + clip.name + "...", + totalLengthOfClipsProcessed / totalLengthOfClips); + } + + if (!clip.preloadAudioData) + { + clip.LoadAudioData(); + + Debug.LogWarning(clip.name + + ": Audio data is not pre-loaded. Data will be loaded then" + + "unloaded on completion."); + + while (clip.loadState != AudioDataLoadState.Loaded) + { + yield return new WaitForSeconds(0.1f); + } + } + + OVRLipSyncSequence sequence = OVRLipSyncSequence.CreateSequenceFromAudioClip(clip); + if (sequence != null) + { + string path = AssetDatabase.GetAssetPath(clip); + string newPath = path.Replace(Path.GetExtension(path), "_lipSync.asset"); + AssetDatabase.CreateAsset(sequence, newPath); + AssetDatabase.ImportAsset(newPath); + } + AssetDatabase.Refresh(); + + if (!clip.preloadAudioData) + { + clip.UnloadAudioData(); + } + + totalLengthOfClipsProcessed += clip.length; + } + + EditorUtility.ClearProgressBar(); + } + + static OVRLipSyncToolLoader() + { + processor = ProcessClips(); + EditorApplication.update += Update; + } + static void Update() + { + processor.MoveNext(); + } +} + +class OVRLipSyncTool +{ + [MenuItem("Tools/Oculus/Generate Lip Sync Assets", false, 2000000)] + static void GenerateLipSyncAssets() + { + + if (OVRLipSyncToolLoader.clipQueue == null) + { + OVRLipSyncToolLoader.clipQueue = new List(); + } + + OVRLipSyncToolLoader.totalLengthOfClips = 0.0f; + OVRLipSyncToolLoader.totalLengthOfClipsProcessed = 0.0f; + + for (int i = 0; i < Selection.objects.Length; ++i) + { + Object obj = Selection.objects[i]; + if (obj is AudioClip) + { + AudioClip clip = (AudioClip)obj; + + OVRLipSyncToolLoader.clipQueue.Add(clip); + + OVRLipSyncToolLoader.totalLengthOfClips += clip.length; + } + } + + OVRLipSyncToolLoader.processor = OVRLipSyncToolLoader.ProcessClips(); + } +} diff --git a/Assets/Oculus/LipSync/Editor/OVRLipSyncTool.cs.meta b/Assets/Oculus/LipSync/Editor/OVRLipSyncTool.cs.meta new file mode 100644 index 0000000..a86e9a2 --- /dev/null +++ b/Assets/Oculus/LipSync/Editor/OVRLipSyncTool.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 08b0ff764adc142d79bfae7dd917cc16 +timeCreated: 1491977874 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Editor/OVRNamedArrayPropertyDrawer.cs b/Assets/Oculus/LipSync/Editor/OVRNamedArrayPropertyDrawer.cs new file mode 100644 index 0000000..cc7b7bd --- /dev/null +++ b/Assets/Oculus/LipSync/Editor/OVRNamedArrayPropertyDrawer.cs @@ -0,0 +1,38 @@ +/************************************************************************************ +Filename : OVRNamedArrayPropertyDrawer.cs +Content : Adds a custom named array drawer to the Unity editor +Created : May 17th, 2018 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using UnityEditor; + +// Adds a custom named array drawer to the Unity editor +[CustomPropertyDrawer( typeof(OVRNamedArrayAttribute) )] +public class OVRNamedArrayPropertyDrawer : PropertyDrawer { + public override void OnGUI( Rect rect, SerializedProperty property, GUIContent label ) { + try { + int pos = int.Parse(property.propertyPath.Split('[', ']')[1]); + EditorGUI.PropertyField( rect, property, + new GUIContent( ( (OVRNamedArrayAttribute)attribute ).names[pos] ) ); + } catch { + EditorGUI.PropertyField( rect, property, label ); + } + } +} diff --git a/Assets/Oculus/LipSync/Editor/OVRNamedArrayPropertyDrawer.cs.meta b/Assets/Oculus/LipSync/Editor/OVRNamedArrayPropertyDrawer.cs.meta new file mode 100644 index 0000000..cf183ec --- /dev/null +++ b/Assets/Oculus/LipSync/Editor/OVRNamedArrayPropertyDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c2d166626e0b34a40b774467cc6c5868 +timeCreated: 1534993516 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models.meta b/Assets/Oculus/LipSync/Models.meta new file mode 100644 index 0000000..2f6b678 --- /dev/null +++ b/Assets/Oculus/LipSync/Models.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fe1e90827fcfcac4883e383c51a78ddd +folderAsset: yes +timeCreated: 1437169289 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips.meta b/Assets/Oculus/LipSync/Models/Lips.meta new file mode 100644 index 0000000..0f50a84 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cd7d0c112e607a449b343e927db73608 +folderAsset: yes +timeCreated: 1448389303 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Lips.prefab b/Assets/Oculus/LipSync/Models/Lips/Lips.prefab new file mode 100644 index 0000000..04008a9 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Lips.prefab @@ -0,0 +1,171 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &133732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 485542} + m_Layer: 0 + m_Name: CATRigHub001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &151472 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 428150} + m_Layer: 0 + m_Name: CATRigHub001Bone001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &158350 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 488116} + - 137: {fileID: 13790992} + m_Layer: 0 + m_Name: Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &167936 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 431088} + m_Layer: 0 + m_Name: Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &428150 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151472} + m_LocalRotation: {x: -7.74982656e-09, y: 1.44928507e-07, z: .923879564, w: -.382683456} + m_LocalPosition: {x: .0436698794, y: -.0447963811, z: 6.36683506e-09} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 485542} + m_RootOrder: 0 +--- !u!4 &431088 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167936} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 485542} + - {fileID: 488116} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &485542 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133732} + m_LocalRotation: {x: .50000006, y: -.49999994, z: -.49999994, w: .50000006} + m_LocalPosition: {x: 0, y: 2.54040206e-10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 428150} + m_Father: {fileID: 431088} + m_RootOrder: 0 +--- !u!4 &488116 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158350} + m_LocalRotation: {x: -.707106829, y: 0, z: -0, w: .707106829} + m_LocalPosition: {x: -.000138242322, y: .00531236501, z: -.0556682572} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 431088} + m_RootOrder: 1 +--- !u!137 &13790992 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158350} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 58a7d4ae76f707641b7844bef3c8dbcb, type: 2} + - {fileID: 2100000, guid: e9d2e6e00d03b7b4d91a738089017154, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_Mesh: {fileID: 4300000, guid: 8962b26653269f348a9494917de56179, type: 3} + m_Bones: + - {fileID: 485542} + - {fileID: 428150} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 485542} + m_AABB: + m_Center: {x: .0666177869, y: .0378602631, z: .000725688413} + m_Extent: {x: .0338176042, y: .0338176154, z: .0438972637} + m_DirtyAABB: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 0} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 167936} + m_IsPrefabParent: 1 diff --git a/Assets/Oculus/LipSync/Models/Lips/Lips.prefab.meta b/Assets/Oculus/LipSync/Models/Lips/Lips.prefab.meta new file mode 100644 index 0000000..78037b0 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Lips.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b31b6ff670456643871f5910afba79a +timeCreated: 1448394748 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source.meta b/Assets/Oculus/LipSync/Models/Lips/Source.meta new file mode 100644 index 0000000..4c5fefc --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2c3314035f37b104ea16f437ea71268a +folderAsset: yes +timeCreated: 1448389334 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Albedo].tga b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Albedo].tga new file mode 100644 index 0000000..dd4b2bb Binary files /dev/null and b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Albedo].tga differ diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Albedo].tga.meta b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Albedo].tga.meta new file mode 100644 index 0000000..0262a88 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Albedo].tga.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 174f0a25d51125a479be833058e62ce8 +timeCreated: 1448389510 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Emission].tga b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Emission].tga new file mode 100644 index 0000000..41db2c6 Binary files /dev/null and b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Emission].tga differ diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Emission].tga.meta b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Emission].tga.meta new file mode 100644 index 0000000..d545a61 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Emission].tga.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 92ef7615a028bf1418f1d2115f157fa7 +timeCreated: 1448389763 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Normal].tga b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Normal].tga new file mode 100644 index 0000000..8def84c Binary files /dev/null and b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Normal].tga differ diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Normal].tga.meta b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Normal].tga.meta new file mode 100644 index 0000000..74ea1c8 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Normal].tga.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 38abb692fa3186447a01db602c633fb7 +timeCreated: 1448389864 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 1 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: 1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Specular].tga b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Specular].tga new file mode 100644 index 0000000..32cbe40 Binary files /dev/null and b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Specular].tga differ diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Specular].tga.meta b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Specular].tga.meta new file mode 100644 index 0000000..eeaa3c1 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Lips [Specular].tga.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: e4b095f9d3c63e943b24ab90a963b272 +timeCreated: 1448389510 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips.FBX b/Assets/Oculus/LipSync/Models/Lips/Source/Lips.FBX new file mode 100644 index 0000000..f658cee Binary files /dev/null and b/Assets/Oculus/LipSync/Models/Lips/Source/Lips.FBX differ diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Lips.FBX.meta b/Assets/Oculus/LipSync/Models/Lips/Source/Lips.FBX.meta new file mode 100644 index 0000000..fd92bdd --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Lips.FBX.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: 8962b26653269f348a9494917de56179 +timeCreated: 1531323144 +licenseType: Store +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: CATRigHub001 + 100002: CATRigHub001Bone001 + 100004: //RootNode + 100006: Lips + 400000: CATRigHub001 + 400002: CATRigHub001Bone001 + 400004: //RootNode + 400006: Lips + 4300000: Lips + 7400000: Take 001 + 9500000: //RootNode + 13700000: Lips + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 2 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Materials.meta b/Assets/Oculus/LipSync/Models/Lips/Source/Materials.meta new file mode 100644 index 0000000..1158fa2 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: de1e7e3c78028ac498bc50411fd5413b +folderAsset: yes +timeCreated: 1448394946 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips.mat b/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips.mat new file mode 100644 index 0000000..9db8848 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips.mat @@ -0,0 +1,149 @@ +%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: Lips + m_Shader: {fileID: 45, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _NORMALMAP _SPECGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 174f0a25d51125a479be833058e62ce8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 2800000, guid: 38abb692fa3186447a01db602c633fb7, type: 3} + 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: 2800000, guid: 92ef7615a028bf1418f1d2115f157fa7, type: 3} + 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} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 2800000, guid: e4b095f9d3c63e943b24ab90a963b272, type: 3} + 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: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .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 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 1} diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips.mat.meta b/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips.mat.meta new file mode 100644 index 0000000..357691b --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58a7d4ae76f707641b7844bef3c8dbcb +timeCreated: 1448389334 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips_Alpha.mat b/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips_Alpha.mat new file mode 100644 index 0000000..7476ccb --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips_Alpha.mat @@ -0,0 +1,150 @@ +%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: Lips_Alpha + m_Shader: {fileID: 45, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _METALLICGLOSSMAP _NORMALMAP _SPECGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 174f0a25d51125a479be833058e62ce8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 2800000, guid: 38abb692fa3186447a01db602c633fb7, type: 3} + 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: 2800000, guid: 92ef7615a028bf1418f1d2115f157fa7, type: 3} + 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: 2800000, guid: 38abb692fa3186447a01db602c633fb7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 2800000, guid: e4b095f9d3c63e943b24ab90a963b272, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 5 + data: + first: + name: _DstBlend + second: 10 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 0 + data: + first: + name: _Glossiness + second: .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: 2 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 1} diff --git a/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips_Alpha.mat.meta b/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips_Alpha.mat.meta new file mode 100644 index 0000000..2796d2e --- /dev/null +++ b/Assets/Oculus/LipSync/Models/Lips/Source/Materials/Lips_Alpha.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9d2e6e00d03b7b4d91a738089017154 +timeCreated: 1448389583 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip.meta new file mode 100644 index 0000000..dd83fe1 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a4624e55b9bd82444bf4687fee7e9346 +folderAsset: yes +timeCreated: 1444079114 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/CH.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/CH.png new file mode 100644 index 0000000..9b5757b Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/CH.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/CH.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/CH.png.meta new file mode 100644 index 0000000..9be43ac --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/CH.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 5e6531e8f56b42547b8d2ddf7a7363d1 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/DD.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/DD.png new file mode 100644 index 0000000..898a3e2 Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/DD.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/DD.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/DD.png.meta new file mode 100644 index 0000000..57c6f83 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/DD.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: ffbd7db31d3ad6e4a97a2f312babdcb6 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/E.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/E.png new file mode 100644 index 0000000..32489bd Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/E.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/E.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/E.png.meta new file mode 100644 index 0000000..827fa18 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/E.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 29a06a0eefee1b542a7c286f1689ffab +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/FF.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/FF.png new file mode 100644 index 0000000..41ad5d7 Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/FF.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/FF.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/FF.png.meta new file mode 100644 index 0000000..7a4a1d3 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/FF.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 5563aa34057c347499c480ea33c5d593 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Head-2.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Head-2.png new file mode 100644 index 0000000..3e8a482 Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Head-2.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Head-2.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Head-2.png.meta new file mode 100644 index 0000000..6baf493 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Head-2.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 49ba9bfa609aed54ea6d5d1c1390bc15 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials.meta new file mode 100644 index 0000000..c552a0c --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6c05c00fcd925e1469ab8cab6316329f +folderAsset: yes +timeCreated: 1444079116 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/Head-2.mat b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/Head-2.mat new file mode 100644 index 0000000..4f66934 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/Head-2.mat @@ -0,0 +1,138 @@ +%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: Head-2 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 49ba9bfa609aed54ea6d5d1c1390bc15, type: 3} + 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: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .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 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .588235319, g: .588235319, b: .588235319, a: 1} diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/Head-2.mat.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/Head-2.mat.meta new file mode 100644 index 0000000..75d53d0 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/Head-2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b8f002f88e9d7e847b5306f3338f80db +timeCreated: 1444079116 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/sil.mat b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/sil.mat new file mode 100644 index 0000000..8bc66c1 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/sil.mat @@ -0,0 +1,77 @@ +%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: sil + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: bea5b996ab6235c4aaa1be9b11aea8c4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/sil.mat.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/sil.mat.meta new file mode 100644 index 0000000..75800bc --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/Materials/sil.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5290b3a55eaa1b7458665dc2d856c042 +timeCreated: 1444079116 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/PP.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/PP.png new file mode 100644 index 0000000..9c093cc Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/PP.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/PP.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/PP.png.meta new file mode 100644 index 0000000..ca7a6f7 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/PP.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: bea5b996ab6235c4aaa1be9b11aea8c4 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RR.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RR.png new file mode 100644 index 0000000..8b28ae5 Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RR.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RR.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RR.png.meta new file mode 100644 index 0000000..dd8cbde --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RR.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 6d47a54f2b89a59459fd7561d360bab2 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RobotHead_TextureFlip.FBX b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RobotHead_TextureFlip.FBX new file mode 100644 index 0000000..1f062ca Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RobotHead_TextureFlip.FBX differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RobotHead_TextureFlip.FBX.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RobotHead_TextureFlip.FBX.meta new file mode 100644 index 0000000..c049eeb --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/RobotHead_TextureFlip.FBX.meta @@ -0,0 +1,118 @@ +fileFormatVersion: 2 +guid: f82b1e3c015abaa409d91ab8eb628ac4 +timeCreated: 1444079116 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: Eye-l + 100002: Eye-r + 100004: Head-0 + 100006: Head-1 + 100008: Head-2 + 100010: //RootNode + 100012: Head-3 + 100014: Head-4 + 100016: Head-5 + 100018: mouth + 400000: Eye-l + 400002: Eye-r + 400004: Head-0 + 400006: Head-1 + 400008: Head-2 + 400010: //RootNode + 400012: Head-3 + 400014: Head-4 + 400016: Head-5 + 400018: mouth + 2300000: Eye-l + 2300002: Eye-r + 2300004: Head-0 + 2300006: Head-1 + 2300008: Head-2 + 2300010: Head-3 + 2300012: Head-4 + 2300014: Head-5 + 2300016: mouth + 3300000: Eye-l + 3300002: Eye-r + 3300004: Head-0 + 3300006: Head-1 + 3300008: Head-2 + 3300010: Head-3 + 3300012: Head-4 + 3300014: Head-5 + 3300016: mouth + 4300000: Head-0 + 4300002: Eye-r + 4300004: Eye-l + 4300006: Head-5 + 4300008: Head-3 + 4300010: Head-4 + 4300012: Head-2 + 4300014: Head-1 + 4300016: mouth + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/SS.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/SS.png new file mode 100644 index 0000000..79ed868 Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/SS.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/SS.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/SS.png.meta new file mode 100644 index 0000000..ee30367 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/SS.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 31e6326c0bd6143479322c5b4a5fe949 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/TH.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/TH.png new file mode 100644 index 0000000..25a8f7d Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/TH.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/TH.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/TH.png.meta new file mode 100644 index 0000000..1ae2159 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/TH.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: d14bb80824ed25b44a65ddfc7f591e29 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/aa.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/aa.png new file mode 100644 index 0000000..06d4912 Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/aa.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/aa.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/aa.png.meta new file mode 100644 index 0000000..9e91d39 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/aa.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 5c06354455999f94ea26114e261dde6d +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ih.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ih.png new file mode 100644 index 0000000..d7d94fd Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ih.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ih.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ih.png.meta new file mode 100644 index 0000000..ebe2478 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ih.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: ad60c8114191fdf41aa0ea64e132add9 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/kk.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/kk.png new file mode 100644 index 0000000..9b5757b Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/kk.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/kk.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/kk.png.meta new file mode 100644 index 0000000..d0b3459 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/kk.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: ba0b9f69af91c5f46b490346e5552136 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/nn.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/nn.png new file mode 100644 index 0000000..d11ddbd Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/nn.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/nn.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/nn.png.meta new file mode 100644 index 0000000..b66ecf8 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/nn.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 9c21cf8c4dffca9418cebd0a578972b4 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/oh.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/oh.png new file mode 100644 index 0000000..f1bfb1a Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/oh.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/oh.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/oh.png.meta new file mode 100644 index 0000000..6d060b8 --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/oh.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 5f658e6e48970d340b4491a5fc959251 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ou.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ou.png new file mode 100644 index 0000000..308205e Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ou.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ou.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ou.png.meta new file mode 100644 index 0000000..5f9064d --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/ou.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 660be1fdb8590b14bab012a991bdeb86 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/sil.png b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/sil.png new file mode 100644 index 0000000..62e89ae Binary files /dev/null and b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/sil.png differ diff --git a/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/sil.png.meta b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/sil.png.meta new file mode 100644 index 0000000..bdab52c --- /dev/null +++ b/Assets/Oculus/LipSync/Models/RobotHead_TextureFlip/sil.png.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 46b2920291e9b8c4888ad3fe3f5e5e69 +timeCreated: 1444079115 +licenseType: Store +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 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + 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: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins.meta b/Assets/Oculus/LipSync/Plugins.meta new file mode 100644 index 0000000..17c18a5 --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 46ec37f6aa802c24ebead00e48b4ec09 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins/Android32.meta b/Assets/Oculus/LipSync/Plugins/Android32.meta new file mode 100644 index 0000000..c40373f --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins/Android32.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bbaa933ce12896e4eb67e30b96d795e9 +folderAsset: yes +timeCreated: 1536610734 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins/Android32/libOVRLipSync.so b/Assets/Oculus/LipSync/Plugins/Android32/libOVRLipSync.so new file mode 100644 index 0000000..a2661a2 Binary files /dev/null and b/Assets/Oculus/LipSync/Plugins/Android32/libOVRLipSync.so differ diff --git a/Assets/Oculus/LipSync/Plugins/Android32/libOVRLipSync.so.meta b/Assets/Oculus/LipSync/Plugins/Android32/libOVRLipSync.so.meta new file mode 100644 index 0000000..00d8dd6 --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins/Android32/libOVRLipSync.so.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 1be7ff64e219f4e44b17e7a42f13247b +timeCreated: 1536610736 +licenseType: Store +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins/Android64.meta b/Assets/Oculus/LipSync/Plugins/Android64.meta new file mode 100644 index 0000000..3983718 --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins/Android64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c1eb8c88592ff744ca29ebf826bb58e1 +folderAsset: yes +timeCreated: 1536610734 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins/Android64/libOVRLipSync.so b/Assets/Oculus/LipSync/Plugins/Android64/libOVRLipSync.so new file mode 100644 index 0000000..c9e4d6e Binary files /dev/null and b/Assets/Oculus/LipSync/Plugins/Android64/libOVRLipSync.so differ diff --git a/Assets/Oculus/LipSync/Plugins/Android64/libOVRLipSync.so.meta b/Assets/Oculus/LipSync/Plugins/Android64/libOVRLipSync.so.meta new file mode 100644 index 0000000..8636cef --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins/Android64/libOVRLipSync.so.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 57850b02365448041958df056264b3e3 +timeCreated: 1536610736 +licenseType: Store +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARM64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins/MacOSX.meta b/Assets/Oculus/LipSync/Plugins/MacOSX.meta new file mode 100644 index 0000000..2e601b8 --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins/MacOSX.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a6504b8c29dd76d4388eef4c5458c108 +folderAsset: yes +timeCreated: 1536866262 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins/MacOSX/OVRLipSync.bundle b/Assets/Oculus/LipSync/Plugins/MacOSX/OVRLipSync.bundle new file mode 100644 index 0000000..000465f Binary files /dev/null and b/Assets/Oculus/LipSync/Plugins/MacOSX/OVRLipSync.bundle differ diff --git a/Assets/Oculus/LipSync/Plugins/MacOSX/OVRLipSync.bundle.meta b/Assets/Oculus/LipSync/Plugins/MacOSX/OVRLipSync.bundle.meta new file mode 100644 index 0000000..74bd30e --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins/MacOSX/OVRLipSync.bundle.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 79c2e7f7b1a214443ab64ef151d6bd36 +timeCreated: 1529454298 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude Win: 1 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86_64 + OS: OSX + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: OSX + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: x86_64 + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins/Win64.meta b/Assets/Oculus/LipSync/Plugins/Win64.meta new file mode 100644 index 0000000..d6bbd1b --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins/Win64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1c5d549bd7e8f2142b88f679c5b3d73e +folderAsset: yes +timeCreated: 1536866262 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Plugins/Win64/OVRLipSync.dll b/Assets/Oculus/LipSync/Plugins/Win64/OVRLipSync.dll new file mode 100644 index 0000000..8a7af9a Binary files /dev/null and b/Assets/Oculus/LipSync/Plugins/Win64/OVRLipSync.dll differ diff --git a/Assets/Oculus/LipSync/Plugins/Win64/OVRLipSync.dll.meta b/Assets/Oculus/LipSync/Plugins/Win64/OVRLipSync.dll.meta new file mode 100644 index 0000000..3bae632 --- /dev/null +++ b/Assets/Oculus/LipSync/Plugins/Win64/OVRLipSync.dll.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: cffe8c2b7142fa3438fc1b6ccaeda372 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 0 + - first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86_64 + OS: Windows + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Prefabs.meta b/Assets/Oculus/LipSync/Prefabs.meta new file mode 100644 index 0000000..22fa868 --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4b22c2612a8292646806a50f38127837 +folderAsset: yes +timeCreated: 1439846444 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Prefabs/LipSyncDebugConsole.prefab b/Assets/Oculus/LipSync/Prefabs/LipSyncDebugConsole.prefab new file mode 100644 index 0000000..c6114da --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs/LipSyncDebugConsole.prefab @@ -0,0 +1,231 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100658 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22469590} + - component: {fileID: 22212472} + - component: {fileID: 11460950} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &130260 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22402796} + - component: {fileID: 22301806} + - component: {fileID: 11495334} + - component: {fileID: 11476360} + - component: {fileID: 114222500392608660} + m_Layer: 0 + m_Name: LipSyncDebugConsole + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11460950 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 5 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 5 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '1 + + 2 + + 3 + + 4 + + 5 + + 6 + + 7 + + 8 + + 9 + + 10 + + 11 + + 12 + + 13 + + 14 + + 15' +--- !u!114 &11476360 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11495334 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 10 +--- !u!222 &22212472 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100658} +--- !u!223 &22301806 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &22402796 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 3.5} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.2} + m_Children: + - {fileID: 22469590} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0.18, y: 0} + m_SizeDelta: {x: 1024, y: 1024} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22469590 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -19.76} + m_LocalScale: {x: 0.3, y: 0.3, z: 1} + m_Children: [] + m_Father: {fileID: 22402796} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 120, y: 90} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 0} + propertyPath: m_AnchoredPosition.x + value: .200000003 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 130260} + m_IsPrefabParent: 1 +--- !u!114 &114222500392608660 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c60ad94815c68aa41a786306cd588495, type: 3} + m_Name: + m_EditorClassIdentifier: + maxMessages: 15 + textMsg: {fileID: 11460950} diff --git a/Assets/Oculus/LipSync/Prefabs/LipSyncDebugConsole.prefab.meta b/Assets/Oculus/LipSync/Prefabs/LipSyncDebugConsole.prefab.meta new file mode 100644 index 0000000..f1cf087 --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs/LipSyncDebugConsole.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e4c63fc874ed2ed42b7808b1a310238a +timeCreated: 1531440959 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Prefabs/LipSyncInterface.prefab b/Assets/Oculus/LipSync/Prefabs/LipSyncInterface.prefab new file mode 100644 index 0000000..bef5083 --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs/LipSyncInterface.prefab @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &135588 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 452380} + - 114: {fileID: 11448948} + m_Layer: 0 + m_Name: LipSyncInterface + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &452380 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11448948 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82aa5cb7a870de440baadff9083be41c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !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: 135588} + m_IsPrefabParent: 1 diff --git a/Assets/Oculus/LipSync/Prefabs/LipSyncInterface.prefab.meta b/Assets/Oculus/LipSync/Prefabs/LipSyncInterface.prefab.meta new file mode 100644 index 0000000..f4a37c5 --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs/LipSyncInterface.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4dd277bd9572488489906165e0931952 +timeCreated: 1444054820 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Prefabs/LipSyncMorphTarget_Lips.prefab b/Assets/Oculus/LipSync/Prefabs/LipSyncMorphTarget_Lips.prefab new file mode 100644 index 0000000..8e26f9b --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs/LipSyncMorphTarget_Lips.prefab @@ -0,0 +1,319 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &129940 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 441704} + - component: {fileID: 13719198} + m_Layer: 0 + m_Name: Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145636 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 453756} + - component: {fileID: 82343288607552526} + - component: {fileID: 114997623160390080} + - component: {fileID: 114027978466431892} + - component: {fileID: 114119601008119326} + m_Layer: 0 + m_Name: LipSyncMorphTarget_Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &158592 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 487160} + m_Layer: 0 + m_Name: CATRigHub001Bone001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180920 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 430042} + m_Layer: 0 + m_Name: CATRigHub001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &430042 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180920} + m_LocalRotation: {x: 0.50000006, y: -0.49999994, z: -0.49999994, w: 0.50000006} + m_LocalPosition: {x: 0, y: 2.540402e-10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 487160} + m_Father: {fileID: 453756} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &441704 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 129940} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 453756} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &453756 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145636} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: -0.0060624, y: 1.3265, z: 1.3063} + m_LocalScale: {x: 24.37002, y: 24.369999, z: 24.369999} + m_Children: + - {fileID: 430042} + - {fileID: 441704} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &487160 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158592} + m_LocalRotation: {x: -0.000000007749827, y: 0.0000001449285, z: 0.92387956, w: -0.38268346} + m_LocalPosition: {x: 0.04366988, y: -0.04479638, z: 0.000000006366835} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 430042} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &13719198 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 129940} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 58a7d4ae76f707641b7844bef3c8dbcb, type: 2} + - {fileID: 2100000, guid: e9d2e6e00d03b7b4d91a738089017154, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 8962b26653269f348a9494917de56179, type: 3} + m_Bones: + - {fileID: 430042} + - {fileID: 487160} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 430042} + m_AABB: + m_Center: {x: 0.06661779, y: 0.037860263, z: 0.0007256884} + m_Extent: {x: 0.033817604, y: 0.033817615, z: 0.043897264} + m_DirtyAABB: 0 +--- !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: 145636} + m_IsPrefabParent: 1 +--- !u!82 &82343288607552526 +AudioSource: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145636} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &114027978466431892 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145636} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0b97b38f2f1fd24185315141a6c6a56, type: 3} + m_Name: + m_EditorClassIdentifier: + skinnedMeshRenderer: {fileID: 13719198} + visemeToBlendTargets: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e000000 + enableVisemeTestKeys: 0 + visemeTestKeys: 600000000900000071000000770000006500000072000000740000007900000075000000690000006f000000700000005b0000005d0000005c000000 + smoothAmount: 70 +--- !u!114 &114119601008119326 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145636} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d5ed157083b494e85013bad8fd5e12, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + enableMicSelectionGUI: 0 + micSelectionGUIKey: 109 + micInputVolume: 100 + micFrequency: 48000 + micControl: 2 + micActivationKey: 32 + selectedDevice: +--- !u!114 &114997623160390080 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145636} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f43c520a9bad8a3489109c869f454576, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + provider: 1 + enableKeyboardInput: 0 + enableTouchInput: 0 + audioLoopback: 0 + loopbackKey: 108 + showVisemes: 0 + debugVisemesKey: 100 + skipAudioSource: 0 + gain: 1 + debugLaughterKey: 104 + showLaughter: 0 + laughterScore: 0 diff --git a/Assets/Oculus/LipSync/Prefabs/LipSyncMorphTarget_Lips.prefab.meta b/Assets/Oculus/LipSync/Prefabs/LipSyncMorphTarget_Lips.prefab.meta new file mode 100644 index 0000000..695c048 --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs/LipSyncMorphTarget_Lips.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 560a84bf6071fad48848833c305e784a +timeCreated: 1448408082 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Prefabs/LipSyncTextureFlipTarget_Robot.prefab b/Assets/Oculus/LipSync/Prefabs/LipSyncTextureFlipTarget_Robot.prefab new file mode 100644 index 0000000..cf43010 --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs/LipSyncTextureFlipTarget_Robot.prefab @@ -0,0 +1,865 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &103710 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 491976} + - component: {fileID: 3309526} + - component: {fileID: 2396152} + m_Layer: 0 + m_Name: Head-0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &112224 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 434670} + - component: {fileID: 3317174} + - component: {fileID: 2383438} + m_Layer: 0 + m_Name: Head-3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115398 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 470322} + - component: {fileID: 3318132} + - component: {fileID: 2341214} + m_Layer: 0 + m_Name: Head-2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &116614 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 495278} + - component: {fileID: 3338656} + - component: {fileID: 2347176} + m_Layer: 0 + m_Name: mouth + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &117196 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 432198} + - component: {fileID: 8298520} + - component: {fileID: 11445718} + - component: {fileID: 11420510} + - component: {fileID: 11441082} + m_Layer: 0 + m_Name: LipSyncTextureFlipTarget_Robot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &134126 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 424882} + m_Layer: 0 + m_Name: RobotHead_TextureFlip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150352 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 494442} + - component: {fileID: 3309632} + - component: {fileID: 2341078} + m_Layer: 0 + m_Name: Head-5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &167146 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 426320} + - component: {fileID: 3353070} + - component: {fileID: 2371382} + m_Layer: 0 + m_Name: Eye-r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171898 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 470930} + - component: {fileID: 3350328} + - component: {fileID: 2316538} + m_Layer: 0 + m_Name: Head-4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &179166 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 422502} + - component: {fileID: 3346774} + - component: {fileID: 2317534} + m_Layer: 0 + m_Name: Head-1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &192526 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 401646} + - component: {fileID: 3367782} + - component: {fileID: 2319444} + m_Layer: 0 + m_Name: Eye-l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &401646 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192526} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0.04058239, y: 0, z: 0.0022434187} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &422502 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179166} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &424882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134126} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 401646} + - {fileID: 426320} + - {fileID: 491976} + - {fileID: 422502} + - {fileID: 470322} + - {fileID: 434670} + - {fileID: 470930} + - {fileID: 494442} + - {fileID: 495278} + m_Father: {fileID: 432198} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &426320 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167146} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0.04058, y: 0, z: 0.0022309874} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &432198 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117196} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 5.275625, y: 5.2756267, z: 5.2756267} + m_Children: + - {fileID: 424882} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &434670 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112224} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &470322 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115398} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &470930 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171898} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &491976 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103710} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &494442 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150352} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &495278 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116614} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 424882} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2316538 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171898} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2317534 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179166} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2319444 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192526} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2341078 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150352} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2341214 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115398} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2347176 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116614} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 5290b3a55eaa1b7458665dc2d856c042, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2371382 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167146} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2383438 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112224} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2396152 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103710} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &3309526 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103710} + m_Mesh: {fileID: 4300000, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!33 &3309632 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150352} + m_Mesh: {fileID: 4300006, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!33 &3317174 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112224} + m_Mesh: {fileID: 4300008, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!33 &3318132 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115398} + m_Mesh: {fileID: 4300012, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!33 &3338656 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 116614} + m_Mesh: {fileID: 4300016, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!33 &3346774 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179166} + m_Mesh: {fileID: 4300014, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!33 &3350328 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171898} + m_Mesh: {fileID: 4300010, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!33 &3353070 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167146} + m_Mesh: {fileID: 4300002, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!33 &3367782 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192526} + m_Mesh: {fileID: 4300004, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!82 &8298520 +AudioSource: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117196} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &11420510 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f43c520a9bad8a3489109c869f454576, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + provider: 0 + enableAcceleration: 1 + enableKeyboardInput: 0 + enableTouchInput: 0 + audioLoopback: 0 + loopbackKey: 108 + showVisemes: 0 + debugVisemesKey: 100 + skipAudioSource: 0 + gain: 1 + debugLaughterKey: 104 + showLaughter: 0 + laughterScore: 0 +--- !u!114 &11441082 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bc30a49f30010eb42a8b59ec685eac57, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 2100000, guid: 5290b3a55eaa1b7458665dc2d856c042, type: 2} + Textures: + - {fileID: 2800000, guid: 46b2920291e9b8c4888ad3fe3f5e5e69, type: 3} + - {fileID: 2800000, guid: bea5b996ab6235c4aaa1be9b11aea8c4, type: 3} + - {fileID: 2800000, guid: 5563aa34057c347499c480ea33c5d593, type: 3} + - {fileID: 2800000, guid: d14bb80824ed25b44a65ddfc7f591e29, type: 3} + - {fileID: 2800000, guid: ffbd7db31d3ad6e4a97a2f312babdcb6, type: 3} + - {fileID: 2800000, guid: ba0b9f69af91c5f46b490346e5552136, type: 3} + - {fileID: 2800000, guid: 5e6531e8f56b42547b8d2ddf7a7363d1, type: 3} + - {fileID: 2800000, guid: 31e6326c0bd6143479322c5b4a5fe949, type: 3} + - {fileID: 2800000, guid: 9c21cf8c4dffca9418cebd0a578972b4, type: 3} + - {fileID: 2800000, guid: 6d47a54f2b89a59459fd7561d360bab2, type: 3} + - {fileID: 2800000, guid: 5c06354455999f94ea26114e261dde6d, type: 3} + - {fileID: 2800000, guid: 29a06a0eefee1b542a7c286f1689ffab, type: 3} + - {fileID: 2800000, guid: ad60c8114191fdf41aa0ea64e132add9, type: 3} + - {fileID: 2800000, guid: 5f658e6e48970d340b4491a5fc959251, type: 3} + - {fileID: 2800000, guid: 660be1fdb8590b14bab012a991bdeb86, type: 3} + smoothAmount: 70 +--- !u!114 &11445718 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d5ed157083b494e85013bad8fd5e12, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + enableMicSelectionGUI: 0 + micSelectionGUIKey: 109 + micInputVolume: 100 + micFrequency: 44100 + micControl: 2 + micActivationKey: 32 + selectedDevice: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 0} + propertyPath: m_LocalPosition.z + value: -.0199999996 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: smoothing + value: .100000001 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 117196} + m_IsPrefabParent: 1 diff --git a/Assets/Oculus/LipSync/Prefabs/LipSyncTextureFlipTarget_Robot.prefab.meta b/Assets/Oculus/LipSync/Prefabs/LipSyncTextureFlipTarget_Robot.prefab.meta new file mode 100644 index 0000000..f300ac8 --- /dev/null +++ b/Assets/Oculus/LipSync/Prefabs/LipSyncTextureFlipTarget_Robot.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8dc55266323c0ad439967b2975af7840 +timeCreated: 1531443155 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scenes.meta b/Assets/Oculus/LipSync/Scenes.meta new file mode 100644 index 0000000..41c35d3 --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e63268aff72466742ada144924d3f899 +folderAsset: yes +timeCreated: 1437169810 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scenes/LipSync_Demo.unity b/Assets/Oculus/LipSync/Scenes/LipSync_Demo.unity new file mode 100644 index 0000000..7512198 --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/LipSync_Demo.unity @@ -0,0 +1,3849 @@ +%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: 8 + 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, g: 0, b: 0, 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: 3 + 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, g: 0, b: 0, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + 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_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !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 + m_NavMeshData: {fileID: 0} +--- !u!1 &40758329 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 192526, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 40758330} + - component: {fileID: 40758332} + - component: {fileID: 40758331} + m_Layer: 0 + m_Name: Eye-l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &40758330 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 401646, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 40758329} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0.04058239, y: 0, z: 0.0022434187} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &40758331 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2319444, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 40758329} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &40758332 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3367782, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 40758329} + m_Mesh: {fileID: 4300004, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &53363732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 129940, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 53363733} + - component: {fileID: 821062473} + m_Layer: 0 + m_Name: Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &53363733 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 441704, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 53363732} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 487962933} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &62209211 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 179166, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 62209212} + - component: {fileID: 62209214} + - component: {fileID: 62209213} + m_Layer: 0 + m_Name: Head-1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &62209212 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 422502, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 62209211} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &62209213 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2317534, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 62209211} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &62209214 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3346774, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 62209211} + m_Mesh: {fileID: 4300014, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &154180562 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 129940, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 154180563} + - component: {fileID: 585547437} + m_Layer: 0 + m_Name: Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &154180563 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 441704, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 154180562} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1606394621} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &179435421 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 134126, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 179435422} + m_Layer: 0 + m_Name: RobotHead_TextureFlip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &179435422 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 424882, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 179435421} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 40758330} + - {fileID: 647328122} + - {fileID: 517460497} + - {fileID: 944784463} + - {fileID: 858979800} + - {fileID: 1424851706} + - {fileID: 849510517} + - {fileID: 1259867706} + - {fileID: 2060692847} + m_Father: {fileID: 374990896} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &235549188 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 116614, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 235549189} + - component: {fileID: 235549191} + - component: {fileID: 235549190} + m_Layer: 0 + m_Name: mouth + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &235549189 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 495278, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 235549188} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &235549190 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2347176, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 235549188} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 5290b3a55eaa1b7458665dc2d856c042, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &235549191 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3338656, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 235549188} + m_Mesh: {fileID: 4300016, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &243285116 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 158592, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 243285117} + m_Layer: 0 + m_Name: CATRigHub001Bone001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &243285117 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 487160, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243285116} + m_LocalRotation: {x: -0.000000007749827, y: 0.0000001449285, z: 0.92387956, w: -0.38268346} + m_LocalPosition: {x: 0.04366988, y: -0.04479638, z: 0.000000006366835} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1409922301} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &246081074 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100658, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + m_PrefabInternal: {fileID: 1329084276} + serializedVersion: 5 + m_Component: + - component: {fileID: 246081075} + - component: {fileID: 246081077} + - component: {fileID: 246081076} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &246081075 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 22469590, guid: e4c63fc874ed2ed42b7808b1a310238a, + type: 2} + m_PrefabInternal: {fileID: 1329084276} + m_GameObject: {fileID: 246081074} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -19.76} + m_LocalScale: {x: 0.3, y: 0.3, z: 1} + m_Children: [] + m_Father: {fileID: 1274002662} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 120, y: 90} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &246081076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11460950, guid: e4c63fc874ed2ed42b7808b1a310238a, + type: 2} + m_PrefabInternal: {fileID: 1329084276} + m_GameObject: {fileID: 246081074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 5 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 5 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '1 + + 2 + + 3 + + 4 + + 5 + + 6 + + 7 + + 8 + + 9 + + 10 + + 11 + + 12 + + 13 + + 14 + + 15' +--- !u!222 &246081077 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 22212472, guid: e4c63fc874ed2ed42b7808b1a310238a, + type: 2} + m_PrefabInternal: {fileID: 1329084276} + m_GameObject: {fileID: 246081074} +--- !u!1 &248352993 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 134126, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 248352994} + m_Layer: 0 + m_Name: RobotHead_TextureFlip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &248352994 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 424882, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 248352993} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 607596601} + - {fileID: 1888490520} + - {fileID: 1418019653} + - {fileID: 62209212} + - {fileID: 397965669} + - {fileID: 613418048} + - {fileID: 1869025298} + - {fileID: 1131081335} + - {fileID: 1120811692} + m_Father: {fileID: 1890348320} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &264253653 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 192526, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 264253654} + - component: {fileID: 264253656} + - component: {fileID: 264253655} + m_Layer: 0 + m_Name: Eye-l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &264253654 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 401646, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 264253653} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0.04058239, y: 0, z: 0.0022434187} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &264253655 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2319444, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 264253653} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &264253656 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3367782, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 264253653} + m_Mesh: {fileID: 4300004, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &268923770 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 180920, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 268923771} + m_Layer: 0 + m_Name: CATRigHub001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &268923771 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 430042, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 268923770} + m_LocalRotation: {x: 0.50000006, y: -0.49999994, z: -0.49999994, w: 0.50000006} + m_LocalPosition: {x: 0, y: 2.540402e-10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 527163192} + m_Father: {fileID: 487962933} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &374990895 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 117196, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 374990896} + - component: {fileID: 374990900} + - component: {fileID: 374990899} + - component: {fileID: 374990898} + - component: {fileID: 374990897} + m_Layer: 0 + m_Name: InputType_Sample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &374990896 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 432198, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 374990895} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0, y: -0.053178, z: 4.6801} + m_LocalScale: {x: 23.200296, y: 23.200312, z: 23.200312} + m_Children: + - {fileID: 179435422} + - {fileID: 487962933} + m_Father: {fileID: 1225020793} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &374990897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 374990895} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0b97b38f2f1fd24185315141a6c6a56, type: 3} + m_Name: + m_EditorClassIdentifier: + skinnedMeshRenderer: {fileID: 821062473} + visemeToBlendTargets: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e000000 + enableVisemeTestKeys: 1 + visemeTestKeys: 600000000900000071000000770000006500000072000000740000007900000075000000690000006f000000700000005b0000005d0000005c000000 + laughterKey: 301 + laughterBlendTarget: 15 + laughterThreshold: 0.5 + laughterMultiplier: 1.5 + smoothAmount: 70 +--- !u!114 &374990898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11441082, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 374990895} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bc30a49f30010eb42a8b59ec685eac57, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 2100000, guid: 5290b3a55eaa1b7458665dc2d856c042, type: 2} + Textures: + - {fileID: 2800000, guid: 46b2920291e9b8c4888ad3fe3f5e5e69, type: 3} + - {fileID: 2800000, guid: bea5b996ab6235c4aaa1be9b11aea8c4, type: 3} + - {fileID: 2800000, guid: 5563aa34057c347499c480ea33c5d593, type: 3} + - {fileID: 2800000, guid: d14bb80824ed25b44a65ddfc7f591e29, type: 3} + - {fileID: 2800000, guid: ffbd7db31d3ad6e4a97a2f312babdcb6, type: 3} + - {fileID: 2800000, guid: ba0b9f69af91c5f46b490346e5552136, type: 3} + - {fileID: 2800000, guid: 5e6531e8f56b42547b8d2ddf7a7363d1, type: 3} + - {fileID: 2800000, guid: 31e6326c0bd6143479322c5b4a5fe949, type: 3} + - {fileID: 2800000, guid: 9c21cf8c4dffca9418cebd0a578972b4, type: 3} + - {fileID: 2800000, guid: 6d47a54f2b89a59459fd7561d360bab2, type: 3} + - {fileID: 2800000, guid: 5c06354455999f94ea26114e261dde6d, type: 3} + - {fileID: 2800000, guid: 29a06a0eefee1b542a7c286f1689ffab, type: 3} + - {fileID: 2800000, guid: ad60c8114191fdf41aa0ea64e132add9, type: 3} + - {fileID: 2800000, guid: 5f658e6e48970d340b4491a5fc959251, type: 3} + - {fileID: 2800000, guid: 660be1fdb8590b14bab012a991bdeb86, type: 3} + smoothAmount: 70 +--- !u!114 &374990899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11420510, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 374990895} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f43c520a9bad8a3489109c869f454576, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + provider: 1 + enableAcceleration: 1 + enableKeyboardInput: 1 + enableTouchInput: 1 + audioLoopback: 1 + loopbackKey: 108 + showVisemes: 0 + debugVisemesKey: 100 + skipAudioSource: 0 + gain: 1 + debugLaughterKey: 101 + showLaughter: 0 + laughterScore: 0 +--- !u!82 &374990900 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8298520, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 374990895} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: e21cea670b0f32c428ee862e590a7108, type: 3} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!1 &397965668 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 115398, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 397965669} + - component: {fileID: 397965671} + - component: {fileID: 397965670} + m_Layer: 0 + m_Name: Head-2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &397965669 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 470322, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 397965668} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &397965670 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2341214, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 397965668} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &397965671 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3318132, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 397965668} + m_Mesh: {fileID: 4300012, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &414768379 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 115398, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 414768380} + - component: {fileID: 414768382} + - component: {fileID: 414768381} + m_Layer: 0 + m_Name: Head-2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &414768380 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 470322, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 414768379} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &414768381 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2341214, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 414768379} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &414768382 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3318132, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 414768379} + m_Mesh: {fileID: 4300012, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &487962932 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 145636, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 487962933} + m_Layer: 0 + m_Name: LipSyncMorphTarget_Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &487962933 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 453756, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 487962932} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0002612943, y: 0.05946808, z: 0.14542045} + m_LocalScale: {x: 1.0504185, y: 1.0504168, z: 1.0504168} + m_Children: + - {fileID: 268923771} + - {fileID: 53363733} + m_Father: {fileID: 374990896} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &517460496 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 103710, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 517460497} + - component: {fileID: 517460499} + - component: {fileID: 517460498} + m_Layer: 0 + m_Name: Head-0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &517460497 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 491976, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 517460496} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &517460498 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2396152, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 517460496} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &517460499 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3309526, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 517460496} + m_Mesh: {fileID: 4300000, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &527163191 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 158592, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 527163192} + m_Layer: 0 + m_Name: CATRigHub001Bone001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &527163192 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 487160, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 527163191} + m_LocalRotation: {x: -0.000000007749827, y: 0.0000001449285, z: 0.92387956, w: -0.38268346} + m_LocalPosition: {x: 0.04366988, y: -0.04479638, z: 0.000000006366835} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 268923771} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &530950414 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 171898, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 530950415} + - component: {fileID: 530950417} + - component: {fileID: 530950416} + m_Layer: 0 + m_Name: Head-4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &530950415 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 470930, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 530950414} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &530950416 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2316538, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 530950414} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &530950417 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3350328, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 530950414} + m_Mesh: {fileID: 4300010, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!137 &585547437 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 13719198, guid: 560a84bf6071fad48848833c305e784a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 154180562} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 58a7d4ae76f707641b7844bef3c8dbcb, type: 2} + - {fileID: 2100000, guid: e9d2e6e00d03b7b4d91a738089017154, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 8962b26653269f348a9494917de56179, type: 3} + m_Bones: + - {fileID: 958171742} + - {fileID: 2018471941} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 958171742} + m_AABB: + m_Center: {x: 0.06661779, y: 0.037860263, z: 0.0007256884} + m_Extent: {x: 0.033817604, y: 0.033817615, z: 0.043897264} + m_DirtyAABB: 0 +--- !u!1 &607596600 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 192526, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 607596601} + - component: {fileID: 607596603} + - component: {fileID: 607596602} + m_Layer: 0 + m_Name: Eye-l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &607596601 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 401646, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 607596600} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0.04058239, y: 0, z: 0.0022434187} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &607596602 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2319444, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 607596600} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &607596603 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3367782, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 607596600} + m_Mesh: {fileID: 4300004, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &613418047 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 112224, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 613418048} + - component: {fileID: 613418050} + - component: {fileID: 613418049} + m_Layer: 0 + m_Name: Head-3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &613418048 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 434670, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 613418047} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &613418049 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2383438, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 613418047} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &613418050 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3317174, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 613418047} + m_Mesh: {fileID: 4300008, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &617133040 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 112224, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 617133041} + - component: {fileID: 617133043} + - component: {fileID: 617133042} + m_Layer: 0 + m_Name: Head-3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &617133041 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 434670, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617133040} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &617133042 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2383438, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617133040} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &617133043 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3317174, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617133040} + m_Mesh: {fileID: 4300008, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &647328121 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 167146, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 647328122} + - component: {fileID: 647328124} + - component: {fileID: 647328123} + m_Layer: 0 + m_Name: Eye-r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &647328122 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 426320, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 647328121} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0.04058, y: 0, z: 0.0022309874} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &647328123 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2371382, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 647328121} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &647328124 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3353070, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 647328121} + m_Mesh: {fileID: 4300002, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &735768440 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 135588, guid: 4dd277bd9572488489906165e0931952, type: 2} + m_PrefabInternal: {fileID: 1567090761} + serializedVersion: 5 + m_Component: + - component: {fileID: 735768442} + - component: {fileID: 735768441} + m_Layer: 0 + m_Name: LipSyncInterface + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &735768441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11448948, guid: 4dd277bd9572488489906165e0931952, + type: 2} + m_PrefabInternal: {fileID: 1567090761} + m_GameObject: {fileID: 735768440} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82aa5cb7a870de440baadff9083be41c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &735768442 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + m_PrefabInternal: {fileID: 1567090761} + m_GameObject: {fileID: 735768440} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &821062473 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 13719198, guid: 560a84bf6071fad48848833c305e784a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 53363732} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 58a7d4ae76f707641b7844bef3c8dbcb, type: 2} + - {fileID: 2100000, guid: e9d2e6e00d03b7b4d91a738089017154, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 8962b26653269f348a9494917de56179, type: 3} + m_Bones: + - {fileID: 268923771} + - {fileID: 527163192} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 268923771} + m_AABB: + m_Center: {x: 0.06661779, y: 0.037860263, z: 0.0007256884} + m_Extent: {x: 0.033817604, y: 0.033817615, z: 0.043897264} + m_DirtyAABB: 0 +--- !u!1 &849510516 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 171898, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 849510517} + - component: {fileID: 849510519} + - component: {fileID: 849510518} + m_Layer: 0 + m_Name: Head-4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &849510517 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 470930, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 849510516} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &849510518 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2316538, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 849510516} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &849510519 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3350328, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 849510516} + m_Mesh: {fileID: 4300010, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &858979799 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 115398, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 858979800} + - component: {fileID: 858979802} + - component: {fileID: 858979801} + m_Layer: 0 + m_Name: Head-2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &858979800 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 470322, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 858979799} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &858979801 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2341214, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 858979799} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &858979802 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3318132, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 858979799} + m_Mesh: {fileID: 4300012, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!137 &887369093 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 13719198, guid: 560a84bf6071fad48848833c305e784a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1472815620} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 58a7d4ae76f707641b7844bef3c8dbcb, type: 2} + - {fileID: 2100000, guid: e9d2e6e00d03b7b4d91a738089017154, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 8962b26653269f348a9494917de56179, type: 3} + m_Bones: + - {fileID: 1409922301} + - {fileID: 243285117} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 1409922301} + m_AABB: + m_Center: {x: 0.06661779, y: 0.037860263, z: 0.0007256884} + m_Extent: {x: 0.033817604, y: 0.033817615, z: 0.043897264} + m_DirtyAABB: 0 +--- !u!1 &944784462 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 179166, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 944784463} + - component: {fileID: 944784465} + - component: {fileID: 944784464} + m_Layer: 0 + m_Name: Head-1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &944784463 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 422502, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944784462} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &944784464 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2317534, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944784462} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &944784465 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3346774, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944784462} + m_Mesh: {fileID: 4300014, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &958171741 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 180920, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 958171742} + m_Layer: 0 + m_Name: CATRigHub001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &958171742 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 430042, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 958171741} + m_LocalRotation: {x: 0.50000006, y: -0.49999994, z: -0.49999994, w: 0.50000006} + m_LocalPosition: {x: 0, y: 2.540402e-10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2018471941} + m_Father: {fileID: 1606394621} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1120811691 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 116614, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1120811692} + - component: {fileID: 1120811694} + - component: {fileID: 1120811693} + m_Layer: 0 + m_Name: mouth + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1120811692 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 495278, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1120811691} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1120811693 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2347176, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1120811691} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 5290b3a55eaa1b7458665dc2d856c042, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1120811694 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3338656, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1120811691} + m_Mesh: {fileID: 4300016, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1131081334 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 150352, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1131081335} + - component: {fileID: 1131081337} + - component: {fileID: 1131081336} + m_Layer: 0 + m_Name: Head-5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1131081335 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 494442, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1131081334} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1131081336 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2341078, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1131081334} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1131081337 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3309632, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1131081334} + m_Mesh: {fileID: 4300006, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1138474938 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 179166, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1138474939} + - component: {fileID: 1138474941} + - component: {fileID: 1138474940} + m_Layer: 0 + m_Name: Head-1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1138474939 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 422502, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138474938} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1138474940 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2317534, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138474938} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1138474941 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3346774, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138474938} + m_Mesh: {fileID: 4300014, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1225020792 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1225020793} + - component: {fileID: 1225020795} + - component: {fileID: 1225020796} + - component: {fileID: 1225020794} + - component: {fileID: 1225020797} + m_Layer: 0 + m_Name: LipSyncTargets + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1225020793 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1225020792} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1431814204} + - {fileID: 374990896} + - {fileID: 1890348320} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1225020794 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1225020792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c62f9b5ef85d22f449e72c67c610059d, type: 3} + m_Name: + m_EditorClassIdentifier: + SwitchTargets: + - {fileID: 1225020795} + - {fileID: 1225020796} +--- !u!114 &1225020795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1225020792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50cd36abe38c57646bcd09be2353f905, type: 3} + m_Name: + m_EditorClassIdentifier: + SwitchTargets: + - {fileID: 1431814203} + - {fileID: 374990895} + - {fileID: 1890348319} +--- !u!114 &1225020796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1225020792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 50cd36abe38c57646bcd09be2353f905, type: 3} + m_Name: + m_EditorClassIdentifier: + SwitchTargets: + - {fileID: 1606394620} + - {fileID: 1287138952} + - {fileID: 487962932} + - {fileID: 179435421} + - {fileID: 1465093623} + - {fileID: 248352993} +--- !u!114 &1225020797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1225020792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a6c32d06b48d244b9c65729404d2afe, type: 3} + m_Name: + m_EditorClassIdentifier: + rotateLeftKey: 276 + rotateRightKey: 275 + resetRotationKey: 274 +--- !u!1 &1259867705 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 150352, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1259867706} + - component: {fileID: 1259867708} + - component: {fileID: 1259867707} + m_Layer: 0 + m_Name: Head-5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1259867706 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 494442, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1259867705} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1259867707 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2341078, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1259867705} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1259867708 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3309632, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1259867705} + m_Mesh: {fileID: 4300006, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1269087058 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 103710, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1269087059} + - component: {fileID: 1269087061} + - component: {fileID: 1269087060} + m_Layer: 0 + m_Name: Head-0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1269087059 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 491976, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1269087058} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1269087060 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2396152, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1269087058} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1269087061 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3309526, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1269087058} + m_Mesh: {fileID: 4300000, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1274002657 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 130260, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + m_PrefabInternal: {fileID: 1329084276} + serializedVersion: 5 + m_Component: + - component: {fileID: 1274002662} + - component: {fileID: 1274002661} + - component: {fileID: 1274002660} + - component: {fileID: 1274002659} + - component: {fileID: 1274002658} + m_Layer: 0 + m_Name: LipSyncDebugConsole + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1274002658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114222500392608660, guid: e4c63fc874ed2ed42b7808b1a310238a, + type: 2} + m_PrefabInternal: {fileID: 1329084276} + m_GameObject: {fileID: 1274002657} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c60ad94815c68aa41a786306cd588495, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1274002659 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11476360, guid: e4c63fc874ed2ed42b7808b1a310238a, + type: 2} + m_PrefabInternal: {fileID: 1329084276} + m_GameObject: {fileID: 1274002657} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1274002660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11495334, guid: e4c63fc874ed2ed42b7808b1a310238a, + type: 2} + m_PrefabInternal: {fileID: 1329084276} + m_GameObject: {fileID: 1274002657} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 10 +--- !u!223 &1274002661 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 22301806, guid: e4c63fc874ed2ed42b7808b1a310238a, + type: 2} + m_PrefabInternal: {fileID: 1329084276} + m_GameObject: {fileID: 1274002657} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1274002662 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, + type: 2} + m_PrefabInternal: {fileID: 1329084276} + m_GameObject: {fileID: 1274002657} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 3.5} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.2} + m_Children: + - {fileID: 246081075} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0.18, y: 0} + m_SizeDelta: {x: 1024, y: 1024} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1287138952 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 134126, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1287138953} + m_Layer: 0 + m_Name: RobotHead_TextureFlip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1287138953 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 424882, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1287138952} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 264253654} + - {fileID: 1541036004} + - {fileID: 1269087059} + - {fileID: 1138474939} + - {fileID: 414768380} + - {fileID: 617133041} + - {fileID: 530950415} + - {fileID: 1475160843} + - {fileID: 235549189} + m_Father: {fileID: 1431814204} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1329084276 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_LocalPosition.z + value: 3.5 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_AnchoredPosition.x + value: 0.18 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_SizeDelta.x + value: 1024 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_SizeDelta.y + value: 1024 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 22402796, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: e4c63fc874ed2ed42b7808b1a310238a, type: 2} + m_RootGameObject: {fileID: 1274002657} + m_IsPrefabParent: 0 +--- !u!1 &1409922300 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 180920, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1409922301} + m_Layer: 0 + m_Name: CATRigHub001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1409922301 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 430042, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1409922300} + m_LocalRotation: {x: 0.50000006, y: -0.49999994, z: -0.49999994, w: 0.50000006} + m_LocalPosition: {x: 0, y: 2.540402e-10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 243285117} + m_Father: {fileID: 1465093624} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1418019652 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 103710, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1418019653} + - component: {fileID: 1418019655} + - component: {fileID: 1418019654} + m_Layer: 0 + m_Name: Head-0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1418019653 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 491976, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1418019652} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1418019654 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2396152, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1418019652} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1418019655 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3309526, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1418019652} + m_Mesh: {fileID: 4300000, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1424851705 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 112224, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1424851706} + - component: {fileID: 1424851708} + - component: {fileID: 1424851707} + m_Layer: 0 + m_Name: Head-3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1424851706 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 434670, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424851705} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1424851707 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2383438, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424851705} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1424851708 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3317174, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424851705} + m_Mesh: {fileID: 4300008, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1431814203 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 117196, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1431814204} + - component: {fileID: 1431814208} + - component: {fileID: 1431814207} + - component: {fileID: 1431814206} + - component: {fileID: 1431814205} + - component: {fileID: 1431814209} + m_Layer: 0 + m_Name: InputType_Microphone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1431814204 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 432198, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1431814203} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: -0, y: -0.053178, z: 4.6801} + m_LocalScale: {x: 23.200296, y: 23.200312, z: 23.200312} + m_Children: + - {fileID: 1287138953} + - {fileID: 1606394621} + m_Father: {fileID: 1225020793} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1431814205 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11441082, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1431814203} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bc30a49f30010eb42a8b59ec685eac57, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 2100000, guid: 5290b3a55eaa1b7458665dc2d856c042, type: 2} + Textures: + - {fileID: 2800000, guid: 46b2920291e9b8c4888ad3fe3f5e5e69, type: 3} + - {fileID: 2800000, guid: bea5b996ab6235c4aaa1be9b11aea8c4, type: 3} + - {fileID: 2800000, guid: 5563aa34057c347499c480ea33c5d593, type: 3} + - {fileID: 2800000, guid: d14bb80824ed25b44a65ddfc7f591e29, type: 3} + - {fileID: 2800000, guid: ffbd7db31d3ad6e4a97a2f312babdcb6, type: 3} + - {fileID: 2800000, guid: ba0b9f69af91c5f46b490346e5552136, type: 3} + - {fileID: 2800000, guid: 5e6531e8f56b42547b8d2ddf7a7363d1, type: 3} + - {fileID: 2800000, guid: 31e6326c0bd6143479322c5b4a5fe949, type: 3} + - {fileID: 2800000, guid: 9c21cf8c4dffca9418cebd0a578972b4, type: 3} + - {fileID: 2800000, guid: 6d47a54f2b89a59459fd7561d360bab2, type: 3} + - {fileID: 2800000, guid: 5c06354455999f94ea26114e261dde6d, type: 3} + - {fileID: 2800000, guid: 29a06a0eefee1b542a7c286f1689ffab, type: 3} + - {fileID: 2800000, guid: ad60c8114191fdf41aa0ea64e132add9, type: 3} + - {fileID: 2800000, guid: 5f658e6e48970d340b4491a5fc959251, type: 3} + - {fileID: 2800000, guid: 660be1fdb8590b14bab012a991bdeb86, type: 3} + smoothAmount: 70 +--- !u!114 &1431814206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11420510, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1431814203} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f43c520a9bad8a3489109c869f454576, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + provider: 1 + enableAcceleration: 1 + enableKeyboardInput: 1 + enableTouchInput: 1 + audioLoopback: 0 + loopbackKey: 108 + showVisemes: 0 + debugVisemesKey: 100 + skipAudioSource: 0 + gain: 1 + debugLaughterKey: 104 + showLaughter: 0 + laughterScore: 0 +--- !u!114 &1431814207 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11445718, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1431814203} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d5ed157083b494e85013bad8fd5e12, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + enableMicSelectionGUI: 1 + micSelectionGUIKey: 109 + micInputVolume: 100 + micFrequency: 44100 + micControl: 2 + micActivationKey: 32 + selectedDevice: +--- !u!82 &1431814208 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8298520, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1431814203} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1.1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &1431814209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1431814203} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0b97b38f2f1fd24185315141a6c6a56, type: 3} + m_Name: + m_EditorClassIdentifier: + skinnedMeshRenderer: {fileID: 585547437} + visemeToBlendTargets: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e000000 + enableVisemeTestKeys: 1 + visemeTestKeys: 600000000900000071000000770000006500000072000000740000007900000075000000690000006f000000700000005b0000005d0000005c000000 + laughterKey: 301 + laughterBlendTarget: 15 + laughterThreshold: 0.5 + laughterMultiplier: 1.5 + smoothAmount: 70 +--- !u!1 &1465093623 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 145636, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1465093624} + m_Layer: 0 + m_Name: LipSyncMorphTarget_Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1465093624 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 453756, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1465093623} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0002612943, y: 0.05946808, z: 0.14542045} + m_LocalScale: {x: 1.0504185, y: 1.0504168, z: 1.0504168} + m_Children: + - {fileID: 1409922301} + - {fileID: 1472815621} + m_Father: {fileID: 1890348320} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1472815620 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 129940, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1472815621} + - component: {fileID: 887369093} + m_Layer: 0 + m_Name: Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1472815621 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 441704, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1472815620} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1465093624} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1475160840 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 150352, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1475160843} + - component: {fileID: 1475160842} + - component: {fileID: 1475160841} + m_Layer: 0 + m_Name: Head-5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1475160841 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2341078, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475160840} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1475160842 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3309632, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475160840} + m_Mesh: {fileID: 4300006, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!4 &1475160843 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 494442, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475160840} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1541036003 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 167146, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1541036004} + - component: {fileID: 1541036006} + - component: {fileID: 1541036005} + m_Layer: 0 + m_Name: Eye-r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1541036004 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 426320, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541036003} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0.04058, y: 0, z: 0.0022309874} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1287138953} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1541036005 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2371382, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541036003} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1541036006 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3353070, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541036003} + m_Mesh: {fileID: 4300002, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1001 &1567090761 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 452380, guid: 4dd277bd9572488489906165e0931952, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 4dd277bd9572488489906165e0931952, type: 2} + m_RootGameObject: {fileID: 735768440} + m_IsPrefabParent: 0 +--- !u!1 &1606394620 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 145636, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1606394621} + m_Layer: 0 + m_Name: LipSyncMorphTarget_Lips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1606394621 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 453756, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1606394620} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0002612943, y: 0.05946808, z: 0.14542045} + m_LocalScale: {x: 1.0504185, y: 1.0504168, z: 1.0504168} + m_Children: + - {fileID: 958171742} + - {fileID: 154180563} + m_Father: {fileID: 1431814204} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1787721078 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1787721083} + - component: {fileID: 1787721082} + - component: {fileID: 1787721081} + - component: {fileID: 1787721080} + - component: {fileID: 1787721079} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1787721079 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1787721078} + m_Enabled: 1 +--- !u!124 &1787721080 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1787721078} + m_Enabled: 1 +--- !u!92 &1787721081 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1787721078} + m_Enabled: 1 +--- !u!20 &1787721082 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1787721078} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0.019607844} + 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: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &1787721083 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1787721078} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1.75} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1869025297 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 171898, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1869025298} + - component: {fileID: 1869025300} + - component: {fileID: 1869025299} + m_Layer: 0 + m_Name: Head-4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1869025298 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 470930, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1869025297} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1869025299 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2316538, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1869025297} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1869025300 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3350328, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1869025297} + m_Mesh: {fileID: 4300010, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1887588324 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1887588326} + - component: {fileID: 1887588325} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1887588325 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1887588324} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1887588326 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1887588324} + m_LocalRotation: {x: 0.127201, y: 0.03304149, z: 0.37142983, w: 0.9191127} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1888490519 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 167146, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1888490520} + - component: {fileID: 1888490522} + - component: {fileID: 1888490521} + m_Layer: 0 + m_Name: Eye-r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1888490520 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 426320, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1888490519} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0.04058, y: 0, z: 0.0022309874} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 248352994} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1888490521 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2371382, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1888490519} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b8f002f88e9d7e847b5306f3338f80db, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &1888490522 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3353070, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1888490519} + m_Mesh: {fileID: 4300002, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} +--- !u!1 &1890348319 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 117196, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1890348320} + - component: {fileID: 1890348325} + - component: {fileID: 1890348324} + - component: {fileID: 1890348323} + - component: {fileID: 1890348322} + m_Layer: 0 + m_Name: InputType_SampleCanned + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1890348320 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 432198, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1890348319} + m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.00000004371139} + m_LocalPosition: {x: 0, y: -0.053178, z: 4.6801} + m_LocalScale: {x: 23.2003, y: 23.20031, z: 23.20031} + m_Children: + - {fileID: 248352994} + - {fileID: 1465093624} + m_Father: {fileID: 1225020793} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1890348322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1890348319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0b97b38f2f1fd24185315141a6c6a56, type: 3} + m_Name: + m_EditorClassIdentifier: + skinnedMeshRenderer: {fileID: 887369093} + visemeToBlendTargets: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e000000 + enableVisemeTestKeys: 0 + visemeTestKeys: 600000000900000071000000770000006500000072000000740000007900000075000000690000006f000000700000005b0000005d0000005c000000 + laughterKey: 301 + laughterBlendTarget: 15 + laughterThreshold: 0.5 + laughterMultiplier: 1.5 + smoothAmount: 70 +--- !u!114 &1890348323 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11441082, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1890348319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bc30a49f30010eb42a8b59ec685eac57, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 2100000, guid: 5290b3a55eaa1b7458665dc2d856c042, type: 2} + Textures: + - {fileID: 2800000, guid: 46b2920291e9b8c4888ad3fe3f5e5e69, type: 3} + - {fileID: 2800000, guid: bea5b996ab6235c4aaa1be9b11aea8c4, type: 3} + - {fileID: 2800000, guid: 5563aa34057c347499c480ea33c5d593, type: 3} + - {fileID: 2800000, guid: d14bb80824ed25b44a65ddfc7f591e29, type: 3} + - {fileID: 2800000, guid: ffbd7db31d3ad6e4a97a2f312babdcb6, type: 3} + - {fileID: 2800000, guid: ba0b9f69af91c5f46b490346e5552136, type: 3} + - {fileID: 2800000, guid: 5e6531e8f56b42547b8d2ddf7a7363d1, type: 3} + - {fileID: 2800000, guid: 31e6326c0bd6143479322c5b4a5fe949, type: 3} + - {fileID: 2800000, guid: 9c21cf8c4dffca9418cebd0a578972b4, type: 3} + - {fileID: 2800000, guid: 6d47a54f2b89a59459fd7561d360bab2, type: 3} + - {fileID: 2800000, guid: 5c06354455999f94ea26114e261dde6d, type: 3} + - {fileID: 2800000, guid: 29a06a0eefee1b542a7c286f1689ffab, type: 3} + - {fileID: 2800000, guid: ad60c8114191fdf41aa0ea64e132add9, type: 3} + - {fileID: 2800000, guid: 5f658e6e48970d340b4491a5fc959251, type: 3} + - {fileID: 2800000, guid: 660be1fdb8590b14bab012a991bdeb86, type: 3} + smoothAmount: 70 +--- !u!114 &1890348324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11420510, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1890348319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e073e338e215b4ae9a7fcdf6891e7955, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + provider: 1 + enableAcceleration: 1 + currentSequence: {fileID: 11400000, guid: 1ccea2acd443f4ad4bb9a9f33fc960c0, type: 2} +--- !u!82 &1890348325 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8298520, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1890348319} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: e21cea670b0f32c428ee862e590a7108, type: 3} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!1 &2018471940 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 158592, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2018471941} + m_Layer: 0 + m_Name: CATRigHub001Bone001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2018471941 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 487160, guid: 560a84bf6071fad48848833c305e784a, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2018471940} + m_LocalRotation: {x: -0.000000007749827, y: 0.0000001449285, z: 0.92387956, w: -0.38268346} + m_LocalPosition: {x: 0.04366988, y: -0.04479638, z: 0.000000006366835} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 958171742} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2060692846 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 116614, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2060692847} + - component: {fileID: 2060692849} + - component: {fileID: 2060692848} + m_Layer: 0 + m_Name: mouth + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2060692847 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 495278, guid: 416995df66fc7834f9a5a4af1ccf1297, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2060692846} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 179435422} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2060692848 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2347176, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2060692846} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 5290b3a55eaa1b7458665dc2d856c042, 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: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 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 &2060692849 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3338656, guid: 416995df66fc7834f9a5a4af1ccf1297, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2060692846} + m_Mesh: {fileID: 4300016, guid: f82b1e3c015abaa409d91ab8eb628ac4, type: 3} diff --git a/Assets/Oculus/LipSync/Scenes/LipSync_Demo.unity.meta b/Assets/Oculus/LipSync/Scenes/LipSync_Demo.unity.meta new file mode 100644 index 0000000..d536071 --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/LipSync_Demo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a5206cd53b21be4588ef635952929e9 +timeCreated: 1445011372 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scenes/Scripts.meta b/Assets/Oculus/LipSync/Scenes/Scripts.meta new file mode 100644 index 0000000..4201fb9 --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a59ddab39a70b984f94af4f1ceb261d2 +folderAsset: yes +timeCreated: 1445015254 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scenes/Scripts/EnableSwitch.cs b/Assets/Oculus/LipSync/Scenes/Scripts/EnableSwitch.cs new file mode 100644 index 0000000..76eda90 --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/Scripts/EnableSwitch.cs @@ -0,0 +1,60 @@ +using UnityEngine; + +public class EnableSwitch : MonoBehaviour +{ + public GameObject[] SwitchTargets; + + /// + /// Sets the active GameObject + /// + /// true, if active was set, false otherwise. + /// Target. + public bool SetActive(int target) where T : MonoBehaviour + { + if((target < 0) || (target >= SwitchTargets.Length)) + return false; + + for (int i = 0; i < SwitchTargets.Length; i++) + { + SwitchTargets[i].SetActive(false); + + // Disable texture flip or morph target + OVRLipSyncContextMorphTarget lipsyncContextMorph = + SwitchTargets[i].GetComponent(); + if (lipsyncContextMorph) + lipsyncContextMorph.enabled = false; + OVRLipSyncContextTextureFlip lipsyncContextTexture = + SwitchTargets[i].GetComponent(); + if (lipsyncContextTexture) + lipsyncContextTexture.enabled = false; + } + + SwitchTargets[target].SetActive(true); + MonoBehaviour lipsyncContext = SwitchTargets[target].GetComponent(); + if (lipsyncContext != null) + { + lipsyncContext.enabled = true; + } + + return true; + } + + /// + /// Sets the active GameObject + /// + /// true, if active was set, false otherwise. + /// Target. + public bool SetActive(int target) + { + if((target < 0) || (target >= SwitchTargets.Length)) + return false; + + for (int i = 0; i < SwitchTargets.Length; i++) + SwitchTargets[i].SetActive(false); + + SwitchTargets[target].SetActive(true); + + return true; + } +} + diff --git a/Assets/Oculus/LipSync/Scenes/Scripts/EnableSwitch.cs.meta b/Assets/Oculus/LipSync/Scenes/Scripts/EnableSwitch.cs.meta new file mode 100644 index 0000000..3722e3a --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/Scripts/EnableSwitch.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 50cd36abe38c57646bcd09be2353f905 +timeCreated: 1445017324 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_Control.cs b/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_Control.cs new file mode 100644 index 0000000..0567104 --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_Control.cs @@ -0,0 +1,88 @@ +/************************************************************************************ +Filename : LipSyncDemo_Control.cs +Content : LipSync Demo controls +Created : July 11, 2018 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LipSyncDemo_Control : MonoBehaviour { + + [Tooltip("Key used to rotate the demo object up to 45 degrees to the left.")] + public KeyCode rotateLeftKey = KeyCode.LeftArrow; + [Tooltip("Key used to rotate the demo object up to 45 degrees to the right.")] + public KeyCode rotateRightKey = KeyCode.RightArrow; + [Tooltip("Key used to reset demo object rotation.")] + public KeyCode resetRotationKey = KeyCode.DownArrow; + + private float resetRotation = 180.0f; + private float rotationAmount = 20.0f; + private float rotationMax = 45.0f; + + // Use this for initialization + void Start () { + } + + // Update is called once per frame + void Update () { + if (Input.GetKey(rotateLeftKey)) + { + RotateObject(rotationAmount); + } + else if (Input.GetKey(rotateRightKey)) + { + RotateObject(-rotationAmount); + } + else if (Input.GetKey(resetRotationKey)) + { + RotateObject(resetRotation, true); + } + } + + void RotateObject(float amountDegrees, bool absolute = false) + { + GameObject target = GameObject.Find("LipSyncMorphTarget_Lips"); + + if (target == null) + { + // Try for other scene object + target = GameObject.Find("RobotHead_TextureFlip"); + } + + if (target) + { + if (absolute) + { + float deltaRotate = amountDegrees - target.transform.eulerAngles.y; + target.transform.Rotate(Vector3.up * deltaRotate); + } + else + { + float deltaRotate = Time.deltaTime * amountDegrees; + if (deltaRotate + target.transform.eulerAngles.y >= resetRotation - rotationMax && + deltaRotate + target.transform.eulerAngles.y <= resetRotation + rotationMax) + { + target.transform.Rotate(Vector3.up * deltaRotate); + } + } + } + } +} diff --git a/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_Control.cs.meta b/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_Control.cs.meta new file mode 100644 index 0000000..6a16ebc --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_Control.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8a6c32d06b48d244b9c65729404d2afe +timeCreated: 1531249571 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_SetCurrentTarget.cs b/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_SetCurrentTarget.cs new file mode 100644 index 0000000..42c8bb9 --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_SetCurrentTarget.cs @@ -0,0 +1,149 @@ +/************************************************************************************ +Filename : LipSyncDemo_SetCurrentTarget.cs +Content : Update LipSync Demo current target +Created : July 11, 2018 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System.Collections; + +public class LipSyncDemo_SetCurrentTarget : MonoBehaviour +{ + public EnableSwitch[] SwitchTargets; + + private int targetSet = 0; + private int maxTarget = 6; + + // Use this for initialization + void Start () + { + // Add a listener to the OVRTouchpad for touch events + OVRTouchpad.AddListener(LocalTouchEventCallback); + + // Initialize the proper target set + targetSet = 0; + SwitchTargets[0].SetActive(0); + SwitchTargets[1].SetActive(0); + } + + // Update is called once per frame + // Logic for LipSync_Demo + void Update () + { + if (Input.GetKeyDown(KeyCode.Alpha1)) + { + targetSet = 0; + SetCurrentTarget(); + } + else if (Input.GetKeyDown(KeyCode.Alpha2)) + { + targetSet = 1; + SetCurrentTarget(); + } + else if (Input.GetKeyDown(KeyCode.Alpha3)) + { + targetSet = 2; + SetCurrentTarget(); + } + else if (Input.GetKeyDown(KeyCode.Alpha4)) + { + targetSet = 3; + SetCurrentTarget(); + } + else if (Input.GetKeyDown(KeyCode.Alpha5)) + { + targetSet = 4; + SetCurrentTarget(); + } + else if (Input.GetKeyDown(KeyCode.Alpha6)) + { + targetSet = 5; + SetCurrentTarget(); + } + + // Close app + if(Input.GetKeyDown (KeyCode.Escape)) + Application.Quit(); + } + + /// + /// Sets the current target. + /// + void SetCurrentTarget() + { + switch(targetSet) + { + case(0): + SwitchTargets[0].SetActive(0); + SwitchTargets[1].SetActive(0); + break; + case(1): + SwitchTargets[0].SetActive(0); + SwitchTargets[1].SetActive(1); + break; + case(2): + SwitchTargets[0].SetActive(1); + SwitchTargets[1].SetActive(2); + break; + case(3): + SwitchTargets[0].SetActive(1); + SwitchTargets[1].SetActive(3); + break; + case(4): + SwitchTargets[0].SetActive(2); + SwitchTargets[1].SetActive(4); + break; + case(5): + SwitchTargets[0].SetActive(2); + SwitchTargets[1].SetActive(5); + break; + } + OVRLipSyncDebugConsole.Clear(); + } + + /// + /// Local touch event callback. + /// + /// Touch event. + void LocalTouchEventCallback(OVRTouchpad.TouchEvent touchEvent) + { + switch(touchEvent) + { + case(OVRTouchpad.TouchEvent.Left): + + targetSet--; + if(targetSet < 0) + targetSet = maxTarget - 1; + + SetCurrentTarget(); + + break; + + case(OVRTouchpad.TouchEvent.Right): + + targetSet++; + if(targetSet >= maxTarget) + targetSet = 0; + + SetCurrentTarget(); + + break; + } + } +} diff --git a/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_SetCurrentTarget.cs.meta b/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_SetCurrentTarget.cs.meta new file mode 100644 index 0000000..d072f31 --- /dev/null +++ b/Assets/Oculus/LipSync/Scenes/Scripts/LipSyncDemo_SetCurrentTarget.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c62f9b5ef85d22f449e72c67c610059d +timeCreated: 1445018007 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts.meta b/Assets/Oculus/LipSync/Scripts.meta new file mode 100644 index 0000000..a5e3744 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a96f219c252e0cc4eb074d5b7bbda9b3 +folderAsset: yes +timeCreated: 1437169844 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/Helpers.meta b/Assets/Oculus/LipSync/Scripts/Helpers.meta new file mode 100644 index 0000000..48b44ff --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/Helpers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 27d84f95a4766db44a26aea09cc67373 +folderAsset: yes +timeCreated: 1444949045 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/Helpers/OVRLipSyncDebugConsole.cs b/Assets/Oculus/LipSync/Scripts/Helpers/OVRLipSyncDebugConsole.cs new file mode 100644 index 0000000..f1bb3b0 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/Helpers/OVRLipSyncDebugConsole.cs @@ -0,0 +1,224 @@ +/************************************************************************************ +Filename : OVRLipSyncDebugConsole.cs +Content : Write to a text string, used by UI.Text +Created : May 22, 2015 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +public class OVRLipSyncDebugConsole : MonoBehaviour +{ + public ArrayList messages = new ArrayList(); + public int maxMessages = 15; // The max number of messages displayed + public Text textMsg; // text string to display + + // Our instance to allow this script to be called without a direct connection. + private static OVRLipSyncDebugConsole s_Instance = null; + + // Clear timeout + private bool clearTimeoutOn = false; + private float clearTimeout = 0.0f; + + /// + /// Gets the instance. + /// + /// The instance. + public static OVRLipSyncDebugConsole instance + { + get + { + if (s_Instance == null) + { + s_Instance = FindObjectOfType(typeof(OVRLipSyncDebugConsole)) as OVRLipSyncDebugConsole; + + if (s_Instance == null) + { + GameObject console = new GameObject(); + console.AddComponent(); + console.name = "OVRLipSyncDebugConsole"; + s_Instance = FindObjectOfType(typeof(OVRLipSyncDebugConsole)) as OVRLipSyncDebugConsole; + } + } + + return s_Instance; + } + } + + /// + /// Awake this instance. + /// + void Awake() + { + s_Instance = this; + Init(); + + } + + /// + /// Update this instance. + /// + void Update() + { + if(clearTimeoutOn == true) + { + clearTimeout -= Time.deltaTime; + if(clearTimeout < 0.0f) + { + Clear(); + clearTimeout = 0.0f; + clearTimeoutOn = false; + } + } + } + + /// + /// Init this instance. + /// + public void Init() + { + if(textMsg == null) + { + Debug.LogWarning("DebugConsole Init WARNING::UI text not set. Will not be able to display anything."); + } + + Clear(); + } + + + //+++++++++ INTERFACE FUNCTIONS ++++++++++++++++++++++++++++++++ + + /// + /// Log the specified message. + /// + /// Message. + public static void Log(string message) + { + OVRLipSyncDebugConsole.instance.AddMessage(message, Color.white); + } + + /// + /// Log the specified message and color. + /// + /// Message. + /// Color. + public static void Log(string message, Color color) + { + OVRLipSyncDebugConsole.instance.AddMessage(message, color); + } + + /// + /// Clear this instance. + /// + public static void Clear() + { + OVRLipSyncDebugConsole.instance.ClearMessages(); + } + + /// + /// Calls clear after a certain time. + /// + /// Time to clear. + public static void ClearTimeout(float timeToClear) + { + OVRLipSyncDebugConsole.instance.SetClearTimeout(timeToClear); + } + + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + /// + /// Adds the message. + /// + /// Message. + /// Color. + public void AddMessage(string message, Color color) + { + messages.Add(message); + + if(textMsg != null) + textMsg.color = color; + + Display(); + } + + /// + /// Clears the messages. + /// + public void ClearMessages() + { + messages.Clear(); + Display(); + } + + /// + /// Sets the clear timeout. + /// + /// Timeout. + public void SetClearTimeout(float timeout) + { + clearTimeout = timeout; + clearTimeoutOn = true; + } + + /// + // Prunes the array to fit within the maxMessages limit + /// + void Prune() + { + int diff; + if (messages.Count > maxMessages) + { + if (messages.Count <= 0) + { + diff = 0; + } + else + { + diff = messages.Count - maxMessages; + } + messages.RemoveRange(0, (int)diff); + } + } + + /// + /// Display this instance. + /// + void Display() + { + if (messages.Count > maxMessages) + { + Prune(); + } + + if(textMsg != null) + { + textMsg.text = ""; // Clear text out + int x = 0; + + while (x < messages.Count) + { + textMsg.text += (string)messages[x]; + textMsg.text +='\n'; + x += 1; + } + } + } +} diff --git a/Assets/Oculus/LipSync/Scripts/Helpers/OVRLipSyncDebugConsole.cs.meta b/Assets/Oculus/LipSync/Scripts/Helpers/OVRLipSyncDebugConsole.cs.meta new file mode 100644 index 0000000..4d0b390 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/Helpers/OVRLipSyncDebugConsole.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c60ad94815c68aa41a786306cd588495 +timeCreated: 1439845885 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/Helpers/OVRNamedArrayAttribute.cs b/Assets/Oculus/LipSync/Scripts/Helpers/OVRNamedArrayAttribute.cs new file mode 100644 index 0000000..3d6605e --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/Helpers/OVRNamedArrayAttribute.cs @@ -0,0 +1,29 @@ +/************************************************************************************ +Filename : OVRNamedArrayAttribute.cs +Content : Adds support for a named array attribute in the editor +Created : May 17th, 2018 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; + +// Adds support for a named array attribute in the editor +public class OVRNamedArrayAttribute : PropertyAttribute { + public readonly string[] names; + public OVRNamedArrayAttribute( string[] names ) { this.names = names; } +} diff --git a/Assets/Oculus/LipSync/Scripts/Helpers/OVRNamedArrayAttribute.cs.meta b/Assets/Oculus/LipSync/Scripts/Helpers/OVRNamedArrayAttribute.cs.meta new file mode 100644 index 0000000..3ba4334 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/Helpers/OVRNamedArrayAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7537accd8e2c6024c860b20e3e7e3424 +timeCreated: 1534993516 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/Helpers/OVRTouchpad.cs b/Assets/Oculus/LipSync/Scripts/Helpers/OVRTouchpad.cs new file mode 100644 index 0000000..715f8aa --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/Helpers/OVRTouchpad.cs @@ -0,0 +1,201 @@ +/************************************************************************************ +Filename : OVRTouchpad.cs +Content : Interface to touchpad +Created : November 13, 2013 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System; + +//------------------------------------------------------------------------------------- +// ***** OVRTouchpad +// +// OVRTouchpad is an interface class to a touchpad. +// +public static class OVRTouchpad +{ + //------------------------- + // Input enums + public enum TouchEvent { SingleTap, DoubleTap, Left, Right, Up, Down }; + + // mouse + static Vector3 moveAmountMouse; + static float minMovMagnitudeMouse = 25.0f; + + public delegate void OVRTouchpadCallback(TouchEvent arg); + static public Delegate touchPadCallbacks = null; + + //Disable the unused variable warning +#pragma warning disable 0414 + + //Ensures that the TouchpadHelper will be created automatically upon start of the game. + static private OVRTouchpadHelper touchpadHelper = + ( new GameObject("OVRTouchpadHelper") ).AddComponent< OVRTouchpadHelper >(); + +#pragma warning restore 0414 + + // We will call this to create the TouchpadHelper class. This will + // add the Touchpad game object into the world and we can call into + // TouchEvent static functions to hook delegates into for touch capture + static public void Create() + { + // Does nothing but call constructor to add game object into scene + } + + // Update + static public void Update() + { + // MOUSE INPUT + + if(Input.GetMouseButtonDown(0)) + { + moveAmountMouse = Input.mousePosition; + } + else if(Input.GetMouseButtonUp(0)) + { + moveAmountMouse -= Input.mousePosition; + HandleInputMouse(ref moveAmountMouse); + } + } + + // OnDisable + static public void OnDisable() + { + } + + // HandleInputMouse + static void HandleInputMouse(ref Vector3 move) + { + if (touchPadCallbacks == null) + { + return; + } + OVRTouchpadCallback callback = touchPadCallbacks as OVRTouchpadCallback; + + if ( move.magnitude < minMovMagnitudeMouse) + { + callback(TouchEvent.SingleTap); + } + else + { + move.Normalize(); + + // Left/Right + if (Mathf.Abs(move.x) > Mathf.Abs(move.y)) + { + if (move.x > 0.0f) + callback(TouchEvent.Left); + else + callback(TouchEvent.Right); + } + // Up/Down + else + { + if (move.y > 0.0f) + callback(TouchEvent.Down); + else + callback(TouchEvent.Up); + } + } + } + + static public void AddListener(OVRTouchpadCallback handler) + { + touchPadCallbacks = (OVRTouchpadCallback)touchPadCallbacks + handler; + } +} + +//------------------------------------------------------------------------------------- +// ***** OVRTouchpadHelper +// +// This singleton class gets created and stays resident in the application. It is used to +// trap the touchpad values, which get broadcast to any listener on the "Touchpad" channel. +// +// This class also demontrates how to make calls from any class that needs these events by +// setting up a listener to "Touchpad" channel. +public sealed class OVRTouchpadHelper : MonoBehaviour +{ + void Awake () + { + DontDestroyOnLoad(gameObject); + } + + void Start () + { + // Add a listener to the OVRTouchpad for testing + OVRTouchpad.AddListener(LocalTouchEventCallback); + } + + + void Update () + { + OVRTouchpad.Update(); + } + + + public void OnDisable() + { + OVRTouchpad.OnDisable(); + } + + // LocalTouchEventCallback + void LocalTouchEventCallback(OVRTouchpad.TouchEvent touchEvent) + { + switch(touchEvent) + { + case(OVRTouchpad.TouchEvent.SingleTap): +// OVRLipSyncDebugConsole.Clear(); +// OVRLipSyncDebugConsole.ClearTimeout(1.5f); +// OVRLipSyncDebugConsole.Log("TP-SINGLE TAP"); + break; + + case(OVRTouchpad.TouchEvent.DoubleTap): +// OVRLipSyncDebugConsole.Clear(); +// OVRLipSyncDebugConsole.ClearTimeout(1.5f); +// OVRLipSyncDebugConsole.Log("TP-DOUBLE TAP"); + break; + + case(OVRTouchpad.TouchEvent.Left): +// OVRLipSyncDebugConsole.Clear(); +// OVRLipSyncDebugConsole.ClearTimeout(1.5f); +// OVRLipSyncDebugConsole.Log("TP-SWIPE LEFT"); + break; + + case(OVRTouchpad.TouchEvent.Right): +// OVRLipSyncDebugConsole.Clear(); +// OVRLipSyncDebugConsole.ClearTimeout(1.5f); +// OVRLipSyncDebugConsole.Log("TP-SWIPE RIGHT"); + break; + + case(OVRTouchpad.TouchEvent.Up): +// OVRLipSyncDebugConsole.Clear(); +// OVRLipSyncDebugConsole.ClearTimeout(1.5f); +// OVRLipSyncDebugConsole.Log("TP-SWIPE UP"); + break; + + case(OVRTouchpad.TouchEvent.Down): +// OVRLipSyncDebugConsole.Clear(); +// OVRLipSyncDebugConsole.ClearTimeout(1.5f); +// OVRLipSyncDebugConsole.Log("TP-SWIPE DOWN"); + break; + } + } + +} + diff --git a/Assets/Oculus/LipSync/Scripts/Helpers/OVRTouchpad.cs.meta b/Assets/Oculus/LipSync/Scripts/Helpers/OVRTouchpad.cs.meta new file mode 100644 index 0000000..da9c75d --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/Helpers/OVRTouchpad.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: edde1cb2a78471f409fce5084e6c720c +timeCreated: 1528830158 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSync.cs b/Assets/Oculus/LipSync/Scripts/OVRLipSync.cs new file mode 100644 index 0000000..54e8373 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSync.cs @@ -0,0 +1,377 @@ +/************************************************************************************ +Filename : OVRLipSync.cs +Content : Interface to Oculus Lip Sync engine +Created : August 4th, 2015 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System; +using System.Runtime.InteropServices; + +//------------------------------------------------------------------------------------- +// ***** OVRLipSync +// +/// +/// OVRLipSync interfaces into the Oculus lip sync engine. This component should be added +/// into the scene once. +/// +/// +public class OVRLipSync : MonoBehaviour +{ + // Error codes that may return from Lip Sync engine + public enum Result + { + Success = 0, + Unknown = -2200, //< An unknown error has occurred + CannotCreateContext = -2201, //< Unable to create a context + InvalidParam = -2202, //< An invalid parameter, e.g. NULL pointer or out of range + BadSampleRate = -2203, //< An unsupported sample rate was declared + MissingDLL = -2204, //< The DLL or shared library could not be found + BadVersion = -2205, //< Mismatched versions between header and libs + UndefinedFunction = -2206 //< An undefined function + }; + + // Audio buffer data type + public enum AudioDataType + { + // Signed 16-bit integer mono audio stream + S16_Mono, + // Signed 16-bit integer stereo audio stream + S16_Stereo, + // Signed 32-bit float mono data type + F32_Mono, + // Signed 32-bit float stereo data type + F32_Stereo + }; + + // Various visemes + public enum Viseme + { + sil, + PP, + FF, + TH, + DD, + kk, + CH, + SS, + nn, + RR, + aa, + E, + ih, + oh, + ou + }; + + public static readonly int VisemeCount = Enum.GetNames(typeof(Viseme)).Length; + + // Enum for sending lip-sync engine specific signals + public enum Signals + { + VisemeOn, + VisemeOff, + VisemeAmount, + VisemeSmoothing, + LaughterAmount + }; + + public static readonly int SignalCount = Enum.GetNames(typeof(Signals)).Length; + + // Enum for provider context to create + public enum ContextProviders + { + Original, + Enhanced, + Enhanced_with_Laughter, + }; + + /// NOTE: Opaque typedef for lip-sync context is an unsigned int (uint) + + /// Current phoneme frame results + [System.Serializable] + public class Frame + { + public void CopyInput(Frame input) + { + frameNumber = input.frameNumber; + frameDelay = input.frameDelay; + input.Visemes.CopyTo(Visemes, 0); + laughterScore = input.laughterScore; + } + + public void Reset() + { + frameNumber = 0; + frameDelay = 0; + Array.Clear(Visemes, 0, VisemeCount); + laughterScore = 0; + } + + public int frameNumber; // count from start of recognition + public int frameDelay; // in ms + public float[] Visemes = new float[VisemeCount]; // Array of floats for viseme frame. Size of Viseme Count, above + public float laughterScore; // probability of laughter presence. + }; + + // * * * * * * * * * * * * * + // Import functions + public const string strOVRLS = "OVRLipSync"; + [DllImport(strOVRLS)] + private static extern int ovrLipSyncDll_Initialize(int samplerate, int buffersize); + [DllImport(strOVRLS)] + private static extern void ovrLipSyncDll_Shutdown(); + [DllImport(strOVRLS)] + private static extern IntPtr ovrLipSyncDll_GetVersion(ref int Major, + ref int Minor, + ref int Patch); + [DllImport(strOVRLS)] + private static extern int ovrLipSyncDll_CreateContextEx(ref uint context, + ContextProviders provider, + int sampleRate, + bool enableAcceleration); + [DllImport(strOVRLS)] + private static extern int ovrLipSyncDll_DestroyContext(uint context); + + + [DllImport(strOVRLS)] + private static extern int ovrLipSyncDll_ResetContext(uint context); + [DllImport(strOVRLS)] + private static extern int ovrLipSyncDll_SendSignal(uint context, + Signals signal, + int arg1, int arg2); + [DllImport(strOVRLS)] + private static extern int ovrLipSyncDll_ProcessFrame( + uint context, + float[] audioBuffer, + ref int frameNumber, + ref int frameDelay, + float[] visemes, + int visemeCount); + + [DllImport(strOVRLS)] + private static extern int ovrLipSyncDll_ProcessFrameInterleaved( + uint context, + float[] audioBuffer, + ref int frameNumber, + ref int frameDelay, + float[] visemes, + int visemeCount); + + [DllImport(strOVRLS)] + private static extern int ovrLipSyncDll_ProcessFrameEx( + uint context, + float[] audioBuffer, + uint bufferSize, + AudioDataType dataType, + ref int frameNumber, + ref int frameDelay, + float[] visemes, + int visemeCount, + ref float laughterScore, + float[] laughterCategories, + int laughterCategoriesLength); + + // * * * * * * * * * * * * * + // Public members + + // * * * * * * * * * * * * * + // Static members + private static Result sInitialized = Result.Unknown; + + // interface through this static member. + public static OVRLipSync sInstance = null; + + + // * * * * * * * * * * * * * + // MonoBehaviour overrides + + /// + /// Awake this instance. + /// + void Awake() + { + // We can only have one instance of OVRLipSync in a scene (use this for local property query) + if (sInstance == null) + { + sInstance = this; + } + else + { + Debug.LogWarning(System.String.Format("OVRLipSync Awake: Only one instance of OVRPLipSync can exist in the scene.")); + return; + } + + if (IsInitialized() != Result.Success) + { + sInitialized = Initialize(); + + if (sInitialized != Result.Success) + { + Debug.LogWarning(System.String.Format + ("OvrLipSync Awake: Failed to init Speech Rec library")); + } + } + + // Important: Use the touchpad mechanism for input, call Create on the OVRTouchpad helper class + OVRTouchpad.Create(); + + } + + /// + /// Raises the destroy event. + /// + void OnDestroy() + { + if (sInstance != this) + { + Debug.LogWarning( + "OVRLipSync OnDestroy: This is not the correct OVRLipSync instance."); + return; + } + + // Do not shut down at this time + // ovrLipSyncDll_Shutdown(); + // sInitialized = (int)Result.Unknown; + } + + + // * * * * * * * * * * * * * + // Public Functions + + public static Result Initialize() + { + int sampleRate; + int bufferSize; + int numbuf; + + // Get the current sample rate + sampleRate = AudioSettings.outputSampleRate; + // Get the current buffer size and number of buffers + AudioSettings.GetDSPBufferSize(out bufferSize, out numbuf); + + String str = System.String.Format + ("OvrLipSync Awake: Queried SampleRate: {0:F0} BufferSize: {1:F0}", sampleRate, bufferSize); + Debug.LogWarning(str); + + sInitialized = (Result)ovrLipSyncDll_Initialize(sampleRate, bufferSize); + return sInitialized; + } + + public static Result Initialize(int sampleRate, int bufferSize) + { + String str = System.String.Format + ("OvrLipSync Awake: Queried SampleRate: {0:F0} BufferSize: {1:F0}", sampleRate, bufferSize); + Debug.LogWarning(str); + + sInitialized = (Result)ovrLipSyncDll_Initialize(sampleRate, bufferSize); + return sInitialized; + } + + public static void Shutdown() + { + ovrLipSyncDll_Shutdown(); + sInitialized = Result.Unknown; + } + + /// + /// Determines if is initialized. + /// + /// true if is initialized; otherwise, false. + public static Result IsInitialized() + { + return sInitialized; + } + + /// + /// Creates a lip-sync context. + /// + /// error code + /// Context. + /// Provider. + /// Enable DSP Acceleration. + public static Result CreateContext( + ref uint context, + ContextProviders provider, + int sampleRate = 0, + bool enableAcceleration = false) + { + if (IsInitialized() != Result.Success && Initialize() != Result.Success) + return Result.CannotCreateContext; + + return (Result)ovrLipSyncDll_CreateContextEx(ref context, provider, sampleRate, enableAcceleration); + } + + /// + /// Destroy a lip-sync context. + /// + /// The context. + /// Context. + public static Result DestroyContext(uint context) + { + if (IsInitialized() != Result.Success) + return Result.Unknown; + + return (Result)ovrLipSyncDll_DestroyContext(context); + } + + /// + /// Resets the context. + /// + /// error code + /// Context. + public static Result ResetContext(uint context) + { + if (IsInitialized() != Result.Success) + return Result.Unknown; + + return (Result)ovrLipSyncDll_ResetContext(context); + } + + /// + /// Sends a signal to the lip-sync engine. + /// + /// error code + /// Context. + /// Signal. + /// Arg1. + /// Arg2. + public static Result SendSignal(uint context, Signals signal, int arg1, int arg2) + { + if (IsInitialized() != Result.Success) + return Result.Unknown; + + return (Result)ovrLipSyncDll_SendSignal(context, signal, arg1, arg2); + } + + public static Result ProcessFrame( + uint context, float[] audioBuffer, Frame frame, AudioDataType dataType = AudioDataType.F32_Stereo) + { + if (IsInitialized() != Result.Success) + return Result.Unknown; + + return (Result)ovrLipSyncDll_ProcessFrameEx(context, audioBuffer, 0, dataType, + ref frame.frameNumber, ref frame.frameDelay, + frame.Visemes, frame.Visemes.Length, + ref frame.laughterScore, + null, 0 + ); + + } +} diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSync.cs.meta b/Assets/Oculus/LipSync/Scripts/OVRLipSync.cs.meta new file mode 100644 index 0000000..8ae02a6 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSync.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 82aa5cb7a870de440baadff9083be41c +timeCreated: 1444935432 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContext.cs b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContext.cs new file mode 100644 index 0000000..8d80c13 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContext.cs @@ -0,0 +1,341 @@ +/************************************************************************************ +Filename : OVRLipSyncContext.cs +Content : Interface to Oculus Lip-Sync engine +Created : August 6th, 2015 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; + +[RequireComponent(typeof(AudioSource))] + +//------------------------------------------------------------------------------------- +// ***** OVRLipSyncContext +// +/// +/// OVRLipSyncContext interfaces into the Oculus phoneme recognizer. +/// This component should be added into the scene once for each Audio Source. +/// +/// +public class OVRLipSyncContext : OVRLipSyncContextBase +{ + // * * * * * * * * * * * * * + // Public members + + + [Tooltip("Allow capturing of keyboard input to control operation.")] + public bool enableKeyboardInput = false; + [Tooltip("Register a mouse/touch callback to control loopback and gain (requires script restart).")] + public bool enableTouchInput = false; + [Tooltip("Play input audio back through audio output.")] + public bool audioLoopback = false; + [Tooltip("Key to toggle audio loopback.")] + public KeyCode loopbackKey = KeyCode.L; + [Tooltip("Show viseme scores in an OVRLipSyncDebugConsole display.")] + public bool showVisemes = false; + [Tooltip("Key to toggle viseme score display.")] + public KeyCode debugVisemesKey = KeyCode.D; + [Tooltip("Skip data from the Audio Source. Use if you intend to pass audio data in manually.")] + public bool skipAudioSource = false; + [Tooltip("Adjust the linear audio gain multiplier before processing lipsync")] + public float gain = 1.0f; + + private bool hasDebugConsole = false; + + public KeyCode debugLaughterKey = KeyCode.H; + public bool showLaughter = false; + public float laughterScore = 0.0f; + + // * * * * * * * * * * * * * + // Private members + + /// + /// Start this instance. + /// Note: make sure to always have a Start function for classes that have editor scripts. + /// + void Start() + { + // Add a listener to the OVRTouchpad for touch events + if (enableTouchInput) + { + OVRTouchpad.AddListener(LocalTouchEventCallback); + } + + // Find console + OVRLipSyncDebugConsole[] consoles = FindObjectsOfType(); + if (consoles.Length > 0) + { + hasDebugConsole = consoles[0]; + } + } + + /// + /// Handle keyboard input + /// + void HandleKeyboard() + { + // Turn loopback on/off + if (Input.GetKeyDown(loopbackKey)) + { + ToggleAudioLoopback(); + } + else if (Input.GetKeyDown(debugVisemesKey)) + { + showVisemes = !showVisemes; + + if (showVisemes) + { + if (hasDebugConsole) + { + Debug.Log("DEBUG SHOW VISEMES: ENABLED"); + } + else + { + Debug.LogWarning("Warning: No OVRLipSyncDebugConsole in the scene!"); + showVisemes = false; + } + } + else + { + if (hasDebugConsole) + { + OVRLipSyncDebugConsole.Clear(); + } + Debug.Log("DEBUG SHOW VISEMES: DISABLED"); + } + } + else if (Input.GetKeyDown(debugLaughterKey)) + { + showLaughter = !showLaughter; + + if (showLaughter) + { + if (hasDebugConsole) + { + Debug.Log("DEBUG SHOW LAUGHTER: ENABLED"); + } + else + { + Debug.LogWarning("Warning: No OVRLipSyncDebugConsole in the scene!"); + showLaughter = false; + } + } + else + { + if (hasDebugConsole) + { + OVRLipSyncDebugConsole.Clear(); + } + Debug.Log("DEBUG SHOW LAUGHTER: DISABLED"); + } + } + else if (Input.GetKeyDown(KeyCode.LeftArrow)) + { + gain -= 1.0f; + if (gain < 1.0f) gain = 1.0f; + + string g = "LINEAR GAIN: "; + g += gain; + + if (hasDebugConsole) + { + OVRLipSyncDebugConsole.Clear(); + OVRLipSyncDebugConsole.Log(g); + OVRLipSyncDebugConsole.ClearTimeout(1.5f); + } + } + else if (Input.GetKeyDown(KeyCode.RightArrow)) + { + gain += 1.0f; + if (gain > 15.0f) + gain = 15.0f; + + string g = "LINEAR GAIN: "; + g += gain; + + if (hasDebugConsole) + { + OVRLipSyncDebugConsole.Clear(); + OVRLipSyncDebugConsole.Log(g); + OVRLipSyncDebugConsole.ClearTimeout(1.5f); + } + } + } + + /// + /// Run processes that need to be updated in our game thread + /// + void Update() + { + if (enableKeyboardInput) + { + HandleKeyboard(); + } + laughterScore = this.Frame.laughterScore; + DebugShowVisemesAndLaughter(); + } + + + /// + /// Pass an audio sample to the lip sync module for computation + /// + /// Data. + /// Channels. + public void ProcessAudioSamples(float[] data, int channels) + { + // Do not process if we are not initialized, or if there is no + // audio source attached to game object + if ((OVRLipSync.IsInitialized() != OVRLipSync.Result.Success) || audioSource == null) + return; + + // Increase the gain of the input + for (int i = 0; i < data.Length; ++i) + data[i] = data[i] * gain; + + // Send data into Phoneme context for processing (if context is not 0) + lock (this) + { + if (Context != 0) + { + + OVRLipSync.Frame frame = this.Frame; + OVRLipSync.ProcessFrame(Context, data, frame); + } + } + + // Turn off output (so that we don't get feedback from mics too close to speakers) + if (!audioLoopback) + { + for (int i = 0; i < data.Length; ++i) + data[i] = data[i] * 0.0f; + } + } + + /// + /// Raises the audio filter read event. + /// + /// Data. + /// Channels. + void OnAudioFilterRead(float[] data, int channels) + { + if (!skipAudioSource) + { + ProcessAudioSamples(data, channels); + } + } + + /// + /// Print the visemes and laughter score to game window + /// + void DebugShowVisemesAndLaughter() + { + if (hasDebugConsole) + { + string seq = ""; + if (showLaughter) + { + seq += "Laughter:"; + int count = (int)(50.0f * this.Frame.laughterScore); + for (int c = 0; c < count; c++) + seq += "*"; + seq += "\n"; + } + if (showVisemes) + { + for (int i = 0; i < this.Frame.Visemes.Length; i++) + { + seq += ((OVRLipSync.Viseme)i).ToString(); + seq += ":"; + + int count = (int)(50.0f * this.Frame.Visemes[i]); + for (int c = 0; c < count; c++) + seq += "*"; + + seq += "\n"; + } + } + + OVRLipSyncDebugConsole.Clear(); + + if (seq != "") + { + OVRLipSyncDebugConsole.Log(seq); + } + } + } + + void ToggleAudioLoopback() + { + audioLoopback = !audioLoopback; + + if (hasDebugConsole) + { + OVRLipSyncDebugConsole.Clear(); + OVRLipSyncDebugConsole.ClearTimeout(1.5f); + + if (audioLoopback) + OVRLipSyncDebugConsole.Log("LOOPBACK MODE: ENABLED"); + else + OVRLipSyncDebugConsole.Log("LOOPBACK MODE: DISABLED"); + } + } + + // LocalTouchEventCallback + void LocalTouchEventCallback(OVRTouchpad.TouchEvent touchEvent) + { + string g = "LINEAR GAIN: "; + + switch (touchEvent) + { + case (OVRTouchpad.TouchEvent.SingleTap): + ToggleAudioLoopback(); + break; + + case (OVRTouchpad.TouchEvent.Up): + gain += 1.0f; + if (gain > 15.0f) + gain = 15.0f; + + g += gain; + + if (hasDebugConsole) + { + OVRLipSyncDebugConsole.Clear(); + OVRLipSyncDebugConsole.Log(g); + OVRLipSyncDebugConsole.ClearTimeout(1.5f); + } + + break; + + case (OVRTouchpad.TouchEvent.Down): + gain -= 1.0f; + if (gain < 1.0f) gain = 1.0f; + + g += gain; + + if (hasDebugConsole) + { + OVRLipSyncDebugConsole.Clear(); + OVRLipSyncDebugConsole.Log(g); + OVRLipSyncDebugConsole.ClearTimeout(1.5f); + } + + break; + } + } +} diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContext.cs.meta b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContext.cs.meta new file mode 100644 index 0000000..485aa09 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContext.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: f43c520a9bad8a3489109c869f454576 +timeCreated: 1438890961 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextBase.cs b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextBase.cs new file mode 100644 index 0000000..0629cec --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextBase.cs @@ -0,0 +1,208 @@ +/************************************************************************************ +Filename : OVRLipSyncContext.cs +Content : Interface to Oculus Lip-Sync engine +Created : August 6th, 2015 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; + + +[RequireComponent(typeof(AudioSource))] + +//------------------------------------------------------------------------------------- +// ***** OVRLipSyncContextBase +// +/// +/// OVRLipSyncContextBase interfaces into the Oculus phoneme recognizer. +/// This component should be added into the scene once for each Audio Source. +/// +/// +public class OVRLipSyncContextBase : MonoBehaviour +{ + // * * * * * * * * * * * * * + // Public members + public AudioSource audioSource = null; + + [Tooltip("Which lip sync provider to use for viseme computation.")] + public OVRLipSync.ContextProviders provider = OVRLipSync.ContextProviders.Enhanced; + [Tooltip("Enable DSP offload on supported Android devices.")] + public bool enableAcceleration = true; + + // * * * * * * * * * * * * * + // Private members + private OVRLipSync.Frame frame = new OVRLipSync.Frame(); + private uint context = 0; // 0 is no context + + private int _smoothing; + public int Smoothing + { + set + { + OVRLipSync.Result result = + OVRLipSync.SendSignal(context, OVRLipSync.Signals.VisemeSmoothing, value, 0); + + if (result != OVRLipSync.Result.Success) + { + if (result == OVRLipSync.Result.InvalidParam) + { + Debug.LogError("OVRLipSyncContextBase.SetSmoothing: A viseme smoothing" + + " parameter is invalid, it should be between 1 and 100!"); + } + else + { + Debug.LogError("OVRLipSyncContextBase.SetSmoothing: An unexpected" + + " error occured."); + } + } + + _smoothing = value; + } + get + { + return _smoothing; + } + } + + public uint Context + { + get + { + return context; + } + } + + protected OVRLipSync.Frame Frame + { + get + { + return frame; + } + } + + /// + /// Awake this instance. + /// + void Awake() + { + // Cache the audio source we are going to be using to pump data to the SR + if (!audioSource) + { + audioSource = GetComponent(); + } + + lock (this) + { + if (context == 0) + { + if (OVRLipSync.CreateContext(ref context, provider, 0, enableAcceleration) + != OVRLipSync.Result.Success) + { + Debug.LogError("OVRLipSyncContextBase.Start ERROR: Could not create" + + " Phoneme context."); + return; + } + } + } + } + + + /// + /// Raises the destroy event. + /// + void OnDestroy() + { + // Create the context that we will feed into the audio buffer + lock (this) + { + if (context != 0) + { + if (OVRLipSync.DestroyContext(context) != OVRLipSync.Result.Success) + { + Debug.LogError("OVRLipSyncContextBase.OnDestroy ERROR: Could not delete" + + " Phoneme context."); + } + } + } + } + + // * * * * * * * * * * * * * + // Public Functions + + /// + /// Gets the current phoneme frame (lock and copy current frame to caller frame) + /// + /// error code + /// In frame. + public OVRLipSync.Frame GetCurrentPhonemeFrame() + { + return frame; + } + + /// + /// Sets a given viseme id blend weight to a given amount + /// + /// Integer viseme ID + /// Integer viseme amount + public void SetVisemeBlend(int viseme, int amount) + { + OVRLipSync.Result result = + OVRLipSync.SendSignal(context, OVRLipSync.Signals.VisemeAmount, viseme, amount); + + if (result != OVRLipSync.Result.Success) + { + if (result == OVRLipSync.Result.InvalidParam) + { + Debug.LogError("OVRLipSyncContextBase.SetVisemeBlend: Viseme ID is invalid."); + } + else + { + Debug.LogError("OVRLipSyncContextBase.SetVisemeBlend: An unexpected" + + " error occured."); + } + } + } + + /// + /// Sets a given viseme id blend weight to a given amount + /// + /// Integer viseme amount + public void SetLaughterBlend(int amount) + { + OVRLipSync.Result result = + OVRLipSync.SendSignal(context, OVRLipSync.Signals.LaughterAmount, amount, 0); + + if (result != OVRLipSync.Result.Success) + { + Debug.LogError("OVRLipSyncContextBase.SetLaughterBlend: An unexpected" + + " error occured."); + } + } + + /// + /// Resets the context. + /// + /// error code + public OVRLipSync.Result ResetContext() + { + // Reset visemes to silence etc. + frame.Reset(); + + return OVRLipSync.ResetContext(context); + } +} diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextBase.cs.meta b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextBase.cs.meta new file mode 100644 index 0000000..517bc00 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c0d528b758a004fcaac677043e8de6ad +timeCreated: 1496772358 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextCanned.cs b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextCanned.cs new file mode 100644 index 0000000..0ee918a --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextCanned.cs @@ -0,0 +1,51 @@ +/************************************************************************************ +Filename : OVRLipSyncContextCanned.cs +Content : Interface to Oculus Lip-Sync engine +Created : August 6th, 2015 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; + + +[RequireComponent(typeof(AudioSource))] + +//------------------------------------------------------------------------------------- +// ***** OVRLipSyncContextCanned +// +/// +/// OVRLipSyncContextCanned drives a canned phoneme sequence based on a pre-generated asset. +/// +/// +public class OVRLipSyncContextCanned : OVRLipSyncContextBase +{ + [Tooltip("Pre-computed viseme sequence asset. Compute from audio in Unity with Tools -> Oculus -> Generate Lip Sync Assets.")] + public OVRLipSyncSequence currentSequence; + + /// + /// Run processes that need to be updated in game thread + /// + void Update() + { + if (audioSource.isPlaying && currentSequence != null) + { + OVRLipSync.Frame currentFrame = currentSequence.GetFrameAtTime(audioSource.time); + this.Frame.CopyInput(currentFrame); + } + } +} diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextCanned.cs.meta b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextCanned.cs.meta new file mode 100644 index 0000000..e39f138 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextCanned.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e073e338e215b4ae9a7fcdf6891e7955 +timeCreated: 1496772358 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextMorphTarget.cs b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextMorphTarget.cs new file mode 100644 index 0000000..624292c --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextMorphTarget.cs @@ -0,0 +1,229 @@ +/************************************************************************************ +Filename : OVRLipSyncContextMorphTarget.cs +Content : This bridges the viseme output to the morph targets +Created : August 7th, 2015 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System.Linq; + +public class OVRLipSyncContextMorphTarget : MonoBehaviour +{ + // PUBLIC + + // Manually assign the skinned mesh renderer to this script + [Tooltip("Skinned Mesh Rendered target to be driven by Oculus Lipsync")] + public SkinnedMeshRenderer skinnedMeshRenderer = null; + + // Set the blendshape index to go to (-1 means there is not one assigned) + [OVRNamedArray(new string[] { "sil", "PP", "FF", "TH", "DD", "kk", "CH", "SS", + "nn", "RR", "aa", "E", "ih", "oh", "ou" })] + [Tooltip("Blendshape index to trigger for each viseme.")] + public int [] visemeToBlendTargets = Enumerable.Range(0, OVRLipSync.VisemeCount).ToArray(); + + // enable/disable sending signals to viseme engine + [Tooltip("Enable using the test keys defined below to manually trigger each viseme.")] + public bool enableVisemeTestKeys = false; + [Tooltip("Test keys used to manually trigger an individual viseme - by " + + "default the QWERTY row of a US keyboard.")] + public KeyCode[] visemeTestKeys = + { + KeyCode.BackQuote, + KeyCode.Tab, + KeyCode.Q, + KeyCode.W, + KeyCode.E, + KeyCode.R, + KeyCode.T, + KeyCode.Y, + KeyCode.U, + KeyCode.I, + KeyCode.O, + KeyCode.P, + KeyCode.LeftBracket, + KeyCode.RightBracket, + KeyCode.Backslash, + }; + + [Tooltip("Test key used to manually trigger laughter and visualise the results")] + public KeyCode laughterKey = KeyCode.CapsLock; + + [Tooltip("Blendshape index to trigger for laughter")] + public int laughterBlendTarget = OVRLipSync.VisemeCount; + + [Range(0.0f, 1.0f)] + [Tooltip("Laughter probability threshold above which the laughter blendshape will be activated")] + public float laughterThreshold = 0.5f; + + [Range(0.0f, 3.0f)] + [Tooltip("Laughter animation linear multiplier, the final output will be clamped to 1.0")] + public float laughterMultiplier = 1.5f; + + // smoothing amount + [Range(1, 100)] + [Tooltip("Smoothing of 1 will yield only the current predicted viseme, 100 will yield an extremely smooth viseme response.")] + public int smoothAmount = 70; + + // PRIVATE + + // Look for a lip-sync Context (should be set at the same level as this component) + private OVRLipSyncContextBase lipsyncContext = null; + + + /// + /// Start this instance. + /// + void Start () + { + // morph target needs to be set manually; possibly other components will need the same + if(skinnedMeshRenderer == null) + { + Debug.LogError("LipSyncContextMorphTarget.Start Error: " + + "Please set the target Skinned Mesh Renderer to be controlled!"); + return; + } + + // make sure there is a phoneme context assigned to this object + lipsyncContext = GetComponent(); + if(lipsyncContext == null) + { + Debug.LogError("LipSyncContextMorphTarget.Start Error: " + + "No OVRLipSyncContext component on this object!"); + } + else + { + // Send smoothing amount to context + lipsyncContext.Smoothing = smoothAmount; + } + } + + /// + /// Update this instance. + /// + void Update () + { + if((lipsyncContext != null) && (skinnedMeshRenderer != null)) + { + // get the current viseme frame + OVRLipSync.Frame frame = lipsyncContext.GetCurrentPhonemeFrame(); + if (frame != null) + { + SetVisemeToMorphTarget(frame); + + SetLaughterToMorphTarget(frame); + } + + // TEST visemes by capturing key inputs and sending a signal + CheckForKeys(); + + // Update smoothing value + if (smoothAmount != lipsyncContext.Smoothing) + { + lipsyncContext.Smoothing = smoothAmount; + } + } + } + + /// + /// Sends the signals. + /// + void CheckForKeys() + { + if (enableVisemeTestKeys) + { + for (int i = 0; i < OVRLipSync.VisemeCount; ++i) + { + CheckVisemeKey(visemeTestKeys[i], i, 100); + } + } + + CheckLaughterKey(); + } + + /// + /// Sets the viseme to morph target. + /// + void SetVisemeToMorphTarget(OVRLipSync.Frame frame) + { + for (int i = 0; i < visemeToBlendTargets.Length; i++) + { + if (visemeToBlendTargets[i] != -1) + { + // Viseme blend weights are in range of 0->1.0, we need to make range 100 + skinnedMeshRenderer.SetBlendShapeWeight( + visemeToBlendTargets[i], + frame.Visemes[i] * 100.0f); + } + } + } + + /// + /// Sets the laughter to morph target. + /// + void SetLaughterToMorphTarget(OVRLipSync.Frame frame) + { + if (laughterBlendTarget != -1) + { + // Laughter score will be raw classifier output in [0,1] + float laughterScore = frame.laughterScore; + + // Threshold then re-map to [0,1] + laughterScore = laughterScore < laughterThreshold ? 0.0f : laughterScore - laughterThreshold; + laughterScore = Mathf.Min(laughterScore * laughterMultiplier, 1.0f); + laughterScore *= 1.0f / laughterThreshold; + + skinnedMeshRenderer.SetBlendShapeWeight( + laughterBlendTarget, + laughterScore * 100.0f); + } + } + + /// + /// Sends the viseme signal. + /// + /// Key. + /// Viseme. + /// Arg1. + void CheckVisemeKey(KeyCode key, int viseme, int amount) + { + if (Input.GetKeyDown(key)) + { + lipsyncContext.SetVisemeBlend(visemeToBlendTargets[viseme], amount); + } + if (Input.GetKeyUp(key)) + { + lipsyncContext.SetVisemeBlend(visemeToBlendTargets[viseme], 0); + } + } + + /// + /// Sends the laughter signal. + /// + void CheckLaughterKey() + { + if (Input.GetKeyDown(laughterKey)) + { + lipsyncContext.SetLaughterBlend(100); + } + if (Input.GetKeyUp(laughterKey)) + { + lipsyncContext.SetLaughterBlend(0); + } + } +} diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextMorphTarget.cs.meta b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextMorphTarget.cs.meta new file mode 100644 index 0000000..3d107f3 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextMorphTarget.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b0b97b38f2f1fd24185315141a6c6a56 +timeCreated: 1438985973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextTextureFlip.cs b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextTextureFlip.cs new file mode 100644 index 0000000..35e6755 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextTextureFlip.cs @@ -0,0 +1,150 @@ +/************************************************************************************ +Filename : OVRLipSyncContextTextureFlip.cs +Content : This bridges the phoneme/viseme output to texture flip targets +Created : August 7th, 2015 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; + +public class OVRLipSyncContextTextureFlip : MonoBehaviour +{ + // PUBLIC + + // Manually assign the material + public Material material = null; + + // Set the textures for each viseme. We should follow the viseme order as specified + // by the Phoneme list + [Tooltip("The texture used for each viseme.")] + [OVRNamedArray(new string[] { "sil", "PP", "FF", "TH", "DD", "kk", "CH", + "SS", "nn", "RR", "aa", "E", "ih", "oh", "ou" })] + public Texture[] Textures = new Texture[OVRLipSync.VisemeCount]; + + // smoothing amount + [Range(1, 100)] + [Tooltip("Smoothing of 1 will yield only the current predicted viseme," + + "100 will yield an extremely smooth viseme response.")] + public int smoothAmount = 70; + + // PRIVATE + + // Look for a Phoneme Context (should be set at the same level as this component) + private OVRLipSyncContextBase lipsyncContext = null; + + // Capture the old viseme frame (we will write back into this one) + private OVRLipSync.Frame oldFrame = new OVRLipSync.Frame(); + + /// + /// Start this instance. + /// + void Start() + { + // make sure there is a phoneme context assigned to this object + lipsyncContext = GetComponent(); + if (lipsyncContext == null) + { + Debug.LogWarning("LipSyncContextTextureFlip.Start WARNING:" + + " No lip sync context component set to object"); + } + else + { + // Send smoothing amount to context + lipsyncContext.Smoothing = smoothAmount; + } + + if (material == null) + { + Debug.LogWarning("LipSyncContextTextureFlip.Start WARNING:" + + " Lip sync context texture flip has no material target to control!"); + } + } + + /// + /// Update this instance. + /// + void Update () + { + if((lipsyncContext != null) && (material != null)) + { + // trap inputs and send signals to phoneme engine for testing purposes + + // get the current viseme frame + OVRLipSync.Frame frame = lipsyncContext.GetCurrentPhonemeFrame(); + if (frame != null) + { + // Perform smoothing here if on original provider + if (lipsyncContext.provider == OVRLipSync.ContextProviders.Original) + { + // Go through the current and old + for (int i = 0; i < frame.Visemes.Length; i++) + { + // Convert 1-100 to old * (0.00 - 0.99) + float smoothing = ((smoothAmount - 1) / 100.0f); + oldFrame.Visemes[i] = + oldFrame.Visemes[i] * smoothing + + frame.Visemes[i] * (1.0f - smoothing); + } + } + else + { + oldFrame.Visemes = frame.Visemes; + } + + SetVisemeToTexture(); + } + } + + // Update smoothing value in context + if (smoothAmount != lipsyncContext.Smoothing) + { + lipsyncContext.Smoothing = smoothAmount; + } + } + + /// + /// Sets the viseme to texture. + /// + void SetVisemeToTexture() + { + // This setting will run through all the Visemes, find the + // one with the greatest amplitude and set it to max value. + // all other visemes will be set to zero. + int gV = -1; + float gA = 0.0f; + + for (int i = 0; i < oldFrame.Visemes.Length; i++) + { + if(oldFrame.Visemes[i] > gA) + { + gV = i; + gA = oldFrame.Visemes[i]; + } + } + + if ((gV != -1) && (gV < Textures.Length)) + { + Texture t = Textures[gV]; + + if(t != null) + { + material.SetTexture("_MainTex", t); + } + } + } +} diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextTextureFlip.cs.meta b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextTextureFlip.cs.meta new file mode 100644 index 0000000..fc7dfb4 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncContextTextureFlip.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bc30a49f30010eb42a8b59ec685eac57 +timeCreated: 1444164852 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs b/Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs new file mode 100644 index 0000000..54d1763 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs @@ -0,0 +1,350 @@ +/************************************************************************************ +Filename : OVRLipSyncMicInput.cs +Content : Interface to microphone input +Created : May 12, 2015 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ + +using System; +using UnityEngine; +using System.Diagnostics; +using Debug = UnityEngine.Debug; +using System.Threading; + +[RequireComponent(typeof(AudioSource))] + +public class OVRLipSyncMicInput : MonoBehaviour +{ + public enum micActivation + { + HoldToSpeak, + PushToSpeak, + ConstantSpeak + } + + // PUBLIC MEMBERS + [Tooltip("Manual specification of Audio Source - " + + "by default will use any attached to the same object.")] + public AudioSource audioSource = null; + + + [Tooltip("Enable a keypress to toggle the microphone device selection GUI.")] + public bool enableMicSelectionGUI = false; + [Tooltip("Key to toggle the microphone selection GUI if enabled.")] + public KeyCode micSelectionGUIKey = KeyCode.M; + + [SerializeField] + [Range(0.0f, 100.0f)] + [Tooltip("Microphone input volume control.")] + private float micInputVolume = 100; + + [SerializeField] + [Tooltip("Requested microphone input frequency")] + private int micFrequency = 48000; + public float MicFrequency + { + get { return micFrequency; } + set { micFrequency = (int)Mathf.Clamp((float)value, 0, 96000); } + } + + [Tooltip("Microphone input control method. Hold To Speak and Push" + + " To Speak are driven with the Mic Activation Key.")] + public micActivation micControl = micActivation.ConstantSpeak; + [Tooltip("Key used to drive Hold To Speak and Push To Speak methods" + + " of microphone input control.")] + public KeyCode micActivationKey = KeyCode.Space; + + [Tooltip("Will contain the string name of the selected microphone device - read only.")] + public string selectedDevice; + + // PRIVATE MEMBERS + private bool micSelected = false; + private int minFreq, maxFreq; + private bool focused = true; + + //---------------------------------------------------- + // MONOBEHAVIOUR OVERRIDE FUNCTIONS + //---------------------------------------------------- + + /// + /// Awake this instance. + /// + void Awake() + { + // First thing to do, cache the unity audio source (can be managed by the + // user if audio source can change) + if (!audioSource) audioSource = GetComponent(); + if (!audioSource) return; // this should never happen + } + + /// + /// Start this instance. + /// + void Start() + { + audioSource.loop = true; // Set the AudioClip to loop + audioSource.mute = false; + + if (Microphone.devices.Length != 0) + { + selectedDevice = Microphone.devices[0].ToString(); + micSelected = true; + GetMicCaps(); + } + } + + /// + /// Update this instance. + /// + void Update() + { + if (!focused) + { + if (Microphone.IsRecording(selectedDevice)) + { + StopMicrophone(); + } + return; + } + + if (!Application.isPlaying) + { + StopMicrophone(); + return; + } + + audioSource.volume = (micInputVolume / 100); + + //Hold To Speak + if (micControl == micActivation.HoldToSpeak) + { + if (Input.GetKey(micActivationKey)) + { + if (!Microphone.IsRecording(selectedDevice)) + { + StartMicrophone(); + } + } + else + { + if (Microphone.IsRecording(selectedDevice)) + { + StopMicrophone(); + } + } + } + + //Push To Talk + if (micControl == micActivation.PushToSpeak) + { + if (Input.GetKeyDown(micActivationKey)) + { + if (Microphone.IsRecording(selectedDevice)) + { + StopMicrophone(); + } + else if (!Microphone.IsRecording(selectedDevice)) + { + StartMicrophone(); + } + } + } + + //Constant Speak + if (micControl == micActivation.ConstantSpeak) + { + if (!Microphone.IsRecording(selectedDevice)) + { + StartMicrophone(); + } + } + + + //Mic Selected = False + if (enableMicSelectionGUI) + { + if (Input.GetKeyDown(micSelectionGUIKey)) + { + micSelected = false; + } + } + } + + + /// + /// Raises the application focus event. + /// + /// If set to true: focused. + void OnApplicationFocus(bool focus) + { + focused = focus; + + if (!focused) + StopMicrophone(); + } + + /// + /// Raises the application pause event. + /// + /// If set to true: paused. + void OnApplicationPause(bool pauseStatus) + { + focused = !pauseStatus; + + if (!focused) + StopMicrophone(); + } + + void OnDisable() + { + StopMicrophone(); + } + + /// + /// Raises the GU event. + /// + void OnGUI() + { + MicDeviceGUI((Screen.width / 2) - 150, (Screen.height / 2) - 75, 300, 50, 10, -300); + } + + //---------------------------------------------------- + // PUBLIC FUNCTIONS + //---------------------------------------------------- + + /// + /// Mics the device GU. + /// + /// Left. + /// Top. + /// Width. + /// Height. + /// Button space top. + /// Button space left. + public void MicDeviceGUI( + float left, + float top, + float width, + float height, + float buttonSpaceTop, + float buttonSpaceLeft) + { + //If there is more than one device, choose one. + if (Microphone.devices.Length >= 1 && enableMicSelectionGUI == true && micSelected == false) + { + for (int i = 0; i < Microphone.devices.Length; ++i) + { + if (GUI.Button(new Rect(left + ((width + buttonSpaceLeft) * i), + top + ((height + buttonSpaceTop) * i), width, height), + Microphone.devices[i].ToString())) + { + StopMicrophone(); + selectedDevice = Microphone.devices[i].ToString(); + micSelected = true; + GetMicCaps(); + StartMicrophone(); + } + } + } + } + + /// + /// Gets the mic caps. + /// + public void GetMicCaps() + { + if (micSelected == false) return; + + //Gets the frequency of the device + Microphone.GetDeviceCaps(selectedDevice, out minFreq, out maxFreq); + + if (minFreq == 0 && maxFreq == 0) + { + Debug.LogWarning("GetMicCaps warning:: min and max frequencies are 0"); + minFreq = 44100; + maxFreq = 44100; + } + + if (micFrequency > maxFreq) + micFrequency = maxFreq; + } + + /// + /// Starts the microphone. + /// + public void StartMicrophone() + { + if (micSelected == false) return; + + //Starts recording + audioSource.clip = Microphone.Start(selectedDevice, true, 1, micFrequency); + + Stopwatch timer = Stopwatch.StartNew(); + + // Wait until the recording has started + while (!(Microphone.GetPosition(selectedDevice) > 0) && timer.Elapsed.TotalMilliseconds < 1000) { + Thread.Sleep(50); + } + + if (Microphone.GetPosition(selectedDevice) <= 0) + { + throw new Exception("Timeout initializing microphone " + selectedDevice); + } + // Play the audio source + audioSource.Play(); + } + + /// + /// Stops the microphone. + /// + public void StopMicrophone() + { + if (micSelected == false) return; + + // Overriden with a clip to play? Don't stop the audio source + if ((audioSource != null) && + (audioSource.clip != null) && + (audioSource.clip.name == "Microphone")) + { + audioSource.Stop(); + } + + // Reset to stop mouth movement + OVRLipSyncContext context = GetComponent(); + context.ResetContext(); + + Microphone.End(selectedDevice); + } + + + //---------------------------------------------------- + // PRIVATE FUNCTIONS + //---------------------------------------------------- + + /// + /// Gets the averaged volume. + /// + /// The averaged volume. + float GetAveragedVolume() + { + // We will use the SR to get average volume + // return OVRSpeechRec.GetAverageVolume(); + return 0.0f; + } +} diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs.meta b/Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs.meta new file mode 100644 index 0000000..bdc244c --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 02d5ed157083b494e85013bad8fd5e12 +timeCreated: 1437430905 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncSequence.cs b/Assets/Oculus/LipSync/Scripts/OVRLipSyncSequence.cs new file mode 100644 index 0000000..a231bc8 --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncSequence.cs @@ -0,0 +1,132 @@ +/************************************************************************************ +Filename : OVRLipSyncSequence.cs +Content : LipSync frames container +Created : May 17th, 2018 +Copyright : Copyright Facebook Technologies, LLC and its affiliates. + All rights reserved. + +Licensed under the Oculus Audio SDK License Version 3.3 (the "License"); +you may not use the Oculus Audio SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/audio-3.3/ + +Unless required by applicable law or agreed to in writing, the Oculus Audio SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System.Collections.Generic; +using System.Threading; + +// Sequence - holds ordered entries for playback +[System.Serializable] +public class OVRLipSyncSequence : ScriptableObject +{ + public List entries = new List(); + public float length; // in seconds + + public OVRLipSync.Frame GetFrameAtTime(float time) + { + OVRLipSync.Frame frame = null; + if (time < length && entries.Count > 0) + { + // todo: we could blend frame output here if we wanted. + float percentComplete = time / length; + frame = entries[(int)(entries.Count * percentComplete)]; + } + return frame; + } + +#if UNITY_EDITOR + + private static readonly int sSampleSize = 1024; + + public static OVRLipSyncSequence CreateSequenceFromAudioClip(AudioClip clip) + { + OVRLipSyncSequence sequence = null; + + if (clip.channels > 2) + { + Debug.LogError(clip.name + + ": Cannot process phonemes from an audio clip with " + + "more than 2 channels"); + return null; + } + + if (clip.loadType != AudioClipLoadType.DecompressOnLoad) + { + Debug.LogError(clip.name + + ": Cannot process phonemes from an audio clip unless " + + "its load type is set to DecompressOnLoad."); + return null; + } + + if (OVRLipSync.Initialize(clip.frequency, sSampleSize) != OVRLipSync.Result.Success) + { + Debug.LogError("Could not create Lip Sync engine."); + return null; + } + + if (clip.loadState != AudioDataLoadState.Loaded) + { + Debug.LogError("Clip is not loaded!"); + return null; + } + + uint context = 0; + OVRLipSync.Result result = + OVRLipSync.CreateContext(ref context, OVRLipSync.ContextProviders.Enhanced); + + if (result != OVRLipSync.Result.Success) + { + Debug.LogError("Could not create Phoneme context. (" + result + ")"); + OVRLipSync.Shutdown(); + return null; + } + + List frames = new List(); + float[] samples = new float[sSampleSize * clip.channels]; + int totalSamples = clip.samples; + for (int x = 0; x < totalSamples; x += sSampleSize) + { + // GetData loops at the end of the read. Prevent that when it happens. + if (x + samples.Length > totalSamples) + { + samples = new float[(totalSamples - x) * clip.channels]; + } + clip.GetData(samples, x); + OVRLipSync.Frame frame = new OVRLipSync.Frame(); + if (clip.channels == 2) + { + // interleaved = stereo data, alternating floats + OVRLipSync.ProcessFrame(context, samples, frame); + } + else + { + // mono + OVRLipSync.ProcessFrame(context, samples, frame, OVRLipSync.AudioDataType.F32_Mono); + } + + frames.Add(frame); + } + + Debug.Log(clip.name + " produced " + frames.Count + + " viseme frames, playback rate is " + (frames.Count / clip.length) + + " fps"); + OVRLipSync.DestroyContext(context); + OVRLipSync.Shutdown(); + + sequence = ScriptableObject.CreateInstance(); + sequence.entries = frames; + sequence.length = clip.length; + + return sequence; + } +#endif +}; diff --git a/Assets/Oculus/LipSync/Scripts/OVRLipSyncSequence.cs.meta b/Assets/Oculus/LipSync/Scripts/OVRLipSyncSequence.cs.meta new file mode 100644 index 0000000..96957dd --- /dev/null +++ b/Assets/Oculus/LipSync/Scripts/OVRLipSyncSequence.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 354250b5dc6a14f49b541724e9dd3c37 +timeCreated: 1496772358 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform.meta b/Assets/Oculus/Platform.meta new file mode 100644 index 0000000..f4d8f0e --- /dev/null +++ b/Assets/Oculus/Platform.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bf86db09b37c77547b5038d6d021e469 +folderAsset: yes +timeCreated: 1538788975 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor.meta b/Assets/Oculus/Platform/Editor.meta new file mode 100644 index 0000000..f2de988 --- /dev/null +++ b/Assets/Oculus/Platform/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7f9ce25317fec85488742d218950bf3d +folderAsset: yes +timeCreated: 1520037586 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor/GUIHelper.cs b/Assets/Oculus/Platform/Editor/GUIHelper.cs new file mode 100644 index 0000000..bdb37f7 --- /dev/null +++ b/Assets/Oculus/Platform/Editor/GUIHelper.cs @@ -0,0 +1,45 @@ +namespace Oculus.Platform +{ + using UnityEditor; + using UnityEngine; + + class GUIHelper { + public delegate void Worker(); + + static void InOut(Worker begin, Worker body, Worker end) { + try { + begin(); + body(); + } finally { + end(); + } + } + + public static void HInset(int pixels, Worker worker) { + InOut( + () => { + GUILayout.BeginHorizontal(); + GUILayout.Space(pixels); + GUILayout.BeginVertical(); + }, + worker, + () => { + GUILayout.EndVertical(); + GUILayout.EndHorizontal(); + } + ); + } + + public delegate T ControlWorker(); + public static T MakeControlWithLabel(GUIContent label, ControlWorker worker) { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label); + + var result = worker(); + + EditorGUILayout.EndHorizontal(); + return result; + } + } + +} diff --git a/Assets/Oculus/Platform/Editor/GUIHelper.cs.meta b/Assets/Oculus/Platform/Editor/GUIHelper.cs.meta new file mode 100644 index 0000000..dc8230c --- /dev/null +++ b/Assets/Oculus/Platform/Editor/GUIHelper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 19bb2c637ba6e9c459e3db36b2ec10c3 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs b/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs new file mode 100644 index 0000000..c13517b --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs @@ -0,0 +1,251 @@ +namespace Oculus.Platform +{ + using System; + using UnityEditor; + using UnityEngine; + + // This classes implements a UI to edit the PlatformSettings class. + // The UI is accessible from a the menu bar via: Oculus Platform -> Edit Settings + [CustomEditor(typeof(PlatformSettings))] + public class OculusPlatformSettingsEditor : Editor + { + private bool isUnityEditorSettingsExpanded; + private bool isBuildSettingsExpanded; + + private WWW getAccessTokenRequest; + + private void OnEnable() + { + isUnityEditorSettingsExpanded = PlatformSettings.UseStandalonePlatform; +#if UNITY_ANDROID + isBuildSettingsExpanded = true; +#else + isBuildSettingsExpanded = false; +#endif + } + + [UnityEditor.MenuItem("Oculus Platform/Edit Settings")] + public static void Edit() + { + UnityEditor.Selection.activeObject = PlatformSettings.Instance; + } + + public override void OnInspectorGUI() + { + // + // Application IDs section + // + GUIContent riftAppIDLabel = new GUIContent("Oculus Rift App Id [?]", "This AppID will be used when building to the Windows target."); + GUIContent gearAppIDLabel = new GUIContent("Gear VR App Id [?]", "This AppID will be used when building to the Android target"); + PlatformSettings.AppID = MakeTextBox(riftAppIDLabel, PlatformSettings.AppID); + PlatformSettings.MobileAppID = MakeTextBox(gearAppIDLabel, PlatformSettings.MobileAppID); + + if (GUILayout.Button("Create / Find your app on https://dashboard.oculus.com")) + { + UnityEngine.Application.OpenURL("https://dashboard.oculus.com/"); + } + +#if UNITY_ANDROID + if (String.IsNullOrEmpty(PlatformSettings.MobileAppID)) + { + EditorGUILayout.HelpBox("Please enter a valid Gear VR App ID.", MessageType.Error); + } + else + { + var msg = "Configured to connect with App ID " + PlatformSettings.MobileAppID; + EditorGUILayout.HelpBox(msg, MessageType.Info); + } +#else + if (String.IsNullOrEmpty(PlatformSettings.AppID)) + { + EditorGUILayout.HelpBox("Please enter a valid Oculus Rift App ID.", MessageType.Error); + } + else + { + var msg = "Configured to connect with App ID " + PlatformSettings.AppID; + EditorGUILayout.HelpBox(msg, MessageType.Info); + } +#endif + EditorGUILayout.Separator(); + + // + // Unity Editor Settings section + // + isUnityEditorSettingsExpanded = EditorGUILayout.Foldout(isUnityEditorSettingsExpanded, "Unity Editor Settings"); + if (isUnityEditorSettingsExpanded) + { + GUIHelper.HInset(6, () => + { + bool HasTestAccessToken = !String.IsNullOrEmpty(StandalonePlatformSettings.OculusPlatformTestUserAccessToken); + if (PlatformSettings.UseStandalonePlatform) + { + if (!HasTestAccessToken && + (String.IsNullOrEmpty(StandalonePlatformSettings.OculusPlatformTestUserEmail) || + String.IsNullOrEmpty(StandalonePlatformSettings.OculusPlatformTestUserPassword))) + { + EditorGUILayout.HelpBox("Please enter a valid user credentials.", MessageType.Error); + } + else + { + var msg = "The Unity editor will use the supplied test user credentials and operate in standalone mode. Some user data will be mocked."; + EditorGUILayout.HelpBox(msg, MessageType.Info); + } + } + else + { + var msg = "The Unity editor will use the user credentials from the Oculus application."; + EditorGUILayout.HelpBox(msg, MessageType.Info); + } + + var useStandaloneLabel = "Use Standalone Platform [?]"; + var useStandaloneHint = "If this is checked your app will use a debug platform with the User info below. " + + "Otherwise your app will connect to the Oculus Platform. This setting only applies to the Unity Editor"; + PlatformSettings.UseStandalonePlatform = + MakeToggle(new GUIContent(useStandaloneLabel, useStandaloneHint), PlatformSettings.UseStandalonePlatform); + + GUI.enabled = PlatformSettings.UseStandalonePlatform; + + if (!HasTestAccessToken) + { + var emailLabel = "Test User Email: "; + var emailHint = "Test users can be configured at " + + "https://dashboard.oculus.com/organizations//testusers " + + "however any valid Oculus account email may be used."; + StandalonePlatformSettings.OculusPlatformTestUserEmail = + MakeTextBox(new GUIContent(emailLabel, emailHint), StandalonePlatformSettings.OculusPlatformTestUserEmail); + + var passwdLabel = "Test User Password: "; + var passwdHint = "Password associated with the email address."; + StandalonePlatformSettings.OculusPlatformTestUserPassword = + MakePasswordBox(new GUIContent(passwdLabel, passwdHint), StandalonePlatformSettings.OculusPlatformTestUserPassword); + + var isLoggingIn = (getAccessTokenRequest != null); + var loginLabel = (!isLoggingIn) ? "Login" : "Logging in..."; + + GUI.enabled = !isLoggingIn; + if (GUILayout.Button(loginLabel)) + { + WWWForm form = new WWWForm(); + var headers = form.headers; + headers.Add("Authorization", "Bearer OC|1141595335965881|"); + form.AddField("email", StandalonePlatformSettings.OculusPlatformTestUserEmail); + form.AddField("password", StandalonePlatformSettings.OculusPlatformTestUserPassword); + + // Start the WWW request to get the access token + getAccessTokenRequest = new WWW("https://graph.oculus.com/login", form.data, headers); + EditorApplication.update += GetAccessToken; + } + GUI.enabled = true; + } + else + { + var loggedInMsg = "Currently using the credentials associated with " + StandalonePlatformSettings.OculusPlatformTestUserEmail; + EditorGUILayout.HelpBox(loggedInMsg, MessageType.Info); + + var logoutLabel = "Clear Credentials"; + + if (GUILayout.Button(logoutLabel)) + { + StandalonePlatformSettings.OculusPlatformTestUserAccessToken = ""; + } + } + + GUI.enabled = true; + }); + } + EditorGUILayout.Separator(); + + // + // Build Settings section + // + isBuildSettingsExpanded = EditorGUILayout.Foldout(isBuildSettingsExpanded, "Build Settings"); + if (isBuildSettingsExpanded) + { + GUIHelper.HInset(6, () => { + if (!PlayerSettings.virtualRealitySupported) + { + EditorGUILayout.HelpBox("VR Support isn't enabled in the Player Settings", MessageType.Warning); + } + else + { + EditorGUILayout.HelpBox("VR Support is enabled", MessageType.Info); + } + + PlayerSettings.virtualRealitySupported = MakeToggle(new GUIContent("Virtual Reality Support"), PlayerSettings.virtualRealitySupported); + PlayerSettings.bundleVersion = MakeTextBox(new GUIContent("Bundle Version"), PlayerSettings.bundleVersion); +#if UNITY_5_3 || UNITY_5_4 || UNITY_5_5 + PlayerSettings.bundleIdentifier = MakeTextBox(new GUIContent("Bundle Identifier"), PlayerSettings.bundleIdentifier); +#else + BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; + PlayerSettings.SetApplicationIdentifier( + buildTargetGroup, + MakeTextBox( + new GUIContent("Bundle Identifier"), + PlayerSettings.GetApplicationIdentifier(buildTargetGroup))); +#endif + }); + } + EditorGUILayout.Separator(); + } + + // Asyncronously fetch the access token with the given credentials + private void GetAccessToken() + { + if (getAccessTokenRequest != null && getAccessTokenRequest.isDone) + { + + // Clear the password + StandalonePlatformSettings.OculusPlatformTestUserPassword = ""; + + if (String.IsNullOrEmpty(getAccessTokenRequest.error)) + { + var Response = JsonUtility.FromJson(getAccessTokenRequest.text); + StandalonePlatformSettings.OculusPlatformTestUserAccessToken = Response.access_token; + } + + GUI.changed = true; + EditorApplication.update -= GetAccessToken; + getAccessTokenRequest = null; + } + } + + private string MakeTextBox(GUIContent label, string variable) + { + return GUIHelper.MakeControlWithLabel(label, () => { + GUI.changed = false; + var result = EditorGUILayout.TextField(variable); + SetDirtyOnGUIChange(); + return result; + }); + } + private string MakePasswordBox(GUIContent label, string variable) + { + return GUIHelper.MakeControlWithLabel(label, () => { + GUI.changed = false; + var result = EditorGUILayout.PasswordField(variable); + SetDirtyOnGUIChange(); + return result; + }); + } + + + private bool MakeToggle(GUIContent label, bool variable) + { + return GUIHelper.MakeControlWithLabel(label, () => { + GUI.changed = false; + var result = EditorGUILayout.Toggle(variable); + SetDirtyOnGUIChange(); + return result; + }); + } + + private void SetDirtyOnGUIChange() + { + if (GUI.changed) + { + EditorUtility.SetDirty(PlatformSettings.Instance); + GUI.changed = false; + } + } + } +} diff --git a/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs.meta b/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs.meta new file mode 100644 index 0000000..2b830ab --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 03780432f190e734dba71a2337880cdb +timeCreated: 1523486796 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs b/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs new file mode 100644 index 0000000..0ab1c46 --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs @@ -0,0 +1,10 @@ +namespace Oculus.Platform +{ + using System; + + [Serializable] + public sealed class OculusStandalonePlatformResponse + { + public string access_token; + } +} diff --git a/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs.meta b/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs.meta new file mode 100644 index 0000000..956ad1a --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 81f0418e197774a4e8d643b56923cb90 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins.meta b/Assets/Oculus/Platform/Plugins.meta new file mode 100644 index 0000000..adaf367 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e72147a7ff1b1834884902389de3ceaa +folderAsset: yes +timeCreated: 1522867156 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/Android32.meta b/Assets/Oculus/Platform/Plugins/Android32.meta new file mode 100644 index 0000000..8e297ae --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/Android32.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 28b08062056958243b2a1fc197e3e492 +folderAsset: yes +timeCreated: 1522867161 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so b/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so new file mode 100644 index 0000000..173e501 Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so differ diff --git a/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so.meta b/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so.meta new file mode 100644 index 0000000..deee739 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 32f3938b889ed054faaaeb5cdf110208 +timeCreated: 1533910673 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX.meta b/Assets/Oculus/Platform/Plugins/MacOSX.meta new file mode 100644 index 0000000..246cf47 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cbf91bf2744b48c4baafc1677856a917 +folderAsset: yes +timeCreated: 1520037586 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle.meta new file mode 100644 index 0000000..7eef38a --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: 5c42a6ff47d7e214ebe1680db3ea6170 +folderAsset: yes +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude Win: 1 + Exclude Win64: 1 + - first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: OSX + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: OSX + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents.meta new file mode 100644 index 0000000..c8635ae --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 86ca9bf6b12d41d4a94a1afe0d75df38 +folderAsset: yes +timeCreated: 1536799186 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist new file mode 100644 index 0000000..e073d60 Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist differ diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist.meta new file mode 100644 index 0000000..0b4571b --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 858b96d02f6d8da4ab608efcad6762a9 +timeCreated: 1533910657 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS.meta new file mode 100644 index 0000000..c4cc96c --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d48b2a6e1c9cc2c4ca14a0ece5ec41c2 +folderAsset: yes +timeCreated: 1536799186 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform new file mode 100644 index 0000000..7752645 Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform differ diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform.meta new file mode 100644 index 0000000..a339eea --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13f451d276fc22e4bb323736aaf3031b +timeCreated: 1533910657 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo new file mode 100644 index 0000000..6492c76 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo @@ -0,0 +1 @@ +APPLWRUN diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo.meta new file mode 100644 index 0000000..82c0428 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 415b641ea40a9ac4d9437f7a77a03a06 +timeCreated: 1533910657 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources.meta new file mode 100644 index 0000000..d0ca223 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 02aaf4ee6ca337e4aa713c195dd164cf +folderAsset: yes +timeCreated: 1536799186 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64.meta new file mode 100644 index 0000000..3501c22 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: be9385f891582c94887c497d6db87428 +folderAsset: yes +timeCreated: 1536799186 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib new file mode 100644 index 0000000..78b3b62 Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib differ diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib.meta new file mode 100644 index 0000000..42b9dd3 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d10cf30c392aad845855ae98b1bdbce8 +timeCreated: 1533910657 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature.meta new file mode 100644 index 0000000..9fbaaab --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 159aa4d8c7a47b04eafa4b8d7b27cd93 +folderAsset: yes +timeCreated: 1536799186 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000..8b76006 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources @@ -0,0 +1,128 @@ + + + + + files + + Resources/darwin-x86_64/liboculus_p2p.dylib + + QLqWrFkjKvpYBdXZLLjN1SP9rdE= + + + files2 + + Resources/darwin-x86_64/liboculus_p2p.dylib + + hash2 + + 0cFSOY1JRQxYH8BXxfQpCWxuZXUcea92du8tjeNOJCg= + + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources.meta new file mode 100644 index 0000000..ce17590 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d7ca10cc65a14d4883ae33260494948 +timeCreated: 1533910657 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts.meta b/Assets/Oculus/Platform/Scripts.meta new file mode 100644 index 0000000..c0d791d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 06dc35cc5b7e7eb4ca0b52e7a0bea56d +folderAsset: yes +timeCreated: 1520037586 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs b/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs new file mode 100644 index 0000000..85f5812 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs @@ -0,0 +1,37 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AbuseReportOptions { + + public AbuseReportOptions() { + Handle = CAPI.ovr_AbuseReportOptions_Create(); + } + + public void SetPreventPeopleChooser(bool value) { + CAPI.ovr_AbuseReportOptions_SetPreventPeopleChooser(Handle, value); + } + + public void SetReportType(AbuseReportType value) { + CAPI.ovr_AbuseReportOptions_SetReportType(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(AbuseReportOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~AbuseReportOptions() { + CAPI.ovr_AbuseReportOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs.meta b/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs.meta new file mode 100644 index 0000000..0832145 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0645da8344fc475469d13a6494437f8e +timeCreated: 1533910660 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/AbuseReportType.cs b/Assets/Oculus/Platform/Scripts/AbuseReportType.cs new file mode 100644 index 0000000..945d18f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AbuseReportType.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum AbuseReportType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("OBJECT")] + Object, + + [Description("USER")] + User, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/AbuseReportType.cs.meta b/Assets/Oculus/Platform/Scripts/AbuseReportType.cs.meta new file mode 100644 index 0000000..6fce596 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AbuseReportType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c69cf9c4f527f9e4a8dc49125afacc7b +timeCreated: 1533910663 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/AchievementType.cs b/Assets/Oculus/Platform/Scripts/AchievementType.cs new file mode 100644 index 0000000..208f2a5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AchievementType.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum AchievementType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("SIMPLE")] + Simple, + + [Description("BITFIELD")] + Bitfield, + + [Description("COUNT")] + Count, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/AchievementType.cs.meta b/Assets/Oculus/Platform/Scripts/AchievementType.cs.meta new file mode 100644 index 0000000..be5b115 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AchievementType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 42d96355ad5dd4b4eab18452dbd62fa7 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs b/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs new file mode 100644 index 0000000..402199a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs @@ -0,0 +1,35 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System.Collections; + using System; + + public class AndroidPlatform + { + public bool Initialize(string appId) + { +#if UNITY_ANDROID + if(String.IsNullOrEmpty(appId)) + { + throw new UnityException("AppID must not be null or empty"); + } + return CAPI.ovr_UnityInitWrapper(appId); +#else + return false; +#endif + } + + public Request AsyncInitialize(string appId) + { +#if UNITY_ANDROID + if(String.IsNullOrEmpty(appId)) + { + throw new UnityException("AppID must not be null or empty"); + } + return new Request(CAPI.ovr_UnityInitWrapperAsynchronous(appId)); +#else + return new Request(0); +#endif + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs.meta b/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs.meta new file mode 100644 index 0000000..0227208 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7293b4a3c3806ad448e3b421baf984b1 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs b/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs new file mode 100644 index 0000000..9531390 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs @@ -0,0 +1,33 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class ApplicationOptions { + + public ApplicationOptions() { + Handle = CAPI.ovr_ApplicationOptions_Create(); + } + + public void SetDeeplinkMessage(string value) { + CAPI.ovr_ApplicationOptions_SetDeeplinkMessage(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(ApplicationOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~ApplicationOptions() { + CAPI.ovr_ApplicationOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs.meta b/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs.meta new file mode 100644 index 0000000..771b501 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d089d8a70f920a5469fca1917d5e5122 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs b/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs new file mode 100644 index 0000000..c9d26ca --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs @@ -0,0 +1,126 @@ +//#define VERBOSE_LOGGING +using UnityEngine; +using System.Collections; +using System; + +using Oculus.Platform; + +public class BufferedAudioStream { + const bool VerboseLogging = false; + AudioSource audio; + + float[] audioBuffer; + int writePos; + + const float bufferLengthSeconds = 0.25f; + const int sampleRate = 48000; + const int bufferSize = (int)(sampleRate * bufferLengthSeconds); + const float playbackDelayTimeSeconds = 0.05f; + + float playbackDelayRemaining; + float remainingBufferTime; + + public BufferedAudioStream(AudioSource audio) { + audioBuffer = new float[bufferSize]; + this.audio = audio; + + audio.loop = true; + audio.clip = AudioClip.Create("", bufferSize, 1, sampleRate, false); + + Stop(); + } + + public void Update () { + + if(remainingBufferTime > 0) + { +#if VERBOSE_LOGGING + Debug.Log(string.Format("current time: {0}, remainingBufferTime: {1}", Time.time, remainingBufferTime)); +#endif + + if (!audio.isPlaying && remainingBufferTime > playbackDelayTimeSeconds) + { + playbackDelayRemaining -= Time.deltaTime; + if (playbackDelayRemaining <= 0) + { +#if VERBOSE_LOGGING + Debug.Log("Starting playback"); +#endif + audio.Play(); + } + } + + if (audio.isPlaying) + { + remainingBufferTime -= Time.deltaTime; + if (remainingBufferTime < 0) + { + remainingBufferTime = 0; + } + } + } + + if (remainingBufferTime <= 0) + { + if (audio.isPlaying) + { + Debug.Log("Buffer empty, stopping " + DateTime.Now); + Stop(); + } + else + { + if (writePos != 0) + { + Debug.LogError("writePos non zero while not playing, how did this happen?"); + } + } + } + } + + void Stop() + { + audio.Stop(); + audio.time = 0; + writePos = 0; + playbackDelayRemaining = playbackDelayTimeSeconds; + } + + public void AddData(float[] samples) { + int remainingWriteLength = samples.Length; + + if(writePos > audioBuffer.Length) { + throw new Exception(); + } + + do { + int writeLength = remainingWriteLength; + int remainingSpace = audioBuffer.Length - writePos; + + if(writeLength > remainingSpace) { + writeLength = remainingSpace; + } + + Array.Copy(samples, 0, audioBuffer, writePos, writeLength); + + remainingWriteLength -= writeLength; + writePos += writeLength; + if(writePos > audioBuffer.Length) { + throw new Exception(); + } + if(writePos == audioBuffer.Length) { + writePos = 0; + } + } while(remainingWriteLength > 0); + +#if VERBOSE_LOGGING + float prev = remainingBufferTime; +#endif + remainingBufferTime += (float)samples.Length / sampleRate; +#if VERBOSE_LOGGING + Debug.Log(string.Format("previous remaining: {0}, new remaining: {1}, added {2} samples", prev, remainingBufferTime, samples.Length)); +#endif + audio.clip.SetData(audioBuffer, 0); + } + + +} diff --git a/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs.meta b/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs.meta new file mode 100644 index 0000000..5869ab2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f6d1f538558efdb42ae724d9bb36e538 +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/CAPI.cs b/Assets/Oculus/Platform/Scripts/CAPI.cs new file mode 100644 index 0000000..1fc68ba --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CAPI.cs @@ -0,0 +1,2930 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +using UnityEngine; +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +#pragma warning disable 414 +namespace Oculus.Platform +{ + public class CAPI + { +#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN + #if UNITY_64 || UNITY_EDITOR_64 + public const string DLL_NAME = "LibOVRPlatform64_1"; + #else + public const string DLL_NAME = "LibOVRPlatform32_1"; + #endif +#elif UNITY_EDITOR || UNITY_EDITOR_64 + public const string DLL_NAME = "ovrplatform"; +#else + public const string DLL_NAME = "ovrplatformloader"; +#endif + + private static UTF8Encoding nativeStringEncoding = new UTF8Encoding(false); + + [StructLayout(LayoutKind.Sequential)] + public struct ovrKeyValuePair { + public ovrKeyValuePair(string key, string value) { + key_ = key; + valueType_ = KeyValuePairType.String; + stringValue_ = value; + + intValue_ = 0; + doubleValue_ = 0.0; + } + + public ovrKeyValuePair(string key, int value) { + key_ = key; + valueType_ = KeyValuePairType.Int; + intValue_ = value; + + stringValue_ = null; + doubleValue_ = 0.0; + } + + public ovrKeyValuePair(string key, double value) { + key_ = key; + valueType_ = KeyValuePairType.Double; + doubleValue_ = value; + + stringValue_ = null; + intValue_ = 0; + } + + public string key_; + KeyValuePairType valueType_; + + public string stringValue_; + public int intValue_; + public double doubleValue_; + }; + + public static IntPtr ArrayOfStructsToIntPtr(Array ar) + { + int totalSize = 0; + for(int i=0; i dict) + { + if(dict == null || dict.Count == 0) + { + return null; + } + + var nativeCustomData = new CAPI.ovrKeyValuePair[dict.Count]; + + int i = 0; + foreach(var item in dict) + { + if(item.Value.GetType() == typeof(int)) + { + nativeCustomData[i] = new CAPI.ovrKeyValuePair(item.Key, (int)item.Value); + } + else if(item.Value.GetType() == typeof(string)) + { + nativeCustomData[i] = new CAPI.ovrKeyValuePair(item.Key, (string)item.Value); + } + else if(item.Value.GetType() == typeof(double)) + { + nativeCustomData[i] = new CAPI.ovrKeyValuePair(item.Key, (double)item.Value); + } + else + { + throw new Exception("Only int, double or string are allowed types in CustomQuery.data"); + } + i++; + } + return nativeCustomData; + } + + public static byte[] IntPtrToByteArray(IntPtr data, ulong size) + { + byte[] outArray = new byte[size]; + Marshal.Copy(data, outArray, 0, (int)size); + return outArray; + } + + [StructLayout(LayoutKind.Sequential)] + public struct ovrMatchmakingCriterion { + public ovrMatchmakingCriterion(string key, MatchmakingCriterionImportance importance) + { + key_ = key; + importance_ = importance; + + parameterArray = IntPtr.Zero; + parameterArrayCount = 0; + } + + public string key_; + public MatchmakingCriterionImportance importance_; + + public IntPtr parameterArray; + public uint parameterArrayCount; + }; + + [StructLayout(LayoutKind.Sequential)] + public struct ovrMatchmakingCustomQueryData { + public IntPtr dataArray; + public uint dataArrayCount; + + public IntPtr criterionArray; + public uint criterionArrayCount; + }; + + public static Dictionary DataStoreFromNative(IntPtr pointer) { + var d = new Dictionary(); + var size = (int)CAPI.ovr_DataStore_GetNumKeys(pointer); + for (var i = 0; i < size; i++) { + string key = CAPI.ovr_DataStore_GetKey(pointer, i); + d[key] = CAPI.ovr_DataStore_GetValue(pointer, key); + } + return d; + } + + public static string StringFromNative(IntPtr pointer) { + if (pointer == IntPtr.Zero) { + return null; + } + var l = GetNativeStringLengthNotIncludingNullTerminator(pointer); + var data = new byte[l]; + Marshal.Copy(pointer, data, 0, l); + return nativeStringEncoding.GetString(data); + } + + public static int GetNativeStringLengthNotIncludingNullTerminator(IntPtr pointer) { + var l = 0; + while (true) { + if (Marshal.ReadByte(pointer, l) == 0) { + return l; + } + l++; + } + } + + public static DateTime DateTimeFromNative(ulong seconds_since_the_one_true_epoch) { + var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0); + return dt.AddSeconds(seconds_since_the_one_true_epoch).ToLocalTime(); + } + + public static byte[] BlobFromNative(uint size, IntPtr pointer) { + var a = new byte[(int)size]; + for (int i = 0; i < (int)size; i++) { + a[i] = Marshal.ReadByte(pointer, i); + } + return a; + } + + public static byte[] FiledataFromNative(uint size, IntPtr pointer) { + var data = new byte[(int)size]; + Marshal.Copy(pointer, data, 0, (int)size); + return data; + } + + public static IntPtr StringToNative(string s) { + if (s == null) { + throw new Exception("StringFromNative: null argument"); + } + var l = nativeStringEncoding.GetByteCount(s); + var data = new byte[l + 1]; + nativeStringEncoding.GetBytes(s, 0, s.Length, data, 0); + var pointer = Marshal.AllocCoTaskMem(l + 1); + Marshal.Copy(data, 0, pointer, l + 1); + return pointer; + } + + // Initialization + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UnityInitWrapper(string appId); + + // Initializes just the global variables to use the Unity api without calling the init logic + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovr_UnityInitGlobals(IntPtr loggingCB); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_UnityInitWrapperAsynchronous(string appId); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UnityInitWrapperStandalone(string accessToken, IntPtr loggingCB); + + [StructLayout(LayoutKind.Sequential)] + public struct OculusInitParams + { + public int sType; + public string email; + public string password; + public UInt64 appId; + public string uriPrefixOverride; + } + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ovr_Platform_InitializeStandaloneOculus(ref OculusInitParams init); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ovr_PlatformInitializeWithAccessToken(UInt64 appId, string accessToken); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UnityInitWrapperWindows(string appId, IntPtr loggingCB); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_UnityInitWrapperWindowsAsynchronous(string appId, IntPtr loggingCB); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_SetDeveloperAccessToken(string accessToken); + + public static string ovr_GetLoggedInUserLocale() { + var result = StringFromNative(ovr_GetLoggedInUserLocale_Native()); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_GetLoggedInUserLocale")] + private static extern IntPtr ovr_GetLoggedInUserLocale_Native(); + + + // Message queue access + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_PopMessage(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_FreeMessage(IntPtr message); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_NetworkingPeer_GetSendPolicy(IntPtr networkingPeer); + + + // VOIP + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Voip_CreateEncoder(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_DestroyEncoder(IntPtr encoder); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Voip_CreateDecoder(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_DestroyDecoder(IntPtr decoder); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipDecoder_Decode(IntPtr obj, byte[] compressedData, ulong compressedSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Microphone_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Microphone_Destroy(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetSystemVoipPassthrough(bool passthrough); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetSystemVoipMicrophoneMuted(VoipMuteState muted); + + // Misc + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UnityResetTestPlatform(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_HTTP_GetWithMessageType(string url, int messageType); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_CrashApplication(); + + public const int VoipFilterBufferSize = 480; + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void FilterCallback([MarshalAs(UnmanagedType.LPArray, SizeConst = VoipFilterBufferSize), In, Out] short[] pcmData, UIntPtr pcmDataLength, int frequency, int numChannels); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetMicrophoneFilterCallback(FilterCallback cb); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetMicrophoneFilterCallbackWithFixedSizeBuffer(FilterCallback cb, UIntPtr bufferSizeElements); + + + // Logging + + public static void LogNewEvent(string eventName, Dictionary values) { + var eventNameNative = StringToNative(eventName); + + var count = values == null ? 0 : values.Count; + + IntPtr[] valuesNative = new IntPtr[count * 2]; + + if (count > 0) { + int i = 0; + foreach(var item in values) { + valuesNative[i * 2 + 0] = StringToNative(item.Key); + valuesNative[i * 2 + 1] = StringToNative(item.Value); + i++; + } + } + + ovr_Log_NewEvent(eventNameNative, valuesNative, (UIntPtr)count); + + Marshal.FreeCoTaskMem(eventNameNative); + foreach (var nativeItem in valuesNative) { + Marshal.FreeCoTaskMem(nativeItem); + } + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Log_NewEvent(IntPtr eventName, IntPtr[] values, UIntPtr length); + + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_ApplicationLifecycle_GetLaunchDetails(); + + public static ulong ovr_HTTP_StartTransfer(string url, ovrKeyValuePair[] headers) { + IntPtr url_native = StringToNative(url); + UIntPtr headers_length = (UIntPtr)headers.Length; + var result = (ovr_HTTP_StartTransfer_Native(url_native, headers, headers_length)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_StartTransfer")] + private static extern ulong ovr_HTTP_StartTransfer_Native(IntPtr url, ovrKeyValuePair[] headers, UIntPtr numItems); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_HTTP_Write(ulong transferId, byte[] bytes, UIntPtr length); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_HTTP_WriteEOM(ulong transferId); + + public static string ovr_Message_GetStringForJavascript(IntPtr message) { + var result = StringFromNative(ovr_Message_GetStringForJavascript_Native(message)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Message_GetStringForJavascript")] + private static extern IntPtr ovr_Message_GetStringForJavascript_Native(IntPtr message); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Net_Accept(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Net_AcceptForCurrentRoom(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Net_Close(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Net_CloseForCurrentRoom(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Net_Connect(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Net_IsConnected(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Net_Ping(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Net_ReadPacket(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Net_SendPacket(UInt64 userID, UIntPtr length, byte[] bytes, SendPolicy policy); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Net_SendPacketToCurrentRoom(UIntPtr length, byte[] bytes, SendPolicy policy); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_Party_PluginGetSharedMemHandle(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_Accept(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipDtxState ovr_Voip_GetIsConnectionUsingDtx(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipBitrate ovr_Voip_GetLocalBitrate(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetOutputBufferMaxSize(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCM(UInt64 senderID, Int16[] outputBuffer, UIntPtr outputBufferNumElements); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCMFloat(UInt64 senderID, float[] outputBuffer, UIntPtr outputBufferNumElements); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCMSize(UInt64 senderID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCMWithTimestamp(UInt64 senderID, Int16[] outputBuffer, UIntPtr outputBufferNumElements, UInt32[] timestamp); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCMWithTimestampFloat(UInt64 senderID, float[] outputBuffer, UIntPtr outputBufferNumElements, UInt32[] timestamp); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipBitrate ovr_Voip_GetRemoteBitrate(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt32 ovr_Voip_GetSyncTimestamp(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern long ovr_Voip_GetSyncTimestampDifference(UInt32 lhs, UInt32 rhs); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipMuteState ovr_Voip_GetSystemVoipMicrophoneMuted(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SystemVoipStatus ovr_Voip_GetSystemVoipStatus(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetMicrophoneMuted(VoipMuteState state); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetNewConnectionOptions(IntPtr voipOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetOutputSampleRate(VoipSampleRate rate); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_Start(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_Stop(UInt64 userID); + + public static ulong ovr_Achievements_AddCount(string name, ulong count) { + IntPtr name_native = StringToNative(name); + var result = (ovr_Achievements_AddCount_Native(name_native, count)); + Marshal.FreeCoTaskMem(name_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Achievements_AddCount")] + private static extern ulong ovr_Achievements_AddCount_Native(IntPtr name, ulong count); + + public static ulong ovr_Achievements_AddFields(string name, string fields) { + IntPtr name_native = StringToNative(name); + IntPtr fields_native = StringToNative(fields); + var result = (ovr_Achievements_AddFields_Native(name_native, fields_native)); + Marshal.FreeCoTaskMem(name_native); + Marshal.FreeCoTaskMem(fields_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Achievements_AddFields")] + private static extern ulong ovr_Achievements_AddFields_Native(IntPtr name, IntPtr fields); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Achievements_GetAllDefinitions(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Achievements_GetAllProgress(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Achievements_GetDefinitionsByName(string[] names, int count); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Achievements_GetProgressByName(string[] names, int count); + + public static ulong ovr_Achievements_Unlock(string name) { + IntPtr name_native = StringToNative(name); + var result = (ovr_Achievements_Unlock_Native(name_native)); + Marshal.FreeCoTaskMem(name_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Achievements_Unlock")] + private static extern ulong ovr_Achievements_Unlock_Native(IntPtr name); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Application_ExecuteCoordinatedLaunch(ulong appID, ulong roomID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Application_GetInstalledApplications(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Application_GetVersion(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Application_LaunchOtherApp(UInt64 appID, IntPtr deeplink_options); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_ApplicationLifecycle_GetRegisteredPIDs(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_ApplicationLifecycle_GetSessionKey(); + + public static ulong ovr_ApplicationLifecycle_RegisterSessionKey(string sessionKey) { + IntPtr sessionKey_native = StringToNative(sessionKey); + var result = (ovr_ApplicationLifecycle_RegisterSessionKey_Native(sessionKey_native)); + Marshal.FreeCoTaskMem(sessionKey_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ApplicationLifecycle_RegisterSessionKey")] + private static extern ulong ovr_ApplicationLifecycle_RegisterSessionKey_Native(IntPtr sessionKey); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_Delete(UInt64 assetFileID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_DeleteById(UInt64 assetFileID); + + public static ulong ovr_AssetFile_DeleteByName(string assetFileName) { + IntPtr assetFileName_native = StringToNative(assetFileName); + var result = (ovr_AssetFile_DeleteByName_Native(assetFileName_native)); + Marshal.FreeCoTaskMem(assetFileName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFile_DeleteByName")] + private static extern ulong ovr_AssetFile_DeleteByName_Native(IntPtr assetFileName); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_Download(UInt64 assetFileID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_DownloadById(UInt64 assetFileID); + + public static ulong ovr_AssetFile_DownloadByName(string assetFileName) { + IntPtr assetFileName_native = StringToNative(assetFileName); + var result = (ovr_AssetFile_DownloadByName_Native(assetFileName_native)); + Marshal.FreeCoTaskMem(assetFileName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFile_DownloadByName")] + private static extern ulong ovr_AssetFile_DownloadByName_Native(IntPtr assetFileName); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_DownloadCancel(UInt64 assetFileID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_DownloadCancelById(UInt64 assetFileID); + + public static ulong ovr_AssetFile_DownloadCancelByName(string assetFileName) { + IntPtr assetFileName_native = StringToNative(assetFileName); + var result = (ovr_AssetFile_DownloadCancelByName_Native(assetFileName_native)); + Marshal.FreeCoTaskMem(assetFileName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFile_DownloadCancelByName")] + private static extern ulong ovr_AssetFile_DownloadCancelByName_Native(IntPtr assetFileName); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_GetList(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_Status(UInt64 assetFileID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_StatusById(UInt64 assetFileID); + + public static ulong ovr_AssetFile_StatusByName(string assetFileName) { + IntPtr assetFileName_native = StringToNative(assetFileName); + var result = (ovr_AssetFile_StatusByName_Native(assetFileName_native)); + Marshal.FreeCoTaskMem(assetFileName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFile_StatusByName")] + private static extern ulong ovr_AssetFile_StatusByName_Native(IntPtr assetFileName); + + public static ulong ovr_Avatar_UpdateMetaData(string avatarMetaData, string imageFilePath) { + IntPtr avatarMetaData_native = StringToNative(avatarMetaData); + IntPtr imageFilePath_native = StringToNative(imageFilePath); + var result = (ovr_Avatar_UpdateMetaData_Native(avatarMetaData_native, imageFilePath_native)); + Marshal.FreeCoTaskMem(avatarMetaData_native); + Marshal.FreeCoTaskMem(imageFilePath_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Avatar_UpdateMetaData")] + private static extern ulong ovr_Avatar_UpdateMetaData_Native(IntPtr avatarMetaData, IntPtr imageFilePath); + + public static ulong ovr_CloudStorage_Delete(string bucket, string key) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + var result = (ovr_CloudStorage_Delete_Native(bucket_native, key_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_Delete")] + private static extern ulong ovr_CloudStorage_Delete_Native(IntPtr bucket, IntPtr key); + + public static ulong ovr_CloudStorage_Load(string bucket, string key) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + var result = (ovr_CloudStorage_Load_Native(bucket_native, key_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_Load")] + private static extern ulong ovr_CloudStorage_Load_Native(IntPtr bucket, IntPtr key); + + public static ulong ovr_CloudStorage_LoadBucketMetadata(string bucket) { + IntPtr bucket_native = StringToNative(bucket); + var result = (ovr_CloudStorage_LoadBucketMetadata_Native(bucket_native)); + Marshal.FreeCoTaskMem(bucket_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_LoadBucketMetadata")] + private static extern ulong ovr_CloudStorage_LoadBucketMetadata_Native(IntPtr bucket); + + public static ulong ovr_CloudStorage_LoadConflictMetadata(string bucket, string key) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + var result = (ovr_CloudStorage_LoadConflictMetadata_Native(bucket_native, key_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_LoadConflictMetadata")] + private static extern ulong ovr_CloudStorage_LoadConflictMetadata_Native(IntPtr bucket, IntPtr key); + + public static ulong ovr_CloudStorage_LoadHandle(string handle) { + IntPtr handle_native = StringToNative(handle); + var result = (ovr_CloudStorage_LoadHandle_Native(handle_native)); + Marshal.FreeCoTaskMem(handle_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_LoadHandle")] + private static extern ulong ovr_CloudStorage_LoadHandle_Native(IntPtr handle); + + public static ulong ovr_CloudStorage_LoadMetadata(string bucket, string key) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + var result = (ovr_CloudStorage_LoadMetadata_Native(bucket_native, key_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_LoadMetadata")] + private static extern ulong ovr_CloudStorage_LoadMetadata_Native(IntPtr bucket, IntPtr key); + + public static ulong ovr_CloudStorage_ResolveKeepLocal(string bucket, string key, string remoteHandle) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + IntPtr remoteHandle_native = StringToNative(remoteHandle); + var result = (ovr_CloudStorage_ResolveKeepLocal_Native(bucket_native, key_native, remoteHandle_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(remoteHandle_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_ResolveKeepLocal")] + private static extern ulong ovr_CloudStorage_ResolveKeepLocal_Native(IntPtr bucket, IntPtr key, IntPtr remoteHandle); + + public static ulong ovr_CloudStorage_ResolveKeepRemote(string bucket, string key, string remoteHandle) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + IntPtr remoteHandle_native = StringToNative(remoteHandle); + var result = (ovr_CloudStorage_ResolveKeepRemote_Native(bucket_native, key_native, remoteHandle_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(remoteHandle_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_ResolveKeepRemote")] + private static extern ulong ovr_CloudStorage_ResolveKeepRemote_Native(IntPtr bucket, IntPtr key, IntPtr remoteHandle); + + public static ulong ovr_CloudStorage_Save(string bucket, string key, byte[] data, uint dataSize, long counter, string extraData) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + IntPtr extraData_native = StringToNative(extraData); + var result = (ovr_CloudStorage_Save_Native(bucket_native, key_native, data, dataSize, counter, extraData_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(extraData_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_Save")] + private static extern ulong ovr_CloudStorage_Save_Native(IntPtr bucket, IntPtr key, byte[] data, uint dataSize, long counter, IntPtr extraData); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Entitlement_GetIsViewerEntitled(); + + public static ulong ovr_GraphAPI_Get(string url) { + IntPtr url_native = StringToNative(url); + var result = (ovr_GraphAPI_Get_Native(url_native)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_GraphAPI_Get")] + private static extern ulong ovr_GraphAPI_Get_Native(IntPtr url); + + public static ulong ovr_GraphAPI_Post(string url) { + IntPtr url_native = StringToNative(url); + var result = (ovr_GraphAPI_Post_Native(url_native)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_GraphAPI_Post")] + private static extern ulong ovr_GraphAPI_Post_Native(IntPtr url); + + public static ulong ovr_HTTP_Get(string url) { + IntPtr url_native = StringToNative(url); + var result = (ovr_HTTP_Get_Native(url_native)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_Get")] + private static extern ulong ovr_HTTP_Get_Native(IntPtr url); + + public static ulong ovr_HTTP_GetToFile(string url, string diskFile) { + IntPtr url_native = StringToNative(url); + IntPtr diskFile_native = StringToNative(diskFile); + var result = (ovr_HTTP_GetToFile_Native(url_native, diskFile_native)); + Marshal.FreeCoTaskMem(url_native); + Marshal.FreeCoTaskMem(diskFile_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_GetToFile")] + private static extern ulong ovr_HTTP_GetToFile_Native(IntPtr url, IntPtr diskFile); + + public static ulong ovr_HTTP_MultiPartPost(string url, string filepath_param_name, string filepath, string access_token, ovrKeyValuePair[] post_params) { + IntPtr url_native = StringToNative(url); + IntPtr filepath_param_name_native = StringToNative(filepath_param_name); + IntPtr filepath_native = StringToNative(filepath); + IntPtr access_token_native = StringToNative(access_token); + UIntPtr post_params_length = (UIntPtr)post_params.Length; + var result = (ovr_HTTP_MultiPartPost_Native(url_native, filepath_param_name_native, filepath_native, access_token_native, post_params, post_params_length)); + Marshal.FreeCoTaskMem(url_native); + Marshal.FreeCoTaskMem(filepath_param_name_native); + Marshal.FreeCoTaskMem(filepath_native); + Marshal.FreeCoTaskMem(access_token_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_MultiPartPost")] + private static extern ulong ovr_HTTP_MultiPartPost_Native(IntPtr url, IntPtr filepath_param_name, IntPtr filepath, IntPtr access_token, ovrKeyValuePair[] post_params, UIntPtr numItems); + + public static ulong ovr_HTTP_Post(string url) { + IntPtr url_native = StringToNative(url); + var result = (ovr_HTTP_Post_Native(url_native)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_Post")] + private static extern ulong ovr_HTTP_Post_Native(IntPtr url); + + public static ulong ovr_IAP_ConsumePurchase(string sku) { + IntPtr sku_native = StringToNative(sku); + var result = (ovr_IAP_ConsumePurchase_Native(sku_native)); + Marshal.FreeCoTaskMem(sku_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_IAP_ConsumePurchase")] + private static extern ulong ovr_IAP_ConsumePurchase_Native(IntPtr sku); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_IAP_GetProductsBySKU(string[] skus, int count); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_IAP_GetViewerPurchases(); + + public static ulong ovr_IAP_LaunchCheckoutFlow(string sku) { + IntPtr sku_native = StringToNative(sku); + var result = (ovr_IAP_LaunchCheckoutFlow_Native(sku_native)); + Marshal.FreeCoTaskMem(sku_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_IAP_LaunchCheckoutFlow")] + private static extern ulong ovr_IAP_LaunchCheckoutFlow_Native(IntPtr sku); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_LanguagePack_GetCurrent(); + + public static ulong ovr_Leaderboard_GetEntries(string leaderboardName, int limit, LeaderboardFilterType filter, LeaderboardStartAt startAt) { + IntPtr leaderboardName_native = StringToNative(leaderboardName); + var result = (ovr_Leaderboard_GetEntries_Native(leaderboardName_native, limit, filter, startAt)); + Marshal.FreeCoTaskMem(leaderboardName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Leaderboard_GetEntries")] + private static extern ulong ovr_Leaderboard_GetEntries_Native(IntPtr leaderboardName, int limit, LeaderboardFilterType filter, LeaderboardStartAt startAt); + + public static ulong ovr_Leaderboard_GetEntriesAfterRank(string leaderboardName, int limit, ulong afterRank) { + IntPtr leaderboardName_native = StringToNative(leaderboardName); + var result = (ovr_Leaderboard_GetEntriesAfterRank_Native(leaderboardName_native, limit, afterRank)); + Marshal.FreeCoTaskMem(leaderboardName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Leaderboard_GetEntriesAfterRank")] + private static extern ulong ovr_Leaderboard_GetEntriesAfterRank_Native(IntPtr leaderboardName, int limit, ulong afterRank); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Leaderboard_GetNextEntries(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Leaderboard_GetPreviousEntries(IntPtr handle); + + public static ulong ovr_Leaderboard_WriteEntry(string leaderboardName, long score, byte[] extraData, uint extraDataLength, bool forceUpdate) { + IntPtr leaderboardName_native = StringToNative(leaderboardName); + var result = (ovr_Leaderboard_WriteEntry_Native(leaderboardName_native, score, extraData, extraDataLength, forceUpdate)); + Marshal.FreeCoTaskMem(leaderboardName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Leaderboard_WriteEntry")] + private static extern ulong ovr_Leaderboard_WriteEntry_Native(IntPtr leaderboardName, long score, byte[] extraData, uint extraDataLength, bool forceUpdate); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_GetStatus(); + + public static ulong ovr_Livestreaming_IsAllowedForApplication(string packageName) { + IntPtr packageName_native = StringToNative(packageName); + var result = (ovr_Livestreaming_IsAllowedForApplication_Native(packageName_native)); + Marshal.FreeCoTaskMem(packageName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Livestreaming_IsAllowedForApplication")] + private static extern ulong ovr_Livestreaming_IsAllowedForApplication_Native(IntPtr packageName); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_PauseStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_ResumeStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_StartPartyStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_StartStream(LivestreamingAudience audience, LivestreamingMicrophoneStatus micStatus); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_StopPartyStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_StopStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_UpdateCommentsOverlayVisibility(bool isVisible); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_UpdateMicStatus(LivestreamingMicrophoneStatus micStatus); + + public static ulong ovr_Matchmaking_Browse(string pool, IntPtr customQueryData) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_Browse_Native(pool_native, customQueryData)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Browse")] + private static extern ulong ovr_Matchmaking_Browse_Native(IntPtr pool, IntPtr customQueryData); + + public static ulong ovr_Matchmaking_Browse2(string pool, IntPtr matchmakingOptions) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_Browse2_Native(pool_native, matchmakingOptions)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Browse2")] + private static extern ulong ovr_Matchmaking_Browse2_Native(IntPtr pool, IntPtr matchmakingOptions); + + public static ulong ovr_Matchmaking_Cancel(string pool, string requestHash) { + IntPtr pool_native = StringToNative(pool); + IntPtr requestHash_native = StringToNative(requestHash); + var result = (ovr_Matchmaking_Cancel_Native(pool_native, requestHash_native)); + Marshal.FreeCoTaskMem(pool_native); + Marshal.FreeCoTaskMem(requestHash_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Cancel")] + private static extern ulong ovr_Matchmaking_Cancel_Native(IntPtr pool, IntPtr requestHash); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_Cancel2(); + + public static ulong ovr_Matchmaking_CreateAndEnqueueRoom(string pool, uint maxUsers, bool subscribeToUpdates, IntPtr customQueryData) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_CreateAndEnqueueRoom_Native(pool_native, maxUsers, subscribeToUpdates, customQueryData)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_CreateAndEnqueueRoom")] + private static extern ulong ovr_Matchmaking_CreateAndEnqueueRoom_Native(IntPtr pool, uint maxUsers, bool subscribeToUpdates, IntPtr customQueryData); + + public static ulong ovr_Matchmaking_CreateAndEnqueueRoom2(string pool, IntPtr matchmakingOptions) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_CreateAndEnqueueRoom2_Native(pool_native, matchmakingOptions)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_CreateAndEnqueueRoom2")] + private static extern ulong ovr_Matchmaking_CreateAndEnqueueRoom2_Native(IntPtr pool, IntPtr matchmakingOptions); + + public static ulong ovr_Matchmaking_CreateRoom(string pool, uint maxUsers, bool subscribeToUpdates) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_CreateRoom_Native(pool_native, maxUsers, subscribeToUpdates)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_CreateRoom")] + private static extern ulong ovr_Matchmaking_CreateRoom_Native(IntPtr pool, uint maxUsers, bool subscribeToUpdates); + + public static ulong ovr_Matchmaking_CreateRoom2(string pool, IntPtr matchmakingOptions) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_CreateRoom2_Native(pool_native, matchmakingOptions)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_CreateRoom2")] + private static extern ulong ovr_Matchmaking_CreateRoom2_Native(IntPtr pool, IntPtr matchmakingOptions); + + public static ulong ovr_Matchmaking_Enqueue(string pool, IntPtr customQueryData) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_Enqueue_Native(pool_native, customQueryData)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Enqueue")] + private static extern ulong ovr_Matchmaking_Enqueue_Native(IntPtr pool, IntPtr customQueryData); + + public static ulong ovr_Matchmaking_Enqueue2(string pool, IntPtr matchmakingOptions) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_Enqueue2_Native(pool_native, matchmakingOptions)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Enqueue2")] + private static extern ulong ovr_Matchmaking_Enqueue2_Native(IntPtr pool, IntPtr matchmakingOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_EnqueueRoom(UInt64 roomID, IntPtr customQueryData); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_EnqueueRoom2(UInt64 roomID, IntPtr matchmakingOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_GetAdminSnapshot(); + + public static ulong ovr_Matchmaking_GetStats(string pool, uint maxLevel, MatchmakingStatApproach approach) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_GetStats_Native(pool_native, maxLevel, approach)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_GetStats")] + private static extern ulong ovr_Matchmaking_GetStats_Native(IntPtr pool, uint maxLevel, MatchmakingStatApproach approach); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_JoinRoom(UInt64 roomID, bool subscribeToUpdates); + + public static ulong ovr_Matchmaking_ReportResultInsecure(UInt64 roomID, ovrKeyValuePair[] data) { + UIntPtr data_length = (UIntPtr)data.Length; + var result = (ovr_Matchmaking_ReportResultInsecure_Native(roomID, data, data_length)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_ReportResultInsecure")] + private static extern ulong ovr_Matchmaking_ReportResultInsecure_Native(UInt64 roomID, ovrKeyValuePair[] data, UIntPtr numItems); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_StartMatch(UInt64 roomID); + + public static ulong ovr_Media_ShareToFacebook(string postTextSuggestion, string filePath, MediaContentType contentType) { + IntPtr postTextSuggestion_native = StringToNative(postTextSuggestion); + IntPtr filePath_native = StringToNative(filePath); + var result = (ovr_Media_ShareToFacebook_Native(postTextSuggestion_native, filePath_native, contentType)); + Marshal.FreeCoTaskMem(postTextSuggestion_native); + Marshal.FreeCoTaskMem(filePath_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Media_ShareToFacebook")] + private static extern ulong ovr_Media_ShareToFacebook_Native(IntPtr postTextSuggestion, IntPtr filePath, MediaContentType contentType); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Notification_GetRoomInvites(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Notification_MarkAsRead(UInt64 notificationID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_GatherInApplication(UInt64 partyID, UInt64 appID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Get(UInt64 partyID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_GetCurrent(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_GetCurrentForUser(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Invite(UInt64 partyID, UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Join(UInt64 partyID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Leave(UInt64 partyID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_CreateAndJoinPrivate(RoomJoinPolicy joinPolicy, uint maxUsers, bool subscribeToUpdates); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_CreateAndJoinPrivate2(RoomJoinPolicy joinPolicy, uint maxUsers, IntPtr roomOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_Get(UInt64 roomID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetCurrent(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetCurrentForUser(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetInvitableUsers(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetInvitableUsers2(IntPtr roomOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetModeratedRooms(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetSocialRooms(UInt64 appID); + + public static ulong ovr_Room_InviteUser(UInt64 roomID, string inviteToken) { + IntPtr inviteToken_native = StringToNative(inviteToken); + var result = (ovr_Room_InviteUser_Native(roomID, inviteToken_native)); + Marshal.FreeCoTaskMem(inviteToken_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_InviteUser")] + private static extern ulong ovr_Room_InviteUser_Native(UInt64 roomID, IntPtr inviteToken); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_Join(UInt64 roomID, bool subscribeToUpdates); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_Join2(UInt64 roomID, IntPtr roomOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_KickUser(UInt64 roomID, UInt64 userID, int kickDurationSeconds); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_LaunchInvitableUserFlow(UInt64 roomID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_Leave(UInt64 roomID); + + public static ulong ovr_Room_SetDescription(UInt64 roomID, string description) { + IntPtr description_native = StringToNative(description); + var result = (ovr_Room_SetDescription_Native(roomID, description_native)); + Marshal.FreeCoTaskMem(description_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_SetDescription")] + private static extern ulong ovr_Room_SetDescription_Native(UInt64 roomID, IntPtr description); + + public static ulong ovr_Room_UpdateDataStore(UInt64 roomID, ovrKeyValuePair[] data) { + UIntPtr data_length = (UIntPtr)data.Length; + var result = (ovr_Room_UpdateDataStore_Native(roomID, data, data_length)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_UpdateDataStore")] + private static extern ulong ovr_Room_UpdateDataStore_Native(UInt64 roomID, ovrKeyValuePair[] data, UIntPtr numItems); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_UpdateMembershipLockStatus(UInt64 roomID, RoomMembershipLockStatus membershipLockStatus); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_UpdateOwner(UInt64 roomID, UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_UpdatePrivateRoomJoinPolicy(UInt64 roomID, RoomJoinPolicy newJoinPolicy); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_SystemPermissions_GetStatus(PermissionType permType); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_SystemPermissions_LaunchDeeplink(PermissionType permType); + + public static ulong ovr_User_CancelRecordingForReportFlow(string recordingUUID) { + IntPtr recordingUUID_native = StringToNative(recordingUUID); + var result = (ovr_User_CancelRecordingForReportFlow_Native(recordingUUID_native)); + Marshal.FreeCoTaskMem(recordingUUID_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_CancelRecordingForReportFlow")] + private static extern ulong ovr_User_CancelRecordingForReportFlow_Native(IntPtr recordingUUID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_Get(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetAccessToken(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLinkedAccounts(IntPtr userOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLoggedInUser(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLoggedInUserFriends(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLoggedInUserFriendsAndRooms(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLoggedInUserRecentlyMetUsersAndRooms(IntPtr userOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetOrgScopedID(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetSdkAccounts(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetUserProof(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchBlockFlow(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchFriendRequestFlow(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchProfile(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchReportFlow(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchUnblockFlow(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_NewEntitledTestUser(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_NewTestUser(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_NewTestUserFriends(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_StartRecordingForReportFlow(); + + public static ulong ovr_User_StopRecordingAndLaunchReportFlow(UInt64 optionalUserID, string optionalRecordingUUID) { + IntPtr optionalRecordingUUID_native = StringToNative(optionalRecordingUUID); + var result = (ovr_User_StopRecordingAndLaunchReportFlow_Native(optionalUserID, optionalRecordingUUID_native)); + Marshal.FreeCoTaskMem(optionalRecordingUUID_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_StopRecordingAndLaunchReportFlow")] + private static extern ulong ovr_User_StopRecordingAndLaunchReportFlow_Native(UInt64 optionalUserID, IntPtr optionalRecordingUUID); + + public static ulong ovr_User_StopRecordingAndLaunchReportFlow2(UInt64 optionalUserID, string optionalRecordingUUID, IntPtr abuseReportOptions) { + IntPtr optionalRecordingUUID_native = StringToNative(optionalRecordingUUID); + var result = (ovr_User_StopRecordingAndLaunchReportFlow2_Native(optionalUserID, optionalRecordingUUID_native, abuseReportOptions)); + Marshal.FreeCoTaskMem(optionalRecordingUUID_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_StopRecordingAndLaunchReportFlow2")] + private static extern ulong ovr_User_StopRecordingAndLaunchReportFlow2_Native(UInt64 optionalUserID, IntPtr optionalRecordingUUID, IntPtr abuseReportOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Voip_SetSystemVoipSuppressed(bool suppressed); + + public static string ovr_AbuseReportRecording_GetRecordingUuid(IntPtr obj) { + var result = StringFromNative(ovr_AbuseReportRecording_GetRecordingUuid_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AbuseReportRecording_GetRecordingUuid")] + private static extern IntPtr ovr_AbuseReportRecording_GetRecordingUuid_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_AchievementDefinition_GetBitfieldLength(IntPtr obj); + + public static string ovr_AchievementDefinition_GetName(IntPtr obj) { + var result = StringFromNative(ovr_AchievementDefinition_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementDefinition_GetName")] + private static extern IntPtr ovr_AchievementDefinition_GetName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AchievementDefinition_GetTarget(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern AchievementType ovr_AchievementDefinition_GetType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AchievementDefinitionArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_AchievementDefinitionArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_AchievementDefinitionArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementDefinitionArray_GetNextUrl")] + private static extern IntPtr ovr_AchievementDefinitionArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_AchievementDefinitionArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AchievementDefinitionArray_HasNextPage(IntPtr obj); + + public static string ovr_AchievementProgress_GetBitfield(IntPtr obj) { + var result = StringFromNative(ovr_AchievementProgress_GetBitfield_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementProgress_GetBitfield")] + private static extern IntPtr ovr_AchievementProgress_GetBitfield_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AchievementProgress_GetCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AchievementProgress_GetIsUnlocked(IntPtr obj); + + public static string ovr_AchievementProgress_GetName(IntPtr obj) { + var result = StringFromNative(ovr_AchievementProgress_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementProgress_GetName")] + private static extern IntPtr ovr_AchievementProgress_GetName_Native(IntPtr obj); + + public static DateTime ovr_AchievementProgress_GetUnlockTime(IntPtr obj) { + var result = DateTimeFromNative(ovr_AchievementProgress_GetUnlockTime_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementProgress_GetUnlockTime")] + private static extern ulong ovr_AchievementProgress_GetUnlockTime_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AchievementProgressArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_AchievementProgressArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_AchievementProgressArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementProgressArray_GetNextUrl")] + private static extern IntPtr ovr_AchievementProgressArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_AchievementProgressArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AchievementProgressArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AchievementUpdate_GetJustUnlocked(IntPtr obj); + + public static string ovr_AchievementUpdate_GetName(IntPtr obj) { + var result = StringFromNative(ovr_AchievementUpdate_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementUpdate_GetName")] + private static extern IntPtr ovr_AchievementUpdate_GetName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Application_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_ApplicationVersion_GetCurrentCode(IntPtr obj); + + public static string ovr_ApplicationVersion_GetCurrentName(IntPtr obj) { + var result = StringFromNative(ovr_ApplicationVersion_GetCurrentName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ApplicationVersion_GetCurrentName")] + private static extern IntPtr ovr_ApplicationVersion_GetCurrentName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_ApplicationVersion_GetLatestCode(IntPtr obj); + + public static string ovr_ApplicationVersion_GetLatestName(IntPtr obj) { + var result = StringFromNative(ovr_ApplicationVersion_GetLatestName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ApplicationVersion_GetLatestName")] + private static extern IntPtr ovr_ApplicationVersion_GetLatestName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetDetails_GetAssetId(IntPtr obj); + + public static string ovr_AssetDetails_GetAssetType(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetAssetType_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetAssetType")] + private static extern IntPtr ovr_AssetDetails_GetAssetType_Native(IntPtr obj); + + public static string ovr_AssetDetails_GetDownloadStatus(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetDownloadStatus_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetDownloadStatus")] + private static extern IntPtr ovr_AssetDetails_GetDownloadStatus_Native(IntPtr obj); + + public static string ovr_AssetDetails_GetFilepath(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetFilepath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetFilepath")] + private static extern IntPtr ovr_AssetDetails_GetFilepath_Native(IntPtr obj); + + public static string ovr_AssetDetails_GetIapStatus(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetIapStatus_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetIapStatus")] + private static extern IntPtr ovr_AssetDetails_GetIapStatus_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AssetDetails_GetLanguage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AssetDetailsArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_AssetDetailsArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDeleteResult_GetAssetFileId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDeleteResult_GetAssetId(IntPtr obj); + + public static string ovr_AssetFileDeleteResult_GetFilepath(IntPtr obj) { + var result = StringFromNative(ovr_AssetFileDeleteResult_GetFilepath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFileDeleteResult_GetFilepath")] + private static extern IntPtr ovr_AssetFileDeleteResult_GetFilepath_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AssetFileDeleteResult_GetSuccess(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadCancelResult_GetAssetFileId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadCancelResult_GetAssetId(IntPtr obj); + + public static string ovr_AssetFileDownloadCancelResult_GetFilepath(IntPtr obj) { + var result = StringFromNative(ovr_AssetFileDownloadCancelResult_GetFilepath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFileDownloadCancelResult_GetFilepath")] + private static extern IntPtr ovr_AssetFileDownloadCancelResult_GetFilepath_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AssetFileDownloadCancelResult_GetSuccess(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadResult_GetAssetId(IntPtr obj); + + public static string ovr_AssetFileDownloadResult_GetFilepath(IntPtr obj) { + var result = StringFromNative(ovr_AssetFileDownloadResult_GetFilepath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFileDownloadResult_GetFilepath")] + private static extern IntPtr ovr_AssetFileDownloadResult_GetFilepath_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadUpdate_GetAssetFileId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadUpdate_GetAssetId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_AssetFileDownloadUpdate_GetBytesTotal(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_AssetFileDownloadUpdate_GetBytesTransferred(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AssetFileDownloadUpdate_GetCompleted(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_CloudStorageConflictMetadata_GetLocal(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_CloudStorageConflictMetadata_GetRemote(IntPtr obj); + + public static string ovr_CloudStorageData_GetBucket(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageData_GetBucket_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageData_GetBucket")] + private static extern IntPtr ovr_CloudStorageData_GetBucket_Native(IntPtr obj); + + public static byte[] ovr_CloudStorageData_GetData(IntPtr obj) { + var result = FiledataFromNative(ovr_CloudStorageData_GetDataSize(obj), ovr_CloudStorageData_GetData_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageData_GetData")] + private static extern IntPtr ovr_CloudStorageData_GetData_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_CloudStorageData_GetDataSize(IntPtr obj); + + public static string ovr_CloudStorageData_GetKey(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageData_GetKey_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageData_GetKey")] + private static extern IntPtr ovr_CloudStorageData_GetKey_Native(IntPtr obj); + + public static string ovr_CloudStorageMetadata_GetBucket(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadata_GetBucket_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadata_GetBucket")] + private static extern IntPtr ovr_CloudStorageMetadata_GetBucket_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern long ovr_CloudStorageMetadata_GetCounter(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_CloudStorageMetadata_GetDataSize(IntPtr obj); + + public static string ovr_CloudStorageMetadata_GetExtraData(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadata_GetExtraData_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadata_GetExtraData")] + private static extern IntPtr ovr_CloudStorageMetadata_GetExtraData_Native(IntPtr obj); + + public static string ovr_CloudStorageMetadata_GetKey(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadata_GetKey_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadata_GetKey")] + private static extern IntPtr ovr_CloudStorageMetadata_GetKey_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_CloudStorageMetadata_GetSaveTime(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern CloudStorageDataStatus ovr_CloudStorageMetadata_GetStatus(IntPtr obj); + + public static string ovr_CloudStorageMetadata_GetVersionHandle(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadata_GetVersionHandle_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadata_GetVersionHandle")] + private static extern IntPtr ovr_CloudStorageMetadata_GetVersionHandle_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_CloudStorageMetadataArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_CloudStorageMetadataArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadataArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadataArray_GetNextUrl")] + private static extern IntPtr ovr_CloudStorageMetadataArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_CloudStorageMetadataArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_CloudStorageMetadataArray_HasNextPage(IntPtr obj); + + public static string ovr_CloudStorageUpdateResponse_GetBucket(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageUpdateResponse_GetBucket_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageUpdateResponse_GetBucket")] + private static extern IntPtr ovr_CloudStorageUpdateResponse_GetBucket_Native(IntPtr obj); + + public static string ovr_CloudStorageUpdateResponse_GetKey(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageUpdateResponse_GetKey_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageUpdateResponse_GetKey")] + private static extern IntPtr ovr_CloudStorageUpdateResponse_GetKey_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern CloudStorageUpdateStatus ovr_CloudStorageUpdateResponse_GetStatus(IntPtr obj); + + public static string ovr_CloudStorageUpdateResponse_GetVersionHandle(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageUpdateResponse_GetVersionHandle_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageUpdateResponse_GetVersionHandle")] + private static extern IntPtr ovr_CloudStorageUpdateResponse_GetVersionHandle_Native(IntPtr obj); + + public static uint ovr_DataStore_Contains(IntPtr obj, string key) { + IntPtr key_native = StringToNative(key); + var result = (ovr_DataStore_Contains_Native(obj, key_native)); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_DataStore_Contains")] + private static extern uint ovr_DataStore_Contains_Native(IntPtr obj, IntPtr key); + + public static string ovr_DataStore_GetKey(IntPtr obj, int index) { + var result = StringFromNative(ovr_DataStore_GetKey_Native(obj, index)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_DataStore_GetKey")] + private static extern IntPtr ovr_DataStore_GetKey_Native(IntPtr obj, int index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_DataStore_GetNumKeys(IntPtr obj); + + public static string ovr_DataStore_GetValue(IntPtr obj, string key) { + IntPtr key_native = StringToNative(key); + var result = StringFromNative(ovr_DataStore_GetValue_Native(obj, key_native)); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_DataStore_GetValue")] + private static extern IntPtr ovr_DataStore_GetValue_Native(IntPtr obj, IntPtr key); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_Error_GetCode(IntPtr obj); + + public static string ovr_Error_GetDisplayableMessage(IntPtr obj) { + var result = StringFromNative(ovr_Error_GetDisplayableMessage_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Error_GetDisplayableMessage")] + private static extern IntPtr ovr_Error_GetDisplayableMessage_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_Error_GetHttpCode(IntPtr obj); + + public static string ovr_Error_GetMessage(IntPtr obj) { + var result = StringFromNative(ovr_Error_GetMessage_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Error_GetMessage")] + private static extern IntPtr ovr_Error_GetMessage_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_HttpTransferUpdate_GetBytes(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_HttpTransferUpdate_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_HttpTransferUpdate_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_HttpTransferUpdate_IsCompleted(IntPtr obj); + + public static string ovr_InstalledApplication_GetApplicationId(IntPtr obj) { + var result = StringFromNative(ovr_InstalledApplication_GetApplicationId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_InstalledApplication_GetApplicationId")] + private static extern IntPtr ovr_InstalledApplication_GetApplicationId_Native(IntPtr obj); + + public static string ovr_InstalledApplication_GetPackageName(IntPtr obj) { + var result = StringFromNative(ovr_InstalledApplication_GetPackageName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_InstalledApplication_GetPackageName")] + private static extern IntPtr ovr_InstalledApplication_GetPackageName_Native(IntPtr obj); + + public static string ovr_InstalledApplication_GetStatus(IntPtr obj) { + var result = StringFromNative(ovr_InstalledApplication_GetStatus_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_InstalledApplication_GetStatus")] + private static extern IntPtr ovr_InstalledApplication_GetStatus_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_InstalledApplication_GetVersionCode(IntPtr obj); + + public static string ovr_InstalledApplication_GetVersionName(IntPtr obj) { + var result = StringFromNative(ovr_InstalledApplication_GetVersionName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_InstalledApplication_GetVersionName")] + private static extern IntPtr ovr_InstalledApplication_GetVersionName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_InstalledApplicationArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_InstalledApplicationArray_GetSize(IntPtr obj); + + public static string ovr_LanguagePackInfo_GetEnglishName(IntPtr obj) { + var result = StringFromNative(ovr_LanguagePackInfo_GetEnglishName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LanguagePackInfo_GetEnglishName")] + private static extern IntPtr ovr_LanguagePackInfo_GetEnglishName_Native(IntPtr obj); + + public static string ovr_LanguagePackInfo_GetNativeName(IntPtr obj) { + var result = StringFromNative(ovr_LanguagePackInfo_GetNativeName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LanguagePackInfo_GetNativeName")] + private static extern IntPtr ovr_LanguagePackInfo_GetNativeName_Native(IntPtr obj); + + public static string ovr_LanguagePackInfo_GetTag(IntPtr obj) { + var result = StringFromNative(ovr_LanguagePackInfo_GetTag_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LanguagePackInfo_GetTag")] + private static extern IntPtr ovr_LanguagePackInfo_GetTag_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchBlockFlowResult_GetDidBlock(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchBlockFlowResult_GetDidCancel(IntPtr obj); + + public static string ovr_LaunchDetails_GetDeeplinkMessage(IntPtr obj) { + var result = StringFromNative(ovr_LaunchDetails_GetDeeplinkMessage_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LaunchDetails_GetDeeplinkMessage")] + private static extern IntPtr ovr_LaunchDetails_GetDeeplinkMessage_Native(IntPtr obj); + + public static string ovr_LaunchDetails_GetLaunchSource(IntPtr obj) { + var result = StringFromNative(ovr_LaunchDetails_GetLaunchSource_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LaunchDetails_GetLaunchSource")] + private static extern IntPtr ovr_LaunchDetails_GetLaunchSource_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern LaunchType ovr_LaunchDetails_GetLaunchType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_LaunchDetails_GetRoomID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_LaunchDetails_GetUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchFriendRequestFlowResult_GetDidCancel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchFriendRequestFlowResult_GetDidSendRequest(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchUnblockFlowResult_GetDidCancel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchUnblockFlowResult_GetDidUnblock(IntPtr obj); + + public static byte[] ovr_LeaderboardEntry_GetExtraData(IntPtr obj) { + var result = BlobFromNative(ovr_LeaderboardEntry_GetExtraDataLength(obj), ovr_LeaderboardEntry_GetExtraData_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LeaderboardEntry_GetExtraData")] + private static extern IntPtr ovr_LeaderboardEntry_GetExtraData_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_LeaderboardEntry_GetExtraDataLength(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_LeaderboardEntry_GetRank(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern long ovr_LeaderboardEntry_GetScore(IntPtr obj); + + public static DateTime ovr_LeaderboardEntry_GetTimestamp(IntPtr obj) { + var result = DateTimeFromNative(ovr_LeaderboardEntry_GetTimestamp_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LeaderboardEntry_GetTimestamp")] + private static extern ulong ovr_LeaderboardEntry_GetTimestamp_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_LeaderboardEntry_GetUser(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_LeaderboardEntryArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_LeaderboardEntryArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_LeaderboardEntryArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LeaderboardEntryArray_GetNextUrl")] + private static extern IntPtr ovr_LeaderboardEntryArray_GetNextUrl_Native(IntPtr obj); + + public static string ovr_LeaderboardEntryArray_GetPreviousUrl(IntPtr obj) { + var result = StringFromNative(ovr_LeaderboardEntryArray_GetPreviousUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LeaderboardEntryArray_GetPreviousUrl")] + private static extern IntPtr ovr_LeaderboardEntryArray_GetPreviousUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_LeaderboardEntryArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_LeaderboardEntryArray_GetTotalCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LeaderboardEntryArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LeaderboardEntryArray_HasPreviousPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LeaderboardUpdateStatus_GetDidUpdate(IntPtr obj); + + public static string ovr_LinkedAccount_GetAccessToken(IntPtr obj) { + var result = StringFromNative(ovr_LinkedAccount_GetAccessToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LinkedAccount_GetAccessToken")] + private static extern IntPtr ovr_LinkedAccount_GetAccessToken_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ServiceProvider ovr_LinkedAccount_GetServiceProvider(IntPtr obj); + + public static string ovr_LinkedAccount_GetUserId(IntPtr obj) { + var result = StringFromNative(ovr_LinkedAccount_GetUserId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LinkedAccount_GetUserId")] + private static extern IntPtr ovr_LinkedAccount_GetUserId_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_LinkedAccountArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_LinkedAccountArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingApplicationStatus_GetStreamingEnabled(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern LivestreamingStartStatus ovr_LivestreamingStartResult_GetStreamingResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingStatus_GetCommentsVisible(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingStatus_GetIsPaused(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingStatus_GetLivestreamingEnabled(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_LivestreamingStatus_GetLivestreamingType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingStatus_GetMicEnabled(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_LivestreamingVideoStats_GetCommentCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_LivestreamingVideoStats_GetReactionCount(IntPtr obj); + + public static string ovr_LivestreamingVideoStats_GetTotalViews(IntPtr obj) { + var result = StringFromNative(ovr_LivestreamingVideoStats_GetTotalViews_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LivestreamingVideoStats_GetTotalViews")] + private static extern IntPtr ovr_LivestreamingVideoStats_GetTotalViews_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingAdminSnapshot_GetCandidates(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingAdminSnapshot_GetMyCurrentThreshold(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_MatchmakingAdminSnapshotCandidate_GetCanMatch(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingAdminSnapshotCandidate_GetMyTotalScore(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingAdminSnapshotCandidate_GetTheirCurrentThreshold(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingAdminSnapshotCandidate_GetTheirTotalScore(IntPtr obj); + + public static string ovr_MatchmakingAdminSnapshotCandidate_GetTraceId(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingAdminSnapshotCandidate_GetTraceId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingAdminSnapshotCandidate_GetTraceId")] + private static extern IntPtr ovr_MatchmakingAdminSnapshotCandidate_GetTraceId_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingAdminSnapshotCandidateArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_MatchmakingAdminSnapshotCandidateArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingBrowseResult_GetEnqueueResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingBrowseResult_GetRooms(IntPtr obj); + + public static string ovr_MatchmakingCandidate_GetEntryHash(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingCandidate_GetEntryHash_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingCandidate_GetEntryHash")] + private static extern IntPtr ovr_MatchmakingCandidate_GetEntryHash_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_MatchmakingCandidate_GetUserId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingCandidateArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_MatchmakingCandidateArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingCandidateArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingCandidateArray_GetNextUrl")] + private static extern IntPtr ovr_MatchmakingCandidateArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_MatchmakingCandidateArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_MatchmakingCandidateArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueueResult_GetAdminSnapshot(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueueResult_GetAverageWait(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueueResult_GetMatchesInLastHourCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueueResult_GetMaxExpectedWait(IntPtr obj); + + public static string ovr_MatchmakingEnqueueResult_GetPool(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingEnqueueResult_GetPool_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingEnqueueResult_GetPool")] + private static extern IntPtr ovr_MatchmakingEnqueueResult_GetPool_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueueResult_GetRecentMatchPercentage(IntPtr obj); + + public static string ovr_MatchmakingEnqueueResult_GetRequestHash(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingEnqueueResult_GetRequestHash_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingEnqueueResult_GetRequestHash")] + private static extern IntPtr ovr_MatchmakingEnqueueResult_GetRequestHash_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueueResultAndRoom_GetMatchmakingEnqueueResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueueResultAndRoom_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_MatchmakingEnqueuedUser_GetAdditionalUserID(IntPtr obj, uint index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueuedUser_GetAdditionalUserIDsSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueuedUser_GetCustomData(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueuedUser_GetUser(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueuedUserArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_MatchmakingEnqueuedUserArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_MatchmakingNotification_GetAddedByUserId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingNotification_GetRoom(IntPtr obj); + + public static string ovr_MatchmakingNotification_GetTraceId(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingNotification_GetTraceId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingNotification_GetTraceId")] + private static extern IntPtr ovr_MatchmakingNotification_GetTraceId_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingRoom_GetPingTime(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingRoom_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_MatchmakingRoom_HasPingTime(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingRoomArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_MatchmakingRoomArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingStats_GetDrawCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingStats_GetLossCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingStats_GetSkillLevel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingStats_GetWinCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAbuseReportRecording(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAchievementDefinitionArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAchievementProgressArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAchievementUpdate(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetApplicationVersion(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetDetails(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetDetailsArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetFileDeleteResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetFileDownloadCancelResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetFileDownloadResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetFileDownloadUpdate(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageConflictMetadata(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageData(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageMetadata(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageMetadataArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageUpdateResponse(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetError(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetHttpTransferUpdate(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetInstalledApplicationArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLaunchBlockFlowResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLaunchFriendRequestFlowResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLaunchUnblockFlowResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLeaderboardEntryArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLeaderboardUpdateStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLinkedAccountArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLivestreamingApplicationStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLivestreamingStartResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLivestreamingStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLivestreamingVideoStats(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingAdminSnapshot(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingBrowseResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingEnqueueResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingEnqueueResultAndRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingRoomArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingStats(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetNativeMessage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetNetworkingPeer(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetOrgScopedID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetParty(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPartyID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPidArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPingResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPlatformInitialize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetProductArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPurchase(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPurchaseArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Message_GetRequestID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetRoomArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetRoomInviteNotification(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetRoomInviteNotificationArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetSdkAccountArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetShareMediaResult(IntPtr obj); + + public static string ovr_Message_GetString(IntPtr obj) { + var result = StringFromNative(ovr_Message_GetString_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Message_GetString")] + private static extern IntPtr ovr_Message_GetString_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetSystemPermission(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetSystemVoipState(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern Message.MessageType ovr_Message_GetType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUser(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUserAndRoomArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUserArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUserProof(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUserReportID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Message_IsError(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_GetNumSamplesAvailable(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_GetOutputBufferMaxSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_GetPCM(IntPtr obj, Int16[] outputBuffer, UIntPtr outputBufferNumElements); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_GetPCMFloat(IntPtr obj, float[] outputBuffer, UIntPtr outputBufferNumElements); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_ReadData(IntPtr obj, float[] outputBuffer, UIntPtr outputBufferSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Microphone_SetAcceptableRecordingDelayHint(IntPtr obj, UIntPtr delayMs); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Microphone_Start(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Microphone_Stop(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_NetworkingPeer_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern PeerConnectionState ovr_NetworkingPeer_GetState(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_OrgScopedID_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Packet_Free(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Packet_GetBytes(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SendPolicy ovr_Packet_GetSendPolicy(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Packet_GetSenderID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Packet_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Party_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Party_GetInvitedUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Party_GetLeader(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Party_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Party_GetUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_PartyID_GetID(IntPtr obj); + + public static string ovr_Pid_GetId(IntPtr obj) { + var result = StringFromNative(ovr_Pid_GetId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Pid_GetId")] + private static extern IntPtr ovr_Pid_GetId_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_PidArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_PidArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_PingResult_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_PingResult_GetPingTimeUsec(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_PingResult_IsTimeout(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern PlatformInitializeResult ovr_PlatformInitialize_GetResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_Price_GetAmountInHundredths(IntPtr obj); + + public static string ovr_Price_GetCurrency(IntPtr obj) { + var result = StringFromNative(ovr_Price_GetCurrency_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Price_GetCurrency")] + private static extern IntPtr ovr_Price_GetCurrency_Native(IntPtr obj); + + public static string ovr_Price_GetFormatted(IntPtr obj) { + var result = StringFromNative(ovr_Price_GetFormatted_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Price_GetFormatted")] + private static extern IntPtr ovr_Price_GetFormatted_Native(IntPtr obj); + + public static string ovr_Product_GetDescription(IntPtr obj) { + var result = StringFromNative(ovr_Product_GetDescription_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Product_GetDescription")] + private static extern IntPtr ovr_Product_GetDescription_Native(IntPtr obj); + + public static string ovr_Product_GetFormattedPrice(IntPtr obj) { + var result = StringFromNative(ovr_Product_GetFormattedPrice_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Product_GetFormattedPrice")] + private static extern IntPtr ovr_Product_GetFormattedPrice_Native(IntPtr obj); + + public static string ovr_Product_GetName(IntPtr obj) { + var result = StringFromNative(ovr_Product_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Product_GetName")] + private static extern IntPtr ovr_Product_GetName_Native(IntPtr obj); + + public static string ovr_Product_GetSKU(IntPtr obj) { + var result = StringFromNative(ovr_Product_GetSKU_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Product_GetSKU")] + private static extern IntPtr ovr_Product_GetSKU_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_ProductArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_ProductArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_ProductArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ProductArray_GetNextUrl")] + private static extern IntPtr ovr_ProductArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_ProductArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_ProductArray_HasNextPage(IntPtr obj); + + public static DateTime ovr_Purchase_GetExpirationTime(IntPtr obj) { + var result = DateTimeFromNative(ovr_Purchase_GetExpirationTime_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Purchase_GetExpirationTime")] + private static extern ulong ovr_Purchase_GetExpirationTime_Native(IntPtr obj); + + public static DateTime ovr_Purchase_GetGrantTime(IntPtr obj) { + var result = DateTimeFromNative(ovr_Purchase_GetGrantTime_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Purchase_GetGrantTime")] + private static extern ulong ovr_Purchase_GetGrantTime_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Purchase_GetPurchaseID(IntPtr obj); + + public static string ovr_Purchase_GetSKU(IntPtr obj) { + var result = StringFromNative(ovr_Purchase_GetSKU_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Purchase_GetSKU")] + private static extern IntPtr ovr_Purchase_GetSKU_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_PurchaseArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_PurchaseArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_PurchaseArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_PurchaseArray_GetNextUrl")] + private static extern IntPtr ovr_PurchaseArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_PurchaseArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_PurchaseArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Room_GetApplicationID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetDataStore(IntPtr obj); + + public static string ovr_Room_GetDescription(IntPtr obj) { + var result = StringFromNative(ovr_Room_GetDescription_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_GetDescription")] + private static extern IntPtr ovr_Room_GetDescription_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Room_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetInvitedUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Room_GetIsMembershipLocked(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern RoomJoinPolicy ovr_Room_GetJoinPolicy(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern RoomJoinability ovr_Room_GetJoinability(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetMatchedUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_Room_GetMaxUsers(IntPtr obj); + + public static string ovr_Room_GetName(IntPtr obj) { + var result = StringFromNative(ovr_Room_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_GetName")] + private static extern IntPtr ovr_Room_GetName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetOwner(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern RoomType ovr_Room_GetType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_Room_GetVersion(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_RoomArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_RoomArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_RoomArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RoomArray_GetNextUrl")] + private static extern IntPtr ovr_RoomArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_RoomArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_RoomArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_RoomInviteNotification_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_RoomInviteNotification_GetRoomID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_RoomInviteNotification_GetSenderID(IntPtr obj); + + public static DateTime ovr_RoomInviteNotification_GetSentTime(IntPtr obj) { + var result = DateTimeFromNative(ovr_RoomInviteNotification_GetSentTime_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RoomInviteNotification_GetSentTime")] + private static extern ulong ovr_RoomInviteNotification_GetSentTime_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_RoomInviteNotificationArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_RoomInviteNotificationArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_RoomInviteNotificationArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RoomInviteNotificationArray_GetNextUrl")] + private static extern IntPtr ovr_RoomInviteNotificationArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_RoomInviteNotificationArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_RoomInviteNotificationArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SdkAccountType ovr_SdkAccount_GetAccountType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_SdkAccount_GetUserId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_SdkAccountArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_SdkAccountArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ShareMediaStatus ovr_ShareMediaResult_GetStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_SystemPermission_GetHasPermission(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern PermissionGrantStatus ovr_SystemPermission_GetPermissionGrantStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipMuteState ovr_SystemVoipState_GetMicrophoneMuted(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SystemVoipStatus ovr_SystemVoipState_GetStatus(IntPtr obj); + + public static string ovr_TestUser_GetAccessToken(IntPtr obj) { + var result = StringFromNative(ovr_TestUser_GetAccessToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_TestUser_GetAccessToken")] + private static extern IntPtr ovr_TestUser_GetAccessToken_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TestUser_GetAppAccessArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TestUser_GetFbAppAccessArray(IntPtr obj); + + public static string ovr_TestUser_GetFriendAccessToken(IntPtr obj) { + var result = StringFromNative(ovr_TestUser_GetFriendAccessToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_TestUser_GetFriendAccessToken")] + private static extern IntPtr ovr_TestUser_GetFriendAccessToken_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TestUser_GetFriendAppAccessArray(IntPtr obj); + + public static string ovr_TestUser_GetUserAlias(IntPtr obj) { + var result = StringFromNative(ovr_TestUser_GetUserAlias_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_TestUser_GetUserAlias")] + private static extern IntPtr ovr_TestUser_GetUserAlias_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_TestUser_GetUserId(IntPtr obj); + + public static string ovr_TestUserAppAccess_GetAccessToken(IntPtr obj) { + var result = StringFromNative(ovr_TestUserAppAccess_GetAccessToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_TestUserAppAccess_GetAccessToken")] + private static extern IntPtr ovr_TestUserAppAccess_GetAccessToken_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_TestUserAppAccess_GetAppId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_TestUserAppAccess_GetUserId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TestUserAppAccessArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_TestUserAppAccessArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_User_GetID(IntPtr obj); + + public static string ovr_User_GetImageUrl(IntPtr obj) { + var result = StringFromNative(ovr_User_GetImageUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetImageUrl")] + private static extern IntPtr ovr_User_GetImageUrl_Native(IntPtr obj); + + public static string ovr_User_GetInviteToken(IntPtr obj) { + var result = StringFromNative(ovr_User_GetInviteToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetInviteToken")] + private static extern IntPtr ovr_User_GetInviteToken_Native(IntPtr obj); + + public static string ovr_User_GetOculusID(IntPtr obj) { + var result = StringFromNative(ovr_User_GetOculusID_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetOculusID")] + private static extern IntPtr ovr_User_GetOculusID_Native(IntPtr obj); + + public static string ovr_User_GetPresence(IntPtr obj) { + var result = StringFromNative(ovr_User_GetPresence_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetPresence")] + private static extern IntPtr ovr_User_GetPresence_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UserPresenceStatus ovr_User_GetPresenceStatus(IntPtr obj); + + public static string ovr_User_GetSmallImageUrl(IntPtr obj) { + var result = StringFromNative(ovr_User_GetSmallImageUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetSmallImageUrl")] + private static extern IntPtr ovr_User_GetSmallImageUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserAndRoom_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserAndRoom_GetUser(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserAndRoomArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_UserAndRoomArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_UserAndRoomArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_UserAndRoomArray_GetNextUrl")] + private static extern IntPtr ovr_UserAndRoomArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_UserAndRoomArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UserAndRoomArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_UserArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_UserArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_UserArray_GetNextUrl")] + private static extern IntPtr ovr_UserArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_UserArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UserArray_HasNextPage(IntPtr obj); + + public static string ovr_UserProof_GetNonce(IntPtr obj) { + var result = StringFromNative(ovr_UserProof_GetNonce_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_UserProof_GetNonce")] + private static extern IntPtr ovr_UserProof_GetNonce_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UserReportID_GetDidCancel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_UserReportID_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipDecoder_Decode(IntPtr obj, byte[] compressedData, UIntPtr compressedSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_VoipDecoder_GetDecodedPCM(IntPtr obj, float[] outputBuffer, UIntPtr outputBufferSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipEncoder_AddPCM(IntPtr obj, float[] inputData, uint inputSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_VoipEncoder_GetCompressedData(IntPtr obj, byte[] outputBuffer, UIntPtr intputSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_VoipEncoder_GetCompressedDataSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AbuseReportOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_AbuseReportOptions_Destroy(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_AbuseReportOptions_SetPreventPeopleChooser(IntPtr handle, bool value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_AbuseReportOptions_SetReportType(IntPtr handle, AbuseReportType value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_ApplicationOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_ApplicationOptions_Destroy(IntPtr handle); + + public static void ovr_ApplicationOptions_SetDeeplinkMessage(IntPtr handle, string value) { + IntPtr value_native = StringToNative(value); + ovr_ApplicationOptions_SetDeeplinkMessage_Native(handle, value_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ApplicationOptions_SetDeeplinkMessage")] + private static extern void ovr_ApplicationOptions_SetDeeplinkMessage_Native(IntPtr handle, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_Destroy(IntPtr handle); + + public static void ovr_MatchmakingOptions_SetCreateRoomDataStoreString(IntPtr handle, string key, string value) { + IntPtr key_native = StringToNative(key); + IntPtr value_native = StringToNative(value); + ovr_MatchmakingOptions_SetCreateRoomDataStoreString_Native(handle, key_native, value_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetCreateRoomDataStoreString")] + private static extern void ovr_MatchmakingOptions_SetCreateRoomDataStoreString_Native(IntPtr handle, IntPtr key, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_ClearCreateRoomDataStore(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_SetCreateRoomJoinPolicy(IntPtr handle, RoomJoinPolicy value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_SetCreateRoomMaxUsers(IntPtr handle, uint value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_AddEnqueueAdditionalUser(IntPtr handle, UInt64 value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_ClearEnqueueAdditionalUsers(IntPtr handle); + + public static void ovr_MatchmakingOptions_SetEnqueueDataSettingsInt(IntPtr handle, string key, int value) { + IntPtr key_native = StringToNative(key); + ovr_MatchmakingOptions_SetEnqueueDataSettingsInt_Native(handle, key_native, value); + Marshal.FreeCoTaskMem(key_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetEnqueueDataSettingsInt")] + private static extern void ovr_MatchmakingOptions_SetEnqueueDataSettingsInt_Native(IntPtr handle, IntPtr key, int value); + + public static void ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble(IntPtr handle, string key, double value) { + IntPtr key_native = StringToNative(key); + ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble_Native(handle, key_native, value); + Marshal.FreeCoTaskMem(key_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble")] + private static extern void ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble_Native(IntPtr handle, IntPtr key, double value); + + public static void ovr_MatchmakingOptions_SetEnqueueDataSettingsString(IntPtr handle, string key, string value) { + IntPtr key_native = StringToNative(key); + IntPtr value_native = StringToNative(value); + ovr_MatchmakingOptions_SetEnqueueDataSettingsString_Native(handle, key_native, value_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetEnqueueDataSettingsString")] + private static extern void ovr_MatchmakingOptions_SetEnqueueDataSettingsString_Native(IntPtr handle, IntPtr key, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_ClearEnqueueDataSettings(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_SetEnqueueIsDebug(IntPtr handle, bool value); + + public static void ovr_MatchmakingOptions_SetEnqueueQueryKey(IntPtr handle, string value) { + IntPtr value_native = StringToNative(value); + ovr_MatchmakingOptions_SetEnqueueQueryKey_Native(handle, value_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetEnqueueQueryKey")] + private static extern void ovr_MatchmakingOptions_SetEnqueueQueryKey_Native(IntPtr handle, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_RoomOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_Destroy(IntPtr handle); + + public static void ovr_RoomOptions_SetDataStoreString(IntPtr handle, string key, string value) { + IntPtr key_native = StringToNative(key); + IntPtr value_native = StringToNative(value); + ovr_RoomOptions_SetDataStoreString_Native(handle, key_native, value_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RoomOptions_SetDataStoreString")] + private static extern void ovr_RoomOptions_SetDataStoreString_Native(IntPtr handle, IntPtr key, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_ClearDataStore(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetExcludeRecentlyMet(IntPtr handle, bool value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetMaxUserResults(IntPtr handle, uint value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetOrdering(IntPtr handle, UserOrdering value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetRecentlyMetTimeWindow(IntPtr handle, TimeWindow value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetRoomId(IntPtr handle, UInt64 value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetTurnOffUpdates(IntPtr handle, bool value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_Destroy(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_SetMaxUsers(IntPtr handle, uint value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_AddServiceProvider(IntPtr handle, ServiceProvider value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_ClearServiceProviders(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_SetTimeWindow(IntPtr handle, TimeWindow value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_VoipOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipOptions_Destroy(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipOptions_SetBitrateForNewConnections(IntPtr handle, VoipBitrate value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipOptions_SetCreateNewConnectionUseDtx(IntPtr handle, VoipDtxState value); + } +} diff --git a/Assets/Oculus/Platform/Scripts/CAPI.cs.meta b/Assets/Oculus/Platform/Scripts/CAPI.cs.meta new file mode 100644 index 0000000..29c81a1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CAPI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 34df728904a3e304b84b2facc7fac233 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Callback.cs b/Assets/Oculus/Platform/Scripts/Callback.cs new file mode 100644 index 0000000..5751208 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Callback.cs @@ -0,0 +1,164 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections.Generic; + + public static class Callback + { + #region Notification Callbacks: Exposed through Oculus.Platform.Platform + + internal static void SetNotificationCallback(Message.MessageType type, Message.Callback callback) + { + if (callback == null) { + throw new Exception ("Cannot provide a null notification callback."); + } + + notificationCallbacks[type] = new RequestCallback(callback); + + if (type == Message.MessageType.Notification_Room_InviteAccepted) + { + FlushRoomInviteNotificationQueue(); + } + } + + internal static void SetNotificationCallback(Message.MessageType type, Message.Callback callback) + { + if (callback == null) { + throw new Exception ("Cannot provide a null notification callback."); + } + + notificationCallbacks[type] = new RequestCallback(callback); + } + #endregion + + #region OnComplete Callbacks: Exposed through Oculus.Platform.Request + internal static void OnComplete(Request request, Message.Callback callback) + { + requestIDsToCallbacks[request.RequestID] = new RequestCallback(callback); + } + internal static void OnComplete(Request request, Message.Callback callback) + { + requestIDsToCallbacks[request.RequestID] = new RequestCallback(callback); + } + + internal static void RunCallbacks() + { + while (true) + { + var msg = Platform.Message.PopMessage(); + if (msg == null) + { + break; + } + + HandleMessage(msg); + } + + } + + internal static void RunLimitedCallbacks(uint limit) + { + for (var i = 0; i < limit; ++i) + { + var msg = Platform.Message.PopMessage(); + if (msg == null) + { + break; + } + + HandleMessage(msg); + } + } + #endregion + + #region Callback Internals + private static Dictionary requestIDsToCallbacks = new Dictionary(); + private static Dictionary notificationCallbacks = new Dictionary(); + + private static bool hasRegisteredRoomInviteNotificationHandler = false; + private static List pendingRoomInviteNotifications = new List(); + private static void FlushRoomInviteNotificationQueue() { + hasRegisteredRoomInviteNotificationHandler = true; + foreach (Message msg in pendingRoomInviteNotifications) { + HandleMessage(msg); + } + pendingRoomInviteNotifications.Clear(); + } + + private class RequestCallback + { + private Message.Callback messageCallback; + + public RequestCallback() { } + + public RequestCallback(Message.Callback callback) + { + this.messageCallback = callback; + } + + public virtual void HandleMessage(Message msg) + { + if (messageCallback != null) + { + messageCallback(msg); + } + } + } + + private sealed class RequestCallback : RequestCallback + { + private Message.Callback callback; + public RequestCallback(Message.Callback callback) + { + this.callback = callback; + } + + public override void HandleMessage(Message msg) + { + if (callback != null) + { + + // We need to queue up GameInvites because the callback runner will be called before a handler has beeen set. + if (!hasRegisteredRoomInviteNotificationHandler && msg.Type == Message.MessageType.Notification_Room_InviteAccepted) + { + pendingRoomInviteNotifications.Add(msg); + return; + } + + if (msg is Message) + { + callback((Message)msg); + } + else + { + Debug.LogError("Unable to handle message: " + msg.GetType()); + } + } + } + } + + private static void HandleMessage(Message msg) + { + RequestCallback callbackHolder; + if (requestIDsToCallbacks.TryGetValue(msg.RequestID, out callbackHolder)) + { + try + { + callbackHolder.HandleMessage(msg); + } + // even if there are exceptions, we should clean up cleanly + finally + { + requestIDsToCallbacks.Remove(msg.RequestID); + } + } + else if (notificationCallbacks.TryGetValue(msg.Type, out callbackHolder)) + { + callbackHolder.HandleMessage(msg); + } + } + + #endregion + } +} diff --git a/Assets/Oculus/Platform/Scripts/Callback.cs.meta b/Assets/Oculus/Platform/Scripts/Callback.cs.meta new file mode 100644 index 0000000..7457f31 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Callback.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41d3953e2b7bcb44d91f97e274f9f64d +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/CallbackRunner.cs b/Assets/Oculus/Platform/Scripts/CallbackRunner.cs new file mode 100644 index 0000000..a178363 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CallbackRunner.cs @@ -0,0 +1,38 @@ +using System.Runtime.InteropServices; +using UnityEngine; + +namespace Oculus.Platform +{ + public class CallbackRunner : MonoBehaviour + { + [DllImport(CAPI.DLL_NAME)] + static extern void ovr_UnityResetTestPlatform(); + + public bool IsPersistantBetweenSceneLoads = true; + + void Awake() + { + var existingCallbackRunner = FindObjectOfType(); + if (existingCallbackRunner != this) + { + Debug.LogWarning("You only need one instance of CallbackRunner"); + } + if (IsPersistantBetweenSceneLoads) + { + DontDestroyOnLoad(gameObject); + } + } + + void Update() + { + Request.RunCallbacks(); + } + + void OnDestroy() + { +#if UNITY_EDITOR + ovr_UnityResetTestPlatform(); +#endif + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/CallbackRunner.cs.meta b/Assets/Oculus/Platform/Scripts/CallbackRunner.cs.meta new file mode 100644 index 0000000..19c1982 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CallbackRunner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f2caa5c6ad39b6742a7ddc2c273976c7 +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs b/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs new file mode 100644 index 0000000..d9d5c5d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs @@ -0,0 +1,33 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum CloudStorageDataStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("IN_SYNC")] + InSync, + + [Description("NEEDS_DOWNLOAD")] + NeedsDownload, + + [Description("REMOTE_DOWNLOADING")] + RemoteDownloading, + + [Description("NEEDS_UPLOAD")] + NeedsUpload, + + [Description("LOCAL_UPLOADING")] + LocalUploading, + + [Description("IN_CONFLICT")] + InConflict, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs.meta b/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs.meta new file mode 100644 index 0000000..be2ccef --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4708b605fe779fe4384e9166eb21b85c +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs b/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs new file mode 100644 index 0000000..524d88e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum CloudStorageUpdateStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("OK")] + Ok, + + [Description("BETTER_VERSION_STORED")] + BetterVersionStored, + + [Description("MANUAL_MERGE_REQUIRED")] + ManualMergeRequired, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs.meta b/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs.meta new file mode 100644 index 0000000..e6713e7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b620ce00fa534d4f8f006da66d05d35 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Decoder.cs b/Assets/Oculus/Platform/Scripts/Decoder.cs new file mode 100644 index 0000000..afa1021 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Decoder.cs @@ -0,0 +1,45 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer3.oculus.com/documentation/platform/latest/concepts/dg-core-content/#dg-cc-voip +#if false +using UnityEngine; +using System.Collections; +using System; + +namespace Oculus.Platform { + + public class Decoder : IDisposable { + + IntPtr dec; + float[] decodedScratchBuffer; + + public Decoder() { + dec = CAPI.ovr_Voip_CreateDecoder(); + decodedScratchBuffer = new float[480 * 10]; + } + + public void Dispose() + { + if (dec != IntPtr.Zero) + { + CAPI.ovr_Voip_DestroyEncoder(dec); + dec = IntPtr.Zero; + } + } + + public float[] Decode(byte[] data) { + CAPI.ovr_VoipDecoder_Decode(dec, data, (uint)data.Length); + + ulong gotSize = (ulong)CAPI.ovr_VoipDecoder_GetDecodedPCM(dec, decodedScratchBuffer, (UIntPtr)decodedScratchBuffer.Length); + + if (gotSize > 0) + { + float[] pcm = new float[gotSize]; + Array.Copy(decodedScratchBuffer, pcm, (int)gotSize); + return pcm; + } + + return null; + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/Decoder.cs.meta b/Assets/Oculus/Platform/Scripts/Decoder.cs.meta new file mode 100644 index 0000000..e582648 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Decoder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 731601605a2facb4b8f3f211411a4693 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Encoder.cs b/Assets/Oculus/Platform/Scripts/Encoder.cs new file mode 100644 index 0000000..f336537 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Encoder.cs @@ -0,0 +1,45 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer3.oculus.com/documentation/platform/latest/concepts/dg-core-content/#dg-cc-voip +#if false +using UnityEngine; +using System.Collections; +using System; + + +namespace Oculus.Platform { + +public class Encoder : IDisposable { + IntPtr enc; + + public Encoder() { + enc = CAPI.ovr_Voip_CreateEncoder(); + } + + public void Dispose() + { + if (enc != IntPtr.Zero) + { + CAPI.ovr_Voip_DestroyEncoder(enc); + enc = IntPtr.Zero; + } + } + + public byte[] Encode(float[] samples) { + CAPI.ovr_VoipEncoder_AddPCM(enc, samples, (uint)samples.Length); + + ulong size = (ulong)CAPI.ovr_VoipEncoder_GetCompressedDataSize(enc); + if(size > 0) { + byte[] compressedData = new byte[size]; //TODO 10376403 - pool this + ulong sizeRead = (ulong)CAPI.ovr_VoipEncoder_GetCompressedData(enc, compressedData, (UIntPtr)size); + + if (sizeRead != size) + { + throw new Exception("Read size differed from reported size"); + } + return compressedData; + } + return null; + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/Encoder.cs.meta b/Assets/Oculus/Platform/Scripts/Encoder.cs.meta new file mode 100644 index 0000000..927095b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Encoder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f6ac5c6788e50aa4f9ce8e07d8605023 +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/IMicrophone.cs b/Assets/Oculus/Platform/Scripts/IMicrophone.cs new file mode 100644 index 0000000..992c0f3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/IMicrophone.cs @@ -0,0 +1,15 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Oculus.Platform +{ + public interface IMicrophone + { + void Start(); + + void Stop(); + + float[] Update(); + } +} diff --git a/Assets/Oculus/Platform/Scripts/IMicrophone.cs.meta b/Assets/Oculus/Platform/Scripts/IMicrophone.cs.meta new file mode 100644 index 0000000..8736236 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/IMicrophone.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3bd3a2d44aa26f148bb61b2735a67028 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs b/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs new file mode 100644 index 0000000..5b46d60 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs @@ -0,0 +1,13 @@ +namespace Oculus.Platform +{ + public interface IVoipPCMSource + { + int GetPCM(float[] dest, int length); + + void SetSenderID(ulong senderID); + + void Update(); + + int PeekSizeElements(); + } +} diff --git a/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs.meta b/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs.meta new file mode 100644 index 0000000..a3fd33e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0dd741d18ee018045936b0f2f9c9b2f7 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs b/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs new file mode 100644 index 0000000..284edf6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum KeyValuePairType : int + { + [Description("STRING")] + String, + + [Description("INTEGER")] + Int, + + [Description("DOUBLE")] + Double, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs.meta b/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs.meta new file mode 100644 index 0000000..1aed36d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 652351552fa9f694690760ab0f94c90a +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LaunchType.cs b/Assets/Oculus/Platform/Scripts/LaunchType.cs new file mode 100644 index 0000000..f6f0fd3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LaunchType.cs @@ -0,0 +1,27 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LaunchType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("NORMAL")] + Normal, + + [Description("INVITE")] + Invite, + + [Description("COORDINATED")] + Coordinated, + + [Description("DEEPLINK")] + Deeplink, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LaunchType.cs.meta b/Assets/Oculus/Platform/Scripts/LaunchType.cs.meta new file mode 100644 index 0000000..56a8153 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LaunchType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 19914a3b196ab06439965a325ac1da12 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs b/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs new file mode 100644 index 0000000..226a06c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LeaderboardFilterType : int + { + [Description("NONE")] + None, + + [Description("FRIENDS")] + Friends, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs.meta b/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs.meta new file mode 100644 index 0000000..0b5e14a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cb882419e00a3424b83ba7ff72a0d3fd +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs b/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs new file mode 100644 index 0000000..520825f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LeaderboardStartAt : int + { + [Description("TOP")] + Top, + + [Description("CENTERED_ON_VIEWER")] + CenteredOnViewer, + + [Description("CENTERED_ON_VIEWER_OR_TOP")] + CenteredOnViewerOrTop, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs.meta b/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs.meta new file mode 100644 index 0000000..e3de3a7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8e8523caca9803145a3e871dca67c0e5 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs b/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs new file mode 100644 index 0000000..47638e1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LivestreamingAudience : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("PUBLIC")] + Public, + + [Description("FRIENDS")] + Friends, + + [Description("ONLY_ME")] + OnlyMe, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs.meta b/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs.meta new file mode 100644 index 0000000..e651404 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 73f525341669b334cb7179690b1545fd +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs b/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs new file mode 100644 index 0000000..c0bc23e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LivestreamingMicrophoneStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("MICROPHONE_ON")] + MicrophoneOn, + + [Description("MICROPHONE_OFF")] + MicrophoneOff, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs.meta b/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs.meta new file mode 100644 index 0000000..03bb94a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 200430e18cf27164c95796b4c3456b1f +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs b/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs new file mode 100644 index 0000000..47ab25c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LivestreamingStartStatus : int + { + [Description("SUCCESS")] + Success = 1, + + [Description("UNKNOWN")] + Unknown = 0, + + [Description("NO_PACKAGE_SET")] + NoPackageSet = -1, + + [Description("NO_FB_CONNECT")] + NoFbConnect = -2, + + [Description("NO_SESSION_ID")] + NoSessionId = -3, + + [Description("MISSING_PARAMETERS")] + MissingParameters = -4, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs.meta b/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs.meta new file mode 100644 index 0000000..3773b54 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 278e551ec7e02bf419ea10f24a330083 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs b/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs new file mode 100644 index 0000000..fbb5cde --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs @@ -0,0 +1,27 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum MatchmakingCriterionImportance : int + { + [Description("REQUIRED")] + Required, + + [Description("HIGH")] + High, + + [Description("MEDIUM")] + Medium, + + [Description("LOW")] + Low, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs.meta b/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs.meta new file mode 100644 index 0000000..0380168 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 030eb76e37b12924e96e8b450291a220 +timeCreated: 1523486796 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs b/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs new file mode 100644 index 0000000..fd552f6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs @@ -0,0 +1,77 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingOptions { + + public MatchmakingOptions() { + Handle = CAPI.ovr_MatchmakingOptions_Create(); + } + + public void SetCreateRoomDataStore(string key, string value) { + CAPI.ovr_MatchmakingOptions_SetCreateRoomDataStoreString(Handle, key, value); + } + + public void ClearCreateRoomDataStore() { + CAPI.ovr_MatchmakingOptions_ClearCreateRoomDataStore(Handle); + } + + public void SetCreateRoomJoinPolicy(RoomJoinPolicy value) { + CAPI.ovr_MatchmakingOptions_SetCreateRoomJoinPolicy(Handle, value); + } + + public void SetCreateRoomMaxUsers(uint value) { + CAPI.ovr_MatchmakingOptions_SetCreateRoomMaxUsers(Handle, value); + } + + public void AddEnqueueAdditionalUser(UInt64 userID) { + CAPI.ovr_MatchmakingOptions_AddEnqueueAdditionalUser(Handle, userID); + } + + public void ClearEnqueueAdditionalUsers() { + CAPI.ovr_MatchmakingOptions_ClearEnqueueAdditionalUsers(Handle); + } + + public void SetEnqueueDataSettings(string key, int value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueDataSettingsInt(Handle, key, value); + } + + public void SetEnqueueDataSettings(string key, double value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble(Handle, key, value); + } + + public void SetEnqueueDataSettings(string key, string value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueDataSettingsString(Handle, key, value); + } + + public void ClearEnqueueDataSettings() { + CAPI.ovr_MatchmakingOptions_ClearEnqueueDataSettings(Handle); + } + + public void SetEnqueueIsDebug(bool value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueIsDebug(Handle, value); + } + + public void SetEnqueueQueryKey(string value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueQueryKey(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(MatchmakingOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~MatchmakingOptions() { + CAPI.ovr_MatchmakingOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs.meta b/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs.meta new file mode 100644 index 0000000..96fc8c8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f9b3e7ffb96e6594ea296771b88d7243 +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs b/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs new file mode 100644 index 0000000..88036ce --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum MatchmakingStatApproach : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("TRAILING")] + Trailing, + + [Description("SWINGY")] + Swingy, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs.meta b/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs.meta new file mode 100644 index 0000000..2e9ab06 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 03cfe1746fc38ae468f5a6a910bf0379 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MediaContentType.cs b/Assets/Oculus/Platform/Scripts/MediaContentType.cs new file mode 100644 index 0000000..bf3e20f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MediaContentType.cs @@ -0,0 +1,18 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum MediaContentType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("PHOTO")] + Photo, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/MediaContentType.cs.meta b/Assets/Oculus/Platform/Scripts/MediaContentType.cs.meta new file mode 100644 index 0000000..efbf93a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MediaContentType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4a27c72682442f94abd98f97d87f9cad +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Message.cs b/Assets/Oculus/Platform/Scripts/Message.cs new file mode 100644 index 0000000..6ffa424 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Message.cs @@ -0,0 +1,1388 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Collections.Generic; + using Oculus.Platform.Models; + + public abstract class Message : Message + { + public new delegate void Callback(Message message); + public Message(IntPtr c_message) : base(c_message) { + if (!IsError) + { + data = GetDataFromMessage(c_message); + } + } + + public T Data { get { return data; } } + protected abstract T GetDataFromMessage(IntPtr c_message); + private T data; + } + + public class Message + { + public delegate void Callback(Message message); + public Message(IntPtr c_message) + { + type = (MessageType)CAPI.ovr_Message_GetType(c_message); + var isError = CAPI.ovr_Message_IsError(c_message); + requestID = CAPI.ovr_Message_GetRequestID(c_message); + + if (isError) + { + IntPtr errorHandle = CAPI.ovr_Message_GetError(c_message); + error = new Error( + CAPI.ovr_Error_GetCode(errorHandle), + CAPI.ovr_Error_GetMessage(errorHandle), + CAPI.ovr_Error_GetHttpCode(errorHandle)); + } + else if (Core.LogMessages) + { + var message = CAPI.ovr_Message_GetString(c_message); + if (message != null) + { + Debug.Log(message); + } + else + { + Debug.Log(string.Format("null message string {0}", c_message)); + } + } + } + + ~Message() + { + } + + // Keep this enum in sync with ovrMessageType in OVR_Platform.h + public enum MessageType : uint + { //TODO - rename this to type; it's already in Message class + Unknown, + + Achievements_AddCount = 0x03E76231, + Achievements_AddFields = 0x14AA2129, + Achievements_GetAllDefinitions = 0x03D3458D, + Achievements_GetAllProgress = 0x4F9FDE1D, + Achievements_GetDefinitionsByName = 0x629101BC, + Achievements_GetNextAchievementDefinitionArrayPage = 0x2A7DD255, + Achievements_GetNextAchievementProgressArrayPage = 0x2F42E727, + Achievements_GetProgressByName = 0x152663B1, + Achievements_Unlock = 0x593CCBDD, + ApplicationLifecycle_GetRegisteredPIDs = 0x04E5CF62, + ApplicationLifecycle_GetSessionKey = 0x3AAF591D, + ApplicationLifecycle_RegisterSessionKey = 0x4DB6AFF8, + Application_GetVersion = 0x68670A0E, + Application_LaunchOtherApp = 0x54E2D1F8, + AssetFile_Delete = 0x6D5D7886, + AssetFile_DeleteById = 0x5AE8CD52, + AssetFile_DeleteByName = 0x420AC1CF, + AssetFile_Download = 0x11449FC5, + AssetFile_DownloadById = 0x2D008992, + AssetFile_DownloadByName = 0x6336CEFA, + AssetFile_DownloadCancel = 0x080AD3C7, + AssetFile_DownloadCancelById = 0x51659514, + AssetFile_DownloadCancelByName = 0x446AECFA, + AssetFile_GetList = 0x4AFC6F74, + AssetFile_Status = 0x02D32F60, + AssetFile_StatusById = 0x5D955D38, + AssetFile_StatusByName = 0x41CFDA50, + CloudStorage_Delete = 0x28DA456D, + CloudStorage_GetNextCloudStorageMetadataArrayPage = 0x5C07A2EF, + CloudStorage_Load = 0x40846B41, + CloudStorage_LoadBucketMetadata = 0x7327A50D, + CloudStorage_LoadConflictMetadata = 0x445A52F2, + CloudStorage_LoadHandle = 0x326ADA36, + CloudStorage_LoadMetadata = 0x03E6A292, + CloudStorage_ResolveKeepLocal = 0x30588D05, + CloudStorage_ResolveKeepRemote = 0x7525A306, + CloudStorage_Save = 0x4BBB5C2E, + Entitlement_GetIsViewerEntitled = 0x186B58B1, + IAP_ConsumePurchase = 0x1FBB72D9, + IAP_GetNextProductArrayPage = 0x1BD94AAF, + IAP_GetNextPurchaseArrayPage = 0x47570A95, + IAP_GetProductsBySKU = 0x7E9ACAF5, + IAP_GetViewerPurchases = 0x3A0F8419, + IAP_LaunchCheckoutFlow = 0x3F9B0D0D, + LanguagePack_GetCurrent = 0x1F90F0D5, + Leaderboard_GetEntries = 0x5DB3474C, + Leaderboard_GetEntriesAfterRank = 0x18378BEF, + Leaderboard_GetNextEntries = 0x4E207CD9, + Leaderboard_GetPreviousEntries = 0x4901DAC0, + Leaderboard_WriteEntry = 0x117FC8FE, + Livestreaming_GetStatus = 0x489A6995, + Livestreaming_PauseStream = 0x369C7683, + Livestreaming_ResumeStream = 0x22526D8F, + Matchmaking_Browse = 0x1E6532C8, + Matchmaking_Browse2 = 0x66429E5B, + Matchmaking_Cancel = 0x206849AF, + Matchmaking_Cancel2 = 0x10FE8DD4, + Matchmaking_CreateAndEnqueueRoom = 0x604C5DC8, + Matchmaking_CreateAndEnqueueRoom2 = 0x295BEADB, + Matchmaking_CreateRoom = 0x033B132A, + Matchmaking_CreateRoom2 = 0x496DA384, + Matchmaking_Enqueue = 0x40C16C71, + Matchmaking_Enqueue2 = 0x121212B5, + Matchmaking_EnqueueRoom = 0x708A4064, + Matchmaking_EnqueueRoom2 = 0x5528DBA4, + Matchmaking_GetAdminSnapshot = 0x3C215F94, + Matchmaking_GetStats = 0x42FC9438, + Matchmaking_JoinRoom = 0x4D32D7FD, + Matchmaking_ReportResultInsecure = 0x1A36D18D, + Matchmaking_StartMatch = 0x44D40945, + Media_ShareToFacebook = 0x00E38AEF, + Notification_GetNextRoomInviteNotificationArrayPage = 0x0621FB77, + Notification_GetRoomInvites = 0x6F916B92, + Notification_MarkAsRead = 0x717259E3, + Party_GetCurrent = 0x47933760, + Room_CreateAndJoinPrivate = 0x75D6E377, + Room_CreateAndJoinPrivate2 = 0x5A3A6243, + Room_Get = 0x659A8FB8, + Room_GetCurrent = 0x09A6A504, + Room_GetCurrentForUser = 0x0E0017E5, + Room_GetInvitableUsers = 0x1E325792, + Room_GetInvitableUsers2 = 0x4F53E8B0, + Room_GetModeratedRooms = 0x0983FD77, + Room_GetNextRoomArrayPage = 0x4E8379C6, + Room_InviteUser = 0x4129EC13, + Room_Join = 0x16CA8F09, + Room_Join2 = 0x4DAB1C42, + Room_KickUser = 0x49835736, + Room_LaunchInvitableUserFlow = 0x323FE273, + Room_Leave = 0x72382475, + Room_SetDescription = 0x3044852F, + Room_UpdateDataStore = 0x026E4028, + Room_UpdateMembershipLockStatus = 0x370BB7AC, + Room_UpdateOwner = 0x32B63D1D, + Room_UpdatePrivateRoomJoinPolicy = 0x1141029B, + User_Get = 0x6BCF9E47, + User_GetAccessToken = 0x06A85ABE, + User_GetLoggedInUser = 0x436F345D, + User_GetLoggedInUserFriends = 0x587C2A8D, + User_GetLoggedInUserFriendsAndRooms = 0x5E870B87, + User_GetLoggedInUserRecentlyMetUsersAndRooms = 0x295FBA30, + User_GetNextUserAndRoomArrayPage = 0x7FBDD2DF, + User_GetNextUserArrayPage = 0x267CF743, + User_GetOrgScopedID = 0x18F0B01B, + User_GetSdkAccounts = 0x67526A83, + User_GetUserProof = 0x22810483, + User_LaunchFriendRequestFlow = 0x0904B598, + User_LaunchProfile = 0x0A397297, + Voip_SetSystemVoipSuppressed = 0x453FC9AA, + + /// Sent when a launch intent is received (for both cold and warm starts). The + /// payload is the type of the intent. ApplicationLifecycle.GetLaunchDetails() + /// should be called to get the other details. + Notification_ApplicationLifecycle_LaunchIntentChanged = 0x04B34CA3, + + /// Sent to indicate download progress for asset files. + Notification_AssetFile_DownloadUpdate = 0x2FDD0CCD, + + /// Sent to indicate that more data has been read or an error occured. + Notification_HTTP_Transfer = 0x7DD46E2F, + + /// Indicates that the livestreaming session has been updated. You can use this + /// information to throttle your game performance or increase CPU/GPU + /// performance. Use Message.GetLivestreamingStatus() to extract the updated + /// livestreaming status. + Notification_Livestreaming_StatusChange = 0x2247596E, + + /// Indicates that a match has been found, for example after calling + /// Matchmaking.Enqueue(). Use Message.GetRoom() to extract the matchmaking + /// room. + Notification_Matchmaking_MatchFound = 0x0BC3FCD7, + + /// Indicates that a connection has been established or there's been an error. + /// Use NetworkingPeer.GetState() to get the result; as above, + /// NetworkingPeer.GetID() returns the ID of the peer this message is for. + Notification_Networking_ConnectionStateChange = 0x5E02D49A, + + /// Indicates that another user is attempting to establish a P2P connection + /// with us. Use NetworkingPeer.GetID() to extract the ID of the peer. + Notification_Networking_PeerConnectRequest = 0x4D31E2CF, + + /// Generated in response to Net.Ping(). Either contains ping time in + /// microseconds or indicates that there was a timeout. + Notification_Networking_PingResult = 0x51153012, + + /// Indicates that the user has accepted an invitation, for example in Oculus + /// Home. Use Message.GetString() to extract the ID of the room that the user + /// has been inivted to as a string. Then call ovrID_FromString() to parse it + /// into an ovrID. + /// + /// Note that you must call Room.Join() if you want to actually join the room. + Notification_Room_InviteAccepted = 0x6D1071B1, + + /// Handle this to notify the user when they've received an invitation to join + /// a room in your game. You can use this in lieu of, or in addition to, + /// polling for room invitations via Notification.GetRoomInviteNotifications(). + Notification_Room_InviteReceived = 0x6A499D54, + + /// Indicates that the current room has been updated. Use Message.GetRoom() to + /// extract the updated room. + Notification_Room_RoomUpdate = 0x60EC3C2F, + + /// Sent when another user is attempting to establish a VoIP connection. Use + /// Message.GetNetworkingPeer() to extract information about the user, and + /// Voip.Accept() to accept the connection. + Notification_Voip_ConnectRequest = 0x36243816, + + /// Sent to indicate that the state of the VoIP connection changed. Use + /// Message.GetNetworkingPeer() and NetworkingPeer.GetState() to extract the + /// current state. + Notification_Voip_StateChange = 0x34EFA660, + + /// Sent to indicate that some part of the overall state of SystemVoip has + /// changed. Use Message.GetSystemVoipState() and the properties of + /// SystemVoipState to extract the state that triggered the notification. + /// + /// Note that the state may have changed further since the notification was + /// generated, and that you may call the `GetSystemVoip...()` family of + /// functions at any time to get the current state directly. + Notification_Voip_SystemVoipState = 0x58D254A5, + + + Platform_InitializeWithAccessToken = 0x35692F2B, + Platform_InitializeStandaloneOculus = 0x51F8CE0C, + Platform_InitializeAndroidAsynchronous = 0x1AD307B4, + Platform_InitializeWindowsAsynchronous = 0x6DA7BA8F, + }; + + public MessageType Type { get { return type; } } + public bool IsError { get { return error != null; } } + public ulong RequestID { get { return requestID; } } + + private MessageType type; + private ulong requestID; + private Error error; + + public virtual Error GetError() { return error; } + public virtual PingResult GetPingResult() { return null; } + public virtual NetworkingPeer GetNetworkingPeer() { return null; } + public virtual HttpTransferUpdate GetHttpTransferUpdate() { return null; } + + public virtual PlatformInitialize GetPlatformInitialize() { return null; } + + public virtual AbuseReportRecording GetAbuseReportRecording() { return null; } + public virtual AchievementDefinitionList GetAchievementDefinitions() { return null; } + public virtual AchievementProgressList GetAchievementProgressList() { return null; } + public virtual AchievementUpdate GetAchievementUpdate() { return null; } + public virtual ApplicationVersion GetApplicationVersion() { return null; } + public virtual AssetDetails GetAssetDetails() { return null; } + public virtual AssetDetailsList GetAssetDetailsList() { return null; } + public virtual AssetFileDeleteResult GetAssetFileDeleteResult() { return null; } + public virtual AssetFileDownloadCancelResult GetAssetFileDownloadCancelResult() { return null; } + public virtual AssetFileDownloadResult GetAssetFileDownloadResult() { return null; } + public virtual AssetFileDownloadUpdate GetAssetFileDownloadUpdate() { return null; } + public virtual CloudStorageConflictMetadata GetCloudStorageConflictMetadata() { return null; } + public virtual CloudStorageData GetCloudStorageData() { return null; } + public virtual CloudStorageMetadata GetCloudStorageMetadata() { return null; } + public virtual CloudStorageMetadataList GetCloudStorageMetadataList() { return null; } + public virtual CloudStorageUpdateResponse GetCloudStorageUpdateResponse() { return null; } + public virtual InstalledApplicationList GetInstalledApplicationList() { return null; } + public virtual LaunchBlockFlowResult GetLaunchBlockFlowResult() { return null; } + public virtual LaunchFriendRequestFlowResult GetLaunchFriendRequestFlowResult() { return null; } + public virtual LaunchUnblockFlowResult GetLaunchUnblockFlowResult() { return null; } + public virtual bool GetLeaderboardDidUpdate() { return false; } + public virtual LeaderboardEntryList GetLeaderboardEntryList() { return null; } + public virtual LinkedAccountList GetLinkedAccountList() { return null; } + public virtual LivestreamingApplicationStatus GetLivestreamingApplicationStatus() { return null; } + public virtual LivestreamingStartResult GetLivestreamingStartResult() { return null; } + public virtual LivestreamingStatus GetLivestreamingStatus() { return null; } + public virtual LivestreamingVideoStats GetLivestreamingVideoStats() { return null; } + public virtual MatchmakingAdminSnapshot GetMatchmakingAdminSnapshot() { return null; } + public virtual MatchmakingBrowseResult GetMatchmakingBrowseResult() { return null; } + public virtual MatchmakingEnqueueResult GetMatchmakingEnqueueResult() { return null; } + public virtual MatchmakingEnqueueResultAndRoom GetMatchmakingEnqueueResultAndRoom() { return null; } + public virtual MatchmakingStats GetMatchmakingStats() { return null; } + public virtual OrgScopedID GetOrgScopedID() { return null; } + public virtual Party GetParty() { return null; } + public virtual PartyID GetPartyID() { return null; } + public virtual PidList GetPidList() { return null; } + public virtual ProductList GetProductList() { return null; } + public virtual Purchase GetPurchase() { return null; } + public virtual PurchaseList GetPurchaseList() { return null; } + public virtual Room GetRoom() { return null; } + public virtual RoomInviteNotification GetRoomInviteNotification() { return null; } + public virtual RoomInviteNotificationList GetRoomInviteNotificationList() { return null; } + public virtual RoomList GetRoomList() { return null; } + public virtual SdkAccountList GetSdkAccountList() { return null; } + public virtual ShareMediaResult GetShareMediaResult() { return null; } + public virtual string GetString() { return null; } + public virtual SystemPermission GetSystemPermission() { return null; } + public virtual SystemVoipState GetSystemVoipState() { return null; } + public virtual User GetUser() { return null; } + public virtual UserAndRoomList GetUserAndRoomList() { return null; } + public virtual UserList GetUserList() { return null; } + public virtual UserProof GetUserProof() { return null; } + public virtual UserReportID GetUserReportID() { return null; } + + internal static Message ParseMessageHandle(IntPtr messageHandle) + { + if (messageHandle.ToInt64() == 0) + { + return null; + } + + Message message = null; + Message.MessageType message_type = (Message.MessageType)CAPI.ovr_Message_GetType(messageHandle); + + switch(message_type) { + // OVR_MESSAGE_TYPE_START + case Message.MessageType.Achievements_GetAllDefinitions: + case Message.MessageType.Achievements_GetDefinitionsByName: + case Message.MessageType.Achievements_GetNextAchievementDefinitionArrayPage: + message = new MessageWithAchievementDefinitions(messageHandle); + break; + + case Message.MessageType.Achievements_GetAllProgress: + case Message.MessageType.Achievements_GetNextAchievementProgressArrayPage: + case Message.MessageType.Achievements_GetProgressByName: + message = new MessageWithAchievementProgressList(messageHandle); + break; + + case Message.MessageType.Achievements_AddCount: + case Message.MessageType.Achievements_AddFields: + case Message.MessageType.Achievements_Unlock: + message = new MessageWithAchievementUpdate(messageHandle); + break; + + case Message.MessageType.Application_GetVersion: + message = new MessageWithApplicationVersion(messageHandle); + break; + + case Message.MessageType.AssetFile_Status: + case Message.MessageType.AssetFile_StatusById: + case Message.MessageType.AssetFile_StatusByName: + case Message.MessageType.LanguagePack_GetCurrent: + message = new MessageWithAssetDetails(messageHandle); + break; + + case Message.MessageType.AssetFile_GetList: + message = new MessageWithAssetDetailsList(messageHandle); + break; + + case Message.MessageType.AssetFile_Delete: + case Message.MessageType.AssetFile_DeleteById: + case Message.MessageType.AssetFile_DeleteByName: + message = new MessageWithAssetFileDeleteResult(messageHandle); + break; + + case Message.MessageType.AssetFile_DownloadCancel: + case Message.MessageType.AssetFile_DownloadCancelById: + case Message.MessageType.AssetFile_DownloadCancelByName: + message = new MessageWithAssetFileDownloadCancelResult(messageHandle); + break; + + case Message.MessageType.AssetFile_Download: + case Message.MessageType.AssetFile_DownloadById: + case Message.MessageType.AssetFile_DownloadByName: + message = new MessageWithAssetFileDownloadResult(messageHandle); + break; + + case Message.MessageType.Notification_AssetFile_DownloadUpdate: + message = new MessageWithAssetFileDownloadUpdate(messageHandle); + break; + + case Message.MessageType.CloudStorage_LoadConflictMetadata: + message = new MessageWithCloudStorageConflictMetadata(messageHandle); + break; + + case Message.MessageType.CloudStorage_Load: + case Message.MessageType.CloudStorage_LoadHandle: + message = new MessageWithCloudStorageData(messageHandle); + break; + + case Message.MessageType.CloudStorage_LoadMetadata: + message = new MessageWithCloudStorageMetadataUnderLocal(messageHandle); + break; + + case Message.MessageType.CloudStorage_GetNextCloudStorageMetadataArrayPage: + case Message.MessageType.CloudStorage_LoadBucketMetadata: + message = new MessageWithCloudStorageMetadataList(messageHandle); + break; + + case Message.MessageType.CloudStorage_Delete: + case Message.MessageType.CloudStorage_ResolveKeepLocal: + case Message.MessageType.CloudStorage_ResolveKeepRemote: + case Message.MessageType.CloudStorage_Save: + message = new MessageWithCloudStorageUpdateResponse(messageHandle); + break; + + case Message.MessageType.ApplicationLifecycle_RegisterSessionKey: + case Message.MessageType.Entitlement_GetIsViewerEntitled: + case Message.MessageType.IAP_ConsumePurchase: + case Message.MessageType.Matchmaking_Cancel: + case Message.MessageType.Matchmaking_Cancel2: + case Message.MessageType.Matchmaking_ReportResultInsecure: + case Message.MessageType.Matchmaking_StartMatch: + case Message.MessageType.Notification_MarkAsRead: + case Message.MessageType.Room_LaunchInvitableUserFlow: + case Message.MessageType.Room_UpdateOwner: + case Message.MessageType.User_LaunchProfile: + message = new Message(messageHandle); + break; + + case Message.MessageType.User_LaunchFriendRequestFlow: + message = new MessageWithLaunchFriendRequestFlowResult(messageHandle); + break; + + case Message.MessageType.Leaderboard_GetEntries: + case Message.MessageType.Leaderboard_GetEntriesAfterRank: + case Message.MessageType.Leaderboard_GetNextEntries: + case Message.MessageType.Leaderboard_GetPreviousEntries: + message = new MessageWithLeaderboardEntryList(messageHandle); + break; + + case Message.MessageType.Leaderboard_WriteEntry: + message = new MessageWithLeaderboardDidUpdate(messageHandle); + break; + + case Message.MessageType.Livestreaming_GetStatus: + case Message.MessageType.Livestreaming_PauseStream: + case Message.MessageType.Livestreaming_ResumeStream: + case Message.MessageType.Notification_Livestreaming_StatusChange: + message = new MessageWithLivestreamingStatus(messageHandle); + break; + + case Message.MessageType.Matchmaking_GetAdminSnapshot: + message = new MessageWithMatchmakingAdminSnapshot(messageHandle); + break; + + case Message.MessageType.Matchmaking_Browse: + case Message.MessageType.Matchmaking_Browse2: + message = new MessageWithMatchmakingBrowseResult(messageHandle); + break; + + case Message.MessageType.Matchmaking_Enqueue: + case Message.MessageType.Matchmaking_Enqueue2: + case Message.MessageType.Matchmaking_EnqueueRoom: + case Message.MessageType.Matchmaking_EnqueueRoom2: + message = new MessageWithMatchmakingEnqueueResult(messageHandle); + break; + + case Message.MessageType.Matchmaking_CreateAndEnqueueRoom: + case Message.MessageType.Matchmaking_CreateAndEnqueueRoom2: + message = new MessageWithMatchmakingEnqueueResultAndRoom(messageHandle); + break; + + case Message.MessageType.Matchmaking_GetStats: + message = new MessageWithMatchmakingStatsUnderMatchmakingStats(messageHandle); + break; + + case Message.MessageType.User_GetOrgScopedID: + message = new MessageWithOrgScopedID(messageHandle); + break; + + case Message.MessageType.Party_GetCurrent: + message = new MessageWithPartyUnderCurrentParty(messageHandle); + break; + + case Message.MessageType.ApplicationLifecycle_GetRegisteredPIDs: + message = new MessageWithPidList(messageHandle); + break; + + case Message.MessageType.IAP_GetNextProductArrayPage: + case Message.MessageType.IAP_GetProductsBySKU: + message = new MessageWithProductList(messageHandle); + break; + + case Message.MessageType.IAP_LaunchCheckoutFlow: + message = new MessageWithPurchase(messageHandle); + break; + + case Message.MessageType.IAP_GetNextPurchaseArrayPage: + case Message.MessageType.IAP_GetViewerPurchases: + message = new MessageWithPurchaseList(messageHandle); + break; + + case Message.MessageType.Room_Get: + message = new MessageWithRoom(messageHandle); + break; + + case Message.MessageType.Room_GetCurrent: + case Message.MessageType.Room_GetCurrentForUser: + message = new MessageWithRoomUnderCurrentRoom(messageHandle); + break; + + case Message.MessageType.Matchmaking_CreateRoom: + case Message.MessageType.Matchmaking_CreateRoom2: + case Message.MessageType.Matchmaking_JoinRoom: + case Message.MessageType.Notification_Room_RoomUpdate: + case Message.MessageType.Room_CreateAndJoinPrivate: + case Message.MessageType.Room_CreateAndJoinPrivate2: + case Message.MessageType.Room_InviteUser: + case Message.MessageType.Room_Join: + case Message.MessageType.Room_Join2: + case Message.MessageType.Room_KickUser: + case Message.MessageType.Room_Leave: + case Message.MessageType.Room_SetDescription: + case Message.MessageType.Room_UpdateDataStore: + case Message.MessageType.Room_UpdateMembershipLockStatus: + case Message.MessageType.Room_UpdatePrivateRoomJoinPolicy: + message = new MessageWithRoomUnderViewerRoom(messageHandle); + break; + + case Message.MessageType.Room_GetModeratedRooms: + case Message.MessageType.Room_GetNextRoomArrayPage: + message = new MessageWithRoomList(messageHandle); + break; + + case Message.MessageType.Notification_Room_InviteReceived: + message = new MessageWithRoomInviteNotification(messageHandle); + break; + + case Message.MessageType.Notification_GetNextRoomInviteNotificationArrayPage: + case Message.MessageType.Notification_GetRoomInvites: + message = new MessageWithRoomInviteNotificationList(messageHandle); + break; + + case Message.MessageType.User_GetSdkAccounts: + message = new MessageWithSdkAccountList(messageHandle); + break; + + case Message.MessageType.Media_ShareToFacebook: + message = new MessageWithShareMediaResult(messageHandle); + break; + + case Message.MessageType.ApplicationLifecycle_GetSessionKey: + case Message.MessageType.Application_LaunchOtherApp: + case Message.MessageType.Notification_ApplicationLifecycle_LaunchIntentChanged: + case Message.MessageType.Notification_Room_InviteAccepted: + case Message.MessageType.User_GetAccessToken: + message = new MessageWithString(messageHandle); + break; + + case Message.MessageType.Voip_SetSystemVoipSuppressed: + message = new MessageWithSystemVoipState(messageHandle); + break; + + case Message.MessageType.User_Get: + case Message.MessageType.User_GetLoggedInUser: + message = new MessageWithUser(messageHandle); + break; + + case Message.MessageType.User_GetLoggedInUserFriendsAndRooms: + case Message.MessageType.User_GetLoggedInUserRecentlyMetUsersAndRooms: + case Message.MessageType.User_GetNextUserAndRoomArrayPage: + message = new MessageWithUserAndRoomList(messageHandle); + break; + + case Message.MessageType.Room_GetInvitableUsers: + case Message.MessageType.Room_GetInvitableUsers2: + case Message.MessageType.User_GetLoggedInUserFriends: + case Message.MessageType.User_GetNextUserArrayPage: + message = new MessageWithUserList(messageHandle); + break; + + case Message.MessageType.User_GetUserProof: + message = new MessageWithUserProof(messageHandle); + break; + + case Message.MessageType.Notification_Networking_ConnectionStateChange: + case Message.MessageType.Notification_Networking_PeerConnectRequest: + message = new MessageWithNetworkingPeer(messageHandle); + break; + + case Message.MessageType.Notification_Networking_PingResult: + message = new MessageWithPingResult(messageHandle); + break; + + case Message.MessageType.Notification_Matchmaking_MatchFound: + message = new MessageWithMatchmakingNotification(messageHandle); + break; + + case Message.MessageType.Notification_Voip_ConnectRequest: + case Message.MessageType.Notification_Voip_StateChange: + message = new MessageWithNetworkingPeer(messageHandle); + break; + + case Message.MessageType.Notification_Voip_SystemVoipState: + message = new MessageWithSystemVoipState(messageHandle); + break; + + case Message.MessageType.Notification_HTTP_Transfer: + message = new MessageWithHttpTransferUpdate(messageHandle); + break; + + case Message.MessageType.Platform_InitializeWithAccessToken: + case Message.MessageType.Platform_InitializeStandaloneOculus: + case Message.MessageType.Platform_InitializeAndroidAsynchronous: + case Message.MessageType.Platform_InitializeWindowsAsynchronous: + message = new MessageWithPlatformInitialize(messageHandle); + break; + + default: + message = PlatformInternal.ParseMessageHandle(messageHandle, message_type); + if (message == null) + { + Debug.LogError(string.Format("Unrecognized message type {0}\n", message_type)); + } + break; + // OVR_MESSAGE_TYPE_END + } + + return message; + } + + public static Message PopMessage() + { + if (!Core.IsInitialized()) + { + return null; + } + + var messageHandle = CAPI.ovr_PopMessage(); + + Message message = ParseMessageHandle(messageHandle); + + CAPI.ovr_FreeMessage(messageHandle); + return message; + } + + internal delegate Message ExtraMessageTypesHandler(IntPtr messageHandle, Message.MessageType message_type); + internal static ExtraMessageTypesHandler HandleExtraMessageTypes { set; private get; } + } + + public class MessageWithAbuseReportRecording : Message + { + public MessageWithAbuseReportRecording(IntPtr c_message) : base(c_message) { } + public override AbuseReportRecording GetAbuseReportRecording() { return Data; } + protected override AbuseReportRecording GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAbuseReportRecording(msg); + return new AbuseReportRecording(obj); + } + + } + public class MessageWithAchievementDefinitions : Message + { + public MessageWithAchievementDefinitions(IntPtr c_message) : base(c_message) { } + public override AchievementDefinitionList GetAchievementDefinitions() { return Data; } + protected override AchievementDefinitionList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAchievementDefinitionArray(msg); + return new AchievementDefinitionList(obj); + } + + } + public class MessageWithAchievementProgressList : Message + { + public MessageWithAchievementProgressList(IntPtr c_message) : base(c_message) { } + public override AchievementProgressList GetAchievementProgressList() { return Data; } + protected override AchievementProgressList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAchievementProgressArray(msg); + return new AchievementProgressList(obj); + } + + } + public class MessageWithAchievementUpdate : Message + { + public MessageWithAchievementUpdate(IntPtr c_message) : base(c_message) { } + public override AchievementUpdate GetAchievementUpdate() { return Data; } + protected override AchievementUpdate GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAchievementUpdate(msg); + return new AchievementUpdate(obj); + } + + } + public class MessageWithApplicationVersion : Message + { + public MessageWithApplicationVersion(IntPtr c_message) : base(c_message) { } + public override ApplicationVersion GetApplicationVersion() { return Data; } + protected override ApplicationVersion GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetApplicationVersion(msg); + return new ApplicationVersion(obj); + } + + } + public class MessageWithAssetDetails : Message + { + public MessageWithAssetDetails(IntPtr c_message) : base(c_message) { } + public override AssetDetails GetAssetDetails() { return Data; } + protected override AssetDetails GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetDetails(msg); + return new AssetDetails(obj); + } + + } + public class MessageWithAssetDetailsList : Message + { + public MessageWithAssetDetailsList(IntPtr c_message) : base(c_message) { } + public override AssetDetailsList GetAssetDetailsList() { return Data; } + protected override AssetDetailsList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetDetailsArray(msg); + return new AssetDetailsList(obj); + } + + } + public class MessageWithAssetFileDeleteResult : Message + { + public MessageWithAssetFileDeleteResult(IntPtr c_message) : base(c_message) { } + public override AssetFileDeleteResult GetAssetFileDeleteResult() { return Data; } + protected override AssetFileDeleteResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetFileDeleteResult(msg); + return new AssetFileDeleteResult(obj); + } + + } + public class MessageWithAssetFileDownloadCancelResult : Message + { + public MessageWithAssetFileDownloadCancelResult(IntPtr c_message) : base(c_message) { } + public override AssetFileDownloadCancelResult GetAssetFileDownloadCancelResult() { return Data; } + protected override AssetFileDownloadCancelResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetFileDownloadCancelResult(msg); + return new AssetFileDownloadCancelResult(obj); + } + + } + public class MessageWithAssetFileDownloadResult : Message + { + public MessageWithAssetFileDownloadResult(IntPtr c_message) : base(c_message) { } + public override AssetFileDownloadResult GetAssetFileDownloadResult() { return Data; } + protected override AssetFileDownloadResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetFileDownloadResult(msg); + return new AssetFileDownloadResult(obj); + } + + } + public class MessageWithAssetFileDownloadUpdate : Message + { + public MessageWithAssetFileDownloadUpdate(IntPtr c_message) : base(c_message) { } + public override AssetFileDownloadUpdate GetAssetFileDownloadUpdate() { return Data; } + protected override AssetFileDownloadUpdate GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetFileDownloadUpdate(msg); + return new AssetFileDownloadUpdate(obj); + } + + } + public class MessageWithCloudStorageConflictMetadata : Message + { + public MessageWithCloudStorageConflictMetadata(IntPtr c_message) : base(c_message) { } + public override CloudStorageConflictMetadata GetCloudStorageConflictMetadata() { return Data; } + protected override CloudStorageConflictMetadata GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageConflictMetadata(msg); + return new CloudStorageConflictMetadata(obj); + } + + } + public class MessageWithCloudStorageData : Message + { + public MessageWithCloudStorageData(IntPtr c_message) : base(c_message) { } + public override CloudStorageData GetCloudStorageData() { return Data; } + protected override CloudStorageData GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageData(msg); + return new CloudStorageData(obj); + } + + } + public class MessageWithCloudStorageMetadataUnderLocal : Message + { + public MessageWithCloudStorageMetadataUnderLocal(IntPtr c_message) : base(c_message) { } + public override CloudStorageMetadata GetCloudStorageMetadata() { return Data; } + protected override CloudStorageMetadata GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageMetadata(msg); + return new CloudStorageMetadata(obj); + } + + } + public class MessageWithCloudStorageMetadataList : Message + { + public MessageWithCloudStorageMetadataList(IntPtr c_message) : base(c_message) { } + public override CloudStorageMetadataList GetCloudStorageMetadataList() { return Data; } + protected override CloudStorageMetadataList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageMetadataArray(msg); + return new CloudStorageMetadataList(obj); + } + + } + public class MessageWithCloudStorageUpdateResponse : Message + { + public MessageWithCloudStorageUpdateResponse(IntPtr c_message) : base(c_message) { } + public override CloudStorageUpdateResponse GetCloudStorageUpdateResponse() { return Data; } + protected override CloudStorageUpdateResponse GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageUpdateResponse(msg); + return new CloudStorageUpdateResponse(obj); + } + + } + public class MessageWithInstalledApplicationList : Message + { + public MessageWithInstalledApplicationList(IntPtr c_message) : base(c_message) { } + public override InstalledApplicationList GetInstalledApplicationList() { return Data; } + protected override InstalledApplicationList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetInstalledApplicationArray(msg); + return new InstalledApplicationList(obj); + } + + } + public class MessageWithLaunchBlockFlowResult : Message + { + public MessageWithLaunchBlockFlowResult(IntPtr c_message) : base(c_message) { } + public override LaunchBlockFlowResult GetLaunchBlockFlowResult() { return Data; } + protected override LaunchBlockFlowResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLaunchBlockFlowResult(msg); + return new LaunchBlockFlowResult(obj); + } + + } + public class MessageWithLaunchFriendRequestFlowResult : Message + { + public MessageWithLaunchFriendRequestFlowResult(IntPtr c_message) : base(c_message) { } + public override LaunchFriendRequestFlowResult GetLaunchFriendRequestFlowResult() { return Data; } + protected override LaunchFriendRequestFlowResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLaunchFriendRequestFlowResult(msg); + return new LaunchFriendRequestFlowResult(obj); + } + + } + public class MessageWithLaunchUnblockFlowResult : Message + { + public MessageWithLaunchUnblockFlowResult(IntPtr c_message) : base(c_message) { } + public override LaunchUnblockFlowResult GetLaunchUnblockFlowResult() { return Data; } + protected override LaunchUnblockFlowResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLaunchUnblockFlowResult(msg); + return new LaunchUnblockFlowResult(obj); + } + + } + public class MessageWithLeaderboardEntryList : Message + { + public MessageWithLeaderboardEntryList(IntPtr c_message) : base(c_message) { } + public override LeaderboardEntryList GetLeaderboardEntryList() { return Data; } + protected override LeaderboardEntryList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLeaderboardEntryArray(msg); + return new LeaderboardEntryList(obj); + } + + } + public class MessageWithLinkedAccountList : Message + { + public MessageWithLinkedAccountList(IntPtr c_message) : base(c_message) { } + public override LinkedAccountList GetLinkedAccountList() { return Data; } + protected override LinkedAccountList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLinkedAccountArray(msg); + return new LinkedAccountList(obj); + } + + } + public class MessageWithLivestreamingApplicationStatus : Message + { + public MessageWithLivestreamingApplicationStatus(IntPtr c_message) : base(c_message) { } + public override LivestreamingApplicationStatus GetLivestreamingApplicationStatus() { return Data; } + protected override LivestreamingApplicationStatus GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLivestreamingApplicationStatus(msg); + return new LivestreamingApplicationStatus(obj); + } + + } + public class MessageWithLivestreamingStartResult : Message + { + public MessageWithLivestreamingStartResult(IntPtr c_message) : base(c_message) { } + public override LivestreamingStartResult GetLivestreamingStartResult() { return Data; } + protected override LivestreamingStartResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLivestreamingStartResult(msg); + return new LivestreamingStartResult(obj); + } + + } + public class MessageWithLivestreamingStatus : Message + { + public MessageWithLivestreamingStatus(IntPtr c_message) : base(c_message) { } + public override LivestreamingStatus GetLivestreamingStatus() { return Data; } + protected override LivestreamingStatus GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLivestreamingStatus(msg); + return new LivestreamingStatus(obj); + } + + } + public class MessageWithLivestreamingVideoStats : Message + { + public MessageWithLivestreamingVideoStats(IntPtr c_message) : base(c_message) { } + public override LivestreamingVideoStats GetLivestreamingVideoStats() { return Data; } + protected override LivestreamingVideoStats GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLivestreamingVideoStats(msg); + return new LivestreamingVideoStats(obj); + } + + } + public class MessageWithMatchmakingAdminSnapshot : Message + { + public MessageWithMatchmakingAdminSnapshot(IntPtr c_message) : base(c_message) { } + public override MatchmakingAdminSnapshot GetMatchmakingAdminSnapshot() { return Data; } + protected override MatchmakingAdminSnapshot GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingAdminSnapshot(msg); + return new MatchmakingAdminSnapshot(obj); + } + + } + public class MessageWithMatchmakingEnqueueResult : Message + { + public MessageWithMatchmakingEnqueueResult(IntPtr c_message) : base(c_message) { } + public override MatchmakingEnqueueResult GetMatchmakingEnqueueResult() { return Data; } + protected override MatchmakingEnqueueResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingEnqueueResult(msg); + return new MatchmakingEnqueueResult(obj); + } + + } + public class MessageWithMatchmakingEnqueueResultAndRoom : Message + { + public MessageWithMatchmakingEnqueueResultAndRoom(IntPtr c_message) : base(c_message) { } + public override MatchmakingEnqueueResultAndRoom GetMatchmakingEnqueueResultAndRoom() { return Data; } + protected override MatchmakingEnqueueResultAndRoom GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingEnqueueResultAndRoom(msg); + return new MatchmakingEnqueueResultAndRoom(obj); + } + + } + public class MessageWithMatchmakingStatsUnderMatchmakingStats : Message + { + public MessageWithMatchmakingStatsUnderMatchmakingStats(IntPtr c_message) : base(c_message) { } + public override MatchmakingStats GetMatchmakingStats() { return Data; } + protected override MatchmakingStats GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingStats(msg); + return new MatchmakingStats(obj); + } + + } + public class MessageWithOrgScopedID : Message + { + public MessageWithOrgScopedID(IntPtr c_message) : base(c_message) { } + public override OrgScopedID GetOrgScopedID() { return Data; } + protected override OrgScopedID GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetOrgScopedID(msg); + return new OrgScopedID(obj); + } + + } + public class MessageWithParty : Message + { + public MessageWithParty(IntPtr c_message) : base(c_message) { } + public override Party GetParty() { return Data; } + protected override Party GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetParty(msg); + return new Party(obj); + } + + } + public class MessageWithPartyUnderCurrentParty : Message + { + public MessageWithPartyUnderCurrentParty(IntPtr c_message) : base(c_message) { } + public override Party GetParty() { return Data; } + protected override Party GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetParty(msg); + return new Party(obj); + } + + } + public class MessageWithPartyID : Message + { + public MessageWithPartyID(IntPtr c_message) : base(c_message) { } + public override PartyID GetPartyID() { return Data; } + protected override PartyID GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPartyID(msg); + return new PartyID(obj); + } + + } + public class MessageWithPidList : Message + { + public MessageWithPidList(IntPtr c_message) : base(c_message) { } + public override PidList GetPidList() { return Data; } + protected override PidList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPidArray(msg); + return new PidList(obj); + } + + } + public class MessageWithProductList : Message + { + public MessageWithProductList(IntPtr c_message) : base(c_message) { } + public override ProductList GetProductList() { return Data; } + protected override ProductList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetProductArray(msg); + return new ProductList(obj); + } + + } + public class MessageWithPurchase : Message + { + public MessageWithPurchase(IntPtr c_message) : base(c_message) { } + public override Purchase GetPurchase() { return Data; } + protected override Purchase GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPurchase(msg); + return new Purchase(obj); + } + + } + public class MessageWithPurchaseList : Message + { + public MessageWithPurchaseList(IntPtr c_message) : base(c_message) { } + public override PurchaseList GetPurchaseList() { return Data; } + protected override PurchaseList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPurchaseArray(msg); + return new PurchaseList(obj); + } + + } + public class MessageWithRoom : Message + { + public MessageWithRoom(IntPtr c_message) : base(c_message) { } + public override Room GetRoom() { return Data; } + protected override Room GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoom(msg); + return new Room(obj); + } + + } + public class MessageWithRoomUnderCurrentRoom : Message + { + public MessageWithRoomUnderCurrentRoom(IntPtr c_message) : base(c_message) { } + public override Room GetRoom() { return Data; } + protected override Room GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoom(msg); + return new Room(obj); + } + + } + public class MessageWithRoomUnderViewerRoom : Message + { + public MessageWithRoomUnderViewerRoom(IntPtr c_message) : base(c_message) { } + public override Room GetRoom() { return Data; } + protected override Room GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoom(msg); + return new Room(obj); + } + + } + public class MessageWithRoomList : Message + { + public MessageWithRoomList(IntPtr c_message) : base(c_message) { } + public override RoomList GetRoomList() { return Data; } + protected override RoomList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoomArray(msg); + return new RoomList(obj); + } + + } + public class MessageWithRoomInviteNotification : Message + { + public MessageWithRoomInviteNotification(IntPtr c_message) : base(c_message) { } + public override RoomInviteNotification GetRoomInviteNotification() { return Data; } + protected override RoomInviteNotification GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoomInviteNotification(msg); + return new RoomInviteNotification(obj); + } + + } + public class MessageWithRoomInviteNotificationList : Message + { + public MessageWithRoomInviteNotificationList(IntPtr c_message) : base(c_message) { } + public override RoomInviteNotificationList GetRoomInviteNotificationList() { return Data; } + protected override RoomInviteNotificationList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoomInviteNotificationArray(msg); + return new RoomInviteNotificationList(obj); + } + + } + public class MessageWithSdkAccountList : Message + { + public MessageWithSdkAccountList(IntPtr c_message) : base(c_message) { } + public override SdkAccountList GetSdkAccountList() { return Data; } + protected override SdkAccountList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetSdkAccountArray(msg); + return new SdkAccountList(obj); + } + + } + public class MessageWithShareMediaResult : Message + { + public MessageWithShareMediaResult(IntPtr c_message) : base(c_message) { } + public override ShareMediaResult GetShareMediaResult() { return Data; } + protected override ShareMediaResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetShareMediaResult(msg); + return new ShareMediaResult(obj); + } + + } + public class MessageWithString : Message + { + public MessageWithString(IntPtr c_message) : base(c_message) { } + public override string GetString() { return Data; } + protected override string GetDataFromMessage(IntPtr c_message) + { + return CAPI.ovr_Message_GetString(c_message); + } + } + public class MessageWithSystemPermission : Message + { + public MessageWithSystemPermission(IntPtr c_message) : base(c_message) { } + public override SystemPermission GetSystemPermission() { return Data; } + protected override SystemPermission GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetSystemPermission(msg); + return new SystemPermission(obj); + } + + } + public class MessageWithSystemVoipState : Message + { + public MessageWithSystemVoipState(IntPtr c_message) : base(c_message) { } + public override SystemVoipState GetSystemVoipState() { return Data; } + protected override SystemVoipState GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetSystemVoipState(msg); + return new SystemVoipState(obj); + } + + } + public class MessageWithUser : Message + { + public MessageWithUser(IntPtr c_message) : base(c_message) { } + public override User GetUser() { return Data; } + protected override User GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUser(msg); + return new User(obj); + } + + } + public class MessageWithUserAndRoomList : Message + { + public MessageWithUserAndRoomList(IntPtr c_message) : base(c_message) { } + public override UserAndRoomList GetUserAndRoomList() { return Data; } + protected override UserAndRoomList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUserAndRoomArray(msg); + return new UserAndRoomList(obj); + } + + } + public class MessageWithUserList : Message + { + public MessageWithUserList(IntPtr c_message) : base(c_message) { } + public override UserList GetUserList() { return Data; } + protected override UserList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUserArray(msg); + return new UserList(obj); + } + + } + public class MessageWithUserProof : Message + { + public MessageWithUserProof(IntPtr c_message) : base(c_message) { } + public override UserProof GetUserProof() { return Data; } + protected override UserProof GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUserProof(msg); + return new UserProof(obj); + } + + } + public class MessageWithUserReportID : Message + { + public MessageWithUserReportID(IntPtr c_message) : base(c_message) { } + public override UserReportID GetUserReportID() { return Data; } + protected override UserReportID GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUserReportID(msg); + return new UserReportID(obj); + } + + } + + public class MessageWithNetworkingPeer : Message + { + public MessageWithNetworkingPeer(IntPtr c_message) : base(c_message) { } + public override NetworkingPeer GetNetworkingPeer() { return Data; } + protected override NetworkingPeer GetDataFromMessage(IntPtr c_message) + { + var peer = CAPI.ovr_Message_GetNetworkingPeer(c_message); + return new NetworkingPeer( + CAPI.ovr_NetworkingPeer_GetID(peer), + CAPI.ovr_NetworkingPeer_GetState(peer) + ); + } + } + + public class MessageWithPingResult : Message + { + public MessageWithPingResult(IntPtr c_message) : base(c_message) { } + public override PingResult GetPingResult() { return Data; } + protected override PingResult GetDataFromMessage(IntPtr c_message) + { + var ping = CAPI.ovr_Message_GetPingResult(c_message); + bool is_timeout = CAPI.ovr_PingResult_IsTimeout(ping); + return new PingResult( + CAPI.ovr_PingResult_GetID(ping), + is_timeout ? (UInt64?)null : CAPI.ovr_PingResult_GetPingTimeUsec(ping) + ); + } + } + + public class MessageWithLeaderboardDidUpdate : Message + { + public MessageWithLeaderboardDidUpdate(IntPtr c_message) : base(c_message) { } + public override bool GetLeaderboardDidUpdate() { return Data; } + protected override bool GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLeaderboardUpdateStatus(msg); + return CAPI.ovr_LeaderboardUpdateStatus_GetDidUpdate(obj); + } + } + + public class MessageWithMatchmakingNotification : Message + { + public MessageWithMatchmakingNotification(IntPtr c_message) : base(c_message) {} + public override Room GetRoom() { return Data; } + protected override Room GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoom(msg); + return new Room(obj); + } + } + + public class MessageWithMatchmakingBrowseResult : Message + { + public MessageWithMatchmakingBrowseResult(IntPtr c_message) : base(c_message) {} + + public override MatchmakingEnqueueResult GetMatchmakingEnqueueResult() { return Data.EnqueueResult; } + public override RoomList GetRoomList() { return Data.Rooms; } + + protected override MatchmakingBrowseResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingBrowseResult(msg); + return new MatchmakingBrowseResult(obj); + } + } + + public class MessageWithHttpTransferUpdate : Message + { + public MessageWithHttpTransferUpdate(IntPtr c_message) : base(c_message) {} + public override HttpTransferUpdate GetHttpTransferUpdate() { return Data; } + protected override HttpTransferUpdate GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetHttpTransferUpdate(msg); + return new HttpTransferUpdate(obj); + } + } + + public class MessageWithPlatformInitialize : Message + { + public MessageWithPlatformInitialize(IntPtr c_message) : base(c_message) {} + public override PlatformInitialize GetPlatformInitialize() { return Data; } + protected override PlatformInitialize GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPlatformInitialize(msg); + return new PlatformInitialize(obj); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Message.cs.meta b/Assets/Oculus/Platform/Scripts/Message.cs.meta new file mode 100644 index 0000000..373b71e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Message.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 09dafd74c8e70094d891a1ec896c3e95 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs b/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs new file mode 100644 index 0000000..6493d12 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs @@ -0,0 +1,62 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-voip/ +// +// NOTE for android developers: The existence of UnityEngine.Microphone causes Unity to insert the +// android.permission.RECORD_AUDIO permission into the AndroidManifest.xml generated at build time + +#if false +using UnityEngine; + +namespace Oculus.Platform +{ + + public class MicrophoneInput : IMicrophone + { + AudioClip microphoneClip; + int lastMicrophoneSample; + int micBufferSizeSamples; + + public MicrophoneInput() + { + int bufferLenSeconds = 1; //minimum size unity allows + int inputFreq = 48000; //this frequency is fixed throughout the voip system atm + microphoneClip = Microphone.Start(null, true, bufferLenSeconds, inputFreq); + micBufferSizeSamples = bufferLenSeconds * inputFreq; + } + + public void Start() + { + + } + + public void Stop() + { + } + + public float[] Update() + { + int pos = Microphone.GetPosition(null); + int copySize = 0; + if (pos < lastMicrophoneSample) + { + int endOfBufferSize = micBufferSizeSamples - lastMicrophoneSample; + copySize = endOfBufferSize + pos; + } + else + { + copySize = pos - lastMicrophoneSample; + } + + if (copySize == 0) { + return null; + } + + float[] samples = new float[copySize]; //TODO 10376403 - pool this + microphoneClip.GetData(samples, lastMicrophoneSample); + lastMicrophoneSample = pos; + return samples; + + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs.meta b/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs.meta new file mode 100644 index 0000000..45b92cc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2775d34a6e394754e897a9af26acdef3 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs b/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs new file mode 100644 index 0000000..99d551c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs @@ -0,0 +1,50 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-voip/ + +#if false +using UnityEngine; +using System; + +namespace Oculus.Platform +{ + public class MicrophoneInputNative : IMicrophone + { + IntPtr mic; + + int tempBufferSize = 960 * 10; + float[] tempBuffer; + + public MicrophoneInputNative() + { + mic = CAPI.ovr_Microphone_Create(); + CAPI.ovr_Microphone_Start(mic); + tempBuffer = new float[tempBufferSize]; + Debug.Log(mic); + } + + public float[] Update() + { + ulong readSize = (ulong)CAPI.ovr_Microphone_ReadData(mic, tempBuffer, (UIntPtr)tempBufferSize); + if (readSize > 0) + { + + float[] outBuffer = new float[readSize]; + Array.Copy(tempBuffer, outBuffer, (int)readSize); + return outBuffer; + } + return null; + } + + public void Start() + { + + } + + public void Stop() + { + CAPI.ovr_Microphone_Stop(mic); + CAPI.ovr_Microphone_Destroy(mic); + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs.meta b/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs.meta new file mode 100644 index 0000000..dcb4e7b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a5cd1f4154602cb48a4a554d20e6d40c +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models.meta b/Assets/Oculus/Platform/Scripts/Models.meta new file mode 100644 index 0000000..f5e8c3a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b26d68fa787d51b44af73c8351055681 +folderAsset: yes +timeCreated: 1520037586 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs b/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs new file mode 100644 index 0000000..0ffb1b1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AbuseReportRecording + { + public readonly string RecordingUuid; + + + public AbuseReportRecording(IntPtr o) + { + RecordingUuid = CAPI.ovr_AbuseReportRecording_GetRecordingUuid(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs.meta new file mode 100644 index 0000000..e414b2b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0c2b12af41eef9f4786416f70fc1959c +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs b/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs new file mode 100644 index 0000000..56d392e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs @@ -0,0 +1,40 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AchievementDefinition + { + public readonly AchievementType Type; + public readonly string Name; + public readonly uint BitfieldLength; + public readonly ulong Target; + + + public AchievementDefinition(IntPtr o) + { + Type = CAPI.ovr_AchievementDefinition_GetType(o); + Name = CAPI.ovr_AchievementDefinition_GetName(o); + BitfieldLength = CAPI.ovr_AchievementDefinition_GetBitfieldLength(o); + Target = CAPI.ovr_AchievementDefinition_GetTarget(o); + } + } + + public class AchievementDefinitionList : DeserializableList { + public AchievementDefinitionList(IntPtr a) { + var count = (int)CAPI.ovr_AchievementDefinitionArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new AchievementDefinition(CAPI.ovr_AchievementDefinitionArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_AchievementDefinitionArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs.meta new file mode 100644 index 0000000..4fbbbb4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7d2e372fad07698479f27fd72c13489e +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs b/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs new file mode 100644 index 0000000..0163ac2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs @@ -0,0 +1,42 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AchievementProgress + { + public readonly string Bitfield; + public readonly ulong Count; + public readonly bool IsUnlocked; + public readonly string Name; + public readonly DateTime UnlockTime; + + + public AchievementProgress(IntPtr o) + { + Bitfield = CAPI.ovr_AchievementProgress_GetBitfield(o); + Count = CAPI.ovr_AchievementProgress_GetCount(o); + IsUnlocked = CAPI.ovr_AchievementProgress_GetIsUnlocked(o); + Name = CAPI.ovr_AchievementProgress_GetName(o); + UnlockTime = CAPI.ovr_AchievementProgress_GetUnlockTime(o); + } + } + + public class AchievementProgressList : DeserializableList { + public AchievementProgressList(IntPtr a) { + var count = (int)CAPI.ovr_AchievementProgressArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new AchievementProgress(CAPI.ovr_AchievementProgressArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_AchievementProgressArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs.meta new file mode 100644 index 0000000..614d58e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8d4a4ff6827774599abd0efe12f341fa +timeCreated: 1462489664 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs b/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs new file mode 100644 index 0000000..50c1865 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AchievementUpdate + { + public readonly bool JustUnlocked; + public readonly string Name; + + + public AchievementUpdate(IntPtr o) + { + JustUnlocked = CAPI.ovr_AchievementUpdate_GetJustUnlocked(o); + Name = CAPI.ovr_AchievementUpdate_GetName(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs.meta new file mode 100644 index 0000000..cb793ae --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a49cc0ca1bcdd99409f7658b336e2d06 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs b/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs new file mode 100644 index 0000000..c386939 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class ApplicationVersion + { + public readonly int CurrentCode; + public readonly string CurrentName; + public readonly int LatestCode; + public readonly string LatestName; + + + public ApplicationVersion(IntPtr o) + { + CurrentCode = CAPI.ovr_ApplicationVersion_GetCurrentCode(o); + CurrentName = CAPI.ovr_ApplicationVersion_GetCurrentName(o); + LatestCode = CAPI.ovr_ApplicationVersion_GetLatestCode(o); + LatestName = CAPI.ovr_ApplicationVersion_GetLatestName(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs.meta b/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs.meta new file mode 100644 index 0000000..3a72cf7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b5b714bc152876d4eaa2f638d2927cd8 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs b/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs new file mode 100644 index 0000000..6142396 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs @@ -0,0 +1,56 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetDetails + { + public readonly UInt64 AssetId; + public readonly string AssetType; + public readonly string DownloadStatus; + public readonly string Filepath; + public readonly string IapStatus; + // May be null. Check before using. + public readonly LanguagePackInfo LanguageOptional; + [Obsolete("Deprecated in favor of LanguageOptional")] + public readonly LanguagePackInfo Language; + + + public AssetDetails(IntPtr o) + { + AssetId = CAPI.ovr_AssetDetails_GetAssetId(o); + AssetType = CAPI.ovr_AssetDetails_GetAssetType(o); + DownloadStatus = CAPI.ovr_AssetDetails_GetDownloadStatus(o); + Filepath = CAPI.ovr_AssetDetails_GetFilepath(o); + IapStatus = CAPI.ovr_AssetDetails_GetIapStatus(o); + { + var pointer = CAPI.ovr_AssetDetails_GetLanguage(o); + Language = new LanguagePackInfo(pointer); + if (pointer == IntPtr.Zero) { + LanguageOptional = null; + } else { + LanguageOptional = Language; + } + } + } + } + + public class AssetDetailsList : DeserializableList { + public AssetDetailsList(IntPtr a) { + var count = (int)CAPI.ovr_AssetDetailsArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new AssetDetails(CAPI.ovr_AssetDetailsArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs.meta new file mode 100644 index 0000000..e0017d8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 77b2c21c8a5705c4f95aa9a8507a3541 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs b/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs new file mode 100644 index 0000000..c0e4df7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetFileDeleteResult + { + public readonly UInt64 AssetFileId; + public readonly UInt64 AssetId; + public readonly string Filepath; + public readonly bool Success; + + + public AssetFileDeleteResult(IntPtr o) + { + AssetFileId = CAPI.ovr_AssetFileDeleteResult_GetAssetFileId(o); + AssetId = CAPI.ovr_AssetFileDeleteResult_GetAssetId(o); + Filepath = CAPI.ovr_AssetFileDeleteResult_GetFilepath(o); + Success = CAPI.ovr_AssetFileDeleteResult_GetSuccess(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs.meta new file mode 100644 index 0000000..4ae7c5c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a64ebca65bbe4334394aa3648ff7733f +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs new file mode 100644 index 0000000..60e3de0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetFileDownloadCancelResult + { + public readonly UInt64 AssetFileId; + public readonly UInt64 AssetId; + public readonly string Filepath; + public readonly bool Success; + + + public AssetFileDownloadCancelResult(IntPtr o) + { + AssetFileId = CAPI.ovr_AssetFileDownloadCancelResult_GetAssetFileId(o); + AssetId = CAPI.ovr_AssetFileDownloadCancelResult_GetAssetId(o); + Filepath = CAPI.ovr_AssetFileDownloadCancelResult_GetFilepath(o); + Success = CAPI.ovr_AssetFileDownloadCancelResult_GetSuccess(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs.meta new file mode 100644 index 0000000..c965089 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 80090c9e4db0f2a46bd1ff95e4c6407f +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs new file mode 100644 index 0000000..bcc45ba --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetFileDownloadResult + { + public readonly UInt64 AssetId; + public readonly string Filepath; + + + public AssetFileDownloadResult(IntPtr o) + { + AssetId = CAPI.ovr_AssetFileDownloadResult_GetAssetId(o); + Filepath = CAPI.ovr_AssetFileDownloadResult_GetFilepath(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs.meta new file mode 100644 index 0000000..05df7cf --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0bfd5c2464df297499ad81e22be1e7b1 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs new file mode 100644 index 0000000..2c1bfd0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetFileDownloadUpdate + { + public readonly UInt64 AssetFileId; + public readonly UInt64 AssetId; + public readonly uint BytesTotal; + public readonly int BytesTransferred; + public readonly bool Completed; + + + public AssetFileDownloadUpdate(IntPtr o) + { + AssetFileId = CAPI.ovr_AssetFileDownloadUpdate_GetAssetFileId(o); + AssetId = CAPI.ovr_AssetFileDownloadUpdate_GetAssetId(o); + BytesTotal = CAPI.ovr_AssetFileDownloadUpdate_GetBytesTotal(o); + BytesTransferred = CAPI.ovr_AssetFileDownloadUpdate_GetBytesTransferred(o); + Completed = CAPI.ovr_AssetFileDownloadUpdate_GetCompleted(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs.meta new file mode 100644 index 0000000..a678da2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f219cac005ed9fc4b87b7cdb7285f23b +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs b/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs new file mode 100644 index 0000000..62745d9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CloudStorageConflictMetadata + { + public readonly CloudStorageMetadata Local; + public readonly CloudStorageMetadata Remote; + + + public CloudStorageConflictMetadata(IntPtr o) + { + Local = new CloudStorageMetadata(CAPI.ovr_CloudStorageConflictMetadata_GetLocal(o)); + Remote = new CloudStorageMetadata(CAPI.ovr_CloudStorageConflictMetadata_GetRemote(o)); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs.meta new file mode 100644 index 0000000..4056291 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4529c5ae12f84c44899a5ca599b6ecd +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs b/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs new file mode 100644 index 0000000..3ef7e67 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CloudStorageData + { + public readonly string Bucket; + public readonly byte[] Data; + public readonly uint DataSize; + public readonly string Key; + + + public CloudStorageData(IntPtr o) + { + Bucket = CAPI.ovr_CloudStorageData_GetBucket(o); + Data = CAPI.ovr_CloudStorageData_GetData(o); + DataSize = CAPI.ovr_CloudStorageData_GetDataSize(o); + Key = CAPI.ovr_CloudStorageData_GetKey(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs.meta new file mode 100644 index 0000000..128b23f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0e17b833610a92c4bbf4b67edb7ec116 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs b/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs new file mode 100644 index 0000000..56fd444 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs @@ -0,0 +1,48 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CloudStorageMetadata + { + public readonly string Bucket; + public readonly long Counter; + public readonly uint DataSize; + public readonly string ExtraData; + public readonly string Key; + public readonly ulong SaveTime; + public readonly CloudStorageDataStatus Status; + public readonly string VersionHandle; + + + public CloudStorageMetadata(IntPtr o) + { + Bucket = CAPI.ovr_CloudStorageMetadata_GetBucket(o); + Counter = CAPI.ovr_CloudStorageMetadata_GetCounter(o); + DataSize = CAPI.ovr_CloudStorageMetadata_GetDataSize(o); + ExtraData = CAPI.ovr_CloudStorageMetadata_GetExtraData(o); + Key = CAPI.ovr_CloudStorageMetadata_GetKey(o); + SaveTime = CAPI.ovr_CloudStorageMetadata_GetSaveTime(o); + Status = CAPI.ovr_CloudStorageMetadata_GetStatus(o); + VersionHandle = CAPI.ovr_CloudStorageMetadata_GetVersionHandle(o); + } + } + + public class CloudStorageMetadataList : DeserializableList { + public CloudStorageMetadataList(IntPtr a) { + var count = (int)CAPI.ovr_CloudStorageMetadataArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new CloudStorageMetadata(CAPI.ovr_CloudStorageMetadataArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_CloudStorageMetadataArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs.meta new file mode 100644 index 0000000..81c0077 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1a6ff0d9eb067d74e87a166ab86cc0dd +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs b/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs new file mode 100644 index 0000000..395cf35 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CloudStorageUpdateResponse + { + public readonly string Bucket; + public readonly string Key; + public readonly CloudStorageUpdateStatus Status; + public readonly string VersionHandle; + + + public CloudStorageUpdateResponse(IntPtr o) + { + Bucket = CAPI.ovr_CloudStorageUpdateResponse_GetBucket(o); + Key = CAPI.ovr_CloudStorageUpdateResponse_GetKey(o); + Status = CAPI.ovr_CloudStorageUpdateResponse_GetStatus(o); + VersionHandle = CAPI.ovr_CloudStorageUpdateResponse_GetVersionHandle(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs.meta new file mode 100644 index 0000000..1d23f8b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f75c382fd9dda5b4b90d083821a4c4ab +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs b/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs new file mode 100644 index 0000000..50ad5af --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs @@ -0,0 +1,54 @@ +namespace Oculus.Platform.Models +{ + using UnityEngine; + using System.Collections; + using System.Collections.Generic; + using Oculus.Platform.Models; + + public class DeserializableList : IList + { + + //IList + public int Count { get {return _Data.Count;} } + bool ICollection.IsReadOnly { get {return ((IList)_Data).IsReadOnly;} } //if you insist in getting it... + public int IndexOf(T obj) {return _Data.IndexOf(obj);} + public T this[int index] { get{return _Data[index];} set{_Data[index] = value;} } + + public void Add(T item) {_Data.Add(item);} + public void Clear() {_Data.Clear();} + public bool Contains(T item) {return _Data.Contains(item);} + public void CopyTo(T[] array, int arrayIndex) {_Data.CopyTo(array, arrayIndex);} + public IEnumerator GetEnumerator() {return _Data.GetEnumerator();} + public void Insert(int index, T item) {_Data.Insert(index, item);} + public bool Remove(T item) {return _Data.Remove(item);} + public void RemoveAt(int index) {_Data.RemoveAt(index);} + + // taken from examples here: https://msdn.microsoft.com/en-us/library/s793z9y2(v=vs.110).aspx + private IEnumerator GetEnumerator1() + { + return this.GetEnumerator(); + } + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator1(); + } + + // Internals and getters + + // Seems like Obsolete properties are broken in this version of Mono. + // Anyway, don't use this. + [System.Obsolete("Use IList interface on the DeserializableList object instead.", false)] + public List Data { + get {return _Data;} + } + + protected List _Data; + protected string _NextUrl; + protected string _PreviousUrl; + + public bool HasNextPage { get { return !System.String.IsNullOrEmpty(NextUrl); } } + public bool HasPreviousPage { get { return !System.String.IsNullOrEmpty(PreviousUrl); } } + public string NextUrl { get { return _NextUrl; } } + public string PreviousUrl { get { return _PreviousUrl; } } + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs.meta b/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs.meta new file mode 100644 index 0000000..9cbdbdf --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cd282a12ba188d842b81149d5b787daf +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Error.cs b/Assets/Oculus/Platform/Scripts/Models/Error.cs new file mode 100644 index 0000000..1e79bae --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Error.cs @@ -0,0 +1,21 @@ +namespace Oculus.Platform.Models +{ + using UnityEngine; + using System; + using System.Collections; + using System.Collections.Generic; + + public class Error + { + public Error(int code, string message, int httpCode) + { + Message = message; + Code = code; + HttpCode = httpCode; + } + + public readonly int Code; + public readonly int HttpCode; + public readonly string Message; + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Error.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Error.cs.meta new file mode 100644 index 0000000..a5c409c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Error.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af96c3f14f761724db9f93a693fbad2e +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs b/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs new file mode 100644 index 0000000..4194862 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs @@ -0,0 +1,28 @@ +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Runtime.InteropServices; + using Oculus.Platform.Models; + using UnityEngine; + + public class HttpTransferUpdate + { + public readonly UInt64 ID; + public readonly byte[] Payload; + public readonly bool IsCompleted; + + public HttpTransferUpdate(IntPtr o) + { + ID = CAPI.ovr_HttpTransferUpdate_GetID(o); + IsCompleted = CAPI.ovr_HttpTransferUpdate_IsCompleted(o); + + long size = (long) CAPI.ovr_HttpTransferUpdate_GetSize(o); + + Payload = new byte[size]; + Marshal.Copy(CAPI.ovr_Packet_GetBytes(o), Payload, 0, (int) size); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs.meta b/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs.meta new file mode 100644 index 0000000..9efd4e4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcab648a59429684a9860794d256d230 +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs b/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs new file mode 100644 index 0000000..4ca2934 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs @@ -0,0 +1,41 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class InstalledApplication + { + public readonly string ApplicationId; + public readonly string PackageName; + public readonly string Status; + public readonly int VersionCode; + public readonly string VersionName; + + + public InstalledApplication(IntPtr o) + { + ApplicationId = CAPI.ovr_InstalledApplication_GetApplicationId(o); + PackageName = CAPI.ovr_InstalledApplication_GetPackageName(o); + Status = CAPI.ovr_InstalledApplication_GetStatus(o); + VersionCode = CAPI.ovr_InstalledApplication_GetVersionCode(o); + VersionName = CAPI.ovr_InstalledApplication_GetVersionName(o); + } + } + + public class InstalledApplicationList : DeserializableList { + public InstalledApplicationList(IntPtr a) { + var count = (int)CAPI.ovr_InstalledApplicationArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new InstalledApplication(CAPI.ovr_InstalledApplicationArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs.meta b/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs.meta new file mode 100644 index 0000000..0b56cca --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1cb03b282dd6fc440830b2c7224a1135 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs b/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs new file mode 100644 index 0000000..18b98c6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs @@ -0,0 +1,26 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LanguagePackInfo + { + public readonly string EnglishName; + public readonly string NativeName; + public readonly string Tag; + + + public LanguagePackInfo(IntPtr o) + { + EnglishName = CAPI.ovr_LanguagePackInfo_GetEnglishName(o); + NativeName = CAPI.ovr_LanguagePackInfo_GetNativeName(o); + Tag = CAPI.ovr_LanguagePackInfo_GetTag(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs.meta new file mode 100644 index 0000000..3137f9f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2d77f72bf241d8f48b3570ac0c0cab4b +timeCreated: 1533910661 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs new file mode 100644 index 0000000..825ae94 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchBlockFlowResult + { + public readonly bool DidBlock; + public readonly bool DidCancel; + + + public LaunchBlockFlowResult(IntPtr o) + { + DidBlock = CAPI.ovr_LaunchBlockFlowResult_GetDidBlock(o); + DidCancel = CAPI.ovr_LaunchBlockFlowResult_GetDidCancel(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs.meta new file mode 100644 index 0000000..c177f1f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 33b0e76fc377f0c47801c3e36866ef66 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs new file mode 100644 index 0000000..0749891 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs @@ -0,0 +1,43 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchDetails + { + public readonly string DeeplinkMessage; + public readonly string LaunchSource; + public readonly LaunchType LaunchType; + public readonly UInt64 RoomID; + // May be null. Check before using. + public readonly UserList UsersOptional; + [Obsolete("Deprecated in favor of UsersOptional")] + public readonly UserList Users; + + + public LaunchDetails(IntPtr o) + { + DeeplinkMessage = CAPI.ovr_LaunchDetails_GetDeeplinkMessage(o); + LaunchSource = CAPI.ovr_LaunchDetails_GetLaunchSource(o); + LaunchType = CAPI.ovr_LaunchDetails_GetLaunchType(o); + RoomID = CAPI.ovr_LaunchDetails_GetRoomID(o); + { + var pointer = CAPI.ovr_LaunchDetails_GetUsers(o); + Users = new UserList(pointer); + if (pointer == IntPtr.Zero) { + UsersOptional = null; + } else { + UsersOptional = Users; + } + } + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs.meta new file mode 100644 index 0000000..d0a5cf7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 03ab56c36f18cf14fbeea9ce668871a7 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs new file mode 100644 index 0000000..7f8eea8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchFriendRequestFlowResult + { + public readonly bool DidCancel; + public readonly bool DidSendRequest; + + + public LaunchFriendRequestFlowResult(IntPtr o) + { + DidCancel = CAPI.ovr_LaunchFriendRequestFlowResult_GetDidCancel(o); + DidSendRequest = CAPI.ovr_LaunchFriendRequestFlowResult_GetDidSendRequest(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs.meta new file mode 100644 index 0000000..cd8901b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4bb9ba5d0bd6a6c44917eead28ad71f3 +timeCreated: 1533910661 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs new file mode 100644 index 0000000..fdb2d11 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchUnblockFlowResult + { + public readonly bool DidCancel; + public readonly bool DidUnblock; + + + public LaunchUnblockFlowResult(IntPtr o) + { + DidCancel = CAPI.ovr_LaunchUnblockFlowResult_GetDidCancel(o); + DidUnblock = CAPI.ovr_LaunchUnblockFlowResult_GetDidUnblock(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs.meta new file mode 100644 index 0000000..c3fecc0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6eeff2263c546f042946cdc4bcf72f98 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs b/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs new file mode 100644 index 0000000..fb19142 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs @@ -0,0 +1,45 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LeaderboardEntry + { + public readonly byte[] ExtraData; + public readonly int Rank; + public readonly long Score; + public readonly DateTime Timestamp; + public readonly User User; + + + public LeaderboardEntry(IntPtr o) + { + ExtraData = CAPI.ovr_LeaderboardEntry_GetExtraData(o); + Rank = CAPI.ovr_LeaderboardEntry_GetRank(o); + Score = CAPI.ovr_LeaderboardEntry_GetScore(o); + Timestamp = CAPI.ovr_LeaderboardEntry_GetTimestamp(o); + User = new User(CAPI.ovr_LeaderboardEntry_GetUser(o)); + } + } + + public class LeaderboardEntryList : DeserializableList { + public LeaderboardEntryList(IntPtr a) { + var count = (int)CAPI.ovr_LeaderboardEntryArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new LeaderboardEntry(CAPI.ovr_LeaderboardEntryArray_GetElement(a, (UIntPtr)i))); + } + + TotalCount = CAPI.ovr_LeaderboardEntryArray_GetTotalCount(a); + _PreviousUrl = CAPI.ovr_LeaderboardEntryArray_GetPreviousUrl(a); + _NextUrl = CAPI.ovr_LeaderboardEntryArray_GetNextUrl(a); + } + + public readonly ulong TotalCount; + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs.meta new file mode 100644 index 0000000..13a7a35 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c6c8aaec7b9e7f7438413bbc91a4fe0b +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs b/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs new file mode 100644 index 0000000..5c2cf86 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs @@ -0,0 +1,37 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LinkedAccount + { + public readonly string AccessToken; + public readonly ServiceProvider ServiceProvider; + public readonly string UserId; + + + public LinkedAccount(IntPtr o) + { + AccessToken = CAPI.ovr_LinkedAccount_GetAccessToken(o); + ServiceProvider = CAPI.ovr_LinkedAccount_GetServiceProvider(o); + UserId = CAPI.ovr_LinkedAccount_GetUserId(o); + } + } + + public class LinkedAccountList : DeserializableList { + public LinkedAccountList(IntPtr a) { + var count = (int)CAPI.ovr_LinkedAccountArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new LinkedAccount(CAPI.ovr_LinkedAccountArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs.meta new file mode 100644 index 0000000..a035b51 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e353eb0df55137e43a2bf9e54864c76f +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs b/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs new file mode 100644 index 0000000..bdd47e5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LivestreamingApplicationStatus + { + public readonly bool StreamingEnabled; + + + public LivestreamingApplicationStatus(IntPtr o) + { + StreamingEnabled = CAPI.ovr_LivestreamingApplicationStatus_GetStreamingEnabled(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs.meta new file mode 100644 index 0000000..31d38d1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 706d607bb299def4d9e99e5fe89d0d0d +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs new file mode 100644 index 0000000..addb929 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LivestreamingStartResult + { + public readonly LivestreamingStartStatus StreamingResult; + + + public LivestreamingStartResult(IntPtr o) + { + StreamingResult = CAPI.ovr_LivestreamingStartResult_GetStreamingResult(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs.meta new file mode 100644 index 0000000..75dd9a2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 18a920985ce51294787433880f509191 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs new file mode 100644 index 0000000..cf2e30d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LivestreamingStatus + { + public readonly bool CommentsVisible; + public readonly bool IsPaused; + public readonly bool LivestreamingEnabled; + public readonly int LivestreamingType; + public readonly bool MicEnabled; + + + public LivestreamingStatus(IntPtr o) + { + CommentsVisible = CAPI.ovr_LivestreamingStatus_GetCommentsVisible(o); + IsPaused = CAPI.ovr_LivestreamingStatus_GetIsPaused(o); + LivestreamingEnabled = CAPI.ovr_LivestreamingStatus_GetLivestreamingEnabled(o); + LivestreamingType = CAPI.ovr_LivestreamingStatus_GetLivestreamingType(o); + MicEnabled = CAPI.ovr_LivestreamingStatus_GetMicEnabled(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs.meta new file mode 100644 index 0000000..82964d3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1d2064e758a11864cade929d95d92ebe +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs b/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs new file mode 100644 index 0000000..dc84f63 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs @@ -0,0 +1,26 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LivestreamingVideoStats + { + public readonly int CommentCount; + public readonly int ReactionCount; + public readonly string TotalViews; + + + public LivestreamingVideoStats(IntPtr o) + { + CommentCount = CAPI.ovr_LivestreamingVideoStats_GetCommentCount(o); + ReactionCount = CAPI.ovr_LivestreamingVideoStats_GetReactionCount(o); + TotalViews = CAPI.ovr_LivestreamingVideoStats_GetTotalViews(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs.meta new file mode 100644 index 0000000..0a3e21d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3f7d781612e6d584782a9c0275cb1331 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs new file mode 100644 index 0000000..969a6bc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingAdminSnapshot + { + public readonly MatchmakingAdminSnapshotCandidateList Candidates; + public readonly double MyCurrentThreshold; + + + public MatchmakingAdminSnapshot(IntPtr o) + { + Candidates = new MatchmakingAdminSnapshotCandidateList(CAPI.ovr_MatchmakingAdminSnapshot_GetCandidates(o)); + MyCurrentThreshold = CAPI.ovr_MatchmakingAdminSnapshot_GetMyCurrentThreshold(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs.meta new file mode 100644 index 0000000..2b703e1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 13c216d6d7d951e4c8e4e74e380d6bb5 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs new file mode 100644 index 0000000..efddced --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs @@ -0,0 +1,41 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingAdminSnapshotCandidate + { + public readonly bool CanMatch; + public readonly double MyTotalScore; + public readonly double TheirCurrentThreshold; + public readonly double TheirTotalScore; + public readonly string TraceId; + + + public MatchmakingAdminSnapshotCandidate(IntPtr o) + { + CanMatch = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetCanMatch(o); + MyTotalScore = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetMyTotalScore(o); + TheirCurrentThreshold = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetTheirCurrentThreshold(o); + TheirTotalScore = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetTheirTotalScore(o); + TraceId = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetTraceId(o); + } + } + + public class MatchmakingAdminSnapshotCandidateList : DeserializableList { + public MatchmakingAdminSnapshotCandidateList(IntPtr a) { + var count = (int)CAPI.ovr_MatchmakingAdminSnapshotCandidateArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new MatchmakingAdminSnapshotCandidate(CAPI.ovr_MatchmakingAdminSnapshotCandidateArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs.meta new file mode 100644 index 0000000..d2c2253 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 02b97f80c9b7ef846baac4c18b572b6e +timeCreated: 1523486796 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs new file mode 100644 index 0000000..f159539 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingBrowseResult + { + public readonly MatchmakingEnqueueResult EnqueueResult; + public readonly RoomList Rooms; + + + public MatchmakingBrowseResult(IntPtr o) + { + EnqueueResult = new MatchmakingEnqueueResult(CAPI.ovr_MatchmakingBrowseResult_GetEnqueueResult(o)); + Rooms = new RoomList(CAPI.ovr_MatchmakingBrowseResult_GetRooms(o)); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs.meta new file mode 100644 index 0000000..2638bb8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5802e9ca200ef2b42b6ecaad0ca71f6f +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs new file mode 100644 index 0000000..545dff7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs @@ -0,0 +1,47 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingEnqueueResult + { + // May be null. Check before using. + public readonly MatchmakingAdminSnapshot AdminSnapshotOptional; + [Obsolete("Deprecated in favor of AdminSnapshotOptional")] + public readonly MatchmakingAdminSnapshot AdminSnapshot; + public readonly uint AverageWait; + public readonly uint MatchesInLastHourCount; + public readonly uint MaxExpectedWait; + public readonly string Pool; + public readonly uint RecentMatchPercentage; + public readonly string RequestHash; + + + public MatchmakingEnqueueResult(IntPtr o) + { + { + var pointer = CAPI.ovr_MatchmakingEnqueueResult_GetAdminSnapshot(o); + AdminSnapshot = new MatchmakingAdminSnapshot(pointer); + if (pointer == IntPtr.Zero) { + AdminSnapshotOptional = null; + } else { + AdminSnapshotOptional = AdminSnapshot; + } + } + AverageWait = CAPI.ovr_MatchmakingEnqueueResult_GetAverageWait(o); + MatchesInLastHourCount = CAPI.ovr_MatchmakingEnqueueResult_GetMatchesInLastHourCount(o); + MaxExpectedWait = CAPI.ovr_MatchmakingEnqueueResult_GetMaxExpectedWait(o); + Pool = CAPI.ovr_MatchmakingEnqueueResult_GetPool(o); + RecentMatchPercentage = CAPI.ovr_MatchmakingEnqueueResult_GetRecentMatchPercentage(o); + RequestHash = CAPI.ovr_MatchmakingEnqueueResult_GetRequestHash(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs.meta new file mode 100644 index 0000000..7623db6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5635c7d33a0525448a73c31a900fcb2a +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs new file mode 100644 index 0000000..0679b9e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingEnqueueResultAndRoom + { + public readonly MatchmakingEnqueueResult MatchmakingEnqueueResult; + public readonly Room Room; + + + public MatchmakingEnqueueResultAndRoom(IntPtr o) + { + MatchmakingEnqueueResult = new MatchmakingEnqueueResult(CAPI.ovr_MatchmakingEnqueueResultAndRoom_GetMatchmakingEnqueueResult(o)); + Room = new Room(CAPI.ovr_MatchmakingEnqueueResultAndRoom_GetRoom(o)); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs.meta new file mode 100644 index 0000000..1855574 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 27627f3a1bc9da84d82880eb12ab2753 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs new file mode 100644 index 0000000..ea13ef3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs @@ -0,0 +1,48 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingEnqueuedUser + { + public readonly Dictionary CustomData; + // May be null. Check before using. + public readonly User UserOptional; + [Obsolete("Deprecated in favor of UserOptional")] + public readonly User User; + + + public MatchmakingEnqueuedUser(IntPtr o) + { + CustomData = CAPI.DataStoreFromNative(CAPI.ovr_MatchmakingEnqueuedUser_GetCustomData(o)); + { + var pointer = CAPI.ovr_MatchmakingEnqueuedUser_GetUser(o); + User = new User(pointer); + if (pointer == IntPtr.Zero) { + UserOptional = null; + } else { + UserOptional = User; + } + } + } + } + + public class MatchmakingEnqueuedUserList : DeserializableList { + public MatchmakingEnqueuedUserList(IntPtr a) { + var count = (int)CAPI.ovr_MatchmakingEnqueuedUserArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new MatchmakingEnqueuedUser(CAPI.ovr_MatchmakingEnqueuedUserArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs.meta new file mode 100644 index 0000000..441ea7c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e91e0cd389745ab47bb862cb9fe2298b +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs new file mode 100644 index 0000000..edf4b33 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingStats + { + public readonly uint DrawCount; + public readonly uint LossCount; + public readonly uint SkillLevel; + public readonly uint WinCount; + + + public MatchmakingStats(IntPtr o) + { + DrawCount = CAPI.ovr_MatchmakingStats_GetDrawCount(o); + LossCount = CAPI.ovr_MatchmakingStats_GetLossCount(o); + SkillLevel = CAPI.ovr_MatchmakingStats_GetSkillLevel(o); + WinCount = CAPI.ovr_MatchmakingStats_GetWinCount(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs.meta new file mode 100644 index 0000000..7be1a7c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2530879c952eeb340a395ad908e3d20a +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs b/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs new file mode 100644 index 0000000..b0e3c85 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs @@ -0,0 +1,17 @@ +namespace Oculus.Platform.Models +{ + using UnityEngine; + using System; + using System.ComponentModel; + + public class NetworkingPeer + { + public NetworkingPeer(UInt64 id, PeerConnectionState state) { + ID = id; + State = state; + } + + public UInt64 ID { get; private set; } + public PeerConnectionState State { get; private set; } + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs.meta b/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs.meta new file mode 100644 index 0000000..837c0b4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88e2e0a11ed7e054da26c78d6bd1283f +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs b/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs new file mode 100644 index 0000000..4c795d5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class OrgScopedID + { + public readonly UInt64 ID; + + + public OrgScopedID(IntPtr o) + { + ID = CAPI.ovr_OrgScopedID_GetID(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs.meta b/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs.meta new file mode 100644 index 0000000..f47e452 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cb83ca4346878f54e9edb14cbfb92dad +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Party.cs b/Assets/Oculus/Platform/Scripts/Models/Party.cs new file mode 100644 index 0000000..646be5a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Party.cs @@ -0,0 +1,76 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Party + { + public readonly UInt64 ID; + // May be null. Check before using. + public readonly UserList InvitedUsersOptional; + [Obsolete("Deprecated in favor of InvitedUsersOptional")] + public readonly UserList InvitedUsers; + // May be null. Check before using. + public readonly User LeaderOptional; + [Obsolete("Deprecated in favor of LeaderOptional")] + public readonly User Leader; + // May be null. Check before using. + public readonly Room RoomOptional; + [Obsolete("Deprecated in favor of RoomOptional")] + public readonly Room Room; + // May be null. Check before using. + public readonly UserList UsersOptional; + [Obsolete("Deprecated in favor of UsersOptional")] + public readonly UserList Users; + + + public Party(IntPtr o) + { + ID = CAPI.ovr_Party_GetID(o); + { + var pointer = CAPI.ovr_Party_GetInvitedUsers(o); + InvitedUsers = new UserList(pointer); + if (pointer == IntPtr.Zero) { + InvitedUsersOptional = null; + } else { + InvitedUsersOptional = InvitedUsers; + } + } + { + var pointer = CAPI.ovr_Party_GetLeader(o); + Leader = new User(pointer); + if (pointer == IntPtr.Zero) { + LeaderOptional = null; + } else { + LeaderOptional = Leader; + } + } + { + var pointer = CAPI.ovr_Party_GetRoom(o); + Room = new Room(pointer); + if (pointer == IntPtr.Zero) { + RoomOptional = null; + } else { + RoomOptional = Room; + } + } + { + var pointer = CAPI.ovr_Party_GetUsers(o); + Users = new UserList(pointer); + if (pointer == IntPtr.Zero) { + UsersOptional = null; + } else { + UsersOptional = Users; + } + } + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Party.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Party.cs.meta new file mode 100644 index 0000000..2119d2f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Party.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 75e7bda4c90b91a4fb8a49cff91522da +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/PartyID.cs b/Assets/Oculus/Platform/Scripts/Models/PartyID.cs new file mode 100644 index 0000000..baa85d7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PartyID.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class PartyID + { + public readonly UInt64 ID; + + + public PartyID(IntPtr o) + { + ID = CAPI.ovr_PartyID_GetID(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/PartyID.cs.meta b/Assets/Oculus/Platform/Scripts/Models/PartyID.cs.meta new file mode 100644 index 0000000..ebe54b6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PartyID.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3a95381b7ca8c0c4b80b5cd5bd00b203 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Pid.cs b/Assets/Oculus/Platform/Scripts/Models/Pid.cs new file mode 100644 index 0000000..d4b8595 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Pid.cs @@ -0,0 +1,33 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Pid + { + public readonly string Id; + + + public Pid(IntPtr o) + { + Id = CAPI.ovr_Pid_GetId(o); + } + } + + public class PidList : DeserializableList { + public PidList(IntPtr a) { + var count = (int)CAPI.ovr_PidArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Pid(CAPI.ovr_PidArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Pid.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Pid.cs.meta new file mode 100644 index 0000000..e134ed0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Pid.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f5a809bffe673614799d0d8d63f3dd3f +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/PingResult.cs b/Assets/Oculus/Platform/Scripts/Models/PingResult.cs new file mode 100644 index 0000000..2e18251 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PingResult.cs @@ -0,0 +1,28 @@ +namespace Oculus.Platform.Models +{ + using UnityEngine; + using System; + using System.ComponentModel; + + public class PingResult + { + public PingResult(UInt64 id, UInt64? pingTimeUsec) { + this.ID = id; + this.pingTimeUsec = pingTimeUsec; + } + + public UInt64 ID { get; private set; } + public UInt64 PingTimeUsec { + get { + return pingTimeUsec.HasValue ? pingTimeUsec.Value : 0; + } + } + public bool IsTimeout { + get { + return !pingTimeUsec.HasValue; + } + } + + private UInt64? pingTimeUsec; + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/PingResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/PingResult.cs.meta new file mode 100644 index 0000000..487a1d8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PingResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0320c45213f79b443bb412b5f3d89e4d +timeCreated: 1523486796 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs b/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs new file mode 100644 index 0000000..5f1b008 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class PlatformInitialize + { + public readonly PlatformInitializeResult Result; + + + public PlatformInitialize(IntPtr o) + { + Result = CAPI.ovr_PlatformInitialize_GetResult(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs.meta b/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs.meta new file mode 100644 index 0000000..c80fdd1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41ea71d90b07889469fbe488e7f7a62c +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Product.cs b/Assets/Oculus/Platform/Scripts/Models/Product.cs new file mode 100644 index 0000000..1e41eb1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Product.cs @@ -0,0 +1,40 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Product + { + public readonly string Description; + public readonly string FormattedPrice; + public readonly string Name; + public readonly string Sku; + + + public Product(IntPtr o) + { + Description = CAPI.ovr_Product_GetDescription(o); + FormattedPrice = CAPI.ovr_Product_GetFormattedPrice(o); + Name = CAPI.ovr_Product_GetName(o); + Sku = CAPI.ovr_Product_GetSKU(o); + } + } + + public class ProductList : DeserializableList { + public ProductList(IntPtr a) { + var count = (int)CAPI.ovr_ProductArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Product(CAPI.ovr_ProductArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_ProductArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Product.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Product.cs.meta new file mode 100644 index 0000000..1483f9e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Product.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 26c0296fda5f75541b0c1c757efa1cbd +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Purchase.cs b/Assets/Oculus/Platform/Scripts/Models/Purchase.cs new file mode 100644 index 0000000..10f5e58 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Purchase.cs @@ -0,0 +1,40 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Purchase + { + public readonly DateTime ExpirationTime; + public readonly DateTime GrantTime; + public readonly UInt64 ID; + public readonly string Sku; + + + public Purchase(IntPtr o) + { + ExpirationTime = CAPI.ovr_Purchase_GetExpirationTime(o); + GrantTime = CAPI.ovr_Purchase_GetGrantTime(o); + ID = CAPI.ovr_Purchase_GetPurchaseID(o); + Sku = CAPI.ovr_Purchase_GetSKU(o); + } + } + + public class PurchaseList : DeserializableList { + public PurchaseList(IntPtr a) { + var count = (int)CAPI.ovr_PurchaseArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Purchase(CAPI.ovr_PurchaseArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_PurchaseArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Purchase.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Purchase.cs.meta new file mode 100644 index 0000000..fb7e6fa --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Purchase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bbc306c37ea31f045b98ea0008ddf1d3 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Room.cs b/Assets/Oculus/Platform/Scripts/Models/Room.cs new file mode 100644 index 0000000..ecfb149 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Room.cs @@ -0,0 +1,108 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Room + { + public readonly UInt64 ApplicationID; + public readonly Dictionary DataStore; + public readonly string Description; + public readonly UInt64 ID; + // May be null. Check before using. + public readonly UserList InvitedUsersOptional; + [Obsolete("Deprecated in favor of InvitedUsersOptional")] + public readonly UserList InvitedUsers; + public readonly bool IsMembershipLocked; + public readonly RoomJoinPolicy JoinPolicy; + public readonly RoomJoinability Joinability; + // May be null. Check before using. + public readonly MatchmakingEnqueuedUserList MatchedUsersOptional; + [Obsolete("Deprecated in favor of MatchedUsersOptional")] + public readonly MatchmakingEnqueuedUserList MatchedUsers; + public readonly uint MaxUsers; + public readonly string Name; + // May be null. Check before using. + public readonly User OwnerOptional; + [Obsolete("Deprecated in favor of OwnerOptional")] + public readonly User Owner; + public readonly RoomType Type; + // May be null. Check before using. + public readonly UserList UsersOptional; + [Obsolete("Deprecated in favor of UsersOptional")] + public readonly UserList Users; + public readonly uint Version; + + + public Room(IntPtr o) + { + ApplicationID = CAPI.ovr_Room_GetApplicationID(o); + DataStore = CAPI.DataStoreFromNative(CAPI.ovr_Room_GetDataStore(o)); + Description = CAPI.ovr_Room_GetDescription(o); + ID = CAPI.ovr_Room_GetID(o); + { + var pointer = CAPI.ovr_Room_GetInvitedUsers(o); + InvitedUsers = new UserList(pointer); + if (pointer == IntPtr.Zero) { + InvitedUsersOptional = null; + } else { + InvitedUsersOptional = InvitedUsers; + } + } + IsMembershipLocked = CAPI.ovr_Room_GetIsMembershipLocked(o); + JoinPolicy = CAPI.ovr_Room_GetJoinPolicy(o); + Joinability = CAPI.ovr_Room_GetJoinability(o); + { + var pointer = CAPI.ovr_Room_GetMatchedUsers(o); + MatchedUsers = new MatchmakingEnqueuedUserList(pointer); + if (pointer == IntPtr.Zero) { + MatchedUsersOptional = null; + } else { + MatchedUsersOptional = MatchedUsers; + } + } + MaxUsers = CAPI.ovr_Room_GetMaxUsers(o); + Name = CAPI.ovr_Room_GetName(o); + { + var pointer = CAPI.ovr_Room_GetOwner(o); + Owner = new User(pointer); + if (pointer == IntPtr.Zero) { + OwnerOptional = null; + } else { + OwnerOptional = Owner; + } + } + Type = CAPI.ovr_Room_GetType(o); + { + var pointer = CAPI.ovr_Room_GetUsers(o); + Users = new UserList(pointer); + if (pointer == IntPtr.Zero) { + UsersOptional = null; + } else { + UsersOptional = Users; + } + } + Version = CAPI.ovr_Room_GetVersion(o); + } + } + + public class RoomList : DeserializableList { + public RoomList(IntPtr a) { + var count = (int)CAPI.ovr_RoomArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Room(CAPI.ovr_RoomArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_RoomArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Room.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Room.cs.meta new file mode 100644 index 0000000..53ab5ea --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Room.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2343d804eee03c8449c527e47f540246 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs b/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs new file mode 100644 index 0000000..00ae19d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs @@ -0,0 +1,40 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class RoomInviteNotification + { + public readonly UInt64 ID; + public readonly UInt64 RoomID; + public readonly UInt64 SenderID; + public readonly DateTime SentTime; + + + public RoomInviteNotification(IntPtr o) + { + ID = CAPI.ovr_RoomInviteNotification_GetID(o); + RoomID = CAPI.ovr_RoomInviteNotification_GetRoomID(o); + SenderID = CAPI.ovr_RoomInviteNotification_GetSenderID(o); + SentTime = CAPI.ovr_RoomInviteNotification_GetSentTime(o); + } + } + + public class RoomInviteNotificationList : DeserializableList { + public RoomInviteNotificationList(IntPtr a) { + var count = (int)CAPI.ovr_RoomInviteNotificationArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new RoomInviteNotification(CAPI.ovr_RoomInviteNotificationArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_RoomInviteNotificationArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs.meta b/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs.meta new file mode 100644 index 0000000..980cb62 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71804edb58eb8d14b95bdcf4e86ceb16 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs b/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs new file mode 100644 index 0000000..2139230 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs @@ -0,0 +1,35 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class SdkAccount + { + public readonly SdkAccountType AccountType; + public readonly UInt64 UserId; + + + public SdkAccount(IntPtr o) + { + AccountType = CAPI.ovr_SdkAccount_GetAccountType(o); + UserId = CAPI.ovr_SdkAccount_GetUserId(o); + } + } + + public class SdkAccountList : DeserializableList { + public SdkAccountList(IntPtr a) { + var count = (int)CAPI.ovr_SdkAccountArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new SdkAccount(CAPI.ovr_SdkAccountArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs.meta b/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs.meta new file mode 100644 index 0000000..419e56f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1c2ffbfe79b26bc4cb0155394995dfe2 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs b/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs new file mode 100644 index 0000000..8519b6d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class ShareMediaResult + { + public readonly ShareMediaStatus Status; + + + public ShareMediaResult(IntPtr o) + { + Status = CAPI.ovr_ShareMediaResult_GetStatus(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs.meta new file mode 100644 index 0000000..5f1d168 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 476ce514abed4e2469094f659dfbb253 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs b/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs new file mode 100644 index 0000000..598eac2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class SystemPermission + { + public readonly bool HasPermission; + public readonly PermissionGrantStatus PermissionGrantStatus; + + + public SystemPermission(IntPtr o) + { + HasPermission = CAPI.ovr_SystemPermission_GetHasPermission(o); + PermissionGrantStatus = CAPI.ovr_SystemPermission_GetPermissionGrantStatus(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs.meta b/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs.meta new file mode 100644 index 0000000..72c7bd4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 50ebb7b3edee04e44a14fc3f900860fd +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs b/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs new file mode 100644 index 0000000..ada7a48 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class SystemVoipState + { + public readonly VoipMuteState MicrophoneMuted; + public readonly SystemVoipStatus Status; + + + public SystemVoipState(IntPtr o) + { + MicrophoneMuted = CAPI.ovr_SystemVoipState_GetMicrophoneMuted(o); + Status = CAPI.ovr_SystemVoipState_GetStatus(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs.meta b/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs.meta new file mode 100644 index 0000000..ba04859 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6393103106f621e4cb6b8819417de993 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/User.cs b/Assets/Oculus/Platform/Scripts/Models/User.cs new file mode 100644 index 0000000..c30a720 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/User.cs @@ -0,0 +1,46 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class User + { + public readonly UInt64 ID; + public readonly string ImageURL; + public readonly string InviteToken; + public readonly string OculusID; + public readonly string Presence; + public readonly UserPresenceStatus PresenceStatus; + public readonly string SmallImageUrl; + + + public User(IntPtr o) + { + ID = CAPI.ovr_User_GetID(o); + ImageURL = CAPI.ovr_User_GetImageUrl(o); + InviteToken = CAPI.ovr_User_GetInviteToken(o); + OculusID = CAPI.ovr_User_GetOculusID(o); + Presence = CAPI.ovr_User_GetPresence(o); + PresenceStatus = CAPI.ovr_User_GetPresenceStatus(o); + SmallImageUrl = CAPI.ovr_User_GetSmallImageUrl(o); + } + } + + public class UserList : DeserializableList { + public UserList(IntPtr a) { + var count = (int)CAPI.ovr_UserArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new User(CAPI.ovr_UserArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_UserArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/User.cs.meta b/Assets/Oculus/Platform/Scripts/Models/User.cs.meta new file mode 100644 index 0000000..515c485 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/User.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e924972a6fae3564ea6936d99f9b81f1 +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs b/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs new file mode 100644 index 0000000..47c961b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs @@ -0,0 +1,49 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class UserAndRoom + { + // May be null. Check before using. + public readonly Room RoomOptional; + [Obsolete("Deprecated in favor of RoomOptional")] + public readonly Room Room; + public readonly User User; + + + public UserAndRoom(IntPtr o) + { + { + var pointer = CAPI.ovr_UserAndRoom_GetRoom(o); + Room = new Room(pointer); + if (pointer == IntPtr.Zero) { + RoomOptional = null; + } else { + RoomOptional = Room; + } + } + User = new User(CAPI.ovr_UserAndRoom_GetUser(o)); + } + } + + public class UserAndRoomList : DeserializableList { + public UserAndRoomList(IntPtr a) { + var count = (int)CAPI.ovr_UserAndRoomArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new UserAndRoom(CAPI.ovr_UserAndRoomArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_UserAndRoomArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs.meta b/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs.meta new file mode 100644 index 0000000..48e3c15 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a13e8fdc4c1263e43a7f56781529a4cc +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/UserProof.cs b/Assets/Oculus/Platform/Scripts/Models/UserProof.cs new file mode 100644 index 0000000..c81e1b5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserProof.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class UserProof + { + public readonly string Value; + + + public UserProof(IntPtr o) + { + Value = CAPI.ovr_UserProof_GetNonce(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/UserProof.cs.meta b/Assets/Oculus/Platform/Scripts/Models/UserProof.cs.meta new file mode 100644 index 0000000..aa5297f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserProof.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9cfd1e7885b01dd47adcab5c9c72ed26 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs b/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs new file mode 100644 index 0000000..3c43edc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class UserReportID + { + public readonly bool DidCancel; + public readonly UInt64 ID; + + + public UserReportID(IntPtr o) + { + DidCancel = CAPI.ovr_UserReportID_GetDidCancel(o); + ID = CAPI.ovr_UserReportID_GetID(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs.meta b/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs.meta new file mode 100644 index 0000000..b54424d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3c9566020c8239548b2efa1583525ffe +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Packet.cs b/Assets/Oculus/Platform/Scripts/Packet.cs new file mode 100644 index 0000000..cba2e47 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Packet.cs @@ -0,0 +1,63 @@ +namespace Oculus.Platform +{ + using System; + using System.Runtime.InteropServices; + + public sealed class Packet : IDisposable + { + private readonly ulong size; + private readonly IntPtr packetHandle; + + public Packet(IntPtr packetHandle) + { + this.packetHandle = packetHandle; + size = (ulong) CAPI.ovr_Packet_GetSize(packetHandle); + } + + /** + * Copies all the bytes in the payload into byte[] destination. ex: + * Package package ... + * byte[] destination = new byte[package.Size]; + * package.ReadBytes(destination); + */ + public ulong ReadBytes(byte[] destination) + { + if ((ulong) destination.LongLength < size) + { + throw new System.ArgumentException(String.Format("Destination array was not big enough to hold {0} bytes", size)); + } + Marshal.Copy(CAPI.ovr_Packet_GetBytes(packetHandle), destination, 0, (int) size); + return size; + } + + public UInt64 SenderID + { + get { return CAPI.ovr_Packet_GetSenderID(packetHandle); } + } + + public ulong Size + { + get { return size; } + } + + public SendPolicy Policy + { + get { return (SendPolicy)CAPI.ovr_Packet_GetSendPolicy(packetHandle); } + } + + #region IDisposable + + ~Packet() + { + Dispose(); + } + + public void Dispose() + { + CAPI.ovr_Packet_Free(packetHandle); + GC.SuppressFinalize(this); + } + + #endregion + } +} diff --git a/Assets/Oculus/Platform/Scripts/Packet.cs.meta b/Assets/Oculus/Platform/Scripts/Packet.cs.meta new file mode 100644 index 0000000..5a542ff --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Packet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f384e82f5031ccd488f47fa837e5d7e5 +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs b/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs new file mode 100644 index 0000000..f4fe868 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs @@ -0,0 +1,31 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PeerConnectionState : int + { + [Description("UNKNOWN")] + Unknown, + + /// Connection to the peer is established. + [Description("CONNECTED")] + Connected, + + /// A timeout expired while attempting to (re)establish a connection. This can + /// happen if peer is unreachable or rejected the connection. + [Description("TIMEOUT")] + Timeout, + + /// Connection to the peer is closed. A connection transitions into this state + /// when it is explicitly closed by either the local or remote peer calling + /// Net.Close(). It also enters this state if the remote peer no longer + /// responds to our keep-alive probes. + [Description("CLOSED")] + Closed, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs.meta b/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs.meta new file mode 100644 index 0000000..22752bf --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bda0ab1d901c7a444a8a78a509c6b3e9 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs b/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs new file mode 100644 index 0000000..c8f7990 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PermissionGrantStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("GRANTED")] + Granted, + + [Description("DENIED")] + Denied, + + [Description("BLOCKED")] + Blocked, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs.meta b/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs.meta new file mode 100644 index 0000000..c182eb0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6ffd2b886b53fde48943449fa2c36140 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PermissionType.cs b/Assets/Oculus/Platform/Scripts/PermissionType.cs new file mode 100644 index 0000000..97dee03 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PermissionType.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PermissionType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("MICROPHONE")] + Microphone, + + [Description("WRITE_EXTERNAL_STORAGE")] + WriteExternalStorage, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PermissionType.cs.meta b/Assets/Oculus/Platform/Scripts/PermissionType.cs.meta new file mode 100644 index 0000000..63a4e66 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PermissionType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 509fa63399714ee47b26b41370f9154d +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Platform.cs b/Assets/Oculus/Platform/Scripts/Platform.cs new file mode 100644 index 0000000..cf37136 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Platform.cs @@ -0,0 +1,2396 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("Assembly-CSharp-Editor")] + +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Collections.Generic; + using System.Runtime.InteropServices; + + public sealed class Core { + private static bool IsPlatformInitialized = false; + public static bool IsInitialized() + { + return IsPlatformInitialized; + } + + // If LogMessages is true, then the contents of each request response + // will be printed using Debug.Log. This allocates a lot of heap memory, + // and so should not be called outside of testing and debugging. + public static bool LogMessages = false; + + internal static void ForceInitialized() + { + IsPlatformInitialized = true; + } + + private static string getAppID(string appId = null) { + string configAppID = GetAppIDFromConfig(); + if (String.IsNullOrEmpty(appId)) + { + if (String.IsNullOrEmpty(configAppID)) + { + throw new UnityException("Update your app id by selecting 'Oculus Platform' -> 'Edit Settings'"); + } + appId = configAppID; + } + else + { + if (!String.IsNullOrEmpty(configAppID)) + { + Debug.LogWarningFormat("The 'Oculus App Id ({0})' field in 'Oculus Platform/Edit Settings' is clobbering appId ({1}) that you passed in to Platform.Core.Init. You should only specify this in one place. We recommend the menu location.", configAppID, appId); + } + } + return appId; + } + + // Asynchronously Initialize Platform SDK. The result will be put on the message + // queue with the message type: ovrMessage_PlatformInitializeAndroidAsynchronous + // + // While the platform is in an initializing state, it's not fully functional. + // [Requests]: will queue up and run once platform is initialized. + // For example: ovr_User_GetLoggedInUser() can be called immediately after + // asynchronous init and once platform is initialized, this request will run + // [Synchronous Methods]: will return the default value; + // For example: ovr_GetLoggedInUserID() will return 0 until platform is + // fully initialized + public static Request AsyncInitialize(string appId = null) { + appId = getAppID(appId); + + Request request; + if (UnityEngine.Application.isEditor && PlatformSettings.UseStandalonePlatform) { + var platform = new StandalonePlatform(); + request = platform.InitializeInEditor(); + } + else if (UnityEngine.Application.platform == RuntimePlatform.WindowsEditor || + UnityEngine.Application.platform == RuntimePlatform.WindowsPlayer) { + var platform = new WindowsPlatform(); + request = platform.AsyncInitialize(appId); + } + else if (UnityEngine.Application.platform == RuntimePlatform.Android) { + var platform = new AndroidPlatform(); + request = platform.AsyncInitialize(appId); + } + else { + throw new NotImplementedException("Oculus platform is not implemented on this platform yet."); + } + + IsPlatformInitialized = (request != null); + + if (!IsPlatformInitialized) + { + throw new UnityException("Oculus Platform failed to initialize."); + } + + if (LogMessages) { + Debug.LogWarning("Oculus.Platform.Core.LogMessages is set to true. This will cause extra heap allocations, and should not be used outside of testing and debugging."); + } + + // Create the GameObject that will run the callbacks + (new GameObject("Oculus.Platform.CallbackRunner")).AddComponent(); + return request; + } + + + public static void Initialize(string appId = null) + { + appId = getAppID(appId); + + if (UnityEngine.Application.isEditor && PlatformSettings.UseStandalonePlatform) { + var platform = new StandalonePlatform(); + IsPlatformInitialized = platform.InitializeInEditor() != null; + } + else if (UnityEngine.Application.platform == RuntimePlatform.WindowsEditor || + UnityEngine.Application.platform == RuntimePlatform.WindowsPlayer) { + var platform = new WindowsPlatform(); + IsPlatformInitialized = platform.Initialize(appId); + } + else if (UnityEngine.Application.platform == RuntimePlatform.Android) { + var platform = new AndroidPlatform(); + IsPlatformInitialized = platform.Initialize(appId); + } + else { + throw new NotImplementedException("Oculus platform is not implemented on this platform yet."); + } + + if (!IsPlatformInitialized) + { + throw new UnityException("Oculus Platform failed to initialize."); + } + + if (LogMessages) { + Debug.LogWarning("Oculus.Platform.Core.LogMessages is set to true. This will cause extra heap allocations, and should not be used outside of testing and debugging."); + } + + // Create the GameObject that will run the callbacks + (new GameObject("Oculus.Platform.CallbackRunner")).AddComponent(); + } + + private static string GetAppIDFromConfig() + { + if (UnityEngine.Application.platform == RuntimePlatform.Android) + { + return PlatformSettings.MobileAppID; + } + else + { + return PlatformSettings.AppID; + } + } + } + + public static class ApplicationLifecycle + { + public static Models.LaunchDetails GetLaunchDetails() { + return new Models.LaunchDetails(CAPI.ovr_ApplicationLifecycle_GetLaunchDetails()); + } + } + + public static partial class Rooms + { + + public static Request UpdateDataStore(UInt64 roomID, Dictionary data) + { + if (Core.IsInitialized()) + { + CAPI.ovrKeyValuePair[] kvps = new CAPI.ovrKeyValuePair[data.Count]; + int i=0; + foreach(var item in data) + { + kvps[i++] = new CAPI.ovrKeyValuePair(item.Key, item.Value); + } + + return new Request(CAPI.ovr_Room_UpdateDataStore(roomID, kvps)); + } + return null; + } + + public static void SetUpdateNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Room_RoomUpdate, + callback + ); + } + + [Obsolete("Deprecated in favor of SetRoomInviteAcceptedNotificationCallback")] + public static void SetRoomInviteNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Room_InviteAccepted, + callback + ); + } + + // Be notified when someone you've invited has accepted your invitation. + public static void SetRoomInviteAcceptedNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Room_InviteAccepted, + callback + ); + } + + // Be notified when you've received an invitation to a room from another player. + // You can also poll for room invites using Notifications.GetRoomInviteNotifications. + public static void SetRoomInviteReceivedNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Room_InviteReceived, + callback + ); + } + + } + + public static partial class Livestreaming + { + public static void SetStatusUpdateNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Livestreaming_StatusChange, + callback + ); + } + } + + + public static partial class Matchmaking + { + public class CustomQuery + { + public Dictionary data; + public Criterion[] criteria; + + public struct Criterion + { + public Criterion(string key_, MatchmakingCriterionImportance importance_) + { + key = key_; + importance = importance_; + + parameters = null; + } + + public string key; + public MatchmakingCriterionImportance importance; + public Dictionary parameters; + } + + public IntPtr ToUnmanaged() + { + var customQueryUnmanaged = new CAPI.ovrMatchmakingCustomQueryData(); + + if(criteria != null && criteria.Length > 0) + { + customQueryUnmanaged.criterionArrayCount = (uint)criteria.Length; + var temp = new CAPI.ovrMatchmakingCriterion[criteria.Length]; + + for(int i=0; i 0) + { + temp[i].parameterArrayCount = (uint)criteria[i].parameters.Count; + temp[i].parameterArray = CAPI.ArrayOfStructsToIntPtr(CAPI.DictionaryToOVRKeyValuePairs(criteria[i].parameters)); + } + else + { + temp[i].parameterArrayCount = 0; + temp[i].parameterArray = IntPtr.Zero; + } + } + + customQueryUnmanaged.criterionArray = CAPI.ArrayOfStructsToIntPtr(temp); + } + else + { + customQueryUnmanaged.criterionArrayCount = 0; + customQueryUnmanaged.criterionArray = IntPtr.Zero; + } + + + if(data != null && data.Count > 0) + { + customQueryUnmanaged.dataArrayCount = (uint)data.Count; + customQueryUnmanaged.dataArray = CAPI.ArrayOfStructsToIntPtr(CAPI.DictionaryToOVRKeyValuePairs(data)); + } + else + { + customQueryUnmanaged.dataArrayCount = 0; + customQueryUnmanaged.dataArray = IntPtr.Zero; + } + + IntPtr res = Marshal.AllocHGlobal(Marshal.SizeOf(customQueryUnmanaged)); + Marshal.StructureToPtr(customQueryUnmanaged, res, true); + return res; + } + } + + public static Request ReportResultsInsecure(UInt64 roomID, Dictionary data) + { + if(Core.IsInitialized()) + { + CAPI.ovrKeyValuePair[] kvps = new CAPI.ovrKeyValuePair[data.Count]; + int i=0; + foreach(var item in data) + { + kvps[i++] = new CAPI.ovrKeyValuePair(item.Key, item.Value); + } + + return new Request(CAPI.ovr_Matchmaking_ReportResultInsecure(roomID, kvps)); + } + + return null; + } + + public static void SetMatchFoundNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Matchmaking_MatchFound, + callback + ); + } + + public static Request GetStats(string pool, uint maxLevel, MatchmakingStatApproach approach = MatchmakingStatApproach.Trailing) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_GetStats(pool, maxLevel, approach)); + } + + return null; + } + } + + public static class Net + { + public static Packet ReadPacket() + { + if (!Core.IsInitialized()) + { + return null; + } + + var packetHandle = CAPI.ovr_Net_ReadPacket(); + + if(packetHandle == IntPtr.Zero) + { + return null; + } + + return new Packet(packetHandle); + } + + public static bool SendPacket(UInt64 userID, byte[] bytes, SendPolicy policy) + { + if(Core.IsInitialized()) + { + return CAPI.ovr_Net_SendPacket(userID, (UIntPtr)bytes.Length, bytes, policy); + } + + return false; + } + + public static void Connect(UInt64 userID) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Net_Connect(userID); + } + } + + public static void Accept(UInt64 userID) + { + if(Core.IsInitialized()) + { + CAPI.ovr_Net_Accept(userID); + } + } + + public static void Close(UInt64 userID) + { + if(Core.IsInitialized()) + { + CAPI.ovr_Net_Close(userID); + } + } + + public static bool IsConnected(UInt64 userID) + { + return Core.IsInitialized() && CAPI.ovr_Net_IsConnected(userID); + } + + public static bool SendPacketToCurrentRoom(byte[] bytes, SendPolicy policy) + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Net_SendPacketToCurrentRoom((UIntPtr)bytes.Length, bytes, policy); + } + + return false; + } + + public static bool AcceptForCurrentRoom() + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Net_AcceptForCurrentRoom(); + } + + return false; + } + + public static void CloseForCurrentRoom() + { + if (Core.IsInitialized()) + { + CAPI.ovr_Net_CloseForCurrentRoom(); + } + } + + public static Request Ping(UInt64 userID) + { + if(Core.IsInitialized()) + { + return new Request(CAPI.ovr_Net_Ping(userID)); + } + + return null; + } + + public static void SetPeerConnectRequestCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Networking_PeerConnectRequest, + callback + ); + } + + public static void SetConnectionStateChangedCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Networking_ConnectionStateChange, + callback + ); + } + } + + public static partial class Leaderboards + { + public static Request GetNextEntries(Models.LeaderboardEntryList list) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_HTTP_GetWithMessageType(list.NextUrl, (int)Message.MessageType.Leaderboard_GetNextEntries)); + } + + return null; + } + + public static Request GetPreviousEntries(Models.LeaderboardEntryList list) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_HTTP_GetWithMessageType(list.PreviousUrl, (int)Message.MessageType.Leaderboard_GetPreviousEntries)); + } + + return null; + } + } + + public static partial class Voip + { + public static void Start(UInt64 userID) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_Start(userID); + } + } + + public static void Accept(UInt64 userID) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_Accept(userID); + } + } + + public static void Stop(UInt64 userID) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_Stop(userID); + } + } + + public static void SetVoipConnectRequestCallback(Message.Callback callback) + { + if (Core.IsInitialized()) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Voip_ConnectRequest, + callback + ); + } + } + + public static void SetVoipStateChangeCallback(Message.Callback callback) + { + if (Core.IsInitialized()) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Voip_StateChange, + callback + ); + } + } + + public static void SetMicrophoneFilterCallback(CAPI.FilterCallback callback) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_SetMicrophoneFilterCallbackWithFixedSizeBuffer(callback, (UIntPtr)CAPI.VoipFilterBufferSize); + } + } + + public static void SetMicrophoneMuted(VoipMuteState state) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_SetMicrophoneMuted(state); + } + } + + public static VoipMuteState GetSystemVoipMicrophoneMuted() + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetSystemVoipMicrophoneMuted(); + } + return VoipMuteState.Unknown; + } + + public static SystemVoipStatus GetSystemVoipStatus() + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetSystemVoipStatus(); + } + return SystemVoipStatus.Unknown; + } + + public static Oculus.Platform.VoipDtxState GetIsConnectionUsingDtx(UInt64 peerID) + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetIsConnectionUsingDtx(peerID); + } + return Oculus.Platform.VoipDtxState.Unknown; + } + + public static Oculus.Platform.VoipBitrate GetLocalBitrate(UInt64 peerID) + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetLocalBitrate(peerID); + } + return Oculus.Platform.VoipBitrate.Unknown; + } + + public static Oculus.Platform.VoipBitrate GetRemoteBitrate(UInt64 peerID) + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetRemoteBitrate(peerID); + } + return Oculus.Platform.VoipBitrate.Unknown; + } + + public static void SetNewConnectionOptions(VoipOptions voipOptions) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_SetNewConnectionOptions((IntPtr)voipOptions); + } + } + + public static void SetSystemVoipStateNotificationCallback(Message.Callback callback) + { + if (Core.IsInitialized()) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Voip_SystemVoipState, + callback + ); + } + } + } + + public static partial class Achievements + { + /// Add 'count' to the achievement with the given name. This must be a COUNT + /// achievement. The largest number that is supported by this method is the max + /// value of a signed 64-bit integer. If the number is larger than that, it is + /// clamped to that max value before being passed to the servers. + /// + public static Request AddCount(string name, ulong count) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_AddCount(name, count)); + } + + return null; + } + + /// Unlock fields of a BITFIELD achievement. + /// \param name The name of the achievement to unlock + /// \param fields A string containing either '0' or '1' characters. Every '1' will unlock the field in the corresponding position. + /// + public static Request AddFields(string name, string fields) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_AddFields(name, fields)); + } + + return null; + } + + /// Request all achievement definitions for the app. + /// + public static Request GetAllDefinitions() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_GetAllDefinitions()); + } + + return null; + } + + /// Request the progress for the user on all achievements in the app. + /// + public static Request GetAllProgress() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_GetAllProgress()); + } + + return null; + } + + /// Request the achievement definitions that match the specified names. + /// + public static Request GetDefinitionsByName(string[] names) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_GetDefinitionsByName(names, (names != null ? names.Length : 0))); + } + + return null; + } + + /// Request the user's progress on the specified achievements. + /// + public static Request GetProgressByName(string[] names) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_GetProgressByName(names, (names != null ? names.Length : 0))); + } + + return null; + } + + /// Unlock the achievement with the given name. This can be of any achievement + /// type. + /// + public static Request Unlock(string name) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_Unlock(name)); + } + + return null; + } + + } + + public static partial class Application + { + /// Requests version information, including the currently installed and latest + /// available version name and version code. + /// + public static Request GetVersion() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Application_GetVersion()); + } + + return null; + } + + /// Launches a different application in the user's library. If the user does + /// not have that application installed, they will be taken to that app's page + /// in the Oculus Store + /// \param appID The ID of the app to launch + /// \param deeplink_options Additional configuration for this requests. Optional. + /// + public static Request LaunchOtherApp(UInt64 appID, ApplicationOptions deeplink_options = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Application_LaunchOtherApp(appID, (IntPtr)deeplink_options)); + } + + return null; + } + + } + + public static partial class AssetFile + { + /// DEPRECATED. Use AssetFile.DeleteById() + /// + public static Request Delete(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_Delete(assetFileID)); + } + + return null; + } + + /// Removes an previously installed asset file from the device by its ID. + /// Returns an object containing the asset ID and file name, and a success + /// flag. + /// \param assetFileID The asset file ID + /// + public static Request DeleteById(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DeleteById(assetFileID)); + } + + return null; + } + + /// Removes an previously installed asset file from the device by its name. + /// Returns an object containing the asset ID and file name, and a success + /// flag. + /// \param assetFileName The asset file name + /// + public static Request DeleteByName(string assetFileName) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DeleteByName(assetFileName)); + } + + return null; + } + + /// DEPRECATED. Use AssetFile.DownloadById() + /// + public static Request Download(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_Download(assetFileID)); + } + + return null; + } + + /// Downloads an asset file by its ID on demand. Returns an object containing + /// the asset ID and filepath. Sends periodic + /// MessageType.Notification_AssetFile_DownloadUpdate to track the downloads. + /// \param assetFileID The asset file ID + /// + public static Request DownloadById(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadById(assetFileID)); + } + + return null; + } + + /// Downloads an asset file by its name on demand. Returns an object containing + /// the asset ID and filepath. Sends periodic + /// {notifications.asset_file.download_update}} to track the downloads. + /// \param assetFileName The asset file name + /// + public static Request DownloadByName(string assetFileName) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadByName(assetFileName)); + } + + return null; + } + + /// DEPRECATED. Use AssetFile.DownloadCancelById() + /// + public static Request DownloadCancel(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadCancel(assetFileID)); + } + + return null; + } + + /// Cancels a previously spawned download request for an asset file by its ID. + /// Returns an object containing the asset ID and file path, and a success + /// flag. + /// \param assetFileID The asset file ID + /// + public static Request DownloadCancelById(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadCancelById(assetFileID)); + } + + return null; + } + + /// Cancels a previously spawned download request for an asset file by its + /// name. Returns an object containing the asset ID and file path, and a + /// success flag. + /// \param assetFileName The asset file name + /// + public static Request DownloadCancelByName(string assetFileName) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadCancelByName(assetFileName)); + } + + return null; + } + + /// Returns an array of objects with asset file names and their associated IDs, + /// and and whether it's currently installed. + /// + public static Request GetList() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_GetList()); + } + + return null; + } + + /// DEPRECATED. Use AssetFile.StatusById() + /// + public static Request Status(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_Status(assetFileID)); + } + + return null; + } + + /// Returns the details on a single asset: ID, file name, and whether it's + /// currently installed + /// \param assetFileID The asset file ID + /// + public static Request StatusById(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_StatusById(assetFileID)); + } + + return null; + } + + /// Returns the details on a single asset: ID, file name, and whether it's + /// currently installed + /// \param assetFileName The asset file name + /// + public static Request StatusByName(string assetFileName) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_StatusByName(assetFileName)); + } + + return null; + } + + } + + public static partial class Avatar + { + } + + public static partial class CloudStorage + { + /// Deletes the specified save data buffer. Conflicts are handled just like + /// Saves. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// + public static Request Delete(string bucket, string key) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_Delete(bucket, key)); + } + + return null; + } + + /// Loads the saved entry for the specified bucket and key. If a conflict + /// exists with the key then an error message is returned. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// + public static Request Load(string bucket, string key) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_Load(bucket, key)); + } + + return null; + } + + /// Loads all the metadata for the saves in the specified bucket, including + /// conflicts. + /// \param bucket The name of the storage bucket. + /// + public static Request LoadBucketMetadata(string bucket) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_LoadBucketMetadata(bucket)); + } + + return null; + } + + /// Loads the metadata for this bucket-key combination that need to be manually + /// resolved. + /// \param bucket The name of the storage bucket + /// \param key The key for this saved data. + /// + public static Request LoadConflictMetadata(string bucket, string key) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_LoadConflictMetadata(bucket, key)); + } + + return null; + } + + /// Loads the data specified by the storage handle. + /// + public static Request LoadHandle(string handle) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_LoadHandle(handle)); + } + + return null; + } + + /// load the metadata for the specified key + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// + public static Request LoadMetadata(string bucket, string key) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_LoadMetadata(bucket, key)); + } + + return null; + } + + /// Selects the local save for manual conflict resolution. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// \param remoteHandle The handle of the remote that the local file was resolved against. + /// + public static Request ResolveKeepLocal(string bucket, string key, string remoteHandle) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_ResolveKeepLocal(bucket, key, remoteHandle)); + } + + return null; + } + + /// Selects the remote save for manual conflict resolution. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// \param remoteHandle The handle of the remote. + /// + public static Request ResolveKeepRemote(string bucket, string key, string remoteHandle) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_ResolveKeepRemote(bucket, key, remoteHandle)); + } + + return null; + } + + /// Note: Cloud Storage is only available for Rift apps. + /// + /// Send a save data buffer to the platform. CloudStorage.Save() passes a + /// pointer to your data in an async call. You need to maintain the save data + /// until you receive the message indicating that the save was successful. + /// + /// If the data is destroyed or modified prior to receiving that message the + /// data will not be saved. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// \param data Start of the data block. + /// \param counter Optional. Counter used for user data or auto-deconfliction. + /// \param extraData Optional. String data that isn't used by the platform. + /// + /// Error codes + /// - \b 100: The stored version has a later timestamp than the data provided. This cloud storage bucket's conflict resolution policy is configured to use the latest timestamp, which is configurable in the developer dashboard. + /// + public static Request Save(string bucket, string key, byte[] data, long counter, string extraData) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_Save(bucket, key, data, (uint)(data != null ? data.Length : 0), counter, extraData)); + } + + return null; + } + + } + + public static partial class Entitlements + { + /// Returns whether the current user is entitled to the current app. + /// + public static Request IsUserEntitledToApplication() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Entitlement_GetIsViewerEntitled()); + } + + return null; + } + + } + + public static partial class GraphAPI + { + } + + public static partial class HTTP + { + } + + public static partial class IAP + { + /// Allow the consumable IAP product to be purchased again. Conceptually, this + /// indicates that the item was used or consumed. + /// + public static Request ConsumePurchase(string sku) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_IAP_ConsumePurchase(sku)); + } + + return null; + } + + /// Retrieve a list of IAP products that can be purchased. + /// \param skus The SKUs of the products to retrieve. + /// + public static Request GetProductsBySKU(string[] skus) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_IAP_GetProductsBySKU(skus, (skus != null ? skus.Length : 0))); + } + + return null; + } + + /// Retrieve a list of Purchase that the Logged-In-User has made. This list + /// will also contain consumable purchases that have not been consumed. + /// + public static Request GetViewerPurchases() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_IAP_GetViewerPurchases()); + } + + return null; + } + + /// Launch the checkout flow to purchase the existing product. Oculus Home + /// tries handle and fix as many errors as possible. Home returns the + /// appropriate error message and how to resolveit, if possible. Returns a + /// purchase on success, empty purchase on cancel, and an error on error. + /// \param sku IAP sku for the item the user wishes to purchase. + /// + public static Request LaunchCheckoutFlow(string sku) + { + if (Core.IsInitialized()) + { + if (UnityEngine.Application.isEditor) { + throw new NotImplementedException("LaunchCheckoutFlow() is not implemented in the editor yet."); + } + + return new Request(CAPI.ovr_IAP_LaunchCheckoutFlow(sku)); + } + + return null; + } + + } + + public static partial class LanguagePack + { + /// Returns currently installed and selected language pack for an app in the + /// view of the `asset_details`. Use `language` field to extract neeeded + /// language info. A particular language can be download and installed by a + /// user from the Oculus app on the application page. + /// + public static Request GetCurrent() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_LanguagePack_GetCurrent()); + } + + return null; + } + + } + + public static partial class Leaderboards + { + /// Requests a block of Leaderboard Entries. + /// \param leaderboardName The name of the leaderboard whose entries to return. + /// \param limit Defines the maximum number of entries to return. + /// \param filter Allows you to restrict the returned values by friends. + /// \param startAt Defines whether to center the query on the user or start at the top of the leaderboard. + /// + /// Error codes + /// - \b 12074: You're not yet ranked on this leaderboard. + /// + public static Request GetEntries(string leaderboardName, int limit, LeaderboardFilterType filter, LeaderboardStartAt startAt) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Leaderboard_GetEntries(leaderboardName, limit, filter, startAt)); + } + + return null; + } + + /// Requests a block of leaderboard Entries. + /// \param leaderboardName The name of the leaderboard. + /// \param limit The maximum number of entries to return. + /// \param afterRank The position after which to start. For example, 10 returns leaderboard results starting with the 11th user. + /// + public static Request GetEntriesAfterRank(string leaderboardName, int limit, ulong afterRank) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Leaderboard_GetEntriesAfterRank(leaderboardName, limit, afterRank)); + } + + return null; + } + + /// Writes a single entry to a leaderboard. + /// \param leaderboardName The leaderboard for which to write the entry. + /// \param score The score to write. + /// \param extraData A 2KB custom data field that is associated with the leaderboard entry. This can be a game replay or anything that provides more detail about the entry to the viewer. + /// \param forceUpdate If true, the score always updates. This happens even if it is not the user's best score. + /// + /// Error codes + /// - \b 100: Parameter {parameter}: invalid user id: {user_id} + /// + public static Request WriteEntry(string leaderboardName, long score, byte[] extraData = null, bool forceUpdate = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Leaderboard_WriteEntry(leaderboardName, score, extraData, (uint)(extraData != null ? extraData.Length : 0), forceUpdate)); + } + + return null; + } + + } + + public static partial class Livestreaming + { + /// Return the status of the current livestreaming session if there is one. + /// + public static Request GetStatus() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Livestreaming_GetStatus()); + } + + return null; + } + + /// Pauses the livestreaming session if there is one. NOTE: this function is + /// safe to call if no session is active. + /// + public static Request PauseStream() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Livestreaming_PauseStream()); + } + + return null; + } + + /// Resumes the livestreaming session if there is one. NOTE: this function is + /// safe to call if no session is active. + /// + public static Request ResumeStream() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Livestreaming_ResumeStream()); + } + + return null; + } + + } + + public static partial class Matchmaking + { + /// DEPRECATED. Use Browse2. + /// \param pool A BROWSE type matchmaking pool. + /// \param customQueryData Optional. Custom query data. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// + public static Request Browse(string pool, CustomQuery customQueryData = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Browse(pool, customQueryData != null ? customQueryData.ToUnmanaged() : IntPtr.Zero)); + } + + return null; + } + + /// Modes: BROWSE + /// + /// See overview documentation above. + /// + /// Return a list of matchmaking rooms in the current pool filtered by skill + /// and ping (if enabled). This also enqueues the user in the matchmaking + /// queue. When the user has made a selection, call Room.Join2() on one of the + /// rooms that was returned. If the user stops browsing, call + /// Matchmaking.Cancel(). + /// + /// In addition to the list of rooms, enqueue results are also returned. Call + /// MatchmakingBrowseResult.GetEnqueueResult() to obtain them. See + /// OVR_MatchmakingEnqueueResult.h for details. + /// \param pool A BROWSE type matchmaking pool. + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// + public static Request Browse2(string pool, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Browse2(pool, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// DEPRECATED. Use Cancel2. + /// \param pool The pool in question. + /// \param requestHash Used to find your entry in a queue. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// + public static Request Cancel(string pool, string requestHash) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Cancel(pool, requestHash)); + } + + return null; + } + + /// Modes: QUICKMATCH, BROWSE + /// + /// Makes a best effort to cancel a previous Enqueue request before a match + /// occurs. Typically triggered when a user gives up waiting. For BROWSE mode, + /// call this when a user gives up looking through the room list or when the + /// host of a room wants to stop receiving new users. If you don't cancel but + /// the user goes offline, the user/room will be timed out of the queue within + /// 30 seconds. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// + public static Request Cancel() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Cancel2()); + } + + return null; + } + + /// DEPRECATED. Use CreateAndEnqueueRoom2. + /// \param pool The matchmaking pool to use, which is defined for the app. + /// \param maxUsers Overrides the Max Users value, which is configured in pool settings of the Developer Dashboard. + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when the room data changes, such as when users join or leave. + /// \param customQueryData Optional. See "Custom criteria" section above. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12051: Pool '{pool_key}' is configured for Quickmatch mode. In Quickmatch mode, rooms are created on users' behalf when a match is found. Specify Advanced Quickmatch or Browse mode to use this feature. + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12089: You have asked to enqueue {num_users} users together, but this must be less than the maximum number of users in a room, {max_users}. + /// + public static Request CreateAndEnqueueRoom(string pool, uint maxUsers, bool subscribeToUpdates = false, CustomQuery customQueryData = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_CreateAndEnqueueRoom(pool, maxUsers, subscribeToUpdates, customQueryData != null ? customQueryData.ToUnmanaged() : IntPtr.Zero)); + } + + return null; + } + + /// Modes: BROWSE, QUICKMATCH (Advanced; Can Users Create Rooms = true) + /// + /// See overview documentation above. + /// + /// Create a matchmaking room, join it, and enqueue it. This is the preferred + /// method. But, if you do not wish to automatically enqueue the room, you can + /// call CreateRoom2 instead. + /// + /// Visit https://dashboard.oculus.com/application/[YOUR_APP_ID]/matchmaking to + /// set up pools and queries + /// \param pool The matchmaking pool to use, which is defined for the app. + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12051: Pool '{pool_key}' is configured for Quickmatch mode. In Quickmatch mode, rooms are created on users' behalf when a match is found. Specify Advanced Quickmatch or Browse mode to use this feature. + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12089: You have asked to enqueue {num_users} users together, but this must be less than the maximum number of users in a room, {max_users}. + /// + public static Request CreateAndEnqueueRoom2(string pool, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_CreateAndEnqueueRoom2(pool, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// DEPRECATED. Use CreateRoom2. + /// \param pool The matchmaking pool to use, which is defined for the app. + /// \param maxUsers Overrides the Max Users value, which is configured in pool settings of the Developer Dashboard. + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when room data changes, such as when users join or leave. + /// + public static Request CreateRoom(string pool, uint maxUsers, bool subscribeToUpdates = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_CreateRoom(pool, maxUsers, subscribeToUpdates)); + } + + return null; + } + + /// Create a matchmaking room and join it, but do not enqueue the room. After + /// creation, you can call EnqueueRoom2. However, Oculus recommends using + /// CreateAndEnqueueRoom2 instead. + /// + /// Modes: BROWSE, QUICKMATCH (Advanced; Can Users Create Rooms = true) + /// + /// Create a matchmaking room and join it, but do not enqueue the room. After + /// creation, you can call EnqueueRoom. Consider using CreateAndEnqueueRoom + /// instead. + /// + /// Visit https://dashboard.oculus.com/application/[YOUR_APP_ID]/matchmaking to + /// set up pools and queries + /// \param pool The matchmaking pool to use, which is defined for the app. + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + public static Request CreateRoom2(string pool, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_CreateRoom2(pool, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// DEPRECATED. Use Enqueue2. + /// \param pool The pool to enqueue in. + /// \param customQueryData Optional. See "Custom criteria" section above. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// + public static Request Enqueue(string pool, CustomQuery customQueryData = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Enqueue(pool, customQueryData != null ? customQueryData.ToUnmanaged() : IntPtr.Zero)); + } + + return null; + } + + /// Modes: QUICKMATCH + /// + /// See overview documentation above. + /// + /// Enqueue yourself to await an available matchmaking room. The platform + /// returns a MessageType.Notification_Matchmaking_MatchFound message when a + /// match is found. Call Room.Join2() on the returned room. The response + /// contains useful information to display to the user to set expectations for + /// how long it will take to get a match. + /// + /// If the user stops waiting, call Matchmaking.Cancel(). + /// \param pool The pool to enqueue in. + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// + public static Request Enqueue2(string pool, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Enqueue2(pool, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// DEPRECATED. Please use Matchmaking.EnqueueRoom2() instead. + /// \param roomID Returned either from MessageType.Notification_Matchmaking_MatchFound or from Matchmaking.CreateRoom(). + /// \param customQueryData Optional. See the "Custom criteria" section above. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// - \b 12051: Pool '{pool_key}' is configured for Quickmatch mode. In Quickmatch mode, rooms are created on users' behalf when a match is found. Specify Advanced Quickmatch or Browse mode to use this feature. + /// + public static Request EnqueueRoom(UInt64 roomID, CustomQuery customQueryData = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_EnqueueRoom(roomID, customQueryData != null ? customQueryData.ToUnmanaged() : IntPtr.Zero)); + } + + return null; + } + + /// Modes: BROWSE (for Rooms only), ROOM + /// + /// See the overview documentation above. Enqueue yourself to await an + /// available matchmaking room. MessageType.Notification_Matchmaking_MatchFound + /// gets enqueued when a match is found. + /// + /// The response contains useful information to display to the user to set + /// expectations for how long it will take to get a match. + /// + /// If the user stops waiting, call Matchmaking.Cancel(). + /// \param roomID Returned either from MessageType.Notification_Matchmaking_MatchFound or from Matchmaking.CreateRoom(). + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// - \b 12051: Pool '{pool_key}' is configured for Quickmatch mode. In Quickmatch mode, rooms are created on users' behalf when a match is found. Specify Advanced Quickmatch or Browse mode to use this feature. + /// + public static Request EnqueueRoom2(UInt64 roomID, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_EnqueueRoom2(roomID, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// Modes: QUICKMATCH, BROWSE + /// + /// Used to debug the state of the current matchmaking pool queue. This is not + /// intended to be used in production. + /// + public static Request GetAdminSnapshot() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_GetAdminSnapshot()); + } + + return null; + } + + /// DEPRECATED. Use ovr_Room_Join2. + /// \param roomID ID of a room previously returned from MessageType.Notification_Matchmaking_MatchFound or Matchmaking.Browse(). + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when room data changes, such as when users join or leave. + /// + public static Request JoinRoom(UInt64 roomID, bool subscribeToUpdates = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_JoinRoom(roomID, subscribeToUpdates)); + } + + return null; + } + + /// Modes: QUICKMATCH, BROWSE (+ Skill Pool) + /// + /// For pools with skill-based matching. See overview documentation above. + /// + /// Call after calling Room.Join2() when the players are present to begin a + /// rated match for which you plan to report the results (using + /// Matchmaking.ReportResultInsecure()). + /// + /// Error codes + /// - \b 100: There is no active match associated with the room {room_id}. + /// - \b 100: You can only start matches, report matches, and track skill ratings in matchmaking rooms. {room_id} is a room, but it is not a matchmaking room. + /// + public static Request StartMatch(UInt64 roomID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_StartMatch(roomID)); + } + + return null; + } + + } + + public static partial class Media + { + /// Launch the Share to Facebook modal via a deeplink to Home on Gear VR, + /// allowing users to share local media files to Facebook. Accepts a + /// postTextSuggestion string for the default text of the Facebook post. + /// Requires a filePath string as the path to the image to be shared to + /// Facebook. This image should be located in your app's internal storage + /// directory. Requires a contentType indicating the type of media to be shared + /// (only 'photo' is currently supported.) + /// \param postTextSuggestion this text will prepopulate the facebook status text-input box within the share modal + /// \param filePath path to the file to be shared to facebook + /// \param contentType content type of the media to be shared + /// + public static Request ShareToFacebook(string postTextSuggestion, string filePath, MediaContentType contentType) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Media_ShareToFacebook(postTextSuggestion, filePath, contentType)); + } + + return null; + } + + } + + public static partial class Notifications + { + /// Retrieve a list of all pending room invites for your application (for + /// example, notifications that may have been sent before the user launched + /// your game). You can also get push notifications with + /// MessageType.Notification_Room_InviteReceived. + /// + public static Request GetRoomInviteNotifications() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Notification_GetRoomInvites()); + } + + return null; + } + + /// Mark a notification as read. This causes it to disappear from the Universal + /// Menu, the Oculus App, Oculus Home, and in-app retrieval. + /// + public static Request MarkAsRead(UInt64 notificationID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Notification_MarkAsRead(notificationID)); + } + + return null; + } + + } + + public static partial class Parties + { + /// Load the party the current user is in. + /// + public static Request GetCurrent() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Party_GetCurrent()); + } + + return null; + } + + } + + public static partial class Rooms + { + /// DEPRECATED. Use CreateAndJoinPrivate2. + /// \param joinPolicy Specifies who can join the room without an invite. + /// \param maxUsers The maximum number of users allowed in the room, including the creator. + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when room data changes, such as when users join or leave. + /// + public static Request CreateAndJoinPrivate(RoomJoinPolicy joinPolicy, uint maxUsers, bool subscribeToUpdates = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_CreateAndJoinPrivate(joinPolicy, maxUsers, subscribeToUpdates)); + } + + return null; + } + + /// Creates a new private (client controlled) room and adds the caller to it. + /// This type of room is good for matches where the user wants to play with + /// friends, as they're primarially discoverable by examining which rooms your + /// friends are in. + /// \param joinPolicy Specifies who can join the room without an invite. + /// \param maxUsers The maximum number of users allowed in the room, including the creator. + /// \param roomOptions Additional room configuration for this request. Optional. + /// + public static Request CreateAndJoinPrivate2(RoomJoinPolicy joinPolicy, uint maxUsers, RoomOptions roomOptions) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_CreateAndJoinPrivate2(joinPolicy, maxUsers, (IntPtr)roomOptions)); + } + + return null; + } + + /// Allows arbitrary rooms for the application to be loaded. + /// \param roomID The room to load. + /// + public static Request Get(UInt64 roomID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_Get(roomID)); + } + + return null; + } + + /// Easy loading of the room you're currently in. If you don't want live + /// updates on your current room (by using subscribeToUpdates), you can use + /// this to refresh the data. + /// + public static Request GetCurrent() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetCurrent()); + } + + return null; + } + + /// Allows the current room for a given user to be loaded. Remember that the + /// user's privacy settings may not allow their room to be loaded. Because of + /// this, it's often possible to load the users in a room, but not to take + /// those users and load their room. + /// \param userID ID of the user for which to load the room. + /// + public static Request GetCurrentForUser(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetCurrentForUser(userID)); + } + + return null; + } + + /// DEPRECATED. Use GetInvitableUsers2. + /// + public static Request GetInvitableUsers() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetInvitableUsers()); + } + + return null; + } + + /// Loads a list of users you can invite to a room. These are pulled from your + /// friends list and recently met lists and filtered for relevance and + /// interest. If the room cannot be joined, this list will be empty. By + /// default, the invitable users returned will be for the user's current room. + /// + /// If your application grouping was created after September 9 2017, recently + /// met users will be included by default. If your application grouping was + /// created before then, you can go to edit the setting in the "Rooms and + /// Matchmaking" section of Platform Services at dashboard.oculus.com + /// + /// Customization can be done via RoomOptions. Create this object with + /// RoomOptions(). The params that could be used are: + /// + /// 1. RoomOptions.SetRoomId()- will return the invitable users for this room + /// (instead of the current room). + /// + /// 2. RoomOptions.SetOrdering() - returns the list of users in the provided + /// ordering (see UserOrdering enum). + /// + /// 3. RoomOptions.SetRecentlyMetTimeWindow() - how long long ago should we + /// include users you've recently met in the results? + /// + /// 4. RoomOptions.SetMaxUserResults() - we will limit the number of results + /// returned. By default, the number is unlimited, but the server may choose to + /// limit results for performance reasons. + /// + /// 5. RoomOptions.SetExcludeRecentlyMet() - Don't include users recently in + /// rooms with this user in the result. Also, see the above comment. + /// + /// Example custom C++ usage: + /// + /// auto roomOptions = ovr_RoomOptions_Create(); + /// ovr_RoomOptions_SetOrdering(roomOptions, ovrUserOrdering_PresenceAlphabetical); + /// ovr_RoomOptions_SetRoomId(roomOptions, roomID); + /// ovr_Room_GetInvitableUsers2(roomOptions); + /// ovr_RoomOptions_Destroy(roomOptions); + /// \param roomOptions Additional configuration for this request. Optional. + /// + public static Request GetInvitableUsers2(RoomOptions roomOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetInvitableUsers2((IntPtr)roomOptions)); + } + + return null; + } + + /// Fetches the list of moderated rooms created for the application. + /// + public static Request GetModeratedRooms() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetModeratedRooms()); + } + + return null; + } + + /// Invites a user to the specified room. They will receive a notification via + /// MessageType.Notification_Room_InviteReceived if they are in your game, + /// and/or they can poll for room invites using + /// Notification.GetRoomInviteNotifications(). + /// \param roomID The ID of your current room. + /// \param inviteToken A user's invite token, returned by Room.GetInvitableUsers(). + /// + /// Error codes + /// - \b 100: The invite token has expired, the user will need to be reinvited to the room. + /// - \b 100: The target user cannot join you in your current experience + /// - \b 100: You cannot send an invite to a room you are not in + /// + public static Request InviteUser(UInt64 roomID, string inviteToken) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_InviteUser(roomID, inviteToken)); + } + + return null; + } + + /// Joins the target room (leaving the one you're currently in). + /// \param roomID The room to join. + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when room data changes, such as when users join or leave. + /// + /// Error codes + /// - \b 10: The room you're attempting to join is currently locked. Please try again later. + /// - \b 10: You don't have permission to enter this room. You may need to be invited first. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// - \b 100: The room you're attempting to join is full. Please try again later. + /// - \b 100: This game isn't available. If it already started or was canceled, you can host a new game at any point. + /// + public static Request Join(UInt64 roomID, bool subscribeToUpdates = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_Join(roomID, subscribeToUpdates)); + } + + return null; + } + + /// Joins the target room (leaving the one you're currently in). + /// \param roomID The room to join. + /// \param roomOptions Additional room configuration for this request. Optional. + /// + /// Error codes + /// - \b 10: The room you're attempting to join is currently locked. Please try again later. + /// - \b 10: You don't have permission to enter this room. You may need to be invited first. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// - \b 100: The room you're attempting to join is full. Please try again later. + /// - \b 100: This game isn't available. If it already started or was canceled, you can host a new game at any point. + /// + public static Request Join2(UInt64 roomID, RoomOptions roomOptions) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_Join2(roomID, (IntPtr)roomOptions)); + } + + return null; + } + + /// Allows the room owner to kick a user out of the current room. + /// \param roomID The room that you currently own (check Room.GetOwner()). + /// \param userID The user to be kicked (cannot be yourself). + /// \param kickDurationSeconds Length of the ban, in seconds. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: You cannot remove yourself from room {room_id} + /// + public static Request KickUser(UInt64 roomID, UInt64 userID, int kickDurationSeconds) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_KickUser(roomID, userID, kickDurationSeconds)); + } + + return null; + } + + /// Launch the invitable user flow to invite to the logged in user's current + /// room. This is intended to be a nice shortcut for developers not wanting to + /// build out their own Invite UI although it has the same rules as if you + /// build it yourself. + /// + public static Request LaunchInvitableUserFlow(UInt64 roomID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_LaunchInvitableUserFlow(roomID)); + } + + return null; + } + + /// Removes you from your current room. Returns the solo room you are now in if + /// it succeeds + /// \param roomID The room you're currently in. + /// + public static Request Leave(UInt64 roomID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_Leave(roomID)); + } + + return null; + } + + /// Allows the room owner to set the description of their room. + /// \param roomID The room that you currently own (check Room.GetOwner()). + /// \param description The new name of the room. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// + public static Request SetDescription(UInt64 roomID, string description) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_SetDescription(roomID, description)); + } + + return null; + } + + /// Disallow new members from being able to join the room. This will prevent + /// joins from Room.Join(), invites, 'Join From Home', etc. Users that are in + /// the room at the time of lockdown WILL be able to rejoin. + /// \param roomID The room whose membership you want to lock or unlock. + /// \param membershipLockStatus The new LockStatus for the room + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// + public static Request UpdateMembershipLockStatus(UInt64 roomID, RoomMembershipLockStatus membershipLockStatus) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_UpdateMembershipLockStatus(roomID, membershipLockStatus)); + } + + return null; + } + + /// Allows the room owner to transfer ownership to someone else. + /// \param roomID The room that the user owns (check Room.GetOwner()). + /// \param userID The new user to make an owner; the user must be in the room. + /// + public static Request UpdateOwner(UInt64 roomID, UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_UpdateOwner(roomID, userID)); + } + + return null; + } + + /// Sets the join policy of the user's private room. + /// \param roomID The room ID that the user owns (check Room.GetOwner()). + /// \param newJoinPolicy The new join policy for the room. + /// + public static Request UpdatePrivateRoomJoinPolicy(UInt64 roomID, RoomJoinPolicy newJoinPolicy) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_UpdatePrivateRoomJoinPolicy(roomID, newJoinPolicy)); + } + + return null; + } + + } + + public static partial class Users + { + /// Retrieve the user with the given ID. This might fail if the ID is invalid + /// or the user is blocked. + /// + /// NOTE: Users will have a unique ID per application. + /// \param userID User ID retrieved with this application. + /// + public static Request Get(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_Get(userID)); + } + + return null; + } + + /// Return an access token for this user, suitable for making REST calls + /// against graph.oculus.com. + /// + public static Request GetAccessToken() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetAccessToken()); + } + + return null; + } + + /// Retrieve the currently signed in user. This call is available offline. + /// + /// NOTE: This will not return the user's presence as it should always be + /// 'online' in your application. + /// + /// NOTE: Users will have a unique ID per application. + /// + public static Request GetLoggedInUser() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetLoggedInUser()); + } + + return null; + } + + /// Retrieve a list of the logged in user's friends. + /// + public static Request GetLoggedInUserFriends() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetLoggedInUserFriends()); + } + + return null; + } + + /// Retrieve a list of the logged in user's friends and any rooms they might be + /// in. + /// + public static Request GetLoggedInUserFriendsAndRooms() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetLoggedInUserFriendsAndRooms()); + } + + return null; + } + + /// Returns a list of users that the logged in user was in a room with + /// recently, sorted by relevance, along with any rooms they might be in. All + /// you need to do to use this method is to use our Rooms API, and we will + /// track the number of times users are together, their most recent encounter, + /// and the amount of time they spend together. + /// + /// Customization can be done via UserOptions. Create this object with + /// UserOptions(). The params that could be used are: + /// + /// 1. UserOptions.SetTimeWindow() - how recently should the users have played? + /// The default is TimeWindow.ThirtyDays. + /// + /// 2. UserOptions.SetMaxUsers() - we will limit the number of results + /// returned. By default, the number is unlimited, but the server may choose to + /// limit results for performance reasons. + /// \param userOptions Additional configuration for this request. Optional. + /// + public static Request GetLoggedInUserRecentlyMetUsersAndRooms(UserOptions userOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetLoggedInUserRecentlyMetUsersAndRooms((IntPtr)userOptions)); + } + + return null; + } + + /// returns an ovrID which is unique per org. allows different apps within the + /// same org to identify the user. + /// \param userID to load the org scoped id of + /// + public static Request GetOrgScopedID(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetOrgScopedID(userID)); + } + + return null; + } + + /// Returns all accounts belonging to this user. Accounts are the Oculus user + /// and x-users that are linked to this user. + /// + public static Request GetSdkAccounts() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetSdkAccounts()); + } + + return null; + } + + /// Part of the scheme to confirm the identity of a particular user in your + /// backend. You can pass the result of User.GetUserProof() and a user ID from + /// User.Get() to your your backend. Your server can then use our api to verify + /// identity. 'https://graph.oculus.com/user_nonce_validate?nonce=USER_PROOF&us + /// er_id=USER_ID&access_token=ACCESS_TOKEN' + /// + /// NOTE: The nonce is only good for one check and then it is invalidated. + /// + public static Request GetUserProof() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetUserProof()); + } + + return null; + } + + /// Launch the flow for sending a friend request to a user. + /// \param userID User ID of user to send a friend request to + /// + public static Request LaunchFriendRequestFlow(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_LaunchFriendRequestFlow(userID)); + } + + return null; + } + + /// Launch the profile of the given user. The profile surfaces information + /// about the user and supports relevant actions that the viewer may take on + /// that user, e.g. sending a friend request. + /// \param userID User ID for profile being viewed + /// + public static Request LaunchProfile(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_LaunchProfile(userID)); + } + + return null; + } + + } + + public static partial class Voip + { + /// Sets whether SystemVoip should be suppressed so that this app's Voip can + /// use the mic and play incoming Voip audio. + /// + public static Request SetSystemVoipSuppressed(bool suppressed) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Voip_SetSystemVoipSuppressed(suppressed)); + } + + return null; + } + + } + + + public static partial class Achievements { + public static Request GetNextAchievementDefinitionListPage(Models.AchievementDefinitionList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextAchievementDefinitionListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.Achievements_GetNextAchievementDefinitionArrayPage + ) + ); + } + + return null; + } + + public static Request GetNextAchievementProgressListPage(Models.AchievementProgressList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextAchievementProgressListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.Achievements_GetNextAchievementProgressArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class CloudStorage { + public static Request GetNextCloudStorageMetadataListPage(Models.CloudStorageMetadataList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextCloudStorageMetadataListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.CloudStorage_GetNextCloudStorageMetadataArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class IAP { + public static Request GetNextProductListPage(Models.ProductList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextProductListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.IAP_GetNextProductArrayPage + ) + ); + } + + return null; + } + + public static Request GetNextPurchaseListPage(Models.PurchaseList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextPurchaseListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.IAP_GetNextPurchaseArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class Notifications { + public static Request GetNextRoomInviteNotificationListPage(Models.RoomInviteNotificationList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextRoomInviteNotificationListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.Notification_GetNextRoomInviteNotificationArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class Rooms { + public static Request GetNextRoomListPage(Models.RoomList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextRoomListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.Room_GetNextRoomArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class Users { + public static Request GetNextUserAndRoomListPage(Models.UserAndRoomList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextUserAndRoomListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.User_GetNextUserAndRoomArrayPage + ) + ); + } + + return null; + } + + public static Request GetNextUserListPage(Models.UserList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextUserListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.User_GetNextUserArrayPage + ) + ); + } + + return null; + } + + } + + +} diff --git a/Assets/Oculus/Platform/Scripts/Platform.cs.meta b/Assets/Oculus/Platform/Scripts/Platform.cs.meta new file mode 100644 index 0000000..b6c93e9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Platform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d0b0b5b4a405b7841a989262b769afe8 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs b/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs new file mode 100644 index 0000000..cedeaed --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs @@ -0,0 +1,42 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PlatformInitializeResult : int + { + [Description("SUCCESS")] + Success = 0, + + [Description("UNINITIALIZED")] + Uninitialized = -1, + + [Description("PRE_LOADED")] + PreLoaded = -2, + + [Description("FILE_INVALID")] + FileInvalid = -3, + + [Description("SIGNATURE_INVALID")] + SignatureInvalid = -4, + + [Description("UNABLE_TO_VERIFY")] + UnableToVerify = -5, + + [Description("VERSION_MISMATCH")] + VersionMismatch = -6, + + [Description("UNKNOWN")] + Unknown = -7, + + [Description("INVALID_CREDENTIALS")] + InvalidCredentials = -8, + + [Description("NOT_ENTITLED")] + NotEntitled = -9, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs.meta b/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs.meta new file mode 100644 index 0000000..43814ec --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 32fdc6a414d00e443b9ac1c973395ca8 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PlatformInternal.cs b/Assets/Oculus/Platform/Scripts/PlatformInternal.cs new file mode 100644 index 0000000..45190a8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformInternal.cs @@ -0,0 +1,176 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("Assembly-CSharp-Editor")] + +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Collections.Generic; + + public static class PlatformInternal + { + // Keep this enum in sync with ovrMessageTypeInternal in OVR_Platform_Internal.h + public enum MessageTypeInternal : uint { //TODO - rename this to type; it's already in Message class + Application_ExecuteCoordinatedLaunch = 0x267DB4F4, + Application_GetInstalledApplications = 0x520F744C, + Avatar_UpdateMetaData = 0x7BCFD98E, + GraphAPI_Get = 0x30FF006E, + GraphAPI_Post = 0x76A5A7C4, + HTTP_Get = 0x6FB63223, + HTTP_GetToFile = 0x4E81DC59, + HTTP_MultiPartPost = 0x5842D210, + HTTP_Post = 0x6B36A54F, + Livestreaming_IsAllowedForApplication = 0x0B6D8D76, + Livestreaming_StartPartyStream = 0x7B2F5CDC, + Livestreaming_StartStream = 0x501AC7BE, + Livestreaming_StopPartyStream = 0x27670F58, + Livestreaming_StopStream = 0x44E40DCA, + Livestreaming_UpdateCommentsOverlayVisibility = 0x1F7D8034, + Livestreaming_UpdateMicStatus = 0x1C577D87, + Party_Create = 0x1AD31B4F, + Party_GatherInApplication = 0x7287C183, + Party_Get = 0x5E8953BD, + Party_GetCurrentForUser = 0x58CBFF2A, + Party_Invite = 0x35B5C4E3, + Party_Join = 0x68027C73, + Party_Leave = 0x329206D1, + Room_CreateOrUpdateAndJoinNamed = 0x7C8E0A91, + Room_GetNamedRooms = 0x077D6E8C, + Room_GetSocialRooms = 0x61881D76, + SystemPermissions_GetStatus = 0x1D6A2C09, + SystemPermissions_LaunchDeeplink = 0x1A5A8431, + User_CancelRecordingForReportFlow = 0x03E0D149, + User_GetLinkedAccounts = 0x5793F456, + User_LaunchBlockFlow = 0x6FD62528, + User_LaunchReportFlow = 0x5662A011, + User_LaunchUnblockFlow = 0x14A22A97, + User_NewEntitledTestUser = 0x11741F03, + User_NewTestUser = 0x36E84F8C, + User_NewTestUserFriends = 0x1ED726C7, + User_StartRecordingForReportFlow = 0x6C6E33E3, + User_StopRecordingAndLaunchReportFlow = 0x60788C8B, + User_StopRecordingAndLaunchReportFlow2 = 0x19C2B32B + }; + + public static void CrashApplication() { + CAPI.ovr_CrashApplication(); + } + + internal static Message ParseMessageHandle(IntPtr messageHandle, Message.MessageType messageType) + { + Message message = null; + switch ((PlatformInternal.MessageTypeInternal)messageType) + { + case MessageTypeInternal.User_StartRecordingForReportFlow: + message = new MessageWithAbuseReportRecording(messageHandle); + break; + + case MessageTypeInternal.Application_ExecuteCoordinatedLaunch: + case MessageTypeInternal.Livestreaming_StopPartyStream: + case MessageTypeInternal.Livestreaming_UpdateMicStatus: + case MessageTypeInternal.Party_Leave: + case MessageTypeInternal.User_CancelRecordingForReportFlow: + message = new Message(messageHandle); + break; + + case MessageTypeInternal.Application_GetInstalledApplications: + message = new MessageWithInstalledApplicationList(messageHandle); + break; + + case MessageTypeInternal.User_LaunchBlockFlow: + message = new MessageWithLaunchBlockFlowResult(messageHandle); + break; + + case MessageTypeInternal.User_LaunchUnblockFlow: + message = new MessageWithLaunchUnblockFlowResult(messageHandle); + break; + + case MessageTypeInternal.User_GetLinkedAccounts: + message = new MessageWithLinkedAccountList(messageHandle); + break; + + case MessageTypeInternal.Livestreaming_IsAllowedForApplication: + message = new MessageWithLivestreamingApplicationStatus(messageHandle); + break; + + case MessageTypeInternal.Livestreaming_StartPartyStream: + case MessageTypeInternal.Livestreaming_StartStream: + message = new MessageWithLivestreamingStartResult(messageHandle); + break; + + case MessageTypeInternal.Livestreaming_UpdateCommentsOverlayVisibility: + message = new MessageWithLivestreamingStatus(messageHandle); + break; + + case MessageTypeInternal.Livestreaming_StopStream: + message = new MessageWithLivestreamingVideoStats(messageHandle); + break; + + case MessageTypeInternal.Party_Get: + message = new MessageWithParty(messageHandle); + break; + + case MessageTypeInternal.Party_GetCurrentForUser: + message = new MessageWithPartyUnderCurrentParty(messageHandle); + break; + + case MessageTypeInternal.Party_Create: + case MessageTypeInternal.Party_GatherInApplication: + case MessageTypeInternal.Party_Invite: + case MessageTypeInternal.Party_Join: + message = new MessageWithPartyID(messageHandle); + break; + + case MessageTypeInternal.Room_CreateOrUpdateAndJoinNamed: + message = new MessageWithRoomUnderViewerRoom(messageHandle); + break; + + case MessageTypeInternal.Room_GetNamedRooms: + case MessageTypeInternal.Room_GetSocialRooms: + message = new MessageWithRoomList(messageHandle); + break; + + case MessageTypeInternal.Avatar_UpdateMetaData: + case MessageTypeInternal.GraphAPI_Get: + case MessageTypeInternal.GraphAPI_Post: + case MessageTypeInternal.HTTP_Get: + case MessageTypeInternal.HTTP_GetToFile: + case MessageTypeInternal.HTTP_MultiPartPost: + case MessageTypeInternal.HTTP_Post: + case MessageTypeInternal.User_NewEntitledTestUser: + case MessageTypeInternal.User_NewTestUser: + case MessageTypeInternal.User_NewTestUserFriends: + message = new MessageWithString(messageHandle); + break; + + case MessageTypeInternal.SystemPermissions_GetStatus: + case MessageTypeInternal.SystemPermissions_LaunchDeeplink: + message = new MessageWithSystemPermission(messageHandle); + break; + + case MessageTypeInternal.User_LaunchReportFlow: + case MessageTypeInternal.User_StopRecordingAndLaunchReportFlow: + case MessageTypeInternal.User_StopRecordingAndLaunchReportFlow2: + message = new MessageWithUserReportID(messageHandle); + break; + + } + return message; + } + + public static class HTTP + { + public static void SetHttpTransferUpdateCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_HTTP_Transfer, + callback + ); + } + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/PlatformInternal.cs.meta b/Assets/Oculus/Platform/Scripts/PlatformInternal.cs.meta new file mode 100644 index 0000000..9ce8f90 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformInternal.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9d9c8cba9a20e0c46b07b73e895db7bd +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PlatformSettings.cs b/Assets/Oculus/Platform/Scripts/PlatformSettings.cs new file mode 100644 index 0000000..e8fdb36 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformSettings.cs @@ -0,0 +1,84 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System.Collections; + +#if UNITY_EDITOR + [UnityEditor.InitializeOnLoad] +#endif + public sealed class PlatformSettings : ScriptableObject + { + public static string AppID + { + get { return Instance.ovrAppID; } + set { Instance.ovrAppID = value; } + } + + public static string MobileAppID + { + get { return Instance.ovrMobileAppID; } + set { Instance.ovrMobileAppID = value; } + } + + public static bool UseStandalonePlatform + { + get { return Instance.ovrUseStandalonePlatform; } + set { Instance.ovrUseStandalonePlatform = value; } + } + + [SerializeField] + private string ovrAppID = ""; + + [SerializeField] + private string ovrMobileAppID = ""; + +#if UNITY_EDITOR_WIN + [SerializeField] + private bool ovrUseStandalonePlatform = false; +#else + [SerializeField] + private bool ovrUseStandalonePlatform = true; +#endif + + private static PlatformSettings instance; + public static PlatformSettings Instance + { + get + { + if (instance == null) + { + instance = Resources.Load("OculusPlatformSettings"); + + // This can happen if the developer never input their App Id into the Unity Editor + // and therefore never created the OculusPlatformSettings.asset file + // Use a dummy object with defaults for the getters so we don't have a null pointer exception + if (instance == null) + { + instance = ScriptableObject.CreateInstance(); + +#if UNITY_EDITOR + // Only in the editor should we save it to disk + string properPath = System.IO.Path.Combine(UnityEngine.Application.dataPath, "Resources"); + if (!System.IO.Directory.Exists(properPath)) + { + UnityEditor.AssetDatabase.CreateFolder("Assets", "Resources"); + } + + string fullPath = System.IO.Path.Combine( + System.IO.Path.Combine("Assets", "Resources"), + "OculusPlatformSettings.asset" + ); + UnityEditor.AssetDatabase.CreateAsset(instance, fullPath); +#endif + } + } + return instance; + } + + set + { + instance = value; + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/PlatformSettings.cs.meta b/Assets/Oculus/Platform/Scripts/PlatformSettings.cs.meta new file mode 100644 index 0000000..c3c4305 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3d881e962d099f4a8eb492ef7e9a8c0 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Request.cs b/Assets/Oculus/Platform/Scripts/Request.cs new file mode 100644 index 0000000..4a7651f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Request.cs @@ -0,0 +1,43 @@ +namespace Oculus.Platform +{ + public sealed class Request : Request + { + public Request(ulong requestID) : base (requestID) { } + + public Request OnComplete(Message.Callback callback) + { + Callback.OnComplete(this, callback); + return this; + } + } + + public class Request + { + public Request(ulong requestID) {this.RequestID = requestID;} + public ulong RequestID {get; set;} + + public Request OnComplete(Message.Callback callback) + { + Callback.OnComplete(this, callback); + return this; + } + + /** + * This will run callbacks on all messages that returned from the server. + * If too many message are coming back at once, then a limit can be passed in + * as an arg to limit the number of messages to run callbacks on at a time + */ + public static void RunCallbacks(uint limit = 0) + { + // default of 0 will run callbacks on all messages on the queue + if (limit == 0) + { + Callback.RunCallbacks(); + } + else + { + Callback.RunLimitedCallbacks(limit); + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/Request.cs.meta b/Assets/Oculus/Platform/Scripts/Request.cs.meta new file mode 100644 index 0000000..c592487 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Request.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e3a84fde40d771d4cada2a72c18a961d +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs b/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs new file mode 100644 index 0000000..cd72ea6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RoomJoinPolicy : int + { + [Description("NONE")] + None, + + [Description("EVERYONE")] + Everyone, + + [Description("FRIENDS_OF_MEMBERS")] + FriendsOfMembers, + + [Description("FRIENDS_OF_OWNER")] + FriendsOfOwner, + + [Description("INVITED_USERS")] + InvitedUsers, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs.meta b/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs.meta new file mode 100644 index 0000000..ff8144a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7523990f25085a84a9b85d756ef89692 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomJoinability.cs b/Assets/Oculus/Platform/Scripts/RoomJoinability.cs new file mode 100644 index 0000000..c16c845 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomJoinability.cs @@ -0,0 +1,33 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RoomJoinability : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("ARE_IN")] + AreIn, + + [Description("ARE_KICKED")] + AreKicked, + + [Description("CAN_JOIN")] + CanJoin, + + [Description("IS_FULL")] + IsFull, + + [Description("NO_VIEWER")] + NoViewer, + + [Description("POLICY_PREVENTS")] + PolicyPrevents, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RoomJoinability.cs.meta b/Assets/Oculus/Platform/Scripts/RoomJoinability.cs.meta new file mode 100644 index 0000000..15857b0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomJoinability.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6a79fb9a166cef0428bf67f8d2b0871d +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs b/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs new file mode 100644 index 0000000..d4d986c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RoomMembershipLockStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("LOCK")] + Lock, + + [Description("UNLOCK")] + Unlock, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs.meta b/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs.meta new file mode 100644 index 0000000..8b24a14 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a4eb5746a05c2f646802f2dda6ed47b9 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomOptions.cs b/Assets/Oculus/Platform/Scripts/RoomOptions.cs new file mode 100644 index 0000000..a9e42e6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomOptions.cs @@ -0,0 +1,61 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class RoomOptions { + + public RoomOptions() { + Handle = CAPI.ovr_RoomOptions_Create(); + } + + public void SetDataStore(string key, string value) { + CAPI.ovr_RoomOptions_SetDataStoreString(Handle, key, value); + } + + public void ClearDataStore() { + CAPI.ovr_RoomOptions_ClearDataStore(Handle); + } + + public void SetExcludeRecentlyMet(bool value) { + CAPI.ovr_RoomOptions_SetExcludeRecentlyMet(Handle, value); + } + + public void SetMaxUserResults(uint value) { + CAPI.ovr_RoomOptions_SetMaxUserResults(Handle, value); + } + + public void SetOrdering(UserOrdering value) { + CAPI.ovr_RoomOptions_SetOrdering(Handle, value); + } + + public void SetRecentlyMetTimeWindow(TimeWindow value) { + CAPI.ovr_RoomOptions_SetRecentlyMetTimeWindow(Handle, value); + } + + public void SetRoomId(UInt64 value) { + CAPI.ovr_RoomOptions_SetRoomId(Handle, value); + } + + public void SetTurnOffUpdates(bool value) { + CAPI.ovr_RoomOptions_SetTurnOffUpdates(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(RoomOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~RoomOptions() { + CAPI.ovr_RoomOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/RoomOptions.cs.meta b/Assets/Oculus/Platform/Scripts/RoomOptions.cs.meta new file mode 100644 index 0000000..a599b1a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 02f2744e317e9d94286fbaf2c8d422dc +timeCreated: 1523486796 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomType.cs b/Assets/Oculus/Platform/Scripts/RoomType.cs new file mode 100644 index 0000000..eac3adc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomType.cs @@ -0,0 +1,27 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RoomType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("MATCHMAKING")] + Matchmaking, + + [Description("MODERATED")] + Moderated, + + [Description("PRIVATE")] + Private, + + [Description("SOLO")] + Solo, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RoomType.cs.meta b/Assets/Oculus/Platform/Scripts/RoomType.cs.meta new file mode 100644 index 0000000..dd3eb27 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1f96a088b097de34bb7d06c1e434beae +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/SdkAccountType.cs b/Assets/Oculus/Platform/Scripts/SdkAccountType.cs new file mode 100644 index 0000000..e3bdc85 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SdkAccountType.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum SdkAccountType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("OCULUS")] + Oculus, + + [Description("FACEBOOK_GAMEROOM")] + FacebookGameroom, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/SdkAccountType.cs.meta b/Assets/Oculus/Platform/Scripts/SdkAccountType.cs.meta new file mode 100644 index 0000000..8c6dd32 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SdkAccountType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6207f568662ec6f4eb7925b4cf951cbe +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/SendPolicy.cs b/Assets/Oculus/Platform/Scripts/SendPolicy.cs new file mode 100644 index 0000000..f7146bb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SendPolicy.cs @@ -0,0 +1,31 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum SendPolicy : int + { + /// Sends a message using an unreliable data channel (UDP-based). No delivery + /// or ordering guarantees are provided. Sending will fail unless a connection + /// to the peer is already established, either via a previous call to + /// Net.SendPacket() or an explicit Net.Connect(). + /// + /// Ideally, each message should fit into a single packet. Therefore, it is + /// recommended to keep them under 1200 bytes. + [Description("UNRELIABLE")] + Unreliable, + + /// Messages are delivered reliably and in order. The networking layer retries + /// until each message is acknowledged by the peer. Outgoing messages are + /// buffered until a working connection to the peer is established. + [Description("RELIABLE")] + Reliable, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/SendPolicy.cs.meta b/Assets/Oculus/Platform/Scripts/SendPolicy.cs.meta new file mode 100644 index 0000000..8f850b8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SendPolicy.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ad94dee2a9fba1340966fcd9546e88d3 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/ServiceProvider.cs b/Assets/Oculus/Platform/Scripts/ServiceProvider.cs new file mode 100644 index 0000000..3ffdc5b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ServiceProvider.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum ServiceProvider : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("DROPBOX")] + Dropbox, + + [Description("FACEBOOK")] + Facebook, + + [Description("GOOGLE")] + Google, + + [Description("INSTAGRAM")] + Instagram, + + [Description("REMOTE_MEDIA")] + RemoteMedia, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/ServiceProvider.cs.meta b/Assets/Oculus/Platform/Scripts/ServiceProvider.cs.meta new file mode 100644 index 0000000..dc804b6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ServiceProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1c810b97874c14044a5d4d5d7f44e3e9 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs b/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs new file mode 100644 index 0000000..8843a43 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum ShareMediaStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("SHARED")] + Shared, + + [Description("CANCELED")] + Canceled, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs.meta b/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs.meta new file mode 100644 index 0000000..b95ab72 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c02daaa12810cb345ae1fcaa33323b68 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs b/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs new file mode 100644 index 0000000..485301e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs @@ -0,0 +1,40 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Runtime.InteropServices; + + public sealed class StandalonePlatform + { + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void UnityLogDelegate(IntPtr tag, IntPtr msg); + + public Request InitializeInEditor() + { +#if UNITY_ANDROID + if (String.IsNullOrEmpty(PlatformSettings.MobileAppID)) + { + throw new UnityException("Update your App ID by selecting 'Oculus Platform' -> 'Edit Settings'"); + } + var appID = PlatformSettings.MobileAppID; +#else + if (String.IsNullOrEmpty(PlatformSettings.AppID)) + { + throw new UnityException("Update your App ID by selecting 'Oculus Platform' -> 'Edit Settings'"); + } + var appID = PlatformSettings.AppID; +#endif + if (String.IsNullOrEmpty(StandalonePlatformSettings.OculusPlatformTestUserAccessToken)) + { + throw new UnityException("Update your standalone credentials by selecting 'Oculus Platform' -> 'Edit Settings'"); + } + var accessToken = StandalonePlatformSettings.OculusPlatformTestUserAccessToken; + + CAPI.ovr_UnityResetTestPlatform(); + CAPI.ovr_UnityInitGlobals(IntPtr.Zero); + + return new Request(CAPI.ovr_PlatformInitializeWithAccessToken(UInt64.Parse(appID), accessToken)); + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs.meta b/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs.meta new file mode 100644 index 0000000..6e807d5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 875312922ec23844aac8ed300af28093 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs b/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs new file mode 100644 index 0000000..a659652 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs @@ -0,0 +1,77 @@ +namespace Oculus.Platform +{ + + // This only exists for the Unity Editor + public sealed class StandalonePlatformSettings + { + +#if UNITY_EDITOR + private static string _OculusPlatformTestUserPassword = ""; + + private static void ClearOldStoredPassword() + { + // Ensure that we are not storing the old passwords anywhere on the machine + if (UnityEditor.EditorPrefs.HasKey("OculusStandaloneUserPassword")) + { + UnityEditor.EditorPrefs.SetString("OculusStandaloneUserPassword", "0000"); + UnityEditor.EditorPrefs.DeleteKey("OculusStandaloneUserPassword"); + } + } +#endif + + public static string OculusPlatformTestUserEmail + { + get + { +#if UNITY_EDITOR + return UnityEditor.EditorPrefs.GetString("OculusStandaloneUserEmail"); +#else + return string.Empty; +#endif + } + set + { +#if UNITY_EDITOR + UnityEditor.EditorPrefs.SetString("OculusStandaloneUserEmail", value); +#endif + } + } + + public static string OculusPlatformTestUserPassword + { + get + { +#if UNITY_EDITOR + ClearOldStoredPassword(); + return _OculusPlatformTestUserPassword; +#else + return string.Empty; +#endif + } + set + { +#if UNITY_EDITOR + ClearOldStoredPassword(); + _OculusPlatformTestUserPassword = value; +#endif + } + } + public static string OculusPlatformTestUserAccessToken + { + get + { +#if UNITY_EDITOR + return UnityEditor.EditorPrefs.GetString("OculusStandaloneUserAccessToken"); +#else + return string.Empty; +#endif + } + set + { +#if UNITY_EDITOR + UnityEditor.EditorPrefs.SetString("OculusStandaloneUserAccessToken", value); +#endif + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs.meta b/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs.meta new file mode 100644 index 0000000..fabd728 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3396588e357647947883119dbdbb83cd +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs b/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs new file mode 100644 index 0000000..9ec899f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum SystemVoipStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("UNAVAILABLE")] + Unavailable, + + [Description("SUPPRESSED")] + Suppressed, + + [Description("ACTIVE")] + Active, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs.meta b/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs.meta new file mode 100644 index 0000000..1efc068 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5626c6e6cba5cb846943182cc89dc859 +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/TimeWindow.cs b/Assets/Oculus/Platform/Scripts/TimeWindow.cs new file mode 100644 index 0000000..08b52aa --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/TimeWindow.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum TimeWindow : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("ONE_HOUR")] + OneHour, + + [Description("ONE_DAY")] + OneDay, + + [Description("ONE_WEEK")] + OneWeek, + + [Description("THIRTY_DAYS")] + ThirtyDays, + + [Description("NINETY_DAYS")] + NinetyDays, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/TimeWindow.cs.meta b/Assets/Oculus/Platform/Scripts/TimeWindow.cs.meta new file mode 100644 index 0000000..409ba9a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/TimeWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 676a14e7240dad94eabb75f82b511b74 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/UserOptions.cs b/Assets/Oculus/Platform/Scripts/UserOptions.cs new file mode 100644 index 0000000..af51c31 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserOptions.cs @@ -0,0 +1,45 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class UserOptions { + + public UserOptions() { + Handle = CAPI.ovr_UserOptions_Create(); + } + + public void SetMaxUsers(uint value) { + CAPI.ovr_UserOptions_SetMaxUsers(Handle, value); + } + + public void AddServiceProvider(ServiceProvider value) { + CAPI.ovr_UserOptions_AddServiceProvider(Handle, value); + } + + public void ClearServiceProviders() { + CAPI.ovr_UserOptions_ClearServiceProviders(Handle); + } + + public void SetTimeWindow(TimeWindow value) { + CAPI.ovr_UserOptions_SetTimeWindow(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(UserOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~UserOptions() { + CAPI.ovr_UserOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/UserOptions.cs.meta b/Assets/Oculus/Platform/Scripts/UserOptions.cs.meta new file mode 100644 index 0000000..4982cc4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 95b8b021eec44704fa95cad03f793a34 +timeCreated: 1523486800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/UserOrdering.cs b/Assets/Oculus/Platform/Scripts/UserOrdering.cs new file mode 100644 index 0000000..21c613b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserOrdering.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum UserOrdering : int + { + [Description("UNKNOWN")] + Unknown, + + /// No preference for ordering (could be in any or no order) + [Description("NONE")] + None, + + /// Orders by online users first and then offline users. Within each group the + /// users are ordered alphabetically by display name + [Description("PRESENCE_ALPHABETICAL")] + PresenceAlphabetical, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/UserOrdering.cs.meta b/Assets/Oculus/Platform/Scripts/UserOrdering.cs.meta new file mode 100644 index 0000000..a068290 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserOrdering.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3e9122fd848b41a4eae13ee5b6138b0b +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs b/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs new file mode 100644 index 0000000..ba9487a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum UserPresenceStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("ONLINE")] + Online, + + [Description("OFFLINE")] + Offline, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs.meta b/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs.meta new file mode 100644 index 0000000..5fc02d0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 737fdccdf4542bf498c1363c77818305 +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs b/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs new file mode 100644 index 0000000..3bee421 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs @@ -0,0 +1,59 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer3.oculus.com/documentation/platform/latest/concepts/dg-core-content/#dg-cc-voip +#if false +namespace Oculus.Platform +{ + using UnityEngine; + using System.Collections.Generic; + + public class VoipAudioSource : MonoBehaviour + { + public bool spatialize = true; + + BufferedAudioStream bufferedAudioStream; + Decoder decoder; + protected List debugOutputData; + + void Start() + { + AudioSource audioSource = gameObject.AddComponent(); + Debug.Log(audioSource); + audioSource.spatialize = spatialize; + bufferedAudioStream = new BufferedAudioStream(audioSource); + decoder = new Decoder(); + } + + public void Stop() + { + } + + public void AddCompressedData(byte[] compressedData) + { + if(decoder == null || bufferedAudioStream == null) + { + throw new System.Exception("VoipAudioSource failed to init"); + } + + float[] decompressedData = decoder.Decode(compressedData); + if (decompressedData != null && decompressedData.Length > 0) + { + bufferedAudioStream.AddData(decompressedData); + if (debugOutputData != null) + { + debugOutputData.AddRange(decompressedData); + } + } + } + + void Update() + { + if (bufferedAudioStream == null) + { + throw new System.Exception("VoipAudioSource failed to init"); + } + + bufferedAudioStream.Update(); + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs.meta b/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs.meta new file mode 100644 index 0000000..b44caec --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d7c40db1e91886345b8e1866120f6c49 +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs b/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs new file mode 100644 index 0000000..6654a29 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs @@ -0,0 +1,152 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections.Generic; + + public class VoipAudioSourceHiLevel : MonoBehaviour + { + // This is a delegate that exists as a surface for OnAudioFilterRead + // It will be callled on unity's audio thread + public class FilterReadDelegate : MonoBehaviour + { + public VoipAudioSourceHiLevel parent; + float[] scratchBuffer; + + void Awake() + { + int bufferSizeElements = (int)CAPI.ovr_Voip_GetOutputBufferMaxSize(); + scratchBuffer = new float[bufferSizeElements]; + } + + void OnAudioFilterRead(float[] data, int channels) + { + int sizeToFetch = data.Length / channels; + int sourceBufferSize = sizeToFetch; + if (sourceBufferSize > scratchBuffer.Length) + { + Array.Clear(data, 0, data.Length); + throw new Exception(string.Format("Audio system tried to pull {0} bytes, max voip internal ring buffer size {1}", sizeToFetch, scratchBuffer.Length)); + } + + int available = parent.pcmSource.PeekSizeElements(); + if (available < sourceBufferSize) + { + if (verboseLogging) + { + Debug.LogFormat( + "Voip starved! Want {0}, but only have {1} available", + sourceBufferSize, + available); + } + return; + } + + int copied = parent.pcmSource.GetPCM(scratchBuffer, sourceBufferSize); + if (copied < sourceBufferSize) + { + Debug.LogWarningFormat( + "GetPCM() returned {0} samples, expected {1}", + copied, + sourceBufferSize); + + return; + } + + int dest = 0; + float tmpPeakAmp = -1; + for (int i = 0; i < sizeToFetch; i++) + { + float val = scratchBuffer[i]; + + for (int j = 0; j < channels; j++) + { + data[dest++] = val; + if (val > tmpPeakAmp) + { + tmpPeakAmp = val; + } + } + } + parent.peakAmplitude = tmpPeakAmp; + } + } + + + int initialPlaybackDelayMS; + public UInt64 senderID + { + set + { + pcmSource.SetSenderID(value); + } + } + + public AudioSource audioSource; + public float peakAmplitude; + + protected IVoipPCMSource pcmSource; + + static int audioSystemPlaybackFrequency; + static bool verboseLogging = false; + + protected void Stop() {} + + VoipSampleRate SampleRateToEnum(int rate) { + switch(rate) { + case 48000: + return VoipSampleRate.HZ48000; + case 44100: + return VoipSampleRate.HZ44100; + case 24000: + return VoipSampleRate.HZ24000; + default: + return VoipSampleRate.Unknown; + } + } + + protected void Awake() + { + CreatePCMSource(); + if(audioSource == null) { + audioSource = gameObject.AddComponent(); + } + audioSource.gameObject.AddComponent(); + var filterDelegate = audioSource.gameObject.GetComponent(); + filterDelegate.parent = this; + + initialPlaybackDelayMS = 40; + + audioSystemPlaybackFrequency = AudioSettings.outputSampleRate; + CAPI.ovr_Voip_SetOutputSampleRate(SampleRateToEnum(audioSystemPlaybackFrequency)); + if(verboseLogging) { + Debug.LogFormat("freq {0}", audioSystemPlaybackFrequency); + } + } + + void Start() { + audioSource.Stop(); + } + + protected virtual void CreatePCMSource() + { + pcmSource = new VoipPCMSourceNative(); + } + + protected static int MSToElements(int ms) { + return ms * audioSystemPlaybackFrequency / 1000; + } + + void Update() + { + pcmSource.Update(); + + if (!audioSource.isPlaying && pcmSource.PeekSizeElements() >= MSToElements(initialPlaybackDelayMS)) { + if(verboseLogging) { + Debug.LogFormat("buffered {0} elements, starting playback", pcmSource.PeekSizeElements()); + } + audioSource.Play(); + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs.meta b/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs.meta new file mode 100644 index 0000000..859eadd --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2a84c0bd46c2454449deb6605f136b5c +timeCreated: 1523486798 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipBitrate.cs b/Assets/Oculus/Platform/Scripts/VoipBitrate.cs new file mode 100644 index 0000000..e1309cb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipBitrate.cs @@ -0,0 +1,43 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum VoipBitrate : int + { + [Description("UNKNOWN")] + Unknown, + + /// Very low audio quality for minimal network usage. This may not give the + /// full range of Hz for audio, but it will save on network usage. + [Description("B16000")] + B16000, + + /// Lower audio quality but also less network usage. + [Description("B24000")] + B24000, + + /// This is the default bitrate for voip connections. It should be the best + /// tradeoff between audio quality and network usage. + [Description("B32000")] + B32000, + + /// Higher audio quality at the expense of network usage. Good if there's music + /// being streamed over the connections + [Description("B64000")] + B64000, + + /// Even higher audio quality for music streaming or radio-like quality. + [Description("B96000")] + B96000, + + /// At this point the audio quality should be preceptually indistinguishable + /// from the uncompressed input. + [Description("B128000")] + B128000, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/VoipBitrate.cs.meta b/Assets/Oculus/Platform/Scripts/VoipBitrate.cs.meta new file mode 100644 index 0000000..7f266b9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipBitrate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 84308236652108943811fb1eed12ac15 +timeCreated: 1533910662 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipDtxState.cs b/Assets/Oculus/Platform/Scripts/VoipDtxState.cs new file mode 100644 index 0000000..57c3779 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipDtxState.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum VoipDtxState : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("ENABLED")] + Enabled, + + [Description("DISABLED")] + Disabled, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/VoipDtxState.cs.meta b/Assets/Oculus/Platform/Scripts/VoipDtxState.cs.meta new file mode 100644 index 0000000..9e6f708 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipDtxState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e3f0df97a35282540a46cd1c97d9311b +timeCreated: 1533910663 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipInput.cs b/Assets/Oculus/Platform/Scripts/VoipInput.cs new file mode 100644 index 0000000..d1203b2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipInput.cs @@ -0,0 +1,84 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-voip/ +#if false +namespace Oculus.Platform +{ + using UnityEngine; + using System.Runtime.InteropServices; + using System.Collections; + + public class VoipInput : MonoBehaviour + { + public delegate void OnCompressedData(byte[] compressedData); + public OnCompressedData onCompressedData; + + protected IMicrophone micInput; + Encoder encoder; + + public bool enableMicRecording; + + protected void Start() + { + encoder = new Encoder(); + if (UnityEngine.Application.platform == RuntimePlatform.WindowsEditor || UnityEngine.Application.platform == RuntimePlatform.WindowsPlayer) + { + micInput = new MicrophoneInputNative(); + } + else + { + micInput = new MicrophoneInput(); + } + + enableMicRecording = true; + } + + void OnApplicationQuit() + { + micInput.Stop(); + } + + void Update() + { + if (micInput == null || encoder == null) + { + throw new System.Exception("VoipInput failed to init"); + } + + if (micInput != null && enableMicRecording) + { + float[] rawMicSamples = micInput.Update(); + + if (rawMicSamples != null && rawMicSamples.Length > 5 * 1024) + { + Debug.Log(string.Format("Giant input mic data {0}", rawMicSamples.Length)); + return; + } + + if (rawMicSamples != null && rawMicSamples.Length > 0) + { + int startIdx = 0; + int remaining = rawMicSamples.Length; + int splitSize = 480; + + do + { + int toCopy = System.Math.Min(splitSize, remaining); + float[] splitInput = new float[toCopy]; + System.Array.Copy(rawMicSamples, startIdx, splitInput, 0, toCopy); + startIdx += toCopy; + remaining -= toCopy; + + byte[] compressedMic = null; + compressedMic = encoder.Encode(splitInput); + + if (compressedMic != null && compressedMic.Length > 0) + { + onCompressedData(compressedMic); + } + } while (remaining > 0); + } + } + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/VoipInput.cs.meta b/Assets/Oculus/Platform/Scripts/VoipInput.cs.meta new file mode 100644 index 0000000..347af4f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcfbe145232c8b241ac5152c54dc103e +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipMuteState.cs b/Assets/Oculus/Platform/Scripts/VoipMuteState.cs new file mode 100644 index 0000000..2c020d1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipMuteState.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum VoipMuteState : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("MUTED")] + Muted, + + [Description("UNMUTED")] + Unmuted, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/VoipMuteState.cs.meta b/Assets/Oculus/Platform/Scripts/VoipMuteState.cs.meta new file mode 100644 index 0000000..c7f54c1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipMuteState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fdd1475ee285f7a48ae1a5d306ae268e +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipOptions.cs b/Assets/Oculus/Platform/Scripts/VoipOptions.cs new file mode 100644 index 0000000..a172d1e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipOptions.cs @@ -0,0 +1,37 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class VoipOptions { + + public VoipOptions() { + Handle = CAPI.ovr_VoipOptions_Create(); + } + + public void SetBitrateForNewConnections(VoipBitrate value) { + CAPI.ovr_VoipOptions_SetBitrateForNewConnections(Handle, value); + } + + public void SetCreateNewConnectionUseDtx(VoipDtxState value) { + CAPI.ovr_VoipOptions_SetCreateNewConnectionUseDtx(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(VoipOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~VoipOptions() { + CAPI.ovr_VoipOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/VoipOptions.cs.meta b/Assets/Oculus/Platform/Scripts/VoipOptions.cs.meta new file mode 100644 index 0000000..6d2c1ed --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c646331fd9da59549978785e62b6ae3e +timeCreated: 1533910663 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs b/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs new file mode 100644 index 0000000..b9d211d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs @@ -0,0 +1,27 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Oculus.Platform +{ + public class VoipPCMSourceNative : IVoipPCMSource + { + ulong senderID; + + public int GetPCM(float[] dest, int length) + { + return (int)CAPI.ovr_Voip_GetPCMFloat(senderID, dest, (UIntPtr)length); + } + + public void SetSenderID(ulong senderID) + { + this.senderID = senderID; + } + + public int PeekSizeElements() { + return (int)CAPI.ovr_Voip_GetPCMSize(senderID); + } + + public void Update() { } + } +} diff --git a/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs.meta b/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs.meta new file mode 100644 index 0000000..c0af37f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 04488c1881da80546bca546e77f42747 +timeCreated: 1523486797 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs b/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs new file mode 100644 index 0000000..027d65b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum VoipSampleRate : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("HZ24000")] + HZ24000, + + [Description("HZ44100")] + HZ44100, + + [Description("HZ48000")] + HZ48000, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs.meta b/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs.meta new file mode 100644 index 0000000..025e2cc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f2eb1c6bc62ce9847a80184683a48d5c +timeCreated: 1523486801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs b/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs new file mode 100644 index 0000000..064128b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs @@ -0,0 +1,46 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Runtime.InteropServices; + + public class WindowsPlatform + { + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void UnityLogDelegate(IntPtr tag, IntPtr msg); + + void CPPLogCallback(IntPtr tag, IntPtr message) + { + Debug.Log(string.Format("{0}: {1}", Marshal.PtrToStringAnsi(tag), Marshal.PtrToStringAnsi(message))); + } + + IntPtr getCallbackPointer() + { + //UnityLogDelegate callback_delegate = new UnityLogDelegate(CPPLogCallback); + //IntPtr intptr_delegate = Marshal.GetFunctionPointerForDelegate(callback_delegate); + return IntPtr.Zero; + } + + public bool Initialize(string appId) + { + if(String.IsNullOrEmpty(appId)) + { + throw new UnityException("AppID must not be null or empty"); + } + + CAPI.ovr_UnityInitWrapperWindows(appId, getCallbackPointer()); + return true; + } + + public Request AsyncInitialize(string appId) + { + if(String.IsNullOrEmpty(appId)) + { + throw new UnityException("AppID must not be null or empty"); + } + + return new Request(CAPI.ovr_UnityInitWrapperWindowsAsynchronous(appId, getCallbackPointer())); + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs.meta b/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs.meta new file mode 100644 index 0000000..55261d2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6a01db7a8e710d340903a49acb6b023e +timeCreated: 1523486799 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer.meta b/Assets/Oculus/Spatializer.meta new file mode 100644 index 0000000..56926b0 --- /dev/null +++ b/Assets/Oculus/Spatializer.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1988efc33915aee4b9517188de9c6e6a +folderAsset: yes +timeCreated: 1538788975 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Editor.meta b/Assets/Oculus/Spatializer/Editor.meta new file mode 100644 index 0000000..5e18c59 --- /dev/null +++ b/Assets/Oculus/Spatializer/Editor.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 95cc228aec2d4f444916a448645ca7ef +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Editor/ONSPAudioSourceEditor.cs b/Assets/Oculus/Spatializer/Editor/ONSPAudioSourceEditor.cs new file mode 100644 index 0000000..3d3dddf --- /dev/null +++ b/Assets/Oculus/Spatializer/Editor/ONSPAudioSourceEditor.cs @@ -0,0 +1,118 @@ +/************************************************************************************ + +Filename : OculusSpatializerUserParamsEditor.cs +Content : This script adds editor functionality to OculusSpatializerUserParams script. +Created : December 14, 2015 +Authors : Peter Giokaris + +Copyright : Copyright 2015 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +#define CUSTOM_LAYOUT + +using UnityEditor; +using UnityEngine; +using System.Collections.Generic; + +[CustomEditor(typeof(ONSPAudioSource))] + +public class OculusSpatializerUserParamsEditor : Editor +{ + // target component + private ONSPAudioSource m_Component; + + // highlight color + // Color HColor = Color.green; + + // OnEnable + void OnEnable() + { + m_Component = (ONSPAudioSource)target; + } + + // OnDestroy + void OnDestroy() + { + } + + // OnInspectorGUI + public override void OnInspectorGUI() + { + GUI.color = Color.white; + Undo.RecordObject(m_Component, "OculusSpatializerUserParams"); + + { + #if CUSTOM_LAYOUT + m_Component.EnableSpatialization = EditorGUILayout.Toggle("Spatialization Enabled", m_Component.EnableSpatialization); + m_Component.EnableRfl = EditorGUILayout.Toggle("Reflections Enabled", m_Component.EnableRfl); + m_Component.Gain = EditorGUILayout.FloatField("Gain", m_Component.Gain); + + Separator(); + + Label ("OCULUS ATTENUATION"); + m_Component.UseInvSqr = EditorGUILayout.Toggle("Enabled", m_Component.UseInvSqr); + Label (""); + Label("RANGE (0.0 - 1000000.0 meters)"); + m_Component.Near = EditorGUILayout.FloatField("Minimum", m_Component.Near); + m_Component.Far = EditorGUILayout.FloatField("Maximum", m_Component.Far); + + Label(""); + Label("VOLUMETRIC RADIUS (0.0 - 1000.0 meters)"); + m_Component.VolumetricRadius = EditorGUILayout.FloatField("Radius", m_Component.VolumetricRadius); + + Separator(); +/* + // Reference GUI Layout fields + m_Component.VerticalFOV = EditorGUILayout.FloatField("Vertical FOV", m_Component.VerticalFOV); + m_Component.NeckPosition = EditorGUILayout.Vector3Field("Neck Position", m_Component.NeckPosition); + m_Component.UsePlayerEyeHeight = EditorGUILayout.Toggle ("Use Player Eye Height", m_Component.UsePlayerEeHeight); + m_Component.FollowOrientation = EditorGUILayout.ObjectField("Follow Orientation", + m_Component.FollowOrientation, + typeof(Transform), true) as Transform; + m_Component.BackgroundColor = EditorGUILayout.ColorField("Background Color", m_Component.BackgroundColor); + OVREditorGUIUtility.Separator(); +*/ + + #else + DrawDefaultInspector (); + #endif + } + + if (GUI.changed) + { + EditorUtility.SetDirty(m_Component); + } + } + + // Utilities, move out of here (or copy over to other editor script) + + // Separator + void Separator() + { + GUI.color = new Color(1, 1, 1, 0.25f); + GUILayout.Box("", "HorizontalSlider", GUILayout.Height(16)); + GUI.color = Color.white; + } + + // Label + void Label(string label) + { + EditorGUILayout.LabelField (label); + } + +} + diff --git a/Assets/Oculus/Spatializer/Editor/ONSPAudioSourceEditor.cs.meta b/Assets/Oculus/Spatializer/Editor/ONSPAudioSourceEditor.cs.meta new file mode 100644 index 0000000..e52cfd8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Editor/ONSPAudioSourceEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cb850b86de9091d4db4595959c56f954 +timeCreated: 1442269815 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Editor/ONSPReflectionCustomGUI.cs b/Assets/Oculus/Spatializer/Editor/ONSPReflectionCustomGUI.cs new file mode 100644 index 0000000..7427903 --- /dev/null +++ b/Assets/Oculus/Spatializer/Editor/ONSPReflectionCustomGUI.cs @@ -0,0 +1,99 @@ +using UnityEditor; +using UnityEngine; +using System.Runtime.InteropServices; + +public class OculusSpatializerReflectionCustomGUI : IAudioEffectPluginGUI +{ + public override string Name + { + get { return "OculusSpatializerReflection"; } + } + + public override string Description + { + get { return "Reflection parameters for Oculus Spatializer"; } + } + + public override string Vendor + { + get { return "Oculus"; } + } + + public override bool OnGUI(IAudioEffectPlugin plugin) + { + float fval = 0.0f; + bool bval = false; + + Separator(); + Label ("GLOBAL SCALE (0.00001 - 10000.0)"); + plugin.GetFloatParameter("GScale", out fval); + plugin.SetFloatParameter("GScale", EditorGUILayout.FloatField(" ", Mathf.Clamp (fval, 0.00001f, 10000.0f))); + + Separator(); + + // Treat these floats as bools in the inspector + plugin.GetFloatParameter("E.Rflt On", out fval); + bval = (fval == 0.0f) ? false : true; + bval = EditorGUILayout.Toggle("Reflections Engine On", bval); + plugin.SetFloatParameter("E.Rflt On", (bval == false) ? 0.0f : 1.0f); + + plugin.GetFloatParameter("E.Rflt Rev On", out fval); + bval = (fval == 0.0f) ? false : true; + bval = EditorGUILayout.Toggle("Late Reverberation", bval); + plugin.SetFloatParameter("E.Rflt Rev On", (bval == false) ? 0.0f : 1.0f); + + Separator(); + Label("ROOM DIMENSIONS (meters)"); + Label(""); + plugin.GetFloatParameter("Room X", out fval); + plugin.SetFloatParameter("Room X", EditorGUILayout.Slider("Width", fval, 1.0f, 200.0f)); + plugin.GetFloatParameter("Room Y", out fval); + plugin.SetFloatParameter("Room Y", EditorGUILayout.Slider("Height", fval, 1.0f, 200.0f)); + plugin.GetFloatParameter("Room Z", out fval); + plugin.SetFloatParameter("Room Z", EditorGUILayout.Slider("Length", fval, 1.0f, 200.0f)); + + Separator(); + Label("WALL REFLECTION COEFFICIENTS (0.0 - 0.97)"); + Label(""); + + plugin.GetFloatParameter("Left", out fval); + plugin.SetFloatParameter("Left", EditorGUILayout.Slider("Left", fval, 0.0f, 0.97f)); + plugin.GetFloatParameter("Right", out fval); + plugin.SetFloatParameter("Right", EditorGUILayout.Slider("Right", fval, 0.0f, 0.97f)); + plugin.GetFloatParameter("Up", out fval); + plugin.SetFloatParameter("Up", EditorGUILayout.Slider("Up", fval, 0.0f, 0.97f)); + plugin.GetFloatParameter("Down", out fval); + plugin.SetFloatParameter("Down", EditorGUILayout.Slider("Down", fval, 0.0f, 0.97f)); + plugin.GetFloatParameter("Behind", out fval); + plugin.SetFloatParameter("Behind", EditorGUILayout.Slider("Back", fval, 0.0f, 0.97f)); + plugin.GetFloatParameter("Front", out fval); + plugin.SetFloatParameter("Front", EditorGUILayout.Slider("Front", fval, 0.0f, 0.97f)); + + Separator(); + Label("SHARED REVERB ATTENUATION RANGE (1.0 - 10000.0 meters)"); + Label(""); + plugin.GetFloatParameter("Shared Rev Min", out fval); + plugin.SetFloatParameter("Shared Rev Min", EditorGUILayout.Slider("Minimum", fval, 1.0f, 10000.0f)); + plugin.GetFloatParameter("Shared Rev Max", out fval); + plugin.SetFloatParameter("Shared Rev Max", EditorGUILayout.Slider("Maximum", fval, 1.0f, 10000.0f)); + + // We will override the controls with our own, so return false + return false; + } + + // Separator + void Separator() + { + GUI.color = new Color(1, 1, 1, 0.25f); + GUILayout.Box("", "HorizontalSlider", GUILayout.Height(16)); + GUI.color = Color.white; + } + + // Label + void Label(string label) + { + EditorGUILayout.LabelField (label); + } + + +} diff --git a/Assets/Oculus/Spatializer/Editor/ONSPReflectionCustomGUI.cs.meta b/Assets/Oculus/Spatializer/Editor/ONSPReflectionCustomGUI.cs.meta new file mode 100644 index 0000000..590c6f0 --- /dev/null +++ b/Assets/Oculus/Spatializer/Editor/ONSPReflectionCustomGUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: db551baa938b4714490ee011b5541447 +timeCreated: 1444752157 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins.meta b/Assets/Oculus/Spatializer/Plugins.meta new file mode 100644 index 0000000..1823007 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1848f8942953b93448e73777a2056eb1 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/Android.meta b/Assets/Oculus/Spatializer/Plugins/Android.meta new file mode 100644 index 0000000..c7edea0 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/Android.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a1ec0b585f1ff1141a7aff27b3051ecd +folderAsset: yes +timeCreated: 1441297332 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/Android/libAudioPluginOculusSpatializer.so b/Assets/Oculus/Spatializer/Plugins/Android/libAudioPluginOculusSpatializer.so new file mode 100644 index 0000000..5a4f10b Binary files /dev/null and b/Assets/Oculus/Spatializer/Plugins/Android/libAudioPluginOculusSpatializer.so differ diff --git a/Assets/Oculus/Spatializer/Plugins/Android/libAudioPluginOculusSpatializer.so.meta b/Assets/Oculus/Spatializer/Plugins/Android/libAudioPluginOculusSpatializer.so.meta new file mode 100644 index 0000000..9d76358 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/Android/libAudioPluginOculusSpatializer.so.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: ca6850cf135e6b14991097c6f08c62fe +timeCreated: 1444263923 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle.meta b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle.meta new file mode 100644 index 0000000..0d4a661 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: d870fcfa1434e94408b4ff98ff17de30 +folderAsset: yes +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude Win: 1 + Exclude Win64: 1 + - first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: OSX + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: OSX + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents.meta b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents.meta new file mode 100644 index 0000000..16ac4ad --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d64bafd940c2d664c8fbecbdbeec25f6 +folderAsset: yes +timeCreated: 1536271777 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/Info.plist b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/Info.plist new file mode 100644 index 0000000..df2ca71 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + AudioPluginOculusSpatializer + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLongVersionString + 1.0.3 + CFBundleName + + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0.3 + CFBundleSignature + ???? + CFBundleVersion + 1.0.3 + CSResourcesFileMapped + + LSRequiresCarbon + + NSHumanReadableCopyright + + + diff --git a/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/Info.plist.meta b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/Info.plist.meta new file mode 100644 index 0000000..ab84528 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/Info.plist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32546f9d6eec92f4a86b9cd5558272f4 +timeCreated: 1536271777 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS.meta b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS.meta new file mode 100644 index 0000000..e4af403 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1d0abb3b49cec804087c23b24aee1f54 +folderAsset: yes +timeCreated: 1536271777 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS/AudioPluginOculusSpatializer b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS/AudioPluginOculusSpatializer new file mode 100644 index 0000000..19ada91 Binary files /dev/null and b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS/AudioPluginOculusSpatializer differ diff --git a/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS/AudioPluginOculusSpatializer.meta b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS/AudioPluginOculusSpatializer.meta new file mode 100644 index 0000000..dfcbd5a --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/AudioPluginOculusSpatializer.bundle/Contents/MacOS/AudioPluginOculusSpatializer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c28d61cb689d4e042b6fcb73a2f0f5db +timeCreated: 1536271777 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/x86.meta b/Assets/Oculus/Spatializer/Plugins/x86.meta new file mode 100644 index 0000000..1290468 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/x86.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4580af6e50e07ae488b25fcb2be5df1a +folderAsset: yes +timeCreated: 1425156097 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/x86/AudioPluginOculusSpatializer.dll b/Assets/Oculus/Spatializer/Plugins/x86/AudioPluginOculusSpatializer.dll new file mode 100644 index 0000000..9f97a3b Binary files /dev/null and b/Assets/Oculus/Spatializer/Plugins/x86/AudioPluginOculusSpatializer.dll differ diff --git a/Assets/Oculus/Spatializer/Plugins/x86/AudioPluginOculusSpatializer.dll.meta b/Assets/Oculus/Spatializer/Plugins/x86/AudioPluginOculusSpatializer.dll.meta new file mode 100644 index 0000000..d715f0e --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/x86/AudioPluginOculusSpatializer.dll.meta @@ -0,0 +1,164 @@ +fileFormatVersion: 2 +guid: f13a06860e06aa543972e7be3648d789 +timeCreated: 1444263923 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 0 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86 + OS: Windows + data: + first: + '': WP8 + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + data: + first: + Facebook: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Samsung TV: SamsungTV + second: + enabled: 0 + settings: + STV_MODEL: STANDARD_13 + data: + first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/x86_64.meta b/Assets/Oculus/Spatializer/Plugins/x86_64.meta new file mode 100644 index 0000000..9bb7e96 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/x86_64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 343fc33c608b24949823391a40345245 +folderAsset: yes +timeCreated: 1425156097 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Plugins/x86_64/AudioPluginOculusSpatializer.dll b/Assets/Oculus/Spatializer/Plugins/x86_64/AudioPluginOculusSpatializer.dll new file mode 100644 index 0000000..cbf3180 Binary files /dev/null and b/Assets/Oculus/Spatializer/Plugins/x86_64/AudioPluginOculusSpatializer.dll differ diff --git a/Assets/Oculus/Spatializer/Plugins/x86_64/AudioPluginOculusSpatializer.dll.meta b/Assets/Oculus/Spatializer/Plugins/x86_64/AudioPluginOculusSpatializer.dll.meta new file mode 100644 index 0000000..47858e6 --- /dev/null +++ b/Assets/Oculus/Spatializer/Plugins/x86_64/AudioPluginOculusSpatializer.dll.meta @@ -0,0 +1,164 @@ +fileFormatVersion: 2 +guid: 4d6d87624a1d1a44494e90521dfef431 +timeCreated: 1444263923 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 0 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 0 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86_64 + OS: Windows + data: + first: + '': WP8 + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + data: + first: + Facebook: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Samsung TV: SamsungTV + second: + enabled: 0 + settings: + STV_MODEL: STANDARD_13 + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes.meta b/Assets/Oculus/Spatializer/Scenes.meta new file mode 100644 index 0000000..147ecb8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 01192ee1c2d9d204ea8a4172eef60cd0 +folderAsset: yes +timeCreated: 1424053913 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/RedBallGreenBall.unity b/Assets/Oculus/Spatializer/Scenes/RedBallGreenBall.unity new file mode 100644 index 0000000..f178fb8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/RedBallGreenBall.unity @@ -0,0 +1,1163 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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_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.44525063, g: 0.49485004, b: 0.5738951, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666667 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &64816991 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + serializedVersion: 4 + m_Component: + - 4: {fileID: 64816992} + - 20: {fileID: 64816997} + - 92: {fileID: 64816996} + - 124: {fileID: 64816995} + - 114: {fileID: 64816994} + - 81: {fileID: 64816993} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &64816992 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 64816991} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.9070835, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 95171302} + m_RootOrder: 1 +--- !u!81 &64816993 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 64816991} + m_Enabled: 1 +--- !u!114 &64816994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400006, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 64816991} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68ec2fe99d1108b9d0006a298d76c639, type: 3} + m_Name: + m_EditorClassIdentifier: + axes: 2 + sensitivityX: 10 + sensitivityY: 10 + minimumX: 0 + maximumX: 360 + minimumY: -60 + maximumY: 60 +--- !u!124 &64816995 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 12400000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 64816991} + m_Enabled: 1 +--- !u!92 &64816996 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 9200000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 64816991} + m_Enabled: 1 +--- !u!20 &64816997 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 64816991} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.26194853, g: 0.40352842, b: 0.625, a: 1} + 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: 100 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &95171297 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + serializedVersion: 4 + m_Component: + - 4: {fileID: 95171302} + - 143: {fileID: 95171301} + - 114: {fileID: 95171300} + - 114: {fileID: 95171299} + - 114: {fileID: 95171298} + m_Layer: 0 + m_Name: First Person Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &95171298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400004, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 95171297} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 60bca8f58a0b8478e946e6e86658cb29, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &95171299 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 95171297} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ab79d7f243824f5d9826bd83522c8df, type: 3} + m_Name: + m_EditorClassIdentifier: + canControl: 1 + useFixedUpdate: 1 + movement: + maxForwardSpeed: 3 + maxSidewaysSpeed: 3 + maxBackwardsSpeed: 3 + slopeSpeedMultiplier: + serializedVersion: 2 + m_Curve: + - time: -90 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 90 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxGroundAcceleration: 20 + maxAirAcceleration: 15 + gravity: 20 + maxFallSpeed: 20 + jumping: + enabled: 1 + baseHeight: 1 + extraHeight: 1 + perpAmount: 0 + steepPerpAmount: 0.5 + movingPlatform: + enabled: 1 + movementTransfer: 2 + sliding: + enabled: 1 + slidingSpeed: 10 + sidewaysControl: 1 + speedControl: 0.4 +--- !u!114 &95171300 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 95171297} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68ec2fe99d1108b9d0006a298d76c639, type: 3} + m_Name: + m_EditorClassIdentifier: + axes: 1 + sensitivityX: 15 + sensitivityY: 0 + minimumX: -360 + maximumX: 360 + minimumY: 0 + maximumY: 0 +--- !u!143 &95171301 +CharacterController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 14300000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 95171297} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 2 + m_Radius: 0.4 + m_SlopeLimit: 45 + m_StepOffset: 0.4 + m_SkinWidth: 0.05 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!4 &95171302 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 95171297} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: -1.682, z: -5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1030825801} + - {fileID: 64816992} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &537433168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 537433170} + - 114: {fileID: 537433173} + - 82: {fileID: 537433169} + - 33: {fileID: 537433172} + - 23: {fileID: 537433171} + - 64: {fileID: 537433174} + m_Layer: 0 + m_Name: SpatializedSound1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!82 &537433169 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 24300001, guid: 1dd706bb85d8aef4e83a6229dbd62c36, + type: 2} + m_audioClip: {fileID: 8300000, guid: 33a0d552717ab4c2e87a77c856d9aaf3, type: 3} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 1 + Priority: 128 + DopplerLevel: 0 + MinDistance: 1 + MaxDistance: 100 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 0.24404761 + value: 1.1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!4 &537433170 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!23 &537433171 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 6498d4298a35c5c44894b5f194468896, type: 2} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &537433172 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &537433173 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e503ea6418d27594caa33b93cac1b06a, type: 3} + m_Name: + m_EditorClassIdentifier: + enableSpatialization: 1 + gain: 8 + useInvSqr: 1 + near: 0.25 + far: 200 + enableRfl: 1 +--- !u!64 &537433174 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &874827679 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 874827683} + - 33: {fileID: 874827682} + - 64: {fileID: 874827681} + - 23: {fileID: 874827680} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &874827680 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 874827679} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: e121bf11a9143914dbafa9e733415f2a, type: 2} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!64 &874827681 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 874827679} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &874827682 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 874827679} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &874827683 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 874827679} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2.64, z: 0} + m_LocalScale: {x: 39.853504, y: 39.85354, z: 39.85354} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &1004090725 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1004090727} + - 114: {fileID: 1004090726} + m_Layer: 0 + m_Name: ONSP VERSION + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1004090726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1004090725} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46821b10458428648878b1b4a9113c40, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1004090727 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1004090725} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 +--- !u!1 &1030825800 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1030825801} + - 33: {fileID: 1030825803} + - 23: {fileID: 1030825802} + m_Layer: 0 + m_Name: Graphics + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1030825801 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1030825800} + m_LocalRotation: {x: -0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.4, y: 0.5, z: 0.4} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 95171302} + m_RootOrder: 0 +--- !u!23 &1030825802 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1030825800} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1030825803 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1030825800} + m_Mesh: {fileID: 10205, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1068326584 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1068326589} + - 114: {fileID: 1068326588} + - 82: {fileID: 1068326587} + - 33: {fileID: 1068326586} + - 23: {fileID: 1068326585} + - 64: {fileID: 1068326590} + m_Layer: 0 + m_Name: SpatializedSound2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1068326585 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068326584} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f54ef0e328359c14b9005f8a48cbd66b, type: 2} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1068326586 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068326584} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!82 &1068326587 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068326584} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 24300001, guid: 1dd706bb85d8aef4e83a6229dbd62c36, + type: 2} + m_audioClip: {fileID: 8300000, guid: 37c9e69911022452a9ebd4ee732ab036, type: 3} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 1 + Priority: 128 + DopplerLevel: 0 + MinDistance: 0.25 + MaxDistance: 10 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 0.21071428 + value: 1.1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &1068326588 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068326584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e503ea6418d27594caa33b93cac1b06a, type: 3} + m_Name: + m_EditorClassIdentifier: + enableSpatialization: 1 + gain: 8 + useInvSqr: 0 + near: 1 + far: 1000 + enableRfl: 1 +--- !u!4 &1068326589 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068326584} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 +--- !u!64 &1068326590 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068326584} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1101579462 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalPosition.y + value: -1.682 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalPosition.z + value: -5 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_ClearFlags + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_BackGroundColor.r + value: .261948526 + objectReference: {fileID: 0} + - target: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_BackGroundColor.g + value: .403528422 + objectReference: {fileID: 0} + - target: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_BackGroundColor.b + value: .625 + objectReference: {fileID: 0} + - target: {fileID: 100002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 14300000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400006, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: movement.maxForwardSpeed + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: movement.maxBackwardsSpeed + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: movement.maxSidewaysSpeed + value: 3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_RootGameObject: {fileID: 95171297} + m_IsPrefabParent: 0 +--- !u!1 &1149557338 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1149557340} + - 108: {fileID: 1149557339} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1149557339 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1149557338} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1149557340 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1149557338} + m_LocalRotation: {x: 0.19034514, y: -0.41780472, z: 0.7921693, w: 0.40208936} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!1 &1683998357 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1683998360} + - 65: {fileID: 1683998359} + - 114: {fileID: 1683998358} + m_Layer: 0 + m_Name: Interior_Zone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1683998358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1683998357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfc03cf517e91a64ba53fc31e61657ea, type: 3} + m_Name: + m_EditorClassIdentifier: + mixerSnapshot: {fileID: 245000012928175524, guid: 1dd706bb85d8aef4e83a6229dbd62c36, + type: 2} + fadeTime: 1 +--- !u!65 &1683998359 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1683998357} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!4 &1683998360 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1683998357} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -9.3, y: 2.6, z: 36.8} + m_LocalScale: {x: 50.479847, y: 50.479874, z: 50.479874} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 +--- !u!1 &1979186568 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1979186571} + - 65: {fileID: 1979186570} + - 114: {fileID: 1979186569} + m_Layer: 0 + m_Name: Init_Zone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1979186569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979186568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfc03cf517e91a64ba53fc31e61657ea, type: 3} + m_Name: + m_EditorClassIdentifier: + mixerSnapshot: {fileID: 24500003, guid: 1dd706bb85d8aef4e83a6229dbd62c36, type: 2} + fadeTime: 1 +--- !u!65 &1979186570 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979186568} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!4 &1979186571 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979186568} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -9.3, y: 2.6, z: 36.8} + m_LocalScale: {x: 611.52295, y: 611.523, z: 611.523} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 diff --git a/Assets/Oculus/Spatializer/Scenes/RedBallGreenBall.unity.meta b/Assets/Oculus/Spatializer/Scenes/RedBallGreenBall.unity.meta new file mode 100644 index 0000000..fdad888 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/RedBallGreenBall.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 305999d68a83b7d438df1bb704b6bc06 +timeCreated: 1442947197 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets.meta new file mode 100644 index 0000000..704816a --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8231a80b351751f4ab1a5258c53a67a4 +folderAsset: yes +timeCreated: 1440803521 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers.meta new file mode 100644 index 0000000..e26575b --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 54216e9ed42974e30967824b7f0b2806 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/3rd Person Controller.prefab b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/3rd Person Controller.prefab new file mode 100644 index 0000000..37db469 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/3rd Person Controller.prefab @@ -0,0 +1,2215 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400000} + m_Layer: 0 + m_Name: Bip001 R Clavicle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400106} + m_Layer: 0 + m_Name: Bip001 R Thigh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100003 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400068} + m_Layer: 0 + m_Name: Bip001 R Finger2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100005 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400072} + m_Layer: 0 + m_Name: Bip001 R Finger22 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100007 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100008 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400114} + m_Layer: 0 + m_Name: Bip001 R UpperArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100009 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100010 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400088} + m_Layer: 0 + m_Name: helmet_bone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100011 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100012 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400040} + m_Layer: 0 + m_Name: Bip001 L Finger3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100013 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100014 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400034} + m_Layer: 0 + m_Name: Bip001 L Finger2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100015 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100016 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400036} + m_Layer: 0 + m_Name: Bip001 L Finger21 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100017 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100018 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400020} + m_Layer: 0 + m_Name: Bip001 L Hand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100019 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100020 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400074} + m_Layer: 0 + m_Name: Bip001 R Finger3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100021 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100022 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400110} + m_Layer: 0 + m_Name: Bip001 L Clavicle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100023 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100024 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400094} + m_Layer: 0 + m_Name: Bip001 L Toe0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100025 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100026 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400086} + - 33: {fileID: 3300000} + - 23: {fileID: 2300000} + m_Layer: 0 + m_Name: wrench + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100027 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100028 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400038} + m_Layer: 0 + m_Name: Bip001 L Finger22 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100029 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100030 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400012} + - 111: {fileID: 11100000} + - 143: {fileID: 14300000} + - 114: {fileID: 11400002} + - 114: {fileID: 11400000} + m_Layer: 0 + m_Name: 3rd Person Controller + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100031 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100032 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400024} + m_Layer: 0 + m_Name: Bip001 L Finger01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100033 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100034 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400102} + m_Layer: 0 + m_Name: Bip001 R Toe0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100035 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100036 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400030} + m_Layer: 0 + m_Name: Bip001 L Finger11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100037 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100038 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400032} + m_Layer: 0 + m_Name: Bip001 L Finger12 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100039 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100040 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400078} + m_Layer: 0 + m_Name: Bip001 R Finger32 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100041 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100042 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400010} + m_Layer: 0 + m_Name: Bip001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100043 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100044 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400092} + m_Layer: 0 + m_Name: Bip001 L Foot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100045 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100046 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400070} + m_Layer: 0 + m_Name: Bip001 R Finger21 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100047 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100048 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400008} + - 137: {fileID: 13700000} + m_Layer: 0 + m_Name: Bip001 Pelvis + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100049 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100050 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400044} + m_Layer: 0 + m_Name: Bip001 L Finger32 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100051 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100052 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400058} + m_Layer: 0 + m_Name: Bip001 R Finger01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100053 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100054 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400108} + m_Layer: 0 + m_Name: Bip001 L Thigh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100055 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100056 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400018} + m_Layer: 0 + m_Name: Bip001 L Forearm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100057 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100058 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400080} + m_Layer: 0 + m_Name: Bip001 R Finger4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100059 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100060 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400090} + m_Layer: 0 + m_Name: Bip001 L Calf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100061 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100062 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400112} + m_Layer: 0 + m_Name: Bip001 Head + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100063 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100064 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400100} + m_Layer: 0 + m_Name: Bip001 R Foot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100065 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100066 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400002} + m_Layer: 0 + m_Name: Bip001 Neck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100067 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100068 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400014} + m_Layer: 0 + m_Name: construction_worker + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100069 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100070 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400016} + m_Layer: 0 + m_Name: Bip001 L UpperArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100071 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100072 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400056} + m_Layer: 0 + m_Name: Bip001 R Finger0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100073 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100074 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400098} + m_Layer: 0 + m_Name: Bip001 R Calf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100075 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100076 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400064} + m_Layer: 0 + m_Name: Bip001 R Finger11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100077 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100078 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400006} + m_Layer: 0 + m_Name: Bip001 Spine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100079 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100080 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400062} + m_Layer: 0 + m_Name: Bip001 R Finger1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100081 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100082 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400046} + m_Layer: 0 + m_Name: Bip001 L Finger4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100083 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100084 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400082} + m_Layer: 0 + m_Name: Bip001 R Finger41 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100085 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100086 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400060} + m_Layer: 0 + m_Name: Bip001 R Finger02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100087 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100088 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400022} + m_Layer: 0 + m_Name: Bip001 L Finger0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100089 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100090 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400104} + m_Layer: 0 + m_Name: hip_adjustment_bone_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100091 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100092 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400048} + m_Layer: 0 + m_Name: Bip001 L Finger41 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100093 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100094 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400084} + m_Layer: 0 + m_Name: Bip001 R Finger42 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100095 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100096 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400076} + m_Layer: 0 + m_Name: Bip001 R Finger31 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100097 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100098 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400026} + m_Layer: 0 + m_Name: Bip001 L Finger02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100099 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100100 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400042} + m_Layer: 0 + m_Name: Bip001 L Finger31 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100101 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100102 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400066} + m_Layer: 0 + m_Name: Bip001 R Finger12 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100103 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100104 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400050} + m_Layer: 0 + m_Name: Bip001 L Finger42 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100105 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100106 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400054} + m_Layer: 0 + m_Name: Bip001 R Hand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100107 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100108 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400052} + m_Layer: 0 + m_Name: Bip001 R Forearm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100109 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100110 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400028} + m_Layer: 0 + m_Name: Bip001 L Finger1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100111 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100112 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400096} + m_Layer: 0 + m_Name: hip_adjustment_bone_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100113 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100114 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400004} + m_Layer: 0 + m_Name: Bip001 Spine1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100115 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: -.638646543, y: -.085681282, z: -.760076344, w: .0841028094} + m_LocalPosition: {x: .000872889126, y: .000163495468, z: -.000717522867} + m_LocalScale: {x: 1, y: 1, z: 1.00000012} + m_Children: + - {fileID: 400114} + m_Father: {fileID: 400002} + m_RootOrder: 2 +--- !u!1002 &400001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400002 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100066} + m_LocalRotation: {x: -2.61657735e-08, y: 4.85078886e-07, z: -.11913725, w: .992877841} + m_LocalPosition: {x: -.00348940003, y: -.000203568372, z: -1.9324943e-10} + m_LocalScale: {x: 1.00000012, y: 1.00000012, z: 1} + m_Children: + - {fileID: 400112} + - {fileID: 400110} + - {fileID: 400000} + m_Father: {fileID: 400004} + m_RootOrder: 0 +--- !u!1002 &400003 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400004 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100114} + m_LocalRotation: {x: -9.23032206e-10, y: -1.85808872e-07, z: .0444308855, w: .99901247} + m_LocalPosition: {x: -.00183250627, y: -2.42654232e-06, z: -6.98491915e-12} + m_LocalScale: {x: 1.00000012, y: 1.00000012, z: 1} + m_Children: + - {fileID: 400002} + m_Father: {fileID: 400006} + m_RootOrder: 2 +--- !u!1002 &400005 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400006 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100078} + m_LocalRotation: {x: -2.08584925e-06, y: 7.01539363e-07, z: -.00415344862, w: .999991417} + m_LocalPosition: {x: -.00120483362, y: .000168676212, z: 1.20373445e-09} + m_LocalScale: {x: 1, y: 1, z: .99999994} + m_Children: + - {fileID: 400108} + - {fileID: 400106} + - {fileID: 400004} + m_Father: {fileID: 400008} + m_RootOrder: 0 +--- !u!1002 &400007 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400008 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100048} + m_LocalRotation: {x: -.499999642, y: .500000358, z: .499999642, w: .500000358} + m_LocalPosition: {x: 8.881784e-18, y: 2.7755575e-19, z: 0} + m_LocalScale: {x: 1, y: .99999994, z: .99999994} + m_Children: + - {fileID: 400006} + m_Father: {fileID: 400010} + m_RootOrder: 0 +--- !u!1002 &400009 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400010 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100042} + m_LocalRotation: {x: -.5, y: .5, z: .5, w: .5} + m_LocalPosition: {x: .00171948841, y: -.00546107208, z: .0280433092} + m_LocalScale: {x: 99.9999924, y: 99.9999924, z: 100} + m_Children: + - {fileID: 400008} + m_Father: {fileID: 400012} + m_RootOrder: 0 +--- !u!1002 &400011 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400012 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400010} + - {fileID: 400014} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1002 &400013 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400014 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100068} + m_LocalRotation: {x: -.707106829, y: 0, z: -0, w: .707106829} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.96534526, y: 1.96534491, z: 1.96534491} + m_Children: [] + m_Father: {fileID: 400012} + m_RootOrder: 1 +--- !u!1002 &400015 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400016 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100070} + m_LocalRotation: {x: .078889519, y: -.143596664, z: .0264191683, w: .986133099} + m_LocalPosition: {x: -.0012704141, y: 0, z: -1.19209287e-09} + m_LocalScale: {x: 1.00000012, y: 1.00000012, z: 1} + m_Children: + - {fileID: 400018} + m_Father: {fileID: 400110} + m_RootOrder: 0 +--- !u!1002 &400017 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400018 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100056} + m_LocalRotation: {x: -1.86227211e-09, y: 1.49012074e-08, z: -2.50386074e-05, w: 1} + m_LocalPosition: {x: -.00273254188, y: 0, z: 0} + m_LocalScale: {x: 1, y: .99999994, z: 1} + m_Children: + - {fileID: 400020} + m_Father: {fileID: 400016} + m_RootOrder: 0 +--- !u!1002 &400019 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400020 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} + m_LocalRotation: {x: -.706690669, y: -.0138001451, z: -.0137891611, w: .707253635} + m_LocalPosition: {x: -.00215726974, y: 7.45058043e-11, z: 0} + m_LocalScale: {x: 1, y: 1.00000012, z: 1} + m_Children: + - {fileID: 400022} + - {fileID: 400028} + - {fileID: 400034} + - {fileID: 400040} + - {fileID: 400046} + m_Father: {fileID: 400018} + m_RootOrder: 0 +--- !u!1002 &400021 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400022 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100088} + m_LocalRotation: {x: .397784591, y: -.457301617, z: -.174690813, w: .775967658} + m_LocalPosition: {x: -.000353150361, y: .000104373692, z: -.000361629354} + m_LocalScale: {x: .999999821, y: .999999821, z: .999999881} + m_Children: + - {fileID: 400024} + m_Father: {fileID: 400020} + m_RootOrder: 0 +--- !u!1002 &400023 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400024 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100032} + m_LocalRotation: {x: 3.24468652e-09, y: -1.31797062e-09, z: -.116402201, w: .993202209} + m_LocalPosition: {x: -.00018735393, y: 0, z: -5.96046434e-10} + m_LocalScale: {x: 1, y: 1.00000012, z: 1.00000012} + m_Children: + - {fileID: 400026} + m_Father: {fileID: 400022} + m_RootOrder: 0 +--- !u!1002 &400025 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400026 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100098} + m_LocalRotation: {x: 5.24108268e-09, y: -1.77757031e-09, z: -.0717421025, w: .997423232} + m_LocalPosition: {x: -.000313711469, y: 0, z: 0} + m_LocalScale: {x: 1.00000012, y: 1.00000012, z: 1} + m_Children: [] + m_Father: {fileID: 400024} + m_RootOrder: 0 +--- !u!1002 &400027 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400028 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100110} + m_LocalRotation: {x: -.000723021629, y: -.01224925, z: -.0771516934, w: .996943891} + m_LocalPosition: {x: -.000856468687, y: -2.56079438e-05, z: -.000309830619} + m_LocalScale: {x: .99999994, y: .99999994, z: .999999881} + m_Children: + - {fileID: 400030} + m_Father: {fileID: 400020} + m_RootOrder: 1 +--- !u!1002 &400029 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400030 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100036} + m_LocalRotation: {x: 1.83980164e-09, y: -2.90821867e-10, z: -.156133786, w: .987735927} + m_LocalPosition: {x: -.000449225889, y: -5.96046434e-10, z: 5.58793532e-11} + m_LocalScale: {x: .99999994, y: .99999994, z: .99999994} + m_Children: + - {fileID: 400032} + m_Father: {fileID: 400028} + m_RootOrder: 0 +--- !u!1002 &400031 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400032 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100038} + m_LocalRotation: {x: -1.8055506e-09, y: 1.9180415e-09, z: -.0301964935, w: .999544024} + m_LocalPosition: {x: -.000298546394, y: 0, z: 0} + m_LocalScale: {x: .99999994, y: .99999994, z: .99999994} + m_Children: [] + m_Father: {fileID: 400030} + m_RootOrder: 0 +--- !u!1002 &400033 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400034 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100014} + m_LocalRotation: {x: -.0255056527, y: .00563300494, z: -.0714264438, w: .99710381} + m_LocalPosition: {x: -.000849068747, y: 1.86157231e-05, z: -6.09705203e-05} + m_LocalScale: {x: .999999881, y: .999999881, z: .999999881} + m_Children: + - {fileID: 400036} + m_Father: {fileID: 400020} + m_RootOrder: 2 +--- !u!1002 &400035 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400036 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100016} + m_LocalRotation: {x: 4.56978982e-10, y: -8.95022806e-11, z: -.192204684, w: .981354892} + m_LocalPosition: {x: -.00050301489, y: 0, z: 4.19095141e-11} + m_LocalScale: {x: 1.00000012, y: 1, z: 1} + m_Children: + - {fileID: 400038} + m_Father: {fileID: 400034} + m_RootOrder: 0 +--- !u!1002 &400037 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400038 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100028} + m_LocalRotation: {x: 1.97282302e-09, y: -1.16890964e-09, z: -.116402261, w: .99320215} + m_LocalPosition: {x: -.000388917921, y: 5.96046434e-10, z: -4.19095141e-11} + m_LocalScale: {x: 1.00000012, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400036} + m_RootOrder: 0 +--- !u!1002 &400039 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400040 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_LocalRotation: {x: -.0748830959, y: .0266660172, z: -.100106873, w: .991796374} + m_LocalPosition: {x: -.000833489583, y: 7.28732339e-05, z: .000171652689} + m_LocalScale: {x: .99999994, y: .999999881, z: .999999821} + m_Children: + - {fileID: 400042} + m_Father: {fileID: 400020} + m_RootOrder: 3 +--- !u!1002 &400041 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400042 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100100} + m_LocalRotation: {x: 3.97585698e-09, y: 1.24088428e-09, z: -.160426542, w: .987047791} + m_LocalPosition: {x: -.000362607825, y: -5.96046434e-10, z: 0} + m_LocalScale: {x: 1, y: 1, z: .99999994} + m_Children: + - {fileID: 400044} + m_Father: {fileID: 400040} + m_RootOrder: 0 +--- !u!1002 &400043 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400044 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100050} + m_LocalRotation: {x: -2.77497514e-09, y: 3.25224042e-10, z: -.116402209, w: .993202209} + m_LocalPosition: {x: -.00030665606, y: 5.96046434e-10, z: -3.72529022e-11} + m_LocalScale: {x: 1, y: .99999994, z: 1} + m_Children: [] + m_Father: {fileID: 400042} + m_RootOrder: 0 +--- !u!1002 &400045 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400046 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100082} + m_LocalRotation: {x: -.126186341, y: .0629711971, z: -.132093593, w: .981153905} + m_LocalPosition: {x: -.000727928244, y: .000163425793, z: .000358671939} + m_LocalScale: {x: .999999881, y: .999999821, z: .999999881} + m_Children: + - {fileID: 400048} + m_Father: {fileID: 400020} + m_RootOrder: 4 +--- !u!1002 &400047 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400048 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100092} + m_LocalRotation: {x: -1.2966729e-08, y: 1.36632594e-09, z: -.104791522, w: .9944942} + m_LocalPosition: {x: -.000242064882, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1.00000012} + m_Children: + - {fileID: 400050} + m_Father: {fileID: 400046} + m_RootOrder: 0 +--- !u!1002 &400049 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400050 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100104} + m_LocalRotation: {x: -1.09802558e-08, y: 7.73596742e-09, z: -.0257572141, w: .999668241} + m_LocalPosition: {x: -.000199249233, y: 0, z: 0} + m_LocalScale: {x: 1.00000012, y: 1.00000012, z: 1.00000012} + m_Children: [] + m_Father: {fileID: 400048} + m_RootOrder: 0 +--- !u!1002 &400051 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400052 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100108} + m_LocalRotation: {x: 3.72454423e-09, y: -2.98024148e-08, z: -2.50404701e-05, w: 1} + m_LocalPosition: {x: -.00273254141, y: 3.72529022e-11, z: 0} + m_LocalScale: {x: 1, y: .99999994, z: 1} + m_Children: + - {fileID: 400054} + m_Father: {fileID: 400114} + m_RootOrder: 0 +--- !u!1002 &400053 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400054 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100106} + m_LocalRotation: {x: .706690669, y: .0138001563, z: -.0137891714, w: .707253635} + m_LocalPosition: {x: -.00215726974, y: -3.72529022e-11, z: 5.96046434e-10} + m_LocalScale: {x: 1, y: 1.00000012, z: 1.00000012} + m_Children: + - {fileID: 400056} + - {fileID: 400062} + - {fileID: 400068} + - {fileID: 400074} + - {fileID: 400080} + - {fileID: 400086} + m_Father: {fileID: 400052} + m_RootOrder: 0 +--- !u!1002 &400055 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400056 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100072} + m_LocalRotation: {x: -.397784591, y: .457301617, z: -.174690798, w: .775967658} + m_LocalPosition: {x: -.000353150361, y: .000104373692, z: .000361629296} + m_LocalScale: {x: .999999881, y: .999999881, z: .99999994} + m_Children: + - {fileID: 400058} + m_Father: {fileID: 400054} + m_RootOrder: 0 +--- !u!1002 &400057 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400058 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100052} + m_LocalRotation: {x: -6.10994544e-09, y: 5.87341242e-09, z: -.116402209, w: .993202209} + m_LocalPosition: {x: -.00018735393, y: 0, z: -5.96046434e-10} + m_LocalScale: {x: .99999994, y: 1, z: 1} + m_Children: + - {fileID: 400060} + m_Father: {fileID: 400056} + m_RootOrder: 0 +--- !u!1002 &400059 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400060 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100086} + m_LocalRotation: {x: 4.04652267e-09, y: -2.15851315e-09, z: -.07174211, w: .997423232} + m_LocalPosition: {x: -.00031371176, y: 2.98023217e-10, z: 0} + m_LocalScale: {x: 1, y: .99999994, z: 1} + m_Children: [] + m_Father: {fileID: 400058} + m_RootOrder: 0 +--- !u!1002 &400061 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400062 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100080} + m_LocalRotation: {x: .000723020057, y: .0122492518, z: -.0771517083, w: .996943891} + m_LocalPosition: {x: -.000856468687, y: -2.56085386e-05, z: .000309830677} + m_LocalScale: {x: 1, y: .99999994, z: .99999994} + m_Children: + - {fileID: 400064} + m_Father: {fileID: 400054} + m_RootOrder: 1 +--- !u!1002 &400063 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400064 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100076} + m_LocalRotation: {x: 1.21072274e-09, y: 1.69439085e-09, z: -.156133801, w: .987735927} + m_LocalPosition: {x: -.000449225889, y: 0, z: -3.72529022e-11} + m_LocalScale: {x: .999999881, y: .99999994, z: 1} + m_Children: + - {fileID: 400066} + m_Father: {fileID: 400062} + m_RootOrder: 0 +--- !u!1002 &400065 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400066 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100102} + m_LocalRotation: {x: 2.68020317e-09, y: -3.80796017e-09, z: -.0301964767, w: .999544024} + m_LocalPosition: {x: -.000298546685, y: 0, z: -1.86264511e-11} + m_LocalScale: {x: 1, y: 1, z: .999999881} + m_Children: [] + m_Father: {fileID: 400064} + m_RootOrder: 0 +--- !u!1002 &400067 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400068 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: .0255056527, y: -.00563300587, z: -.0714264289, w: .99710381} + m_LocalPosition: {x: -.000849068747, y: 1.86151265e-05, z: 6.09705203e-05} + m_LocalScale: {x: 1, y: .99999994, z: 1} + m_Children: + - {fileID: 400070} + m_Father: {fileID: 400054} + m_RootOrder: 2 +--- !u!1002 &400069 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400070 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100046} + m_LocalRotation: {x: 7.34953376e-10, y: -1.09296239e-09, z: -.192204654, w: .981354892} + m_LocalPosition: {x: -.00050301489, y: -5.96046434e-10, z: -4.65661277e-12} + m_LocalScale: {x: 1.00000012, y: 1, z: 1} + m_Children: + - {fileID: 400072} + m_Father: {fileID: 400068} + m_RootOrder: 0 +--- !u!1002 &400071 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400072 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: -2.91224622e-09, y: 3.15440274e-09, z: -.116402246, w: .99320215} + m_LocalPosition: {x: -.000388917921, y: 5.96046434e-10, z: -3.02679826e-11} + m_LocalScale: {x: 1.00000012, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400070} + m_RootOrder: 0 +--- !u!1002 &400073 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400074 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} + m_LocalRotation: {x: .074883081, y: -.0266660117, z: -.100106888, w: .991796374} + m_LocalPosition: {x: -.000833488069, y: 7.28732339e-05, z: -.00017165266} + m_LocalScale: {x: 1, y: 1, z: .99999994} + m_Children: + - {fileID: 400076} + m_Father: {fileID: 400054} + m_RootOrder: 3 +--- !u!1002 &400075 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400076 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100096} + m_LocalRotation: {x: 6.20442198e-10, y: -1.98792871e-09, z: -.160426527, w: .987047791} + m_LocalPosition: {x: -.000362607825, y: -1.19209287e-09, z: 0} + m_LocalScale: {x: .99999994, y: 1, z: 1} + m_Children: + - {fileID: 400078} + m_Father: {fileID: 400074} + m_RootOrder: 0 +--- !u!1002 &400077 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400078 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100040} + m_LocalRotation: {x: -9.5385555e-10, y: 3.8625787e-09, z: -.116402201, w: .993202209} + m_LocalPosition: {x: -.00030665606, y: 0, z: 3.72529022e-11} + m_LocalScale: {x: 1, y: .99999994, z: 1.00000012} + m_Children: [] + m_Father: {fileID: 400076} + m_RootOrder: 0 +--- !u!1002 &400079 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400080 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100058} + m_LocalRotation: {x: .126186311, y: -.0629711822, z: -.132093579, w: .981153905} + m_LocalPosition: {x: -.000727928244, y: .000163425197, z: -.000358671998} + m_LocalScale: {x: 1, y: .999999881, z: 1} + m_Children: + - {fileID: 400082} + m_Father: {fileID: 400054} + m_RootOrder: 4 +--- !u!1002 &400081 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400082 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100084} + m_LocalRotation: {x: -1.8523898e-09, y: 1.95189476e-10, z: -.104791552, w: .9944942} + m_LocalPosition: {x: -.000242064591, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400084} + m_Father: {fileID: 400080} + m_RootOrder: 0 +--- !u!1002 &400083 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400084 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100094} + m_LocalRotation: {x: 3.62810093e-09, y: -3.82000698e-09, z: -.0257572141, w: .999668241} + m_LocalPosition: {x: -.000199249538, y: 0, z: 0} + m_LocalScale: {x: 1.00000012, y: 1.00000012, z: 1.00000012} + m_Children: [] + m_Father: {fileID: 400082} + m_RootOrder: 0 +--- !u!1002 &400085 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400086 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_LocalRotation: {x: .192137673, y: -.185858026, z: -.309512347, w: .912546992} + m_LocalPosition: {x: -.000988541171, y: .000274976483, z: .000516350206} + m_LocalScale: {x: 1.00000024, y: 1, z: .99999994} + m_Children: [] + m_Father: {fileID: 400054} + m_RootOrder: 5 +--- !u!1002 &400087 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400088 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} + m_LocalRotation: {x: -.702630103, y: .0206358228, z: -.0183460936, w: .711019337} + m_LocalPosition: {x: -.00146558043, y: .000187991129, z: 3.59850219e-06} + m_LocalScale: {x: .999999583, y: .999999762, z: 1.00000012} + m_Children: [] + m_Father: {fileID: 400112} + m_RootOrder: 0 +--- !u!1002 &400089 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400090 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100060} + m_LocalRotation: {x: 6.98462177e-10, y: -6.44333545e-12, z: -.00922463834, w: .999957442} + m_LocalPosition: {x: -.00481884554, y: -1.86264511e-11, z: 0} + m_LocalScale: {x: 1.00000012, y: 1, z: 1.00000012} + m_Children: + - {fileID: 400092} + m_Father: {fileID: 400108} + m_RootOrder: 0 +--- !u!1002 &400091 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400092 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100044} + m_LocalRotation: {x: -.0415937193, y: .0329391398, z: -.0386241563, w: .997844279} + m_LocalPosition: {x: -.00319361896, y: 1.86264511e-11, z: 7.45058043e-11} + m_LocalScale: {x: 1.00000012, y: 1.00000012, z: 1} + m_Children: + - {fileID: 400094} + m_Father: {fileID: 400090} + m_RootOrder: 0 +--- !u!1002 &400093 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400094 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100024} + m_LocalRotation: {x: 1.54543134e-08, y: -1.54543116e-08, z: -.707106829, w: .707106829} + m_LocalPosition: {x: -.00117827835, y: .00141118059, z: -1.49011609e-10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400092} + m_RootOrder: 0 +--- !u!1002 &400095 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400096 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100112} + m_LocalRotation: {x: .490652323, y: -.544933081, z: -.502414405, w: .458135396} + m_LocalPosition: {x: -.000627203728, y: .00047461444, z: -5.73185062e-05} + m_LocalScale: {x: .999999583, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400108} + m_RootOrder: 1 +--- !u!1002 &400097 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400098 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100074} + m_LocalRotation: {x: -8.96918539e-10, y: 3.73372222e-09, z: -.00922463834, w: .999957442} + m_LocalPosition: {x: -.00481884507, y: 9.31322519e-11, z: 7.45058043e-11} + m_LocalScale: {x: 1.00000012, y: .99999994, z: 1.00000012} + m_Children: + - {fileID: 400100} + m_Father: {fileID: 400106} + m_RootOrder: 0 +--- !u!1002 &400099 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400100 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100064} + m_LocalRotation: {x: .041593723, y: -.0329392292, z: -.0386241637, w: .997844279} + m_LocalPosition: {x: -.0031936185, y: 5.58793532e-11, z: -7.45058043e-11} + m_LocalScale: {x: 1.00000012, y: 1, z: 1} + m_Children: + - {fileID: 400102} + m_Father: {fileID: 400098} + m_RootOrder: 0 +--- !u!1002 &400101 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400102 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100034} + m_LocalRotation: {x: -1.28201334e-08, y: 1.80884889e-08, z: -.707106829, w: .707106829} + m_LocalPosition: {x: -.00117827835, y: .00141118094, z: 1.49011609e-10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400100} + m_RootOrder: 0 +--- !u!1002 &400103 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400104 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100090} + m_LocalRotation: {x: .490652055, y: -.5449332, z: -.502414465, w: .458135456} + m_LocalPosition: {x: -.000627203844, y: .000474614179, z: -5.73182078e-05} + m_LocalScale: {x: 1.00000024, y: 1.00000012, z: 1.00000036} + m_Children: [] + m_Father: {fileID: 400106} + m_RootOrder: 1 +--- !u!1002 &400105 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400106 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: -.0451639257, y: -.99848491, z: .00480509782, w: .0310645979} + m_LocalPosition: {x: .00120619335, y: -.000158659546, z: -.000893507735} + m_LocalScale: {x: 1, y: 1.00000012, z: 1.00000012} + m_Children: + - {fileID: 400098} + - {fileID: 400104} + m_Father: {fileID: 400006} + m_RootOrder: 1 +--- !u!1002 &400107 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400108 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100054} + m_LocalRotation: {x: .0451640151, y: .99848491, z: .00480786944, w: .0310644004} + m_LocalPosition: {x: .00120619335, y: -.000158664523, z: .000893507269} + m_LocalScale: {x: 1, y: 1.00000012, z: 1.00000012} + m_Children: + - {fileID: 400090} + - {fileID: 400096} + m_Father: {fileID: 400006} + m_RootOrder: 0 +--- !u!1002 &400109 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400110 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100022} + m_LocalRotation: {x: .63864702, y: .0856834352, z: -.760075867, w: .0841010138} + m_LocalPosition: {x: .000872889126, y: .000163491364, z: .00071752345} + m_LocalScale: {x: 1, y: .99999994, z: 1} + m_Children: + - {fileID: 400016} + m_Father: {fileID: 400002} + m_RootOrder: 1 +--- !u!1002 &400111 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400112 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100062} + m_LocalRotation: {x: 2.92667295e-08, y: -3.1547853e-07, z: .0790469572, w: .996870935} + m_LocalPosition: {x: -.000540349458, y: -1.49011609e-10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400088} + m_Father: {fileID: 400002} + m_RootOrder: 0 +--- !u!1002 &400113 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400114 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_LocalRotation: {x: -.0788895339, y: .14359653, z: .0264191758, w: .986133099} + m_LocalPosition: {x: -.00127041398, y: 3.72529022e-11, z: -5.96046434e-10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400052} + m_Father: {fileID: 400000} + m_RootOrder: 0 +--- !u!1002 &400115 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!23 &2300000 +Renderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: ca49380a71a2bb64c830d06bd421b9d1, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!1002 &2300001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!33 &3300000 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100026} + m_Mesh: {fileID: 4300002, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} +--- !u!1002 &3300001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!111 &11100000 +Animation: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_Enabled: 1 + serializedVersion: 3 + m_Animation: {fileID: 7400014, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + m_Animations: + - {fileID: 7400002, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + - {fileID: 7400004, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + - {fileID: 7400008, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + - {fileID: 7400010, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + - {fileID: 7400012, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + - {fileID: 7400016, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + - {fileID: 7400018, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + - {fileID: 7400014, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + m_WrapMode: 0 + m_PlayAutomatically: 1 + m_AnimatePhysics: 0 + m_CullingType: 1 +--- !u!1002 &11100001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b167d00b3108411a8a963cba5ddde1b, type: 3} + m_Name: + m_EditorClassIdentifier: + cameraTransform: {fileID: 0} + distance: 3 + height: 1 + angularSmoothLag: .100000001 + angularMaxSpeed: 175 + heightSmoothLag: .300000012 + snapSmoothLag: .200000003 + snapMaxSpeed: 720 + clampHeadPositionScreenSpace: .75 + lockCameraTimeout: .200000003 +--- !u!1002 &11400001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d5ac211a643e447ca78c2d794a16381, type: 3} + m_Name: + m_EditorClassIdentifier: + idleAnimation: {fileID: 7400002, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + walkAnimation: {fileID: 7400008, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + runAnimation: {fileID: 7400004, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + jumpPoseAnimation: {fileID: 7400010, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + walkMaxAnimationSpeed: .899999976 + trotMaxAnimationSpeed: 1.29999995 + runMaxAnimationSpeed: .899999976 + jumpAnimationSpeed: 1.14999998 + landAnimationSpeed: 1 + walkSpeed: 3 + trotSpeed: 4 + runSpeed: 8 + inAirControlAcceleration: 3 + jumpHeight: 1 + gravity: 20 + speedSmoothing: 10 + rotateSpeed: 500 + trotAfterSeconds: 2 + canJump: 1 +--- !u!1002 &11400003 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!137 &13700000 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100048} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: ca49380a71a2bb64c830d06bd421b9d1, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_Mesh: {fileID: 4300000, guid: 449b48f7eb5d87a4baaa5fb73f875a59, type: 3} + m_Bones: + - {fileID: 400008} + - {fileID: 400006} + - {fileID: 400106} + - {fileID: 400104} + - {fileID: 400004} + - {fileID: 400108} + - {fileID: 400110} + - {fileID: 400016} + - {fileID: 400000} + - {fileID: 400114} + - {fileID: 400098} + - {fileID: 400090} + - {fileID: 400052} + - {fileID: 400100} + - {fileID: 400102} + - {fileID: 400002} + - {fileID: 400112} + - {fileID: 400088} + - {fileID: 400054} + - {fileID: 400096} + - {fileID: 400074} + - {fileID: 400076} + - {fileID: 400078} + - {fileID: 400080} + - {fileID: 400082} + - {fileID: 400084} + - {fileID: 400068} + - {fileID: 400070} + - {fileID: 400072} + - {fileID: 400066} + - {fileID: 400056} + - {fileID: 400058} + - {fileID: 400060} + - {fileID: 400062} + - {fileID: 400064} + - {fileID: 400018} + - {fileID: 400020} + - {fileID: 400040} + - {fileID: 400042} + - {fileID: 400044} + - {fileID: 400046} + - {fileID: 400048} + - {fileID: 400050} + - {fileID: 400034} + - {fileID: 400036} + - {fileID: 400038} + - {fileID: 400032} + - {fileID: 400022} + - {fileID: 400024} + - {fileID: 400026} + - {fileID: 400028} + - {fileID: 400030} + - {fileID: 400092} + - {fileID: 400094} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 0} + m_AABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_DirtyAABB: 1 +--- !u!1002 &13700001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!143 &14300000 +CharacterController: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + serializedVersion: 2 + m_Height: 1.83270526 + m_Radius: .300000012 + m_SlopeLimit: 45 + m_StepOffset: .300000012 + m_SkinWidth: .0799999982 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1002 &14300001 +EditorExtensionImpl: + serializedVersion: 6 +--- !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: 100030} + m_IsPrefabParent: 1 + m_IsExploded: 1 +--- !u!1002 &100100001 +EditorExtensionImpl: + serializedVersion: 6 diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/3rd Person Controller.prefab.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/3rd Person Controller.prefab.meta new file mode 100644 index 0000000..cdae5cc --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/3rd Person Controller.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2314ce3a3eecf4816bad3c9eca4de2e1 +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/First Person Controller.prefab b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/First Person Controller.prefab new file mode 100644 index 0000000..a246080 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/First Person Controller.prefab @@ -0,0 +1,358 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400000} + - 33: {fileID: 3300000} + - 23: {fileID: 2300000} + m_Layer: 0 + m_Name: Graphics + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400002} + - 143: {fileID: 14300000} + - 114: {fileID: 11400000} + - 114: {fileID: 11400002} + - 114: {fileID: 11400004} + m_Layer: 0 + m_Name: First Person Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100003 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400004} + - 20: {fileID: 2000000} + - 92: {fileID: 9200000} + - 124: {fileID: 12400000} + - 114: {fileID: 11400006} + - 81: {fileID: 8100000} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1002 &100005 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: -0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .400000006, y: .5, z: .400000006} + m_Children: [] + m_Father: {fileID: 400002} + m_RootOrder: 0 +--- !u!1002 &400001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400002 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -30.7649231, y: 3.25786257, z: -74.3138885} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400000} + - {fileID: 400004} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1002 &400003 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!4 &400004 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: .907083511, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400002} + m_RootOrder: 1 +--- !u!1002 &400005 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!20 &2000000 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: .19166474, g: .301966369, b: .474509805, a: 1} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 100 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 +--- !u!1002 &2000001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!23 &2300000 +Renderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!1002 &2300001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!33 &3300000 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Mesh: {fileID: 10205, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1002 &3300001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!81 &8100000 +AudioListener: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 +--- !u!1002 &8100001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!92 &9200000 +Behaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 +--- !u!1002 &9200001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68ec2fe99d1108b9d0006a298d76c639, type: 3} + m_Name: + m_EditorClassIdentifier: + axes: 1 + sensitivityX: 15 + sensitivityY: 0 + minimumX: -360 + maximumX: 360 + minimumY: 0 + maximumY: 0 +--- !u!1002 &11400001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ab79d7f243824f5d9826bd83522c8df, type: 3} + m_Name: + m_EditorClassIdentifier: + canControl: 1 + useFixedUpdate: 1 + movement: + maxForwardSpeed: 6 + maxSidewaysSpeed: 6 + maxBackwardsSpeed: 6 + slopeSpeedMultiplier: + serializedVersion: 2 + m_Curve: + - time: -90 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 90 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + maxGroundAcceleration: 20 + maxAirAcceleration: 15 + gravity: 20 + maxFallSpeed: 20 + jumping: + enabled: 1 + baseHeight: 1 + extraHeight: 1 + perpAmount: 0 + steepPerpAmount: .5 + movingPlatform: + enabled: 1 + movementTransfer: 2 + sliding: + enabled: 1 + slidingSpeed: 10 + sidewaysControl: 1 + speedControl: .400000006 +--- !u!1002 &11400003 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 60bca8f58a0b8478e946e6e86658cb29, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1002 &11400005 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!114 &11400006 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68ec2fe99d1108b9d0006a298d76c639, type: 3} + m_Name: + m_EditorClassIdentifier: + axes: 2 + sensitivityX: 10 + sensitivityY: 10 + minimumX: 0 + maximumX: 360 + minimumY: -60 + maximumY: 60 +--- !u!1002 &11400007 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!124 &12400000 +Behaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 +--- !u!1002 &12400001 +EditorExtensionImpl: + serializedVersion: 6 +--- !u!143 &14300000 +CharacterController: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + serializedVersion: 2 + m_Height: 2 + m_Radius: .400000006 + m_SlopeLimit: 45 + m_StepOffset: .400000006 + m_SkinWidth: .0500000007 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1002 &14300001 +EditorExtensionImpl: + serializedVersion: 6 +--- !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: 100002} + m_IsPrefabParent: 1 + m_IsExploded: 1 +--- !u!1002 &100100001 +EditorExtensionImpl: + serializedVersion: 6 diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/First Person Controller.prefab.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/First Person Controller.prefab.meta new file mode 100644 index 0000000..a780e22 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/First Person Controller.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9d4133d5d30b644bd87802a347eaccbe +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources.meta new file mode 100644 index 0000000..ac65176 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7e0b0a994d8934541a387e092630b5db +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter.meta new file mode 100644 index 0000000..785e28d --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c81df2918c80c054ca3d436e62090893 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Constructor.FBX b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Constructor.FBX new file mode 100644 index 0000000..b3ee8f3 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Constructor.FBX differ diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Constructor.FBX.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Constructor.FBX.meta new file mode 100644 index 0000000..d1883c3 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Constructor.FBX.meta @@ -0,0 +1,313 @@ +fileFormatVersion: 2 +guid: 449b48f7eb5d87a4baaa5fb73f875a59 +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: Bip001 R Finger1 + 100002: Bip001 R Finger21 + 100004: Bip001 R Finger11 + 100006: Bip001 R Finger02 + 100010: Bip001 R Finger12 + 100012: Bip001 R Finger41 + 100014: Bip001 R Finger4 + 100018: Bip001 R Finger32 + 100020: Bip001 R Finger31 + 100022: Bip001 R Finger3 + 100026: hip_adjustment_bone_right + 100028: Bip001 R Finger42 + 100032: hip_adjustment_bone_left + 100034: Bip001 R Finger2 + 100036: Bip001 R Finger22 + 100040: Bip001 R UpperArm + 100042: Bip001 R Forearm + 100044: Bip001 R Finger0 + 100046: Bip001 R Finger01 + 100052: //RootNode + 100054: Bip001 R Clavicle + 100058: Bip001 L Finger3 + 100060: Bip001 L Finger31 + 100062: Bip001 L Finger32 + 100066: Bip001 L Finger4 + 100068: Bip001 L Finger41 + 100070: Bip001 L Finger42 + 100074: Bip001 L Finger22 + 100076: Bip001 L Finger02 + 100080: Bip001 L Finger1 + 100082: Bip001 L Finger11 + 100084: Bip001 L Finger12 + 100088: Bip001 L Finger2 + 100090: Bip001 L Finger21 + 100092: Bip001 L Finger0 + 100094: Bip001 L Finger01 + 100096: Bip001 L Forearm + 100098: Bip001 L UpperArm + 100100: Bip001 L Clavicle + 100102: construction_worker + 100104: Bip001 R Toe0 + 100106: Bip001 R Foot + 100108: Bip001 R Calf + 100110: Bip001 R Thigh + 100112: Bip001 L Toe0 + 100114: Bip001 L Foot + 100116: Bip001 L Calf + 100118: Bip001 L Thigh + 100120: helmet_bone + 100124: Bip001 Head + 100126: wrench + 100128: Bip001 R Hand + 100130: Bip001 L Hand + 100132: Bip001 Neck + 100134: Bip001 Spine1 + 100136: Bip001 Spine + 100138: Bip001 Pelvis + 100140: Bip001 + 400000: Bip001 R Finger1 + 400002: Bip001 R Finger21 + 400004: Bip001 R Finger11 + 400006: Bip001 R Finger02 + 400010: Bip001 R Finger12 + 400012: Bip001 R Finger41 + 400014: Bip001 R Finger4 + 400018: Bip001 R Finger32 + 400020: Bip001 R Finger31 + 400022: Bip001 R Finger3 + 400026: hip_adjustment_bone_right + 400028: Bip001 R Finger42 + 400032: hip_adjustment_bone_left + 400034: Bip001 R Finger2 + 400036: Bip001 R Finger22 + 400040: Bip001 R UpperArm + 400042: Bip001 R Forearm + 400044: Bip001 R Finger0 + 400046: Bip001 R Finger01 + 400052: //RootNode + 400054: Bip001 R Clavicle + 400058: Bip001 L Finger3 + 400060: Bip001 L Finger31 + 400062: Bip001 L Finger32 + 400066: Bip001 L Finger4 + 400068: Bip001 L Finger41 + 400070: Bip001 L Finger42 + 400074: Bip001 L Finger22 + 400076: Bip001 L Finger02 + 400080: Bip001 L Finger1 + 400082: Bip001 L Finger11 + 400084: Bip001 L Finger12 + 400088: Bip001 L Finger2 + 400090: Bip001 L Finger21 + 400092: Bip001 L Finger0 + 400094: Bip001 L Finger01 + 400096: Bip001 L Forearm + 400098: Bip001 L UpperArm + 400100: Bip001 L Clavicle + 400102: construction_worker + 400104: Bip001 R Toe0 + 400106: Bip001 R Foot + 400108: Bip001 R Calf + 400110: Bip001 R Thigh + 400112: Bip001 L Toe0 + 400114: Bip001 L Foot + 400116: Bip001 L Calf + 400118: Bip001 L Thigh + 400120: helmet_bone + 400124: Bip001 Head + 400126: wrench + 400128: Bip001 R Hand + 400130: Bip001 L Hand + 400132: Bip001 Neck + 400134: Bip001 Spine1 + 400136: Bip001 Spine + 400138: Bip001 Pelvis + 400140: Bip001 + 2300000: wrench + 3300000: wrench + 4300000: construction_worker + 4300002: wrench + 7400012: idle + 7400014: run + 7400016: walk + 7400018: jump_pose + 11100000: //RootNode + 13700000: Bip001 Pelvis + materials: + importMaterials: 1 + materialName: 3 + materialSearch: 1 + animations: + legacyGenerateAnimations: 3 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: + - serializedVersion: 16 + name: idle + takeName: + firstFrame: 2 + lastFrame: 62 + wrapMode: 2 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: run + takeName: + firstFrame: 65 + lastFrame: 81 + wrapMode: 2 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: walk + takeName: + firstFrame: 84 + lastFrame: 116 + wrapMode: 2 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: jump_pose + takeName: + firstFrame: 118 + lastFrame: 123 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 0 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 4 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 1 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials.meta new file mode 100644 index 0000000..01daa74 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e53c8c3dcc4ff59438bc9e86cb45c3f6 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials/constructor_done.mat b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials/constructor_done.mat new file mode 100644 index 0000000..33beaf9 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials/constructor_done.mat @@ -0,0 +1,46 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: constructor_done + m_Shader: {fileID: 4, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 97b050d43ac7c4d2b9f6cbb587650761, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 2800000, guid: 531c14f8d5cdc4e5baa83ee6e16f783a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _Shininess + second: .078125 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .5, g: .5, b: .5, a: 1} +--- !u!1002 &2100001 +EditorExtensionImpl: + serializedVersion: 6 diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials/constructor_done.mat.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials/constructor_done.mat.meta new file mode 100644 index 0000000..abacb41 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Materials/constructor_done.mat.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ca49380a71a2bb64c830d06bd421b9d1 +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures.meta new file mode 100644 index 0000000..270429f --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b365e6042890d4b1987423ed6bb8a08c +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures/constructor_diffuse.png b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures/constructor_diffuse.png new file mode 100644 index 0000000..59fef90 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures/constructor_diffuse.png differ diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures/constructor_diffuse.png.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures/constructor_diffuse.png.meta new file mode 100644 index 0000000..8a9af92 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/PrototypeCharacter/Textures/constructor_diffuse.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 97b050d43ac7c4d2b9f6cbb587650761 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + 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: 1024 + 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: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts.meta new file mode 100644 index 0000000..b44655e --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f781c091d1c8647c380d5230adfaee54 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor.js b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor.js new file mode 100644 index 0000000..511f2e4 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor.js @@ -0,0 +1,587 @@ +#pragma strict +#pragma implicit +#pragma downcast + +// Does this script currently respond to input? +var canControl : boolean = true; + +var useFixedUpdate : boolean = true; + +// For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the inspector view. +// Very handy for organization! + +// The current global direction we want the character to move in. +@System.NonSerialized +var inputMoveDirection : Vector3 = Vector3.zero; + +// Is the jump button held down? We use this interface instead of checking +// for the jump button directly so this script can also be used by AIs. +@System.NonSerialized +var inputJump : boolean = false; + +class CharacterMotorMovement { + // The maximum horizontal speed when moving + var maxForwardSpeed : float = 10.0; + var maxSidewaysSpeed : float = 10.0; + var maxBackwardsSpeed : float = 10.0; + + // Curve for multiplying speed based on slope (negative = downwards) + var slopeSpeedMultiplier : AnimationCurve = AnimationCurve(Keyframe(-90, 1), Keyframe(0, 1), Keyframe(90, 0)); + + // How fast does the character change speeds? Higher is faster. + var maxGroundAcceleration : float = 30.0; + var maxAirAcceleration : float = 20.0; + + // The gravity for the character + var gravity : float = 10.0; + var maxFallSpeed : float = 20.0; + + // For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the inspector view. + // Very handy for organization! + + // The last collision flags returned from controller.Move + @System.NonSerialized + var collisionFlags : CollisionFlags; + + // We will keep track of the character's current velocity, + @System.NonSerialized + var velocity : Vector3; + + // This keeps track of our current velocity while we're not grounded + @System.NonSerialized + var frameVelocity : Vector3 = Vector3.zero; + + @System.NonSerialized + var hitPoint : Vector3 = Vector3.zero; + + @System.NonSerialized + var lastHitPoint : Vector3 = Vector3(Mathf.Infinity, 0, 0); +} + +var movement : CharacterMotorMovement = CharacterMotorMovement(); + +enum MovementTransferOnJump { + None, // The jump is not affected by velocity of floor at all. + InitTransfer, // Jump gets its initial velocity from the floor, then gradualy comes to a stop. + PermaTransfer, // Jump gets its initial velocity from the floor, and keeps that velocity until landing. + PermaLocked // Jump is relative to the movement of the last touched floor and will move together with that floor. +} + +// We will contain all the jumping related variables in one helper class for clarity. +class CharacterMotorJumping { + // Can the character jump? + var enabled : boolean = true; + + // How high do we jump when pressing jump and letting go immediately + var baseHeight : float = 1.0; + + // We add extraHeight units (meters) on top when holding the button down longer while jumping + var extraHeight : float = 4.1; + + // How much does the character jump out perpendicular to the surface on walkable surfaces? + // 0 means a fully vertical jump and 1 means fully perpendicular. + var perpAmount : float = 0.0; + + // How much does the character jump out perpendicular to the surface on too steep surfaces? + // 0 means a fully vertical jump and 1 means fully perpendicular. + var steepPerpAmount : float = 0.5; + + // For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the inspector view. + // Very handy for organization! + + // Are we jumping? (Initiated with jump button and not grounded yet) + // To see if we are just in the air (initiated by jumping OR falling) see the grounded variable. + @System.NonSerialized + var jumping : boolean = false; + + @System.NonSerialized + var holdingJumpButton : boolean = false; + + // the time we jumped at (Used to determine for how long to apply extra jump power after jumping.) + @System.NonSerialized + var lastStartTime : float = 0.0; + + @System.NonSerialized + var lastButtonDownTime : float = -100; + + @System.NonSerialized + var jumpDir : Vector3 = Vector3.up; +} + +var jumping : CharacterMotorJumping = CharacterMotorJumping(); + +class CharacterMotorMovingPlatform { + var enabled : boolean = true; + + var movementTransfer : MovementTransferOnJump = MovementTransferOnJump.PermaTransfer; + + @System.NonSerialized + var hitPlatform : Transform; + + @System.NonSerialized + var activePlatform : Transform; + + @System.NonSerialized + var activeLocalPoint : Vector3; + + @System.NonSerialized + var activeGlobalPoint : Vector3; + + @System.NonSerialized + var activeLocalRotation : Quaternion; + + @System.NonSerialized + var activeGlobalRotation : Quaternion; + + @System.NonSerialized + var lastMatrix : Matrix4x4; + + @System.NonSerialized + var platformVelocity : Vector3; + + @System.NonSerialized + var newPlatform : boolean; +} + +var movingPlatform : CharacterMotorMovingPlatform = CharacterMotorMovingPlatform(); + +class CharacterMotorSliding { + // Does the character slide on too steep surfaces? + var enabled : boolean = true; + + // How fast does the character slide on steep surfaces? + var slidingSpeed : float = 15; + + // How much can the player control the sliding direction? + // If the value is 0.5 the player can slide sideways with half the speed of the downwards sliding speed. + var sidewaysControl : float = 1.0; + + // How much can the player influence the sliding speed? + // If the value is 0.5 the player can speed the sliding up to 150% or slow it down to 50%. + var speedControl : float = 0.4; +} + +var sliding : CharacterMotorSliding = CharacterMotorSliding(); + +@System.NonSerialized +var grounded : boolean = true; + +@System.NonSerialized +var groundNormal : Vector3 = Vector3.zero; + +private var lastGroundNormal : Vector3 = Vector3.zero; + +private var tr : Transform; + +private var controller : CharacterController; + +function Awake () { + controller = GetComponent (CharacterController); + tr = transform; +} + +private function UpdateFunction () { + // We copy the actual velocity into a temporary variable that we can manipulate. + var velocity : Vector3 = movement.velocity; + + // Update velocity based on input + velocity = ApplyInputVelocityChange(velocity); + + // Apply gravity and jumping force + velocity = ApplyGravityAndJumping (velocity); + + // Moving platform support + var moveDistance : Vector3 = Vector3.zero; + if (MoveWithPlatform()) { + var newGlobalPoint : Vector3 = movingPlatform.activePlatform.TransformPoint(movingPlatform.activeLocalPoint); + moveDistance = (newGlobalPoint - movingPlatform.activeGlobalPoint); + if (moveDistance != Vector3.zero) + controller.Move(moveDistance); + + // Support moving platform rotation as well: + var newGlobalRotation : Quaternion = movingPlatform.activePlatform.rotation * movingPlatform.activeLocalRotation; + var rotationDiff : Quaternion = newGlobalRotation * Quaternion.Inverse(movingPlatform.activeGlobalRotation); + + var yRotation = rotationDiff.eulerAngles.y; + if (yRotation != 0) { + // Prevent rotation of the local up vector + tr.Rotate(0, yRotation, 0); + } + } + + // Save lastPosition for velocity calculation. + var lastPosition : Vector3 = tr.position; + + // We always want the movement to be framerate independent. Multiplying by Time.deltaTime does this. + var currentMovementOffset : Vector3 = velocity * Time.deltaTime; + + // Find out how much we need to push towards the ground to avoid loosing grouning + // when walking down a step or over a sharp change in slope. + var pushDownOffset : float = Mathf.Max(controller.stepOffset, Vector3(currentMovementOffset.x, 0, currentMovementOffset.z).magnitude); + if (grounded) + currentMovementOffset -= pushDownOffset * Vector3.up; + + // Reset variables that will be set by collision function + movingPlatform.hitPlatform = null; + groundNormal = Vector3.zero; + + // Move our character! + movement.collisionFlags = controller.Move (currentMovementOffset); + + movement.lastHitPoint = movement.hitPoint; + lastGroundNormal = groundNormal; + + if (movingPlatform.enabled && movingPlatform.activePlatform != movingPlatform.hitPlatform) { + if (movingPlatform.hitPlatform != null) { + movingPlatform.activePlatform = movingPlatform.hitPlatform; + movingPlatform.lastMatrix = movingPlatform.hitPlatform.localToWorldMatrix; + movingPlatform.newPlatform = true; + } + } + + // Calculate the velocity based on the current and previous position. + // This means our velocity will only be the amount the character actually moved as a result of collisions. + var oldHVelocity : Vector3 = new Vector3(velocity.x, 0, velocity.z); + movement.velocity = (tr.position - lastPosition) / Time.deltaTime; + var newHVelocity : Vector3 = new Vector3(movement.velocity.x, 0, movement.velocity.z); + + // The CharacterController can be moved in unwanted directions when colliding with things. + // We want to prevent this from influencing the recorded velocity. + if (oldHVelocity == Vector3.zero) { + movement.velocity = new Vector3(0, movement.velocity.y, 0); + } + else { + var projectedNewVelocity : float = Vector3.Dot(newHVelocity, oldHVelocity) / oldHVelocity.sqrMagnitude; + movement.velocity = oldHVelocity * Mathf.Clamp01(projectedNewVelocity) + movement.velocity.y * Vector3.up; + } + + if (movement.velocity.y < velocity.y - 0.001) { + if (movement.velocity.y < 0) { + // Something is forcing the CharacterController down faster than it should. + // Ignore this + movement.velocity.y = velocity.y; + } + else { + // The upwards movement of the CharacterController has been blocked. + // This is treated like a ceiling collision - stop further jumping here. + jumping.holdingJumpButton = false; + } + } + + // We were grounded but just loosed grounding + if (grounded && !IsGroundedTest()) { + grounded = false; + + // Apply inertia from platform + if (movingPlatform.enabled && + (movingPlatform.movementTransfer == MovementTransferOnJump.InitTransfer || + movingPlatform.movementTransfer == MovementTransferOnJump.PermaTransfer) + ) { + movement.frameVelocity = movingPlatform.platformVelocity; + movement.velocity += movingPlatform.platformVelocity; + } + + SendMessage("OnFall", SendMessageOptions.DontRequireReceiver); + // We pushed the character down to ensure it would stay on the ground if there was any. + // But there wasn't so now we cancel the downwards offset to make the fall smoother. + tr.position += pushDownOffset * Vector3.up; + } + // We were not grounded but just landed on something + else if (!grounded && IsGroundedTest()) { + grounded = true; + jumping.jumping = false; + SubtractNewPlatformVelocity(); + + SendMessage("OnLand", SendMessageOptions.DontRequireReceiver); + } + + // Moving platforms support + if (MoveWithPlatform()) { + // Use the center of the lower half sphere of the capsule as reference point. + // This works best when the character is standing on moving tilting platforms. + movingPlatform.activeGlobalPoint = tr.position + Vector3.up * (controller.center.y - controller.height*0.5 + controller.radius); + movingPlatform.activeLocalPoint = movingPlatform.activePlatform.InverseTransformPoint(movingPlatform.activeGlobalPoint); + + // Support moving platform rotation as well: + movingPlatform.activeGlobalRotation = tr.rotation; + movingPlatform.activeLocalRotation = Quaternion.Inverse(movingPlatform.activePlatform.rotation) * movingPlatform.activeGlobalRotation; + } +} + +function FixedUpdate () { + if (movingPlatform.enabled) { + if (movingPlatform.activePlatform != null) { + if (!movingPlatform.newPlatform) { + var lastVelocity : Vector3 = movingPlatform.platformVelocity; + + movingPlatform.platformVelocity = ( + movingPlatform.activePlatform.localToWorldMatrix.MultiplyPoint3x4(movingPlatform.activeLocalPoint) + - movingPlatform.lastMatrix.MultiplyPoint3x4(movingPlatform.activeLocalPoint) + ) / Time.deltaTime; + } + movingPlatform.lastMatrix = movingPlatform.activePlatform.localToWorldMatrix; + movingPlatform.newPlatform = false; + } + else { + movingPlatform.platformVelocity = Vector3.zero; + } + } + + if (useFixedUpdate) + UpdateFunction(); +} + +function Update () { + if (!useFixedUpdate) + UpdateFunction(); +} + +private function ApplyInputVelocityChange (velocity : Vector3) { + if (!canControl) + inputMoveDirection = Vector3.zero; + + // Find desired velocity + var desiredVelocity : Vector3; + if (grounded && TooSteep()) { + // The direction we're sliding in + desiredVelocity = Vector3(groundNormal.x, 0, groundNormal.z).normalized; + // Find the input movement direction projected onto the sliding direction + var projectedMoveDir = Vector3.Project(inputMoveDirection, desiredVelocity); + // Add the sliding direction, the spped control, and the sideways control vectors + desiredVelocity = desiredVelocity + projectedMoveDir * sliding.speedControl + (inputMoveDirection - projectedMoveDir) * sliding.sidewaysControl; + // Multiply with the sliding speed + desiredVelocity *= sliding.slidingSpeed; + } + else + desiredVelocity = GetDesiredHorizontalVelocity(); + + if (movingPlatform.enabled && movingPlatform.movementTransfer == MovementTransferOnJump.PermaTransfer) { + desiredVelocity += movement.frameVelocity; + desiredVelocity.y = 0; + } + + if (grounded) + desiredVelocity = AdjustGroundVelocityToNormal(desiredVelocity, groundNormal); + else + velocity.y = 0; + + // Enforce max velocity change + var maxVelocityChange : float = GetMaxAcceleration(grounded) * Time.deltaTime; + var velocityChangeVector : Vector3 = (desiredVelocity - velocity); + if (velocityChangeVector.sqrMagnitude > maxVelocityChange * maxVelocityChange) { + velocityChangeVector = velocityChangeVector.normalized * maxVelocityChange; + } + // If we're in the air and don't have control, don't apply any velocity change at all. + // If we're on the ground and don't have control we do apply it - it will correspond to friction. + if (grounded || canControl) + velocity += velocityChangeVector; + + if (grounded) { + // When going uphill, the CharacterController will automatically move up by the needed amount. + // Not moving it upwards manually prevent risk of lifting off from the ground. + // When going downhill, DO move down manually, as gravity is not enough on steep hills. + velocity.y = Mathf.Min(velocity.y, 0); + } + + return velocity; +} + +private function ApplyGravityAndJumping (velocity : Vector3) { + + if (!inputJump || !canControl) { + jumping.holdingJumpButton = false; + jumping.lastButtonDownTime = -100; + } + + if (inputJump && jumping.lastButtonDownTime < 0 && canControl) + jumping.lastButtonDownTime = Time.time; + + if (grounded) + velocity.y = Mathf.Min(0, velocity.y) - movement.gravity * Time.deltaTime; + else { + velocity.y = movement.velocity.y - movement.gravity * Time.deltaTime; + + // When jumping up we don't apply gravity for some time when the user is holding the jump button. + // This gives more control over jump height by pressing the button longer. + if (jumping.jumping && jumping.holdingJumpButton) { + // Calculate the duration that the extra jump force should have effect. + // If we're still less than that duration after the jumping time, apply the force. + if (Time.time < jumping.lastStartTime + jumping.extraHeight / CalculateJumpVerticalSpeed(jumping.baseHeight)) { + // Negate the gravity we just applied, except we push in jumpDir rather than jump upwards. + velocity += jumping.jumpDir * movement.gravity * Time.deltaTime; + } + } + + // Make sure we don't fall any faster than maxFallSpeed. This gives our character a terminal velocity. + velocity.y = Mathf.Max (velocity.y, -movement.maxFallSpeed); + } + + if (grounded) { + // Jump only if the jump button was pressed down in the last 0.2 seconds. + // We use this check instead of checking if it's pressed down right now + // because players will often try to jump in the exact moment when hitting the ground after a jump + // and if they hit the button a fraction of a second too soon and no new jump happens as a consequence, + // it's confusing and it feels like the game is buggy. + if (jumping.enabled && canControl && (Time.time - jumping.lastButtonDownTime < 0.2)) { + grounded = false; + jumping.jumping = true; + jumping.lastStartTime = Time.time; + jumping.lastButtonDownTime = -100; + jumping.holdingJumpButton = true; + + // Calculate the jumping direction + if (TooSteep()) + jumping.jumpDir = Vector3.Slerp(Vector3.up, groundNormal, jumping.steepPerpAmount); + else + jumping.jumpDir = Vector3.Slerp(Vector3.up, groundNormal, jumping.perpAmount); + + // Apply the jumping force to the velocity. Cancel any vertical velocity first. + velocity.y = 0; + velocity += jumping.jumpDir * CalculateJumpVerticalSpeed (jumping.baseHeight); + + // Apply inertia from platform + if (movingPlatform.enabled && + (movingPlatform.movementTransfer == MovementTransferOnJump.InitTransfer || + movingPlatform.movementTransfer == MovementTransferOnJump.PermaTransfer) + ) { + movement.frameVelocity = movingPlatform.platformVelocity; + velocity += movingPlatform.platformVelocity; + } + + SendMessage("OnJump", SendMessageOptions.DontRequireReceiver); + } + else { + jumping.holdingJumpButton = false; + } + } + + return velocity; +} + +function OnControllerColliderHit (hit : ControllerColliderHit) { + if (hit.normal.y > 0 && hit.normal.y > groundNormal.y && hit.moveDirection.y < 0) { + if ((hit.point - movement.lastHitPoint).sqrMagnitude > 0.001 || lastGroundNormal == Vector3.zero) + groundNormal = hit.normal; + else + groundNormal = lastGroundNormal; + + movingPlatform.hitPlatform = hit.collider.transform; + movement.hitPoint = hit.point; + movement.frameVelocity = Vector3.zero; + } +} + +private function SubtractNewPlatformVelocity () { + // When landing, subtract the velocity of the new ground from the character's velocity + // since movement in ground is relative to the movement of the ground. + if (movingPlatform.enabled && + (movingPlatform.movementTransfer == MovementTransferOnJump.InitTransfer || + movingPlatform.movementTransfer == MovementTransferOnJump.PermaTransfer) + ) { + // If we landed on a new platform, we have to wait for two FixedUpdates + // before we know the velocity of the platform under the character + if (movingPlatform.newPlatform) { + var platform : Transform = movingPlatform.activePlatform; + yield WaitForFixedUpdate(); + yield WaitForFixedUpdate(); + if (grounded && platform == movingPlatform.activePlatform) + yield 1; + } + movement.velocity -= movingPlatform.platformVelocity; + } +} + +private function MoveWithPlatform () : boolean { + return ( + movingPlatform.enabled + && (grounded || movingPlatform.movementTransfer == MovementTransferOnJump.PermaLocked) + && movingPlatform.activePlatform != null + ); +} + +private function GetDesiredHorizontalVelocity () { + // Find desired velocity + var desiredLocalDirection : Vector3 = tr.InverseTransformDirection(inputMoveDirection); + var maxSpeed : float = MaxSpeedInDirection(desiredLocalDirection); + if (grounded) { + // Modify max speed on slopes based on slope speed multiplier curve + var movementSlopeAngle = Mathf.Asin(movement.velocity.normalized.y) * Mathf.Rad2Deg; + maxSpeed *= movement.slopeSpeedMultiplier.Evaluate(movementSlopeAngle); + } + return tr.TransformDirection(desiredLocalDirection * maxSpeed); +} + +private function AdjustGroundVelocityToNormal (hVelocity : Vector3, groundNormal : Vector3) : Vector3 { + var sideways : Vector3 = Vector3.Cross(Vector3.up, hVelocity); + return Vector3.Cross(sideways, groundNormal).normalized * hVelocity.magnitude; +} + +private function IsGroundedTest () { + return (groundNormal.y > 0.01); +} + +function GetMaxAcceleration (grounded : boolean) : float { + // Maximum acceleration on ground and in air + if (grounded) + return movement.maxGroundAcceleration; + else + return movement.maxAirAcceleration; +} + +function CalculateJumpVerticalSpeed (targetJumpHeight : float) { + // From the jump height and gravity we deduce the upwards speed + // for the character to reach at the apex. + return Mathf.Sqrt (2 * targetJumpHeight * movement.gravity); +} + +function IsJumping () { + return jumping.jumping; +} + +function IsSliding () { + return (grounded && sliding.enabled && TooSteep()); +} + +function IsTouchingCeiling () { + return (movement.collisionFlags & CollisionFlags.CollidedAbove) != 0; +} + +function IsGrounded () { + return grounded; +} + +function TooSteep () { + return (groundNormal.y <= Mathf.Cos(controller.slopeLimit * Mathf.Deg2Rad)); +} + +function GetDirection () { + return inputMoveDirection; +} + +function SetControllable (controllable : boolean) { + canControl = controllable; +} + +// Project a direction onto elliptical quater segments based on forward, sideways, and backwards speed. +// The function returns the length of the resulting vector. +function MaxSpeedInDirection (desiredMovementDirection : Vector3) : float { + if (desiredMovementDirection == Vector3.zero) + return 0; + else { + var zAxisEllipseMultiplier : float = (desiredMovementDirection.z > 0 ? movement.maxForwardSpeed : movement.maxBackwardsSpeed) / movement.maxSidewaysSpeed; + var temp : Vector3 = new Vector3(desiredMovementDirection.x, 0, desiredMovementDirection.z / zAxisEllipseMultiplier).normalized; + var length : float = new Vector3(temp.x, 0, temp.z * zAxisEllipseMultiplier).magnitude * movement.maxSidewaysSpeed; + return length; + } +} + +function SetVelocity (velocity : Vector3) { + grounded = false; + movement.velocity = velocity; + movement.frameVelocity = Vector3.zero; + SendMessage("OnExternalVelocity"); +} + +// Require a character controller to be attached to the same game object +@script RequireComponent (CharacterController) +@script AddComponentMenu ("Character/Character Motor") diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor.js.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor.js.meta new file mode 100644 index 0000000..40def9c --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor.js.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0ab79d7f243824f5d9826bd83522c8df +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js new file mode 100644 index 0000000..f404e5f --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js @@ -0,0 +1,37 @@ +private var motor : CharacterMotor; + +// Use this for initialization +function Awake () { + motor = GetComponent(CharacterMotor); +} + +// Update is called once per frame +function Update () { + // Get the input vector from keyboard or analog stick + var directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); + + if (directionVector != Vector3.zero) { + // Get the length of the directon vector and then normalize it + // Dividing by the length is cheaper than normalizing when we already have the length anyway + var directionLength = directionVector.magnitude; + directionVector = directionVector / directionLength; + + // Make sure the length is no bigger than 1 + directionLength = Mathf.Min(1, directionLength); + + // Make the input vector more sensitive towards the extremes and less sensitive in the middle + // This makes it easier to control slow speeds when using analog sticks + directionLength = directionLength * directionLength; + + // Multiply the normalized direction vector by the modified length + directionVector = directionVector * directionLength; + } + + // Apply the direction to the CharacterMotor + motor.inputMoveDirection = transform.rotation * directionVector; + motor.inputJump = Input.GetButton("Jump"); +} + +// Require a character controller to be attached to the same game object +@script RequireComponent (CharacterMotor) +@script AddComponentMenu ("Character/FPS Input Controller") diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js.meta new file mode 100644 index 0000000..ca7368c --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 60bca8f58a0b8478e946e6e86658cb29 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/MouseLook.cs b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/MouseLook.cs new file mode 100644 index 0000000..9b6882f --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/MouseLook.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using System.Collections; + +/// MouseLook rotates the transform based on the mouse delta. +/// Minimum and Maximum values can be used to constrain the possible rotation + +/// To make an FPS style character: +/// - Create a capsule. +/// - Add the MouseLook script to the capsule. +/// -> Set the mouse look to use LookX. (You want to only turn character but not tilt it) +/// - Add FPSInputController script to the capsule +/// -> A CharacterMotor and a CharacterController component will be automatically added. + +/// - Create a camera. Make the camera a child of the capsule. Reset it's transform. +/// - Add a MouseLook script to the camera. +/// -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.) +[AddComponentMenu("Camera-Control/Mouse Look")] +public class MouseLook : MonoBehaviour { + + public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } + public RotationAxes axes = RotationAxes.MouseXAndY; + public float sensitivityX = 15F; + public float sensitivityY = 15F; + + public float minimumX = -360F; + public float maximumX = 360F; + + public float minimumY = -60F; + public float maximumY = 60F; + + float rotationY = 0F; + + void Update () + { + if (axes == RotationAxes.MouseXAndY) + { + float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; + + rotationY += Input.GetAxis("Mouse Y") * sensitivityY; + rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); + + transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); + } + else if (axes == RotationAxes.MouseX) + { + transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0); + } + else + { + rotationY += Input.GetAxis("Mouse Y") * sensitivityY; + rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); + + transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0); + } + } + + void Start () + { + // Make the rigid body not change rotation + if (GetComponent()) + GetComponent().freezeRotation = true; + } +} diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/MouseLook.cs.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/MouseLook.cs.meta new file mode 100644 index 0000000..ea2c886 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/MouseLook.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 68ec2fe99d1108b9d0006a298d76c639 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/PlatformInputController.js b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/PlatformInputController.js new file mode 100644 index 0000000..b8d2500 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/PlatformInputController.js @@ -0,0 +1,68 @@ +// This makes the character turn to face the current movement speed per default. +var autoRotate : boolean = true; +var maxRotationSpeed : float = 360; + +private var motor : CharacterMotor; + +// Use this for initialization +function Awake () { + motor = GetComponent(CharacterMotor); +} + +// Update is called once per frame +function Update () { + // Get the input vector from keyboard or analog stick + var directionVector = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0); + + if (directionVector != Vector3.zero) { + // Get the length of the directon vector and then normalize it + // Dividing by the length is cheaper than normalizing when we already have the length anyway + var directionLength = directionVector.magnitude; + directionVector = directionVector / directionLength; + + // Make sure the length is no bigger than 1 + directionLength = Mathf.Min(1, directionLength); + + // Make the input vector more sensitive towards the extremes and less sensitive in the middle + // This makes it easier to control slow speeds when using analog sticks + directionLength = directionLength * directionLength; + + // Multiply the normalized direction vector by the modified length + directionVector = directionVector * directionLength; + } + + // Rotate the input vector into camera space so up is camera's up and right is camera's right + directionVector = Camera.main.transform.rotation * directionVector; + + // Rotate input vector to be perpendicular to character's up vector + var camToCharacterSpace = Quaternion.FromToRotation(-Camera.main.transform.forward, transform.up); + directionVector = (camToCharacterSpace * directionVector); + + // Apply the direction to the CharacterMotor + motor.inputMoveDirection = directionVector; + motor.inputJump = Input.GetButton("Jump"); + + // Set rotation to the move direction + if (autoRotate && directionVector.sqrMagnitude > 0.01) { + var newForward : Vector3 = ConstantSlerp( + transform.forward, + directionVector, + maxRotationSpeed * Time.deltaTime + ); + newForward = ProjectOntoPlane(newForward, transform.up); + transform.rotation = Quaternion.LookRotation(newForward, transform.up); + } +} + +function ProjectOntoPlane (v : Vector3, normal : Vector3) { + return v - Vector3.Project(v, normal); +} + +function ConstantSlerp (from : Vector3, to : Vector3, angle : float) { + var value : float = Mathf.Min(1, angle / Vector3.Angle(from, to)); + return Vector3.Slerp(from, to, value); +} + +// Require a character controller to be attached to the same game object +@script RequireComponent (CharacterMotor) +@script AddComponentMenu ("Character/Platform Input Controller") diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/PlatformInputController.js.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/PlatformInputController.js.meta new file mode 100644 index 0000000..45ec1ce --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/PlatformInputController.js.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: da93ddd6928094e24bb1f3f665f143d3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonCamera.js b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonCamera.js new file mode 100644 index 0000000..9c56208 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonCamera.js @@ -0,0 +1,230 @@ + + +var cameraTransform : Transform; +private var _target : Transform; + +// The distance in the x-z plane to the target + +var distance = 7.0; + +// the height we want the camera to be above the target +var height = 3.0; + +var angularSmoothLag = 0.3; +var angularMaxSpeed = 15.0; + +var heightSmoothLag = 0.3; + +var snapSmoothLag = 0.2; +var snapMaxSpeed = 720.0; + +var clampHeadPositionScreenSpace = 0.75; + +var lockCameraTimeout = 0.2; + +private var headOffset = Vector3.zero; +private var centerOffset = Vector3.zero; + +private var heightVelocity = 0.0; +private var angleVelocity = 0.0; +private var snap = false; +private var controller : ThirdPersonController; +private var targetHeight = 100000.0; + +function Awake () +{ + if(!cameraTransform && Camera.main) + cameraTransform = Camera.main.transform; + if(!cameraTransform) { + Debug.Log("Please assign a camera to the ThirdPersonCamera script."); + enabled = false; + } + + + _target = transform; + if (_target) + { + controller = _target.GetComponent(ThirdPersonController); + } + + if (controller) + { + var characterController : CharacterController = _target.GetComponent.(); + centerOffset = characterController.bounds.center - _target.position; + headOffset = centerOffset; + headOffset.y = characterController.bounds.max.y - _target.position.y; + } + else + Debug.Log("Please assign a target to the camera that has a ThirdPersonController script attached."); + + + Cut(_target, centerOffset); +} + +function DebugDrawStuff () +{ + Debug.DrawLine(_target.position, _target.position + headOffset); + +} + +function AngleDistance (a : float, b : float) +{ + a = Mathf.Repeat(a, 360); + b = Mathf.Repeat(b, 360); + + return Mathf.Abs(b - a); +} + +function Apply (dummyTarget : Transform, dummyCenter : Vector3) +{ + // Early out if we don't have a target + if (!controller) + return; + + var targetCenter = _target.position + centerOffset; + var targetHead = _target.position + headOffset; + +// DebugDrawStuff(); + + // Calculate the current & target rotation angles + var originalTargetAngle = _target.eulerAngles.y; + var currentAngle = cameraTransform.eulerAngles.y; + + // Adjust real target angle when camera is locked + var targetAngle = originalTargetAngle; + + // When pressing Fire2 (alt) the camera will snap to the target direction real quick. + // It will stop snapping when it reaches the target + if (Input.GetButton("Fire2")) + snap = true; + + if (snap) + { + // We are close to the target, so we can stop snapping now! + if (AngleDistance (currentAngle, originalTargetAngle) < 3.0) + snap = false; + + currentAngle = Mathf.SmoothDampAngle(currentAngle, targetAngle, angleVelocity, snapSmoothLag, snapMaxSpeed); + } + // Normal camera motion + else + { + if (controller.GetLockCameraTimer () < lockCameraTimeout) + { + targetAngle = currentAngle; + } + + // Lock the camera when moving backwards! + // * It is really confusing to do 180 degree spins when turning around. + if (AngleDistance (currentAngle, targetAngle) > 160 && controller.IsMovingBackwards ()) + targetAngle += 180; + + currentAngle = Mathf.SmoothDampAngle(currentAngle, targetAngle, angleVelocity, angularSmoothLag, angularMaxSpeed); + } + + + // When jumping don't move camera upwards but only down! + if (controller.IsJumping ()) + { + // We'd be moving the camera upwards, do that only if it's really high + var newTargetHeight = targetCenter.y + height; + if (newTargetHeight < targetHeight || newTargetHeight - targetHeight > 5) + targetHeight = targetCenter.y + height; + } + // When walking always update the target height + else + { + targetHeight = targetCenter.y + height; + } + + // Damp the height + var currentHeight = cameraTransform.position.y; + currentHeight = Mathf.SmoothDamp (currentHeight, targetHeight, heightVelocity, heightSmoothLag); + + // Convert the angle into a rotation, by which we then reposition the camera + var currentRotation = Quaternion.Euler (0, currentAngle, 0); + + // Set the position of the camera on the x-z plane to: + // distance meters behind the target + cameraTransform.position = targetCenter; + cameraTransform.position += currentRotation * Vector3.back * distance; + + // Set the height of the camera + cameraTransform.position.y = currentHeight; + + // Always look at the target + SetUpRotation(targetCenter, targetHead); +} + +function LateUpdate () { + Apply (transform, Vector3.zero); +} + +function Cut (dummyTarget : Transform, dummyCenter : Vector3) +{ + var oldHeightSmooth = heightSmoothLag; + var oldSnapMaxSpeed = snapMaxSpeed; + var oldSnapSmooth = snapSmoothLag; + + snapMaxSpeed = 10000; + snapSmoothLag = 0.001; + heightSmoothLag = 0.001; + + snap = true; + Apply (transform, Vector3.zero); + + heightSmoothLag = oldHeightSmooth; + snapMaxSpeed = oldSnapMaxSpeed; + snapSmoothLag = oldSnapSmooth; +} + +function SetUpRotation (centerPos : Vector3, headPos : Vector3) +{ + // Now it's getting hairy. The devil is in the details here, the big issue is jumping of course. + // * When jumping up and down we don't want to center the guy in screen space. + // This is important to give a feel for how high you jump and avoiding large camera movements. + // + // * At the same time we dont want him to ever go out of screen and we want all rotations to be totally smooth. + // + // So here is what we will do: + // + // 1. We first find the rotation around the y axis. Thus he is always centered on the y-axis + // 2. When grounded we make him be centered + // 3. When jumping we keep the camera rotation but rotate the camera to get him back into view if his head is above some threshold + // 4. When landing we smoothly interpolate towards centering him on screen + var cameraPos = cameraTransform.position; + var offsetToCenter = centerPos - cameraPos; + + // Generate base rotation only around y-axis + var yRotation = Quaternion.LookRotation(Vector3(offsetToCenter.x, 0, offsetToCenter.z)); + + var relativeOffset = Vector3.forward * distance + Vector3.down * height; + cameraTransform.rotation = yRotation * Quaternion.LookRotation(relativeOffset); + + // Calculate the projected center position and top position in world space + var centerRay = cameraTransform.GetComponent.().ViewportPointToRay(Vector3(.5, 0.5, 1)); + var topRay = cameraTransform.GetComponent.().ViewportPointToRay(Vector3(.5, clampHeadPositionScreenSpace, 1)); + + var centerRayPos = centerRay.GetPoint(distance); + var topRayPos = topRay.GetPoint(distance); + + var centerToTopAngle = Vector3.Angle(centerRay.direction, topRay.direction); + + var heightToAngle = centerToTopAngle / (centerRayPos.y - topRayPos.y); + + var extraLookAngle = heightToAngle * (centerRayPos.y - centerPos.y); + if (extraLookAngle < centerToTopAngle) + { + extraLookAngle = 0; + } + else + { + extraLookAngle = extraLookAngle - centerToTopAngle; + cameraTransform.rotation *= Quaternion.Euler(-extraLookAngle, 0, 0); + } +} + +function GetCenterOffset () +{ + return centerOffset; +} diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonCamera.js.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonCamera.js.meta new file mode 100644 index 0000000..a91ee15 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonCamera.js.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0b167d00b3108411a8a963cba5ddde1b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonController.js b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonController.js new file mode 100644 index 0000000..6dea420 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonController.js @@ -0,0 +1,440 @@ + +// Require a character controller to be attached to the same game object +@script RequireComponent(CharacterController) + +public var idleAnimation : AnimationClip; +public var walkAnimation : AnimationClip; +public var runAnimation : AnimationClip; +public var jumpPoseAnimation : AnimationClip; + +public var walkMaxAnimationSpeed : float = 0.75; +public var trotMaxAnimationSpeed : float = 1.0; +public var runMaxAnimationSpeed : float = 1.0; +public var jumpAnimationSpeed : float = 1.15; +public var landAnimationSpeed : float = 1.0; + +private var _animation : Animation; + +enum CharacterState { + Idle = 0, + Walking = 1, + Trotting = 2, + Running = 3, + Jumping = 4, +} + +private var _characterState : CharacterState; + +// The speed when walking +var walkSpeed = 2.0; +// after trotAfterSeconds of walking we trot with trotSpeed +var trotSpeed = 4.0; +// when pressing "Fire3" button (cmd) we start running +var runSpeed = 6.0; + +var inAirControlAcceleration = 3.0; + +// How high do we jump when pressing jump and letting go immediately +var jumpHeight = 0.5; + +// The gravity for the character +var gravity = 20.0; +// The gravity in controlled descent mode +var speedSmoothing = 10.0; +var rotateSpeed = 500.0; +var trotAfterSeconds = 3.0; + +var canJump = true; + +private var jumpRepeatTime = 0.05; +private var jumpTimeout = 0.15; +private var groundedTimeout = 0.25; + +// The camera doesnt start following the target immediately but waits for a split second to avoid too much waving around. +private var lockCameraTimer = 0.0; + +// The current move direction in x-z +private var moveDirection = Vector3.zero; +// The current vertical speed +private var verticalSpeed = 0.0; +// The current x-z move speed +private var moveSpeed = 0.0; + +// The last collision flags returned from controller.Move +private var collisionFlags : CollisionFlags; + +// Are we jumping? (Initiated with jump button and not grounded yet) +private var jumping = false; +private var jumpingReachedApex = false; + +// Are we moving backwards (This locks the camera to not do a 180 degree spin) +private var movingBack = false; +// Is the user pressing any keys? +private var isMoving = false; +// When did the user start walking (Used for going into trot after a while) +private var walkTimeStart = 0.0; +// Last time the jump button was clicked down +private var lastJumpButtonTime = -10.0; +// Last time we performed a jump +private var lastJumpTime = -1.0; + + +// the height we jumped from (Used to determine for how long to apply extra jump power after jumping.) +private var lastJumpStartHeight = 0.0; + + +private var inAirVelocity = Vector3.zero; + +private var lastGroundedTime = 0.0; + + +private var isControllable = true; + +function Awake () +{ + moveDirection = transform.TransformDirection(Vector3.forward); + + _animation = GetComponent(Animation); + if(!_animation) + Debug.Log("The character you would like to control doesn't have animations. Moving her might look weird."); + + /* +public var idleAnimation : AnimationClip; +public var walkAnimation : AnimationClip; +public var runAnimation : AnimationClip; +public var jumpPoseAnimation : AnimationClip; + */ + if(!idleAnimation) { + _animation = null; + Debug.Log("No idle animation found. Turning off animations."); + } + if(!walkAnimation) { + _animation = null; + Debug.Log("No walk animation found. Turning off animations."); + } + if(!runAnimation) { + _animation = null; + Debug.Log("No run animation found. Turning off animations."); + } + if(!jumpPoseAnimation && canJump) { + _animation = null; + Debug.Log("No jump animation found and the character has canJump enabled. Turning off animations."); + } + +} + + +function UpdateSmoothedMovementDirection () +{ + var cameraTransform = Camera.main.transform; + var grounded = IsGrounded(); + + // Forward vector relative to the camera along the x-z plane + var forward = cameraTransform.TransformDirection(Vector3.forward); + forward.y = 0; + forward = forward.normalized; + + // Right vector relative to the camera + // Always orthogonal to the forward vector + var right = Vector3(forward.z, 0, -forward.x); + + var v = Input.GetAxisRaw("Vertical"); + var h = Input.GetAxisRaw("Horizontal"); + + // Are we moving backwards or looking backwards + if (v < -0.2) + movingBack = true; + else + movingBack = false; + + var wasMoving = isMoving; + isMoving = Mathf.Abs (h) > 0.1 || Mathf.Abs (v) > 0.1; + + // Target direction relative to the camera + var targetDirection = h * right + v * forward; + + // Grounded controls + if (grounded) + { + // Lock camera for short period when transitioning moving & standing still + lockCameraTimer += Time.deltaTime; + if (isMoving != wasMoving) + lockCameraTimer = 0.0; + + // We store speed and direction seperately, + // so that when the character stands still we still have a valid forward direction + // moveDirection is always normalized, and we only update it if there is user input. + if (targetDirection != Vector3.zero) + { + // If we are really slow, just snap to the target direction + if (moveSpeed < walkSpeed * 0.9 && grounded) + { + moveDirection = targetDirection.normalized; + } + // Otherwise smoothly turn towards it + else + { + moveDirection = Vector3.RotateTowards(moveDirection, targetDirection, rotateSpeed * Mathf.Deg2Rad * Time.deltaTime, 1000); + + moveDirection = moveDirection.normalized; + } + } + + // Smooth the speed based on the current target direction + var curSmooth = speedSmoothing * Time.deltaTime; + + // Choose target speed + //* We want to support analog input but make sure you cant walk faster diagonally than just forward or sideways + var targetSpeed = Mathf.Min(targetDirection.magnitude, 1.0); + + _characterState = CharacterState.Idle; + + // Pick speed modifier + if (Input.GetKey (KeyCode.LeftShift) || Input.GetKey (KeyCode.RightShift)) + { + targetSpeed *= runSpeed; + _characterState = CharacterState.Running; + } + else if (Time.time - trotAfterSeconds > walkTimeStart) + { + targetSpeed *= trotSpeed; + _characterState = CharacterState.Trotting; + } + else + { + targetSpeed *= walkSpeed; + _characterState = CharacterState.Walking; + } + + moveSpeed = Mathf.Lerp(moveSpeed, targetSpeed, curSmooth); + + // Reset walk time start when we slow down + if (moveSpeed < walkSpeed * 0.3) + walkTimeStart = Time.time; + } + // In air controls + else + { + // Lock camera while in air + if (jumping) + lockCameraTimer = 0.0; + + if (isMoving) + inAirVelocity += targetDirection.normalized * Time.deltaTime * inAirControlAcceleration; + } + + + +} + + +function ApplyJumping () +{ + // Prevent jumping too fast after each other + if (lastJumpTime + jumpRepeatTime > Time.time) + return; + + if (IsGrounded()) { + // Jump + // - Only when pressing the button down + // - With a timeout so you can press the button slightly before landing + if (canJump && Time.time < lastJumpButtonTime + jumpTimeout) { + verticalSpeed = CalculateJumpVerticalSpeed (jumpHeight); + SendMessage("DidJump", SendMessageOptions.DontRequireReceiver); + } + } +} + + +function ApplyGravity () +{ + if (isControllable) // don't move player at all if not controllable. + { + // Apply gravity + var jumpButton = Input.GetButton("Jump"); + + + // When we reach the apex of the jump we send out a message + if (jumping && !jumpingReachedApex && verticalSpeed <= 0.0) + { + jumpingReachedApex = true; + SendMessage("DidJumpReachApex", SendMessageOptions.DontRequireReceiver); + } + + if (IsGrounded ()) + verticalSpeed = 0.0; + else + verticalSpeed -= gravity * Time.deltaTime; + } +} + +function CalculateJumpVerticalSpeed (targetJumpHeight : float) +{ + // From the jump height and gravity we deduce the upwards speed + // for the character to reach at the apex. + return Mathf.Sqrt(2 * targetJumpHeight * gravity); +} + +function DidJump () +{ + jumping = true; + jumpingReachedApex = false; + lastJumpTime = Time.time; + lastJumpStartHeight = transform.position.y; + lastJumpButtonTime = -10; + + _characterState = CharacterState.Jumping; +} + +function Update() { + + if (!isControllable) + { + // kill all inputs if not controllable. + Input.ResetInputAxes(); + } + + if (Input.GetButtonDown ("Jump")) + { + lastJumpButtonTime = Time.time; + } + + UpdateSmoothedMovementDirection(); + + // Apply gravity + // - extra power jump modifies gravity + // - controlledDescent mode modifies gravity + ApplyGravity (); + + // Apply jumping logic + ApplyJumping (); + + // Calculate actual motion + var movement = moveDirection * moveSpeed + Vector3 (0, verticalSpeed, 0) + inAirVelocity; + movement *= Time.deltaTime; + + // Move the controller + var controller : CharacterController = GetComponent(CharacterController); + collisionFlags = controller.Move(movement); + + // ANIMATION sector + if(_animation) { + if(_characterState == CharacterState.Jumping) + { + if(!jumpingReachedApex) { + _animation[jumpPoseAnimation.name].speed = jumpAnimationSpeed; + _animation[jumpPoseAnimation.name].wrapMode = WrapMode.ClampForever; + _animation.CrossFade(jumpPoseAnimation.name); + } else { + _animation[jumpPoseAnimation.name].speed = -landAnimationSpeed; + _animation[jumpPoseAnimation.name].wrapMode = WrapMode.ClampForever; + _animation.CrossFade(jumpPoseAnimation.name); + } + } + else + { + if(controller.velocity.sqrMagnitude < 0.1) { + _animation.CrossFade(idleAnimation.name); + } + else + { + if(_characterState == CharacterState.Running) { + _animation[runAnimation.name].speed = Mathf.Clamp(controller.velocity.magnitude, 0.0, runMaxAnimationSpeed); + _animation.CrossFade(runAnimation.name); + } + else if(_characterState == CharacterState.Trotting) { + _animation[walkAnimation.name].speed = Mathf.Clamp(controller.velocity.magnitude, 0.0, trotMaxAnimationSpeed); + _animation.CrossFade(walkAnimation.name); + } + else if(_characterState == CharacterState.Walking) { + _animation[walkAnimation.name].speed = Mathf.Clamp(controller.velocity.magnitude, 0.0, walkMaxAnimationSpeed); + _animation.CrossFade(walkAnimation.name); + } + + } + } + } + // ANIMATION sector + + // Set rotation to the move direction + if (IsGrounded()) + { + + transform.rotation = Quaternion.LookRotation(moveDirection); + + } + else + { + var xzMove = movement; + xzMove.y = 0; + if (xzMove.sqrMagnitude > 0.001) + { + transform.rotation = Quaternion.LookRotation(xzMove); + } + } + + // We are in jump mode but just became grounded + if (IsGrounded()) + { + lastGroundedTime = Time.time; + inAirVelocity = Vector3.zero; + if (jumping) + { + jumping = false; + SendMessage("DidLand", SendMessageOptions.DontRequireReceiver); + } + } +} + +function OnControllerColliderHit (hit : ControllerColliderHit ) +{ +// Debug.DrawRay(hit.point, hit.normal); + if (hit.moveDirection.y > 0.01) + return; +} + +function GetSpeed () { + return moveSpeed; +} + +function IsJumping () { + return jumping; +} + +function IsGrounded () { + return (collisionFlags & CollisionFlags.CollidedBelow) != 0; +} + +function GetDirection () { + return moveDirection; +} + +function IsMovingBackwards () { + return movingBack; +} + +function GetLockCameraTimer () +{ + return lockCameraTimer; +} + +function IsMoving () : boolean +{ + return Mathf.Abs(Input.GetAxisRaw("Vertical")) + Mathf.Abs(Input.GetAxisRaw("Horizontal")) > 0.5; +} + +function HasJumpReachedApex () +{ + return jumpingReachedApex; +} + +function IsGroundedWithTimeout () +{ + return lastGroundedTime + groundedTimeout > Time.time; +} + +function Reset () +{ + gameObject.tag = "Player"; +} + diff --git a/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonController.js.meta b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonController.js.meta new file mode 100644 index 0000000..d69aef5 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonController.js.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1d5ac211a643e447ca78c2d794a16381 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/YellowBall.unity b/Assets/Oculus/Spatializer/Scenes/YellowBall.unity new file mode 100644 index 0000000..56b3249 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/YellowBall.unity @@ -0,0 +1,869 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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_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.44525063, g: 0.49485004, b: 0.5738951, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666667 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &347288839 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + serializedVersion: 4 + m_Component: + - 4: {fileID: 347288840} + - 33: {fileID: 347288842} + - 23: {fileID: 347288841} + m_Layer: 0 + m_Name: Graphics + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &347288840 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 347288839} + m_LocalRotation: {x: -0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.4, y: 0.5, z: 0.4} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1476358478} + m_RootOrder: 0 +--- !u!23 &347288841 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 347288839} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &347288842 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 347288839} + m_Mesh: {fileID: 10205, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &537433168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 537433170} + - 114: {fileID: 537433173} + - 82: {fileID: 537433169} + - 33: {fileID: 537433172} + - 23: {fileID: 537433171} + - 64: {fileID: 537433174} + m_Layer: 0 + m_Name: SpatializedSound1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!82 &537433169 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 24300001, guid: 1dd706bb85d8aef4e83a6229dbd62c36, + type: 2} + m_audioClip: {fileID: 8300000, guid: 1340d7fb0cd1bfb4caa3b3270cb2ea5f, type: 3} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 1 + Priority: 128 + DopplerLevel: 0 + MinDistance: 1 + MaxDistance: 100 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 0.24404761 + value: 1.1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!4 &537433170 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!23 &537433171 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 584662273d60a0f47bd7fecbb570e66e, type: 2} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &537433172 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &537433173 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bb001ad917b86f148a2c85acdd0d5c6a, type: 3} + m_Name: + m_EditorClassIdentifier: + useVirtualSpeakers: 0 +--- !u!64 &537433174 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537433168} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &874827679 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 874827683} + - 33: {fileID: 874827682} + - 64: {fileID: 874827681} + - 23: {fileID: 874827680} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &874827680 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 874827679} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: e121bf11a9143914dbafa9e733415f2a, type: 2} + m_SubsetIndices: + 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_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!64 &874827681 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 874827679} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &874827682 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 874827679} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &874827683 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 874827679} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2.64, z: 0} + m_LocalScale: {x: 39.853504, y: 39.85354, z: 39.85354} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &1004090725 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1004090727} + - 114: {fileID: 1004090726} + m_Layer: 0 + m_Name: ONSP VERSION + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1004090726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1004090725} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46821b10458428648878b1b4a9113c40, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1004090727 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1004090725} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 +--- !u!1001 &1101579462 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalPosition.y + value: -1.682 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalPosition.z + value: -5 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_ClearFlags + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_BackGroundColor.r + value: .261948526 + objectReference: {fileID: 0} + - target: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_BackGroundColor.g + value: .403528422 + objectReference: {fileID: 0} + - target: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_BackGroundColor.b + value: .625 + objectReference: {fileID: 0} + - target: {fileID: 100002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 14300000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400006, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: movement.maxForwardSpeed + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: movement.maxBackwardsSpeed + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + propertyPath: movement.maxSidewaysSpeed + value: 3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_RootGameObject: {fileID: 1476358473} + m_IsPrefabParent: 0 +--- !u!1 &1149557338 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1149557340} + - 108: {fileID: 1149557339} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1149557339 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1149557338} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1149557340 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1149557338} + m_LocalRotation: {x: 0.19034514, y: -0.41780472, z: 0.7921693, w: 0.40208936} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!1 &1476358473 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1476358478} + - 143: {fileID: 1476358477} + - 114: {fileID: 1476358476} + - 114: {fileID: 1476358475} + - 114: {fileID: 1476358474} + m_Layer: 0 + m_Name: First Person Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1476358474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400004, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1476358473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 60bca8f58a0b8478e946e6e86658cb29, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1476358475 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400002, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1476358473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ab79d7f243824f5d9826bd83522c8df, type: 3} + m_Name: + m_EditorClassIdentifier: + canControl: 1 + useFixedUpdate: 1 + movement: + maxForwardSpeed: 3 + maxSidewaysSpeed: 3 + maxBackwardsSpeed: 3 + slopeSpeedMultiplier: + serializedVersion: 2 + m_Curve: + - time: -90 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 90 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxGroundAcceleration: 20 + maxAirAcceleration: 15 + gravity: 20 + maxFallSpeed: 20 + jumping: + enabled: 1 + baseHeight: 1 + extraHeight: 1 + perpAmount: 0 + steepPerpAmount: 0.5 + movingPlatform: + enabled: 1 + movementTransfer: 2 + sliding: + enabled: 1 + slidingSpeed: 10 + sidewaysControl: 1 + speedControl: 0.4 +--- !u!114 &1476358476 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1476358473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68ec2fe99d1108b9d0006a298d76c639, type: 3} + m_Name: + m_EditorClassIdentifier: + axes: 1 + sensitivityX: 15 + sensitivityY: 0 + minimumX: -360 + maximumX: 360 + minimumY: 0 + maximumY: 0 +--- !u!143 &1476358477 +CharacterController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 14300000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1476358473} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 2 + m_Radius: 0.4 + m_SlopeLimit: 45 + m_StepOffset: 0.4 + m_SkinWidth: 0.05 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!4 &1476358478 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400002, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1476358473} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: -1.682, z: -5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 347288840} + - {fileID: 1926090764} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &1926090763 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1926090764} + - 20: {fileID: 1926090769} + - 92: {fileID: 1926090768} + - 124: {fileID: 1926090767} + - 114: {fileID: 1926090766} + - 81: {fileID: 1926090765} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1926090764 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400004, guid: 9d4133d5d30b644bd87802a347eaccbe, type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1926090763} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.9070835, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1476358478} + m_RootOrder: 1 +--- !u!81 &1926090765 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1926090763} + m_Enabled: 1 +--- !u!114 &1926090766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400006, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1926090763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68ec2fe99d1108b9d0006a298d76c639, type: 3} + m_Name: + m_EditorClassIdentifier: + axes: 2 + sensitivityX: 10 + sensitivityY: 10 + minimumX: 0 + maximumX: 360 + minimumY: -60 + maximumY: 60 +--- !u!124 &1926090767 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 12400000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1926090763} + m_Enabled: 1 +--- !u!92 &1926090768 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 9200000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1926090763} + m_Enabled: 1 +--- !u!20 &1926090769 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2000000, guid: 9d4133d5d30b644bd87802a347eaccbe, + type: 2} + m_PrefabInternal: {fileID: 1101579462} + m_GameObject: {fileID: 1926090763} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.26194853, g: 0.40352842, b: 0.625, a: 1} + 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: 100 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 diff --git a/Assets/Oculus/Spatializer/Scenes/YellowBall.unity.meta b/Assets/Oculus/Spatializer/Scenes/YellowBall.unity.meta new file mode 100644 index 0000000..edbc160 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/YellowBall.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c8a4434d7a298684fae176a7751d45a7 +timeCreated: 1493326122 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/materials.meta b/Assets/Oculus/Spatializer/Scenes/materials.meta new file mode 100644 index 0000000..df16847 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 043c69ee822544cd18609a101bac4b55 +folderAsset: yes +timeCreated: 1424053971 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/materials/AmbisonicObject1.mat b/Assets/Oculus/Spatializer/Scenes/materials/AmbisonicObject1.mat new file mode 100644 index 0000000..4898f40 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials/AmbisonicObject1.mat @@ -0,0 +1,128 @@ +%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: AmbisonicObject1 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHABLEND_ON _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + 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: 10 + - 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: 2 + - 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: 5 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 0 + m_Colors: + - first: + name: _Color + second: {r: 0.90344834, g: 1, b: 0, a: 0.78431374} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Oculus/Spatializer/Scenes/materials/AmbisonicObject1.mat.meta b/Assets/Oculus/Spatializer/Scenes/materials/AmbisonicObject1.mat.meta new file mode 100644 index 0000000..bf42e58 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials/AmbisonicObject1.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 584662273d60a0f47bd7fecbb570e66e +timeCreated: 1479162313 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/materials/Ground.mat b/Assets/Oculus/Spatializer/Scenes/materials/Ground.mat new file mode 100644 index 0000000..03d3cb3 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials/Ground.mat @@ -0,0 +1,138 @@ +%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: Ground + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + 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: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .416000009 + 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: .317999989 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .0288062226, g: .132352948, b: .00291955308, a: 1} diff --git a/Assets/Oculus/Spatializer/Scenes/materials/Ground.mat.meta b/Assets/Oculus/Spatializer/Scenes/materials/Ground.mat.meta new file mode 100644 index 0000000..6f59bb6 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials/Ground.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e121bf11a9143914dbafa9e733415f2a +timeCreated: 1440788967 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject1.mat b/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject1.mat new file mode 100644 index 0000000..f6adc21 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject1.mat @@ -0,0 +1,128 @@ +%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: SpatializedObject1 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHABLEND_ON _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + 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: 10 + - 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: 2 + - 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: 5 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 0 + m_Colors: + - first: + name: _Color + second: {r: 0, g: 0.75735295, b: 0.13057812, a: 0.78431374} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject1.mat.meta b/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject1.mat.meta new file mode 100644 index 0000000..d3fb6bb --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject1.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6498d4298a35c5c44894b5f194468896 +timeCreated: 1440787665 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject2.mat b/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject2.mat new file mode 100644 index 0000000..cec2c5d --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject2.mat @@ -0,0 +1,128 @@ +%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: SpatializedObject2 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHABLEND_ON _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + 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: 10 + - 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: 2 + - 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: 5 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 0 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 0, b: 0, a: 0.78431374} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject2.mat.meta b/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject2.mat.meta new file mode 100644 index 0000000..0efda98 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/materials/SpatializedObject2.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f54ef0e328359c14b9005f8a48cbd66b +timeCreated: 1441987536 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/mixers.meta b/Assets/Oculus/Spatializer/Scenes/mixers.meta new file mode 100644 index 0000000..036deb8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/mixers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a7a0ebb37fd844daca2d9ca3b56db8ee +folderAsset: yes +timeCreated: 1424053917 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/mixers/SpatializerMixer.mixer b/Assets/Oculus/Spatializer/Scenes/mixers/SpatializerMixer.mixer new file mode 100644 index 0000000..0d637a6 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/mixers/SpatializerMixer.mixer @@ -0,0 +1,364 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!241 &24100000 +AudioMixerController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SpatializerMixer + m_OutputGroup: {fileID: 0} + m_MasterGroup: {fileID: 24300001} + m_Snapshots: + - {fileID: 24500003} + - {fileID: 245000012928175524} + m_StartSnapshot: {fileID: 24500003} + m_SuspendThreshold: -80 + m_EnableSuspend: 1 + m_UpdateMode: 0 + m_ExposedParameters: [] + m_AudioMixerGroupViews: + - guids: + - 725e77d6ee2433b4388bc90340f64b61 + name: View + m_CurrentViewIndex: 0 + m_TargetSnapshot: {fileID: 24500003} +--- !u!243 &24300001 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Master + m_AudioMixer: {fileID: 24100000} + m_GroupID: 725e77d6ee2433b4388bc90340f64b61 + m_Children: [] + m_Volume: 0658889d5c88bf940b82d78b8d39562e + m_Pitch: 0d4bed6fb113d6f4089b817171a98447 + m_Effects: + - {fileID: 24400002} + - {fileID: 24482754} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &24400002 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_EffectID: 42ec3f1ef4a750c4386011c7d2e2a267 + m_EffectName: Attenuation + m_MixLevel: 82be81869b5ac364d99ce3b2ff1803b2 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!244 &24482754 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_EffectID: 1d0f44df94bc52146b502b66296662ae + m_EffectName: OculusSpatializerReflection + m_MixLevel: a5b6bd72526f2e44ab339b0cad35a895 + m_Parameters: + - m_ParameterName: E.Rflt On + m_GUID: c37752d75bf132d47a7c3a93049722dc + - m_ParameterName: E.Rflt Rev On + m_GUID: f4fa4509dbcb99d46a3b47fb214a8e04 + - m_ParameterName: Room X + m_GUID: 79190f1e429424246b6ff46577611745 + - m_ParameterName: Room Y + m_GUID: 5cbf6ddbb7026dc45abe06cc43322e1c + - m_ParameterName: Room Z + m_GUID: 9760f1cc98e9dd54d9700864efe2f90a + - m_ParameterName: Left + m_GUID: c8aaa722d4ec4154bba4febdb24cb6a9 + - m_ParameterName: Right + m_GUID: a7822f794e8835b44b5d97b299e90829 + - m_ParameterName: Up + m_GUID: aff67efc612d61b469184c39ea2c6339 + - m_ParameterName: Down + m_GUID: eedb6e2560b96954f80a6216a070957a + - m_ParameterName: Behind + m_GUID: f00e9382c178ba74091552a02191a248 + - m_ParameterName: Front + m_GUID: aca764e9e8594ad4e82b73de0b803e6c + - m_ParameterName: GScale + m_GUID: 0a3224836f36e1a40a4ede80f5080595 + - m_ParameterName: Shared Rev Max + m_GUID: d3e2b68513d653740a78c0c9c694e7c7 + - m_ParameterName: Shared Rev Min + m_GUID: f55c0bb461c06f4419674ef5c9fa9953 + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!245 &24500003 +AudioMixerSnapshotController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Snapshot Init + m_AudioMixer: {fileID: 24100000} + m_SnapshotID: a069d6b9a45325b43b6121c1de0b82fa + m_FloatValues: + 9d315510bbbe3234f81f9ab55034eb95: 0.025578512 + 58c9ed10d34cdd24f96279ad753b5c44: 0 + 49ea3420a4d17de47999009a7def04ef: 138 + 649ec8308d11398408f8b4edb4a345a0: 106 + cca26b403b997104bad4d1d8f7dca261: 140 + db11616008472904e881c76426b068d3: 140 + fcdca8708d2305f4593057c665f57be1: 0.438 + 67b81af0af5f7a642ae9a80222f7abdf: 0.01 + 48c4bbf0ea921c74c9fa6d520bee6afd: 0 + 4b21d1410309db948974e02993ffec79: 0.97 + 6392c38197012994ca13ff3d1d09933e: 0.155 + 2bff1f9125a0ac04aa2de5826f284cd1: 0.538 + 762f1bc1189ebbb4d826c6561132b46c: 0.38 + bd705ee11343600419ecb19a2ba1b040: 0.36 + eb9b8ff14fcb5f9488c715e2970b3b22: 0 + f7aab8027052a8e4bbbbfa3e10f77076: 1 + 54a32c12472920747aadc169fc459833: 0.353 + c8aaa722d4ec4154bba4febdb24cb6a9: 0.5 + 5873537254a301f4ea13ed21b0eff333: 0.512 + f00e9382c178ba74091552a02191a248: 0.5 + 58edbc339fee35e4396568ee4b4453de: 0.92 + ccd919438ea41b84a8839e71f708afbb: 0.336 + 0a3224836f36e1a40a4ede80f5080595: 1 + d65515935f752c649a20a13490f2f9e0: 0 + 03939eb341cc86440a3b7f811113cd27: 0.385 + 2cf715c32cf694e4d977b3798f5f8bb2: 90 + d2fdf2145b59fee4595a326c28abd184: 0 + de1b983492eda6c47b6ef47105b52dda: 0.97 + 2e7f0254e7d38fd4eb3152ed5ccbaf19: 120 + 820d8864a3100854b99c649ce38e7f1c: 1 + 017e1c84d5ff649438cf7217f015a04f: 100 + f55c0bb461c06f4419674ef5c9fa9953: 1 + 229fbec47d0de58408d0541ea2fa4c0e: 1.17 + c04dfb256afb48d499bb4540ed5265bb: 0.696 + eedb6e2560b96954f80a6216a070957a: 0.4 + c6d3fa55e85ddbe489d20e1e07efba6f: 0.97 + d046de7513d8e0b4fa166ea7382ecdaf: 0.511 + d3e2b68513d653740a78c0c9c694e7c7: 100 + 5f0898855add70243aa14b3ea2677074: 1 + 01578495ccbabed42984621c044e5d72: 0.97 + 77d987a5a23fe9f40bc2a0ef32d60de5: 122 + bd33a706336bb6742960b31b56d6d312: 0 + 70fb34464dced4d4fa0fcbc0a9bbcb03: 104 + fd57dbc6c9ab56441b50cb4ec452b383: 0.5 + 0b9824d66b0abf64f9c881b46383bcc5: 157 + f5d601f6a1282e848b1945fd6c7c37a6: 0.512 + e25db507e301b004f861dc06d09175f4: 130 + 1a8948470036df943be2b94d699cf4e9: 95 + 285e7a478d90a1f4ea39bf4e24e02ebf: 3.2656894 + afbfe0879e482b64b9dd4ceeeed82492: 0.33 + ae6a7db7773ab66468e20795efab2e3e: 43 + c37752d75bf132d47a7c3a93049722dc: 1 + 74df97f7555fd2241a41f845aa8c4d21: 0.353 + d26a4918d633cb54fbd7a5b40efe1639: 0.045 + bf51ba384a3c1f646a631feb6aed6c54: 114 + 0f0fba6804dba4c4cb19fd30e1223afb: 2.87 + f4fa4509dbcb99d46a3b47fb214a8e04: 1 + 56c841194b2fe3040b48cf98706d6e73: 0 + 7413dd197ffb07340850468b31fcf1e0: 0.79 + 36b1ac29e76462c4586c397a65308888: 0.5 + 0417fc59ebc9a8546aeb76cabfc63779: 144 + d06ca37942b78cc4bb681d13d04fd13f: 0 + b8c78c79da9dc7647b11bfb614405d3a: 119 + a7822f794e8835b44b5d97b299e90829: 0.5 + 528077a94b0c9414ebb8e893ec848cb5: 3.55 + 77747ac9fbec3bd4ea88da457cdb9929: 0.388 + bac2bbc985be64f40b41721b00cd60b6: 1 + aca764e9e8594ad4e82b73de0b803e6c: 0.5 + ea845bf95b8ca3643b1e02f7eb395c20: 124 + 15ef323a36019924ca28f74bdd24e24c: 0 + 686ebe5a2690c5e479c8116b11041079: 0 + 4b58a99a50aafe74793b5dd2bedb0a96: 0.064 + 81eebcba61cc4d94bbc3e7c351b3cf37: 0 + 333585ca979bacf4eba5c4fee2741c4b: 0.273 + cad86ecad0994a1468302748ea994d5c: 111 + ddb13ffa06835ba45a05d6ccf101ba05: 139 + bb163b3baa1705545a7c704ec4ac0c7b: 0 + 7c75d04b0f5050a48925a908ea48051c: 0.441 + db3eaa4b3a4d9364eb3994f66a47b51a: 0 + 1c5e237b02d4533429539a0a6df19853: 0 + d887dc8b995a9174aab8c8b0de3b0733: 0.97 + fe36acab8a96d0046bafeb9e18a753df: 0.073 + 34546ccb2e240cd48bcca671564120ce: 0 + 5cbf6ddbb7026dc45abe06cc43322e1c: 3 + cc132edbccace48469977b60edca52a5: 0.447 + 4cff19eb609afd84992763e1020b8181: 1 + a7077ffb091b65b4dbcb5026128b2c5e: -25 + c6cc7e2c3e902d94abdabdddc5a41800: 1 + 2883db3c75b4127489b7549dabc871af: 0.67 + 8998a24c4360c93478ec02f063d9b337: 0 + 1033165c48652b34db906f50dde24a50: 0.571 + 4a67b18c35650444b90dc3f572846173: 200 + 917c2e9cef00f3442b1165a1fda7d72a: 0.55 + 9760f1cc98e9dd54d9700864efe2f90a: 5 + d779d8cc83e43cc4592a9ba5ce40cb9e: 0.415 + 447f4ecc9e3c96c4582c34dfc66436ae: 0 + 6dc37decaec0c0f468ba6c1fb4f95ebf: 50 + aff67efc612d61b469184c39ea2c6339: 0.2 + 5168eefc6d05f3d4d802a585308e8b67: 0.588 + 7812eb7d1a7bba747868c3abff847dac: 0.538 + 983c698dea217524c994e7b88f25df7d: 1 + ea47e49d533c4a149a56cf186a4119eb: 110 + 0658889d5c88bf940b82d78b8d39562e: 0 + 285a82bdfd80bae41b75462603f13baf: 0 + 72def6bd2a38a944ead357650153b6b3: 0.441 + da2a1bdd1018dc54ebb2bf2349fbd8c8: 0.07 + e431e5ed060aa204c9ba5678db126270: 0.388 + 3edd2aed8cd157048a7717f3d32caba1: 0.97 + 79190f1e429424246b6ff46577611745: 8 + 9cf1f33e7b3d84e40a784d007dfb6bbc: 0.72 + 6c1fab5e5d70dbf47a590880e58bedf2: 0.52 + 72e6fc6e91bd9c6438d9497c5c20f087: 97 + 3f673d6ec3ebc7040aaabfb340a480ba: 2.0025296 + 06e1389e10711584e98e63bcabbba3a4: 0.418 + cad173aee6b7e8c45ac30f9cc5e32b2c: 0 + b3b0eede46f5b304ba700843076db719: 0.209 + 141e6fde7f4d66a4d9ce1878b64dc199: -28 + b1ed842f163fcae4989e68a530e081fd: 0.47 + 1b16bf2faec4ce249a80ce7b9f1346bd: 0.406 + 96bb113f992376e479fa8b09b724413d: 0.696 + 29b9835ff985b2e4c97d9e4ee57e84b1: 0.415 + 7ccabb5f18fe7824da14df39f37a68ec: 72 + 0d4bed6fb113d6f4089b817171a98447: 1 + d90c93cfc45013545b3760e70f40dd9c: 0.65 + m_TransitionOverrides: {} +--- !u!245 &245000012928175524 +AudioMixerSnapshotController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Snapshot Interior + m_AudioMixer: {fileID: 24100000} + m_SnapshotID: 06ac7339e485edb4182863286808e1fd + m_FloatValues: + 9d315510bbbe3234f81f9ab55034eb95: 0.025578512 + 58c9ed10d34cdd24f96279ad753b5c44: 0 + 49ea3420a4d17de47999009a7def04ef: 138 + 649ec8308d11398408f8b4edb4a345a0: 106 + cca26b403b997104bad4d1d8f7dca261: 140 + db11616008472904e881c76426b068d3: 140 + fcdca8708d2305f4593057c665f57be1: 0.438 + 67b81af0af5f7a642ae9a80222f7abdf: 0.01 + 48c4bbf0ea921c74c9fa6d520bee6afd: 0 + 4b21d1410309db948974e02993ffec79: 0.97 + 6392c38197012994ca13ff3d1d09933e: 0.155 + 2bff1f9125a0ac04aa2de5826f284cd1: 0.538 + 762f1bc1189ebbb4d826c6561132b46c: 0.38 + bd705ee11343600419ecb19a2ba1b040: 0.36 + eb9b8ff14fcb5f9488c715e2970b3b22: 0 + f7aab8027052a8e4bbbbfa3e10f77076: 1 + 54a32c12472920747aadc169fc459833: 0.353 + c8aaa722d4ec4154bba4febdb24cb6a9: 0.857 + 5873537254a301f4ea13ed21b0eff333: 0.512 + f00e9382c178ba74091552a02191a248: 0.768 + 58edbc339fee35e4396568ee4b4453de: 0.92 + ccd919438ea41b84a8839e71f708afbb: 0.336 + 0a3224836f36e1a40a4ede80f5080595: 1 + d65515935f752c649a20a13490f2f9e0: 0 + 03939eb341cc86440a3b7f811113cd27: 0.385 + 2cf715c32cf694e4d977b3798f5f8bb2: 90 + d2fdf2145b59fee4595a326c28abd184: 0 + de1b983492eda6c47b6ef47105b52dda: 0.97 + 2e7f0254e7d38fd4eb3152ed5ccbaf19: 120 + 820d8864a3100854b99c649ce38e7f1c: 1 + 017e1c84d5ff649438cf7217f015a04f: 100 + f55c0bb461c06f4419674ef5c9fa9953: 1 + 229fbec47d0de58408d0541ea2fa4c0e: 1.17 + c04dfb256afb48d499bb4540ed5265bb: 0.696 + eedb6e2560b96954f80a6216a070957a: 0.908 + c6d3fa55e85ddbe489d20e1e07efba6f: 0.97 + d046de7513d8e0b4fa166ea7382ecdaf: 0.511 + d3e2b68513d653740a78c0c9c694e7c7: 1 + 5f0898855add70243aa14b3ea2677074: 1 + 01578495ccbabed42984621c044e5d72: 0.97 + 77d987a5a23fe9f40bc2a0ef32d60de5: 122 + bd33a706336bb6742960b31b56d6d312: 0 + 70fb34464dced4d4fa0fcbc0a9bbcb03: 104 + fd57dbc6c9ab56441b50cb4ec452b383: 0.5 + 0b9824d66b0abf64f9c881b46383bcc5: 157 + f5d601f6a1282e848b1945fd6c7c37a6: 0.512 + e25db507e301b004f861dc06d09175f4: 130 + 1a8948470036df943be2b94d699cf4e9: 95 + 285e7a478d90a1f4ea39bf4e24e02ebf: 3.2656894 + afbfe0879e482b64b9dd4ceeeed82492: 0.33 + ae6a7db7773ab66468e20795efab2e3e: 43 + c37752d75bf132d47a7c3a93049722dc: 1 + 74df97f7555fd2241a41f845aa8c4d21: 0.353 + d26a4918d633cb54fbd7a5b40efe1639: 0.045 + bf51ba384a3c1f646a631feb6aed6c54: 114 + 0f0fba6804dba4c4cb19fd30e1223afb: 2.87 + f4fa4509dbcb99d46a3b47fb214a8e04: 0 + 56c841194b2fe3040b48cf98706d6e73: 0 + 7413dd197ffb07340850468b31fcf1e0: 0.79 + 36b1ac29e76462c4586c397a65308888: 0.5 + 0417fc59ebc9a8546aeb76cabfc63779: 144 + d06ca37942b78cc4bb681d13d04fd13f: 0 + b8c78c79da9dc7647b11bfb614405d3a: 119 + a7822f794e8835b44b5d97b299e90829: 0.682 + 528077a94b0c9414ebb8e893ec848cb5: 3.55 + 77747ac9fbec3bd4ea88da457cdb9929: 0.388 + bac2bbc985be64f40b41721b00cd60b6: 1 + aca764e9e8594ad4e82b73de0b803e6c: 0.718 + ea845bf95b8ca3643b1e02f7eb395c20: 124 + 15ef323a36019924ca28f74bdd24e24c: 0 + 686ebe5a2690c5e479c8116b11041079: 0 + 4b58a99a50aafe74793b5dd2bedb0a96: 0.064 + 81eebcba61cc4d94bbc3e7c351b3cf37: 0 + 333585ca979bacf4eba5c4fee2741c4b: 0.273 + cad86ecad0994a1468302748ea994d5c: 111 + ddb13ffa06835ba45a05d6ccf101ba05: 139 + bb163b3baa1705545a7c704ec4ac0c7b: 0 + 7c75d04b0f5050a48925a908ea48051c: 0.441 + db3eaa4b3a4d9364eb3994f66a47b51a: 0 + 1c5e237b02d4533429539a0a6df19853: 0 + d887dc8b995a9174aab8c8b0de3b0733: 0.97 + fe36acab8a96d0046bafeb9e18a753df: 0.073 + 34546ccb2e240cd48bcca671564120ce: 0 + 5cbf6ddbb7026dc45abe06cc43322e1c: 68 + cc132edbccace48469977b60edca52a5: 0.447 + 4cff19eb609afd84992763e1020b8181: 1 + a7077ffb091b65b4dbcb5026128b2c5e: -25 + c6cc7e2c3e902d94abdabdddc5a41800: 1 + 2883db3c75b4127489b7549dabc871af: 0.67 + 8998a24c4360c93478ec02f063d9b337: 0 + 1033165c48652b34db906f50dde24a50: 0.571 + 4a67b18c35650444b90dc3f572846173: 200 + 917c2e9cef00f3442b1165a1fda7d72a: 0.55 + 9760f1cc98e9dd54d9700864efe2f90a: 70 + d779d8cc83e43cc4592a9ba5ce40cb9e: 0.415 + 447f4ecc9e3c96c4582c34dfc66436ae: 0 + 6dc37decaec0c0f468ba6c1fb4f95ebf: 50 + aff67efc612d61b469184c39ea2c6339: 0.762 + 5168eefc6d05f3d4d802a585308e8b67: 0.588 + 7812eb7d1a7bba747868c3abff847dac: 0.538 + 983c698dea217524c994e7b88f25df7d: 1 + ea47e49d533c4a149a56cf186a4119eb: 110 + 0658889d5c88bf940b82d78b8d39562e: 0 + 285a82bdfd80bae41b75462603f13baf: 0 + 72def6bd2a38a944ead357650153b6b3: 0.441 + da2a1bdd1018dc54ebb2bf2349fbd8c8: 0.07 + e431e5ed060aa204c9ba5678db126270: 0.388 + 3edd2aed8cd157048a7717f3d32caba1: 0.97 + 79190f1e429424246b6ff46577611745: 1 + 9cf1f33e7b3d84e40a784d007dfb6bbc: 0.72 + 6c1fab5e5d70dbf47a590880e58bedf2: 0.52 + 72e6fc6e91bd9c6438d9497c5c20f087: 97 + 3f673d6ec3ebc7040aaabfb340a480ba: 2.0025296 + 06e1389e10711584e98e63bcabbba3a4: 0.418 + cad173aee6b7e8c45ac30f9cc5e32b2c: 0 + b3b0eede46f5b304ba700843076db719: 0.209 + 141e6fde7f4d66a4d9ce1878b64dc199: -28 + b1ed842f163fcae4989e68a530e081fd: 0.47 + 1b16bf2faec4ce249a80ce7b9f1346bd: 0.406 + 96bb113f992376e479fa8b09b724413d: 0.696 + 29b9835ff985b2e4c97d9e4ee57e84b1: 0.415 + 7ccabb5f18fe7824da14df39f37a68ec: 72 + 0d4bed6fb113d6f4089b817171a98447: 1 + d90c93cfc45013545b3760e70f40dd9c: 0.65 + m_TransitionOverrides: {} diff --git a/Assets/Oculus/Spatializer/Scenes/mixers/SpatializerMixer.mixer.meta b/Assets/Oculus/Spatializer/Scenes/mixers/SpatializerMixer.mixer.meta new file mode 100644 index 0000000..5f08203 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/mixers/SpatializerMixer.mixer.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1dd706bb85d8aef4e83a6229dbd62c36 +timeCreated: 1440786022 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds.meta b/Assets/Oculus/Spatializer/Scenes/sounds.meta new file mode 100644 index 0000000..2ec04c3 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b5d8866648b1d45d2bc312b463c14345 +folderAsset: yes +timeCreated: 1424053923 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/360 Workstation Ambisonic Panning AmbiX.wav b/Assets/Oculus/Spatializer/Scenes/sounds/360 Workstation Ambisonic Panning AmbiX.wav new file mode 100644 index 0000000..ada1c71 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/360 Workstation Ambisonic Panning AmbiX.wav differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/360 Workstation Ambisonic Panning AmbiX.wav.meta b/Assets/Oculus/Spatializer/Scenes/sounds/360 Workstation Ambisonic Panning AmbiX.wav.meta new file mode 100644 index 0000000..5909569 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/360 Workstation Ambisonic Panning AmbiX.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 1340d7fb0cd1bfb4caa3b3270cb2ea5f +timeCreated: 1479409279 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/car.ogg b/Assets/Oculus/Spatializer/Scenes/sounds/car.ogg new file mode 100644 index 0000000..ee2f773 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/car.ogg differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/car.ogg.meta b/Assets/Oculus/Spatializer/Scenes/sounds/car.ogg.meta new file mode 100644 index 0000000..b539fc4 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/car.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 354c37cd61ec24bbcbbc7921d0a71bc1 +timeCreated: 1424280968 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 0 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/hammer.wav b/Assets/Oculus/Spatializer/Scenes/sounds/hammer.wav new file mode 100644 index 0000000..4fb0131 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/hammer.wav differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/hammer.wav.meta b/Assets/Oculus/Spatializer/Scenes/sounds/hammer.wav.meta new file mode 100644 index 0000000..73d5c8d --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/hammer.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 3a4baf251c1814716b9458d036384a76 +timeCreated: 1434610210 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/horse.ogg b/Assets/Oculus/Spatializer/Scenes/sounds/horse.ogg new file mode 100644 index 0000000..e744efe Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/horse.ogg differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/horse.ogg.meta b/Assets/Oculus/Spatializer/Scenes/sounds/horse.ogg.meta new file mode 100644 index 0000000..774e25d --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/horse.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 494bd1721199a40c5a79fa3011793556 +timeCreated: 1424281508 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 0 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/loop.ogg b/Assets/Oculus/Spatializer/Scenes/sounds/loop.ogg new file mode 100644 index 0000000..97b9253 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/loop.ogg differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/loop.ogg.meta b/Assets/Oculus/Spatializer/Scenes/sounds/loop.ogg.meta new file mode 100644 index 0000000..edc0120 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/loop.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 37c9e69911022452a9ebd4ee732ab036 +timeCreated: 1424661047 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/noise.wav b/Assets/Oculus/Spatializer/Scenes/sounds/noise.wav new file mode 100644 index 0000000..41cf0fe Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/noise.wav differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/noise.wav.meta b/Assets/Oculus/Spatializer/Scenes/sounds/noise.wav.meta new file mode 100644 index 0000000..41d4f02 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/noise.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 460d9a446cc128e4787c47d09d4af2bc +timeCreated: 1479495149 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/scraping.ogg b/Assets/Oculus/Spatializer/Scenes/sounds/scraping.ogg new file mode 100644 index 0000000..4e18bea Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/scraping.ogg differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/scraping.ogg.meta b/Assets/Oculus/Spatializer/Scenes/sounds/scraping.ogg.meta new file mode 100644 index 0000000..0c0635e --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/scraping.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 236da4b84bba246d283010b1b2dcf28a +timeCreated: 1434739439 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/sine.wav b/Assets/Oculus/Spatializer/Scenes/sounds/sine.wav new file mode 100644 index 0000000..edf7bfa Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/sine.wav differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/sine.wav.meta b/Assets/Oculus/Spatializer/Scenes/sounds/sine.wav.meta new file mode 100644 index 0000000..76965d8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/sine.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 197b6f9ffe1223343aa4672db3771875 +timeCreated: 1443655172 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/speech.wav b/Assets/Oculus/Spatializer/Scenes/sounds/speech.wav new file mode 100644 index 0000000..7d47526 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/speech.wav differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/speech.wav.meta b/Assets/Oculus/Spatializer/Scenes/sounds/speech.wav.meta new file mode 100644 index 0000000..2edfd32 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/speech.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 2cfa96c21e4f54c20824bd26cd46c10f +timeCreated: 1424054227 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 0 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/uss.ogg b/Assets/Oculus/Spatializer/Scenes/sounds/uss.ogg new file mode 100644 index 0000000..63ffd26 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/uss.ogg differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/uss.ogg.meta b/Assets/Oculus/Spatializer/Scenes/sounds/uss.ogg.meta new file mode 100644 index 0000000..e5108f8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/uss.ogg.meta @@ -0,0 +1,20 @@ +fileFormatVersion: 2 +guid: f91d65267a08748519645f34d4358e48 +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 1 + sampleRateSetting: 0 + sampleRateOverride: 0 + compressionFormat: 0 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/vocal1.ogg b/Assets/Oculus/Spatializer/Scenes/sounds/vocal1.ogg new file mode 100644 index 0000000..3e2d8cf Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/vocal1.ogg differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/vocal1.ogg.meta b/Assets/Oculus/Spatializer/Scenes/sounds/vocal1.ogg.meta new file mode 100644 index 0000000..956e63b --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/vocal1.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 33a0d552717ab4c2e87a77c856d9aaf3 +timeCreated: 1423240920 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 0 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/water.mp3 b/Assets/Oculus/Spatializer/Scenes/sounds/water.mp3 new file mode 100644 index 0000000..5cc65a4 Binary files /dev/null and b/Assets/Oculus/Spatializer/Scenes/sounds/water.mp3 differ diff --git a/Assets/Oculus/Spatializer/Scenes/sounds/water.mp3.meta b/Assets/Oculus/Spatializer/Scenes/sounds/water.mp3.meta new file mode 100644 index 0000000..64c37da --- /dev/null +++ b/Assets/Oculus/Spatializer/Scenes/sounds/water.mp3.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: a05d082cd207b4b12a47c089be8b7a62 +timeCreated: 1434739439 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scripts.meta b/Assets/Oculus/Spatializer/Scripts.meta new file mode 100644 index 0000000..8199602 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 51b022d9e2c54124eb2a24688675a7ee +folderAsset: yes +timeCreated: 1424053929 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scripts/ONSPAmbisonicsNative.cs b/Assets/Oculus/Spatializer/Scripts/ONSPAmbisonicsNative.cs new file mode 100644 index 0000000..13e79e6 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/ONSPAmbisonicsNative.cs @@ -0,0 +1,166 @@ +/************************************************************************************ +Filename : ONSPAmbisonicsNative.cs +Content : Native interface into the Oculus Ambisonics +Created : November 14, 2016 +Authors : Peter Giokaris +Copyright : Copyright 2016 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System.Collections; +using System.Runtime.InteropServices; + +public class ONSPAmbisonicsNative : MonoBehaviour +{ +#if !UNITY_5 + static int numFOAChannels = 4; // we are only dealing with 1st order Ambisonics at this time + static int paramVSpeakerMode = 6; // set speaker mode (OculusAmbi or VSpeaker) + static int paramAmbiStat = 7; // use this to return internal Ambisonic status + + // Staus codes that may return from Ambisonic engine + public enum ovrAmbisonicsNativeStatus + { + Uninitialized = -1, // Ambisonic stream not initialized (inital status) + NotEnabled, // Ambisonic has not been enabled on clip + Success, // Stream initialized and playing + StreamError, // Something wrong with input stream (not a 4-channel AmbiX format stream?) + ProcessError, // Handling of stream error + MaxStatValue + }; + + // current status + ovrAmbisonicsNativeStatus currentStatus = ovrAmbisonicsNativeStatus.Uninitialized; + + // true to use Virtual Speaker output. Otherwise use OculusAmbi + [SerializeField] + private bool useVirtualSpeakers = false; + public bool UseVirtualSpeakers + { + get + { + return useVirtualSpeakers; + } + set + { + useVirtualSpeakers = value; + } + } +#endif + /// + /// OnEnable this instance. + /// + void OnEnable() + { +// Unity 4 is deprecated; UNITY_5 still valid with plug-in +#if UNITY_5 + Debug.Log("Ambisonic ERROR: Ambisonic support in Unity 2017 or higher"); +#else + + AudioSource source = GetComponent(); + + currentStatus = ovrAmbisonicsNativeStatus.Uninitialized; + + if (source == null) + { + Debug.Log("Ambisonic ERROR: AudioSource does not exist."); + } + else + { + if(source.spatialize == true) + { + Debug.Log("Ambisonic WARNING: Turning spatialize field off for Ambisonic sources."); + source.spatialize = false; + } + + if (source.clip == null) + { + Debug.Log("Ambisonic ERROR: AudioSource does not contain an audio clip."); + } + else + { + if(source.clip.channels != numFOAChannels) + { + Debug.Log("Ambisonic ERROR: AudioSource clip does not have correct number of channels."); + } + } + } +#endif + } + +// Unity 4 is deprecated; UNITY_5 still valid with plug-in +#if !UNITY_5 + /// + /// Update this instance. + /// + void Update() + { + AudioSource source = GetComponent(); + + if (source == null) + { + // We already caught the error in Awake so bail + return; + } + + // Set speaker mode + if(useVirtualSpeakers == true) + source.SetAmbisonicDecoderFloat(paramVSpeakerMode, 1.0f); // VSpeakerMode + else + source.SetAmbisonicDecoderFloat(paramVSpeakerMode, 0.0f); // OclusAmbi + + float statusF = 0.0f; + // PGG 5/25/2017 There is a bug in the 2017.2 beta that does not + // allow for ambisonic params to be passed through to native + // from C# Get latest editor from Unity when available + source.GetAmbisonicDecoderFloat(paramAmbiStat, out statusF); + + ovrAmbisonicsNativeStatus status = (ovrAmbisonicsNativeStatus)statusF; + + // TODO: Add native result/error codes + if (status != currentStatus) + { + switch(status) + { + case (ovrAmbisonicsNativeStatus.NotEnabled): + Debug.Log("Ambisonic Native: Ambisonic not enabled on clip. Check clip field and turn it on"); + break; + + case (ovrAmbisonicsNativeStatus.Uninitialized): + Debug.Log("Ambisonic Native: Stream uninitialized"); + break; + + case (ovrAmbisonicsNativeStatus.Success): + Debug.Log("Ambisonic Native: Stream successfully initialized and playing/playable"); + break; + + case (ovrAmbisonicsNativeStatus.StreamError): + Debug.Log("Ambisonic Native WARNING: Stream error (bad input format?)"); + break; + + case (ovrAmbisonicsNativeStatus.ProcessError): + Debug.Log("Ambisonic Native WARNING: Stream process error (check default speaker setup)"); + break; + + default: + break; + } + } + + currentStatus = status; + } +#endif +} diff --git a/Assets/Oculus/Spatializer/Scripts/ONSPAmbisonicsNative.cs.meta b/Assets/Oculus/Spatializer/Scripts/ONSPAmbisonicsNative.cs.meta new file mode 100644 index 0000000..ef80666 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/ONSPAmbisonicsNative.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bb001ad917b86f148a2c85acdd0d5c6a +timeCreated: 1479161980 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scripts/ONSPAudioSource.cs b/Assets/Oculus/Spatializer/Scripts/ONSPAudioSource.cs new file mode 100644 index 0000000..7eda0a8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/ONSPAudioSource.cs @@ -0,0 +1,324 @@ +/************************************************************************************ +Filename : ONSPAudioSource.cs +Content : Interface into the Oculus Native Spatializer Plugin +Created : September 14, 2015 +Authors : Peter Giokaris +Copyright : Copyright 2015 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ + +// Uncomment below to test access of read-only spatializer parameters +//#define TEST_READONLY_PARAMETERS + +using UnityEngine; +using System; +using System.Collections; +using System.Runtime.InteropServices; + +public class ONSPAudioSource : MonoBehaviour +{ +#if TEST_READONLY_PARAMETERS + // Spatializer read-only system parameters (global) + static int readOnly_GlobalRelectionOn = 8; + static int readOnly_NumberOfUsedSpatializedVoices = 9; +#endif + + // Import functions + public const string strONSPS = "AudioPluginOculusSpatializer"; + + [DllImport(strONSPS)] + private static extern void ONSP_GetGlobalRoomReflectionValues(ref bool reflOn, ref bool reverbOn, + ref float width, ref float height, ref float length); + + // Public + + [SerializeField] + private bool enableSpatialization = true; + public bool EnableSpatialization + { + get + { + return enableSpatialization; + } + set + { + enableSpatialization = value; + } + } + + [SerializeField] + private float gain = 0.0f; + public float Gain + { + get + { + return gain; + } + set + { + gain = Mathf.Clamp(value, 0.0f, 24.0f); + } + } + + [SerializeField] + private bool useInvSqr = false; + public bool UseInvSqr + { + get + { + return useInvSqr; + } + set + { + useInvSqr = value; + } + } + + [SerializeField] + private float near = 1.0f; + public float Near + { + get + { + return near; + } + set + { + near = Mathf.Clamp(value, 0.0f, 1000000.0f); + } + } + + [SerializeField] + private float far = 10.0f; + public float Far + { + get + { + return far; + } + set + { + far = Mathf.Clamp(value, 0.0f, 1000000.0f); + } + } + + [SerializeField] + private float volumetricRadius = 0.0f; + public float VolumetricRadius + { + get + { + return volumetricRadius; + } + set + { + volumetricRadius = Mathf.Clamp(value, 0.0f, 1000.0f); + } + } + + [SerializeField] + private bool enableRfl = false; + public bool EnableRfl + { + get + { + return enableRfl; + } + set + { + enableRfl = value; + } + } + + /// + /// Awake this instance. + /// + void Awake() + { + // We might iterate through multiple sources / game object + var source = GetComponent(); + SetParameters(ref source); + } + + /// + /// Start this instance. + /// + void Start() + { + } + + /// + /// Update this instance. + /// + void Update() + { + // We might iterate through multiple sources / game object + var source = GetComponent(); + + // READ-ONLY PARAMETER TEST +#if TEST_READONLY_PARAMETERS + float rfl_enabled = 0.0f; + source.GetSpatializerFloat(readOnly_GlobalRelectionOn, out rfl_enabled); + float num_voices = 0.0f; + source.GetSpatializerFloat(readOnly_NumberOfUsedSpatializedVoices, out num_voices); + + String readOnly = System.String.Format + ("Read only values: refl enabled: {0:F0} num voices: {1:F0}", rfl_enabled, num_voices); + Debug.Log(readOnly); +#endif + + // Check to see if we should disable spatializion + if ((Application.isPlaying == false) || + (AudioListener.pause == true) || + (source.isPlaying == false) || + (source.isActiveAndEnabled == false) + ) + { + source.spatialize = false; + return; + } + else + { + SetParameters(ref source); + } + } + + /// + /// Sets the parameters. + /// + /// Source. + public void SetParameters(ref AudioSource source) + { + // See if we should enable spatialization + source.spatialize = enableSpatialization; + + source.SetSpatializerFloat(0, gain); + // All inputs are floats; convert bool to 0.0 and 1.0 + if(useInvSqr == true) + source.SetSpatializerFloat(1, 1.0f); + else + source.SetSpatializerFloat(1, 0.0f); + + source.SetSpatializerFloat(2, near); + source.SetSpatializerFloat(3, far); + + source.SetSpatializerFloat(4, volumetricRadius); + + if(enableRfl == true) + source.SetSpatializerFloat(5, 0.0f); + else + source.SetSpatializerFloat(5, 1.0f); + } + + private static ONSPAudioSource RoomReflectionGizmoAS = null; + + /// + /// + /// + void OnDrawGizmos() + { + // Are we the first one created? make sure to set our static ONSPAudioSource + // for drawing out room parameters once + if(RoomReflectionGizmoAS == null) + { + RoomReflectionGizmoAS = this; + } + + Color c; + const float colorSolidAlpha = 0.1f; + + // Draw the near/far spheres + + // Near (orange) + c.r = 1.0f; + c.g = 0.5f; + c.b = 0.0f; + c.a = 1.0f; + Gizmos.color = c; + Gizmos.DrawWireSphere(transform.position, Near); + c.a = colorSolidAlpha; + Gizmos.color = c; + Gizmos.DrawSphere(transform.position, Near); + + // Far (red) + c.r = 1.0f; + c.g = 0.0f; + c.b = 0.0f; + c.a = 1.0f; + Gizmos.color = Color.red; + Gizmos.DrawWireSphere(transform.position, Far); + c.a = colorSolidAlpha; + Gizmos.color = c; + Gizmos.DrawSphere(transform.position, Far); + + // VolumetricRadius (purple) + c.r = 1.0f; + c.g = 0.0f; + c.b = 1.0f; + c.a = 1.0f; + Gizmos.color = c; + Gizmos.DrawWireSphere(transform.position, VolumetricRadius); + c.a = colorSolidAlpha; + Gizmos.color = c; + Gizmos.DrawSphere(transform.position, VolumetricRadius); + + // Draw room parameters ONCE only, provided reflection engine is on + if (RoomReflectionGizmoAS == this) + { + // Get global room parameters (write new C api to get reflection values) + bool reflOn = false; + bool reverbOn = false; + float width = 1.0f; + float height = 1.0f; + float length = 1.0f; + + ONSP_GetGlobalRoomReflectionValues(ref reflOn, ref reverbOn, ref width, ref height, ref length); + + // TO DO: Get the room reflection values and render those out as well (like we do in the VST) + + if((Camera.main != null) && (reflOn == true)) + { + // Set color of cube (cyan is early reflections only, white is with reverb on) + if(reverbOn == true) + c = Color.white; + else + c = Color.cyan; + + Gizmos.color = c; + Gizmos.DrawWireCube(Camera.main.transform.position, new Vector3(width, height, length)); + c.a = colorSolidAlpha; + Gizmos.color = c; + Gizmos.DrawCube(Camera.main.transform.position, new Vector3(width, height, length)); + } + } + } + + /// + /// + /// + void OnDestroy() + { + // We will null out single pointer instance + // of the room reflection gizmo since we are being destroyed. + // Any ONSPAS that is alive or born will re-set this pointer + // so that we only draw it once + if(RoomReflectionGizmoAS == this) + { + RoomReflectionGizmoAS = null; + } + } +} diff --git a/Assets/Oculus/Spatializer/Scripts/ONSPAudioSource.cs.meta b/Assets/Oculus/Spatializer/Scripts/ONSPAudioSource.cs.meta new file mode 100644 index 0000000..5f2a2db --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/ONSPAudioSource.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e503ea6418d27594caa33b93cac1b06a +timeCreated: 1442244775 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scripts/ONSPProfiler.cs b/Assets/Oculus/Spatializer/Scripts/ONSPProfiler.cs new file mode 100644 index 0000000..2e7d739 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/ONSPProfiler.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using UnityEngine.Networking; + + +public class ONSPProfiler : MonoBehaviour +{ + public bool profilerEnabled = false; + const int DEFAULT_PORT = 2121; + public int port = DEFAULT_PORT; + + void Start() + { + Application.runInBackground = true; + } + + void Update() + { + if (port < 0 || port > 65535) + { + port = DEFAULT_PORT; + } + ONSP_SetProfilerPort(port); + ONSP_SetProfilerEnabled(profilerEnabled); + } + + // Import functions + public const string strONSPS = "AudioPluginOculusSpatializer"; + + [DllImport(strONSPS)] + private static extern int ONSP_SetProfilerEnabled(bool enabled); + [DllImport(strONSPS)] + private static extern int ONSP_SetProfilerPort(int port); +} diff --git a/Assets/Oculus/Spatializer/Scripts/ONSPProfiler.cs.meta b/Assets/Oculus/Spatializer/Scripts/ONSPProfiler.cs.meta new file mode 100644 index 0000000..d218286 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/ONSPProfiler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c02d0725e6d42214c99b03a3b162f0e8 +timeCreated: 1504817842 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scripts/ONSPVersion.cs b/Assets/Oculus/Spatializer/Scripts/ONSPVersion.cs new file mode 100644 index 0000000..ceab4d3 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/ONSPVersion.cs @@ -0,0 +1,65 @@ +/************************************************************************************ +Filename : ONSPVersion.cs +Content : Get version number of plug-in +Created : March 30, 2016 +Authors : Peter Giokaris +Copyright : Copyright 2016 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System; +using System.Runtime.InteropServices; + +public class ONSPVersion : MonoBehaviour +{ + // Import functions + public const string strONSPS = "AudioPluginOculusSpatializer"; + + [DllImport(strONSPS)] + private static extern void ONSP_GetVersion(ref int Major, ref int Minor, ref int Patch); + + /// + /// Awake this instance. + /// + void Awake() + { + int major = 0; + int minor = 0; + int patch = 0; + + ONSP_GetVersion(ref major, ref minor, ref patch); + + String version = System.String.Format + ("ONSP Version: {0:F0}.{1:F0}.{2:F0}", major, minor, patch); + + Debug.Log(version); + } + + /// + /// Start this instance. + /// + void Start() + { + } + + /// + /// Update this instance. + /// + void Update() + { + } +} diff --git a/Assets/Oculus/Spatializer/Scripts/ONSPVersion.cs.meta b/Assets/Oculus/Spatializer/Scripts/ONSPVersion.cs.meta new file mode 100644 index 0000000..3fd7b55 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/ONSPVersion.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 46821b10458428648878b1b4a9113c40 +timeCreated: 1459353580 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scripts/OculusSpatializerUnity.cs b/Assets/Oculus/Spatializer/Scripts/OculusSpatializerUnity.cs new file mode 100644 index 0000000..fb354a8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/OculusSpatializerUnity.cs @@ -0,0 +1,346 @@ +/************************************************************************************ +Filename : OculusSpatializerUnity.cs +Content : Interface into real-time geometry reflection engine for native Unity +Created : November 27, 2017 +Copyright : Copyright 2017 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.Runtime.InteropServices; + +public class OculusSpatializerUnity : MonoBehaviour +{ + public LayerMask layerMask = -1; + public bool visualizeRoom = true; + bool roomVisualizationInitialized = false; + + public int raysPerSecond = 256; + public float roomInterpSpeed = 0.9f; + public float maxWallDistance = 50.0f; + public int rayCacheSize = 512; + + public bool dynamicReflectionsEnabled = true; + + AudioRaycastCallback _raycastCallback; // cache an instance of the delegate so the GC doesn't nuke it! + + float particleSize = 0.2f; + float particleOffset = 0.1f; + + GameObject room; + Renderer[] wallRenderer = new Renderer[6]; + + float[] dims = new float[3] { 1.0f, 1.0f, 1.0f }; + float[] coefs = new float[6]; + + const int HIT_COUNT = 2048; + + Vector3[] points = new Vector3[HIT_COUNT]; + Vector3[] normals = new Vector3[HIT_COUNT]; + + ParticleSystem sys; + ParticleSystem.Particle[] particles = new ParticleSystem.Particle[HIT_COUNT]; + + + static LayerMask gLayerMask = -1; + static Vector3 swapHandedness(Vector3 vec) { return new Vector3(vec.x, vec.y, -vec.z); } + static void AudioRaycast(Vector3 origin, Vector3 direction, out Vector3 point, out Vector3 normal, System.IntPtr data) + { + point = Vector3.zero; + normal = Vector3.zero; + + RaycastHit hitInfo; + if (Physics.Raycast(swapHandedness(origin), swapHandedness(direction), out hitInfo, 1000.0f, gLayerMask.value)) + { + point = swapHandedness(hitInfo.point); + normal = swapHandedness(hitInfo.normal); + } + } + + void Start() + { + _raycastCallback = new AudioRaycastCallback(AudioRaycast); + OSP_Unity_AssignRaycastCallback(_raycastCallback, System.IntPtr.Zero); + } + + void OnDestroy() + { + OSP_Unity_AssignRaycastCallback(System.IntPtr.Zero, System.IntPtr.Zero); + } + + void Update() + { + if (dynamicReflectionsEnabled) + { + OSP_Unity_AssignRaycastCallback(_raycastCallback, System.IntPtr.Zero); + } + else + { + OSP_Unity_AssignRaycastCallback(System.IntPtr.Zero, System.IntPtr.Zero); + } + + OSP_Unity_SetDynamicRoomRaysPerSecond(raysPerSecond); + OSP_Unity_SetDynamicRoomInterpSpeed(roomInterpSpeed); + OSP_Unity_SetDynamicRoomMaxWallDistance(maxWallDistance); + OSP_Unity_SetDynamicRoomRaysRayCacheSize(rayCacheSize); + + gLayerMask = layerMask; + OSP_Unity_UpdateRoomModel(1.0f); + + if (visualizeRoom) + { + if (!roomVisualizationInitialized) + { + inititalizeRoomVisualization(); + roomVisualizationInitialized = true; + } + + Vector3 pos; + OSP_Unity_GetRoomDimensions(dims, coefs, out pos); + + pos.z *= -1; // swap to left-handed + + var size = new Vector3(dims[0], dims[1], dims[2]); + + float magSqrd = size.sqrMagnitude; + + if (!float.IsNaN(magSqrd) && 0.0f < magSqrd && magSqrd < 1000000.0f) + { + transform.localScale = size * 0.999f; + } + + transform.position = pos; + + OSP_Unity_GetRaycastHits(points, normals, HIT_COUNT); + + for (int i = 0; i < HIT_COUNT; ++i) + { + if (points[i] == Vector3.zero) + points[i].y = -10000.0f; // hide it + + // swap to left-handed + points[i].z *= -1; + normals[i].z *= -1; + + particles[i].position = points[i] + normals[i] * particleOffset; + + if (normals[i] != Vector3.zero) + particles[i].rotation3D = Quaternion.LookRotation(normals[i]).eulerAngles; + + particles[i].startSize = particleSize; + particles[i].startColor = new Color(208 / 255f, 38 / 255f, 174 / 255f, 1.0f); + } + + for (int wall = 0; wall < 6; ++wall) + { + var color = Color.Lerp(Color.red, Color.green, coefs[wall]); + wallRenderer[wall].material.SetColor("_TintColor", color); + } + + sys.SetParticles(particles, particles.Length); + } + } + + private void inititalizeRoomVisualization() + { + Debug.Log("Oculus Audio dynamic room estimation visualization enabled"); + transform.position = Vector3.zero; // move to the origin otherwise things are displaced + + // Create a particle system to visualize the ray cast hits + GameObject decalManager = new GameObject("DecalManager"); + decalManager.transform.parent = transform; + sys = decalManager.AddComponent(); + { + var main = sys.main; + main.simulationSpace = ParticleSystemSimulationSpace.World; + main.loop = false; + main.playOnAwake = false; + var emission = sys.emission; + emission.enabled = false; + var shape = sys.shape; + shape.enabled = false; + var renderer = sys.GetComponent(); + renderer.renderMode = ParticleSystemRenderMode.Mesh; + renderer.material.shader = Shader.Find("Particles/Additive"); + + Texture2D decalTex; + { + const int SIZE = 64; + const int RING_COUNT = 2; + + decalTex = new Texture2D(SIZE, SIZE); + const int HALF_SIZE = SIZE / 2; + for (int i = 0; i < SIZE / 2; ++i) + { + for (int j = 0; j < SIZE / 2; ++j) + { + // distance from center + float deltaX = (float)(HALF_SIZE - i); + float deltaY = (float)(HALF_SIZE - j); + float dist = Mathf.Sqrt((deltaX * deltaX) + (deltaY * deltaY)); + float t = (RING_COUNT * dist) / HALF_SIZE; + + float alpha = (dist < HALF_SIZE) ? Mathf.Clamp01(Mathf.Sin(Mathf.PI * 2.0f * t)) : 0.0f; + Color col = new Color(1.0f, 1.0f, 1.0f, alpha); + + // Two way symmetry + decalTex.SetPixel(i, j, col); + decalTex.SetPixel(SIZE - i, j, col); + decalTex.SetPixel(i, SIZE - j, col); + decalTex.SetPixel(SIZE - i, SIZE - j, col); + } + } + + decalTex.Apply(); + } + + renderer.material.mainTexture = decalTex; + // Make a quad + var m = new Mesh(); + m.name = "ParticleQuad"; + const float size = 0.5f; + m.vertices = new Vector3[] { + new Vector3(-size, -size, 0.0f), + new Vector3( size, -size, 0.0f), + new Vector3( size, size, 0.0f), + new Vector3(-size, size, 0.0f) + }; + m.uv = new Vector2[] { + new Vector2(0, 0), + new Vector2(0, 1), + new Vector2(1, 1), + new Vector2(1, 0) + }; + m.triangles = new int[] { 0, 1, 2, 0, 2, 3 }; + m.RecalculateNormals(); + renderer.mesh = m; + + } + sys.Emit(HIT_COUNT); + + // Construct the visual representation of the room + room = new GameObject("RoomVisualizer"); + room.transform.parent = transform; + room.transform.localPosition = Vector3.zero; + + Texture2D wallTex; + { + const int SIZE = 32; + wallTex = new Texture2D(SIZE, SIZE); + + Color transparent = new Color(0.0f, 0.0f, 0.0f, 0.0f); + for (int i = 0; i < SIZE; ++i) + { + for (int j = 0; j < SIZE; ++j) + { + wallTex.SetPixel(i, j, transparent); + } + } + + for (int i = 0; i < SIZE; ++i) + { + Color color1 = Color.white * 0.125f; + + wallTex.SetPixel(SIZE / 4, i, color1); + wallTex.SetPixel(i, SIZE / 4, color1); + + wallTex.SetPixel(3 * SIZE / 4, i, color1); + wallTex.SetPixel(i, 3 * SIZE / 4, color1); + + color1 *= 2.0f; + + wallTex.SetPixel(SIZE / 2, i, color1); + wallTex.SetPixel(i, SIZE / 2, color1); + + color1 *= 2.0f; + + wallTex.SetPixel(0, i, color1); + wallTex.SetPixel(i, 0, color1); + } + wallTex.Apply(); + } + + for (int wall = 0; wall < 6; ++wall) + { + var m = new Mesh(); + m.name = "Plane" + wall; + const float size = 0.5f; + var verts = new Vector3[4]; + + int axis = wall / 2; + int sign = (wall % 2 == 0) ? 1 : -1; + + for (int i = 0; i < 4; ++i) + { + verts[i][axis] = sign * size; + verts[i][(axis + 1) % 3] = size * ((i == 1 || i == 2) ? 1 : -1); + verts[i][(axis + 2) % 3] = size * ((i == 2 || i == 3) ? 1 : -1); + } + + m.vertices = verts; + + m.uv = new Vector2[] + { + new Vector2(0, 0), + new Vector2(0, 1), + new Vector2(1, 1), + new Vector2(1, 0) + }; + + m.triangles = new int[] { 0, 1, 2, 0, 2, 3 }; + m.RecalculateNormals(); + var go = new GameObject("Wall_" + wall); + go.AddComponent().mesh = m; + var renderer = go.AddComponent(); + wallRenderer[wall] = renderer; + renderer.material.shader = Shader.Find("Particles/Additive"); + renderer.material.mainTexture = wallTex; + renderer.material.mainTextureScale = new Vector2(8, 8); + go.transform.parent = room.transform; + room.transform.localPosition = Vector3.zero; + } + } + + // * * * * * * * * * * * * * + // Import functions + public delegate void AudioRaycastCallback(Vector3 origin, Vector3 direction, + out Vector3 point, out Vector3 normal, + System.IntPtr data); + + private const string strOSP = "AudioPluginOculusSpatializer"; + + [DllImport(strOSP)] + private static extern int OSP_Unity_AssignRaycastCallback(System.MulticastDelegate callback, System.IntPtr data); + [DllImport(strOSP)] + private static extern int OSP_Unity_AssignRaycastCallback(System.IntPtr callback, System.IntPtr data); + + [DllImport(strOSP)] + private static extern int OSP_Unity_SetDynamicRoomRaysPerSecond(int RaysPerSecond); + [DllImport(strOSP)] + private static extern int OSP_Unity_SetDynamicRoomInterpSpeed(float InterpSpeed); + [DllImport(strOSP)] + private static extern int OSP_Unity_SetDynamicRoomMaxWallDistance(float MaxWallDistance); + [DllImport(strOSP)] + private static extern int OSP_Unity_SetDynamicRoomRaysRayCacheSize(int RayCacheSize); + [DllImport(strOSP)] + private static extern int OSP_Unity_UpdateRoomModel(float wetLevel); // call from main thread!! + [DllImport(strOSP)] + private static extern int OSP_Unity_GetRoomDimensions(float[] roomDimensions, float[] reflectionsCoefs, out Vector3 position); + [DllImport(strOSP)] + private static extern int OSP_Unity_GetRaycastHits(Vector3[] points, Vector3[] normals, int length); +} diff --git a/Assets/Oculus/Spatializer/Scripts/OculusSpatializerUnity.cs.meta b/Assets/Oculus/Spatializer/Scripts/OculusSpatializerUnity.cs.meta new file mode 100644 index 0000000..ed053b8 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/OculusSpatializerUnity.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1e7e1ee1878326a4ea99cdd376569203 +timeCreated: 1536271779 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scripts/helpers.meta b/Assets/Oculus/Spatializer/Scripts/helpers.meta new file mode 100644 index 0000000..8079d39 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/helpers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 09f814575468d81448e92cb264792b5b +folderAsset: yes +timeCreated: 1479154551 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Spatializer/Scripts/helpers/ONSPReflectionZone.cs b/Assets/Oculus/Spatializer/Scripts/helpers/ONSPReflectionZone.cs new file mode 100644 index 0000000..ca48549 --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/helpers/ONSPReflectionZone.cs @@ -0,0 +1,166 @@ +/************************************************************************************ +Filename : ONSPReflectionZone.cs +Content : Add reflection zone volumes to set reflection parameters via snapshots. +Created : September 8, 2016 +Authors : Peter Giokaris +Copyright : Copyright 2016 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using UnityEngine.Audio; +using System.Collections; +using System.Collections.Generic; + +public struct ReflectionSnapshot +{ + public AudioMixerSnapshot mixerSnapshot; + public float fadeTime; +} + +public class ONSPReflectionZone : MonoBehaviour +{ + public AudioMixerSnapshot mixerSnapshot = null; + public float fadeTime = 0.0f; + + // Push/pop list + private static Stack snapshotList = new Stack(); + private static ReflectionSnapshot currentSnapshot = new ReflectionSnapshot(); + + /// + /// Start this instance. + /// + void Start () + { + } + + /// + /// Update this instance. + /// + void Update () + { + } + + /// + /// Raises the trigger enter event. + /// + /// Other. + void OnTriggerEnter(Collider other) + { + if(CheckForAudioListener(other.gameObject) == true) + { + PushCurrentMixerShapshot(); + } + } + + /// + /// Raises the trigger exit event. + /// + /// Other. + void OnTriggerExit(Collider other) + { + if(CheckForAudioListener(other.gameObject) == true) + { + PopCurrentMixerSnapshot(); + } + } + + + // * * * * * * * * * * * * * + // Private functions + + /// + /// Checks for audio listener. + /// + /// true, if for audio listener was checked, false otherwise. + /// Game object. + bool CheckForAudioListener(GameObject gameObject) + { + AudioListener al = gameObject.GetComponentInChildren(); + if(al != null) + return true; + + return false; + } + + /// + /// Pushs the current mixer snapshot onto the snapshot stack + /// + void PushCurrentMixerShapshot() + { + ReflectionSnapshot css = currentSnapshot; + snapshotList.Push(css); + + // Set the zone reflection values + // NOTE: There will be conditions that might need resolution when dealing with volumes that + // overlap. Best practice is to never have volumes half-way inside other volumes; larger + // volumes should completely contain smaller volumes + SetReflectionValues(); + } + + /// + /// Pops the current reflection values from reflectionsList stack. + /// + void PopCurrentMixerSnapshot() + { + ReflectionSnapshot snapshot = snapshotList.Pop(); + + // Set the popped reflection values + SetReflectionValues(ref snapshot); + } + + /// + /// Sets the reflection values. This is done when entering a zone (use zone values). + /// + void SetReflectionValues() + { + if (mixerSnapshot != null) + { + Debug.Log("Setting off snapshot " + mixerSnapshot.name); + mixerSnapshot.TransitionTo(fadeTime); + + // Set the current snapshot to be equal to this one + currentSnapshot.mixerSnapshot = mixerSnapshot; + currentSnapshot.fadeTime = fadeTime; + } + else + { + Debug.Log("Mixer snapshot not set - Please ensure play area has at least one encompassing snapshot."); + } + } + + /// + /// Sets the reflection values. This is done when exiting a zone (use popped values). + /// + /// Rm. + void SetReflectionValues(ref ReflectionSnapshot mss) + { + if(mss.mixerSnapshot != null) + { + Debug.Log("Setting off snapshot " + mss.mixerSnapshot.name); + mss.mixerSnapshot.TransitionTo(mss.fadeTime); + + // Set the current snapshot to be equal to this one + currentSnapshot.mixerSnapshot = mss.mixerSnapshot; + currentSnapshot.fadeTime = mss.fadeTime; + + } + else + { + Debug.Log("Mixer snapshot not set - Please ensure play area has at least one encompassing snapshot."); + } + } +} diff --git a/Assets/Oculus/Spatializer/Scripts/helpers/ONSPReflectionZone.cs.meta b/Assets/Oculus/Spatializer/Scripts/helpers/ONSPReflectionZone.cs.meta new file mode 100644 index 0000000..69a5d3b --- /dev/null +++ b/Assets/Oculus/Spatializer/Scripts/helpers/ONSPReflectionZone.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cfc03cf517e91a64ba53fc31e61657ea +timeCreated: 1473375383 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR.meta b/Assets/Oculus/VR.meta index 7f928c8..2dfe333 100644 --- a/Assets/Oculus/VR.meta +++ b/Assets/Oculus/VR.meta @@ -1,4 +1,9 @@ -fileFormatVersion: 2 -guid: 869fc009969608e4a9071237c584be0d -DefaultImporter: - userData: +fileFormatVersion: 2 +guid: 869fc009969608e4a9071237c584be0d +folderAsset: yes +timeCreated: 1538788975 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml.meta b/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml.meta index 1a052ad..192ca3f 100644 --- a/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml.meta +++ b/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 7a16cc136accf1f42bdc6f71f94b50ac timeCreated: 1475710636 -licenseType: Pro +licenseType: Store TextScriptImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Editor/OVRBuild.cs b/Assets/Oculus/VR/Editor/OVRBuild.cs index 7288c9b..5946e8e 100644 --- a/Assets/Oculus/VR/Editor/OVRBuild.cs +++ b/Assets/Oculus/VR/Editor/OVRBuild.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -41,7 +41,7 @@ partial class OculusBuildApp static void SetAndroidTarget() { EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.ASTC; - EditorUserBuildSettings.androidBuildSystem = AndroidBuildSystem.Internal; + EditorUserBuildSettings.androidBuildSystem = AndroidBuildSystem.Gradle; if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) { diff --git a/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs b/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs index 688d1de..45545ee 100644 --- a/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs +++ b/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -106,7 +106,7 @@ class OVREngineConfigurationUpdater if (!setPrefsForUtilities) return; - OVRPlugin.SendEvent("BuildTarget", EditorUserBuildSettings.activeBuildTarget.ToString()); + OVRPlugin.SendEvent("build_target", EditorUserBuildSettings.activeBuildTarget.ToString()); EnforceAndroidSettings(); EnforceInputManagerBindings(); #if UNITY_ANDROID @@ -221,6 +221,18 @@ class OVREngineConfigurationUpdater BindAxis(new Axis() { name = "Oculus_GearVR_DpadY", axis = 5, invert = true }); BindAxis(new Axis() { name = "Oculus_GearVR_LIndexTrigger", axis = 12, }); BindAxis(new Axis() { name = "Oculus_GearVR_RIndexTrigger", axis = 11, }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_Button2", positiveButton = "joystick button 0", gravity = 1000f, sensitivity = 1000f, type = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_Button4", positiveButton = "joystick button 2", gravity = 1000f, sensitivity = 1000f, type = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryThumbstick", positiveButton = "joystick button 8", gravity = 0f, dead = 0f, sensitivity = 0.1f, type = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryThumbstick", positiveButton = "joystick button 9", gravity = 0f, dead = 0f, sensitivity = 0.1f, type = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryIndexTrigger", dead = 0.19f, type = 2, axis = 8, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryIndexTrigger", dead = 0.19f, type = 2, axis = 9, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryHandTrigger", dead = 0.19f, type = 2, axis = 10, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryHandTrigger", dead = 0.19f, type = 2, axis = 11, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryThumbstickHorizontal", dead = 0.19f, type = 2, axis = 0, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryThumbstickVertical", dead = 0.19f, type = 2, axis = 1, joyNum = 0, invert = true }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryThumbstickHorizontal", dead = 0.19f, type = 2, axis = 3, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryThumbstickVertical", dead = 0.19f, type = 2, axis = 4, joyNum = 0, invert = true }); } catch { diff --git a/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs.meta b/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs.meta index dc57728..e6a23c9 100644 --- a/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs.meta +++ b/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 6c08392d306aac74a88ba571af63c985 timeCreated: 1499749379 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs.meta b/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs.meta index 4bf613e..b184edf 100644 --- a/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs.meta +++ b/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: fb6426f323b7f024ebb25886b5182c4c timeCreated: 1462825988 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: diff --git a/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs b/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs index 291f261..efd7290 100644 --- a/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs +++ b/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -32,11 +32,19 @@ using System.Diagnostics; [InitializeOnLoad] class OVRPluginUpdater { + enum PluginPlatform + { + Android, + AndroidUniversal, + OSXUniversal, + Win, + Win64, + } class PluginPackage { public string RootPath; public System.Version Version; - public Dictionary Plugins = new Dictionary(); + public Dictionary Plugins = new Dictionary(); public bool IsBundledPluginPackage() { @@ -46,16 +54,57 @@ class OVRPluginUpdater public bool IsEnabled() { // TODO: Check each individual platform rather than using the Win64 DLL status for the overall package status. - string win64PluginPath = ""; - if (Plugins.TryGetValue(BuildTarget.StandaloneWindows64, out win64PluginPath)) + string path = ""; + if (Plugins.TryGetValue(PluginPlatform.Win64, out path)) { - return File.Exists(win64PluginPath); + return File.Exists(path); + } + + return false; + } + + public bool IsAndroidUniversalEnabled() + { + string path = ""; + if (Plugins.TryGetValue(PluginPlatform.AndroidUniversal, out path)) + { + if (File.Exists(path)) + { + string basePath = GetCurrentProjectPath(); + string relPath = path.Substring(basePath.Length + 1); + + PluginImporter pi = PluginImporter.GetAtPath(relPath) as PluginImporter; + if (pi != null) + { + return pi.GetCompatibleWithPlatform(BuildTarget.Android); + } + } + } + + return false; + } + + public bool IsAndroidUniversalPresent() + { + string path = ""; + if (Plugins.TryGetValue(PluginPlatform.AndroidUniversal, out path)) + { + string disabledPath = path + GetDisabledPluginSuffix(); + + if (File.Exists(path) || File.Exists(disabledPath)) + { + return true; + } } return false; } } + private static bool restartPending = false; + private static bool unityVersionSupportsAndroidUniversal = false; + private static bool enableAndroidUniversalSupport = true; + static OVRPluginUpdater() { EditorApplication.delayCall += OnDelayCall; @@ -63,6 +112,14 @@ class OVRPluginUpdater static void OnDelayCall() { + if (enableAndroidUniversalSupport) + { +#if UNITY_2018_1_OR_NEWER + // Temporarily disable the AndroidUniversal plugin because of a plugin copying error in Unity + unityVersionSupportsAndroidUniversal = false; +#endif + } + if (ShouldAttemptPluginUpdate()) { AttemptPluginUpdate(true); @@ -75,16 +132,13 @@ class OVRPluginUpdater { RootPath = rootPath, Version = GetPluginVersion(rootPath), - Plugins = new Dictionary() + Plugins = new Dictionary() { - { BuildTarget.Android, rootPath + GetPluginBuildTargetSubPath(BuildTarget.Android) }, -#if UNITY_2017_3_OR_NEWER - { BuildTarget.StandaloneOSX, rootPath + GetPluginBuildTargetSubPath(BuildTarget.StandaloneOSX) }, -#else - { BuildTarget.StandaloneOSXUniversal, rootPath + GetPluginBuildTargetSubPath(BuildTarget.StandaloneOSXUniversal) }, -#endif - { BuildTarget.StandaloneWindows, rootPath + GetPluginBuildTargetSubPath(BuildTarget.StandaloneWindows) }, - { BuildTarget.StandaloneWindows64, rootPath + GetPluginBuildTargetSubPath(BuildTarget.StandaloneWindows64) }, + { PluginPlatform.Android, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.Android) }, + { PluginPlatform.AndroidUniversal, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.AndroidUniversal) }, + { PluginPlatform.OSXUniversal, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.OSXUniversal) }, + { PluginPlatform.Win, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.Win) }, + { PluginPlatform.Win64, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.Win64) }, } }; } @@ -141,26 +195,25 @@ class OVRPluginUpdater return basePath + pluginPath; } - private static string GetPluginBuildTargetSubPath(BuildTarget target) + private static string GetPluginBuildTargetSubPath(PluginPlatform target) { string path = string.Empty; switch (target) { - case BuildTarget.Android: + case PluginPlatform.Android: path = @"/Android/OVRPlugin.aar"; break; -#if UNITY_2017_3_OR_NEWER - case BuildTarget.StandaloneOSX: -#else - case BuildTarget.StandaloneOSXUniversal: -#endif + case PluginPlatform.AndroidUniversal: + path = @"/AndroidUniversal/OVRPlugin.aar"; + break; + case PluginPlatform.OSXUniversal: path = @"/OSXUniversal/OVRPlugin.bundle"; break; - case BuildTarget.StandaloneWindows: + case PluginPlatform.Win: path = @"/Win/OVRPlugin.dll"; break; - case BuildTarget.StandaloneWindows64: + case PluginPlatform.Win64: path = @"/Win64/OVRPlugin.dll"; break; default: @@ -192,7 +245,7 @@ class OVRPluginUpdater if (pluginVersion == invalidVersion) { //Unable to determine version from path, fallback to Win64 DLL meta data - path += GetPluginBuildTargetSubPath(BuildTarget.StandaloneWindows64); + path += GetPluginBuildTargetSubPath(PluginPlatform.Win64); if (!File.Exists(path)) { path += GetDisabledPluginSuffix(); @@ -216,7 +269,7 @@ class OVRPluginUpdater private static bool ShouldAttemptPluginUpdate() { - return autoUpdateEnabled && !restartPending && !Application.isPlaying; + return !UnitySupportsEnabledAndroidPlugin() || (autoUpdateEnabled && !restartPending && !Application.isPlaying); } private static void DisableAllUtilitiesPluginPackages() @@ -231,9 +284,10 @@ class OVRPluginUpdater { string basePath = GetCurrentProjectPath(); string relPath = path.Substring(basePath.Length + 1); + string relDisabledPath = relPath + GetDisabledPluginSuffix(); - AssetDatabase.MoveAsset(relPath, relPath + GetDisabledPluginSuffix()); - AssetDatabase.ImportAsset(relPath + GetDisabledPluginSuffix(), ImportAssetOptions.ForceUpdate); + AssetDatabase.MoveAsset(relPath, relDisabledPath); + AssetDatabase.ImportAsset(relDisabledPath, ImportAssetOptions.ForceUpdate); } } } @@ -246,15 +300,16 @@ class OVRPluginUpdater { foreach(var kvp in pluginPkg.Plugins) { - BuildTarget platform = kvp.Key; + PluginPlatform platform = kvp.Key; string path = kvp.Value; if ((Directory.Exists(path + GetDisabledPluginSuffix())) || (File.Exists(path + GetDisabledPluginSuffix()))) { string basePath = GetCurrentProjectPath(); string relPath = path.Substring(basePath.Length + 1); + string relDisabledPath = relPath + GetDisabledPluginSuffix(); - AssetDatabase.MoveAsset(relPath + GetDisabledPluginSuffix(), relPath); + AssetDatabase.MoveAsset(relDisabledPath, relPath); AssetDatabase.ImportAsset(relPath, ImportAssetOptions.ForceUpdate); PluginImporter pi = PluginImporter.GetAtPath(relPath) as PluginImporter; @@ -263,31 +318,31 @@ class OVRPluginUpdater continue; } + // Disable support for all platforms, then conditionally enable desired support below + pi.SetCompatibleWithEditor(false); pi.SetCompatibleWithAnyPlatform(false); + pi.SetCompatibleWithPlatform(BuildTarget.Android, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, false); +#if UNITY_2017_3_OR_NEWER + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, false); +#else + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXUniversal, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel64, false); +#endif switch (platform) { - case BuildTarget.Android: - pi.SetCompatibleWithPlatform(BuildTarget.Android, true); + case PluginPlatform.Android: + pi.SetCompatibleWithPlatform(BuildTarget.Android, !unityVersionSupportsAndroidUniversal); pi.SetPlatformData(BuildTarget.Android, "CPU", "ARMv7"); -#if UNITY_2017_3_OR_NEWER - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, false); -#else - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXUniversal, false); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel, false); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel64, false); -#endif - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows, false); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, false); - pi.SetCompatibleWithEditor(false); break; -#if UNITY_2017_3_OR_NEWER - case BuildTarget.StandaloneOSX: -#else - case BuildTarget.StandaloneOSXUniversal: -#endif - pi.SetCompatibleWithPlatform(BuildTarget.Android, false); - pi.SetPlatformData(BuildTarget.Android, "CPU", "ARMv7"); + case PluginPlatform.AndroidUniversal: + pi.SetCompatibleWithPlatform(BuildTarget.Android, unityVersionSupportsAndroidUniversal); + pi.SetPlatformData(BuildTarget.Android, "CPU", "ARM64"); + break; + case PluginPlatform.OSXUniversal: #if UNITY_2017_3_OR_NEWER pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, true); #else @@ -295,43 +350,21 @@ class OVRPluginUpdater pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel, true); pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel64, true); #endif - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows, false); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, false); pi.SetCompatibleWithEditor(true); pi.SetEditorData("CPU", "AnyCPU"); pi.SetEditorData("OS", "OSX"); pi.SetPlatformData("Editor", "CPU", "AnyCPU"); pi.SetPlatformData("Editor", "OS", "OSX"); break; - case BuildTarget.StandaloneWindows: - pi.SetCompatibleWithPlatform(BuildTarget.Android, false); - pi.SetPlatformData(BuildTarget.Android, "CPU", "ARMv7"); -#if UNITY_2017_3_OR_NEWER - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, false); -#else - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXUniversal, false); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel, false); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel64, false); -#endif + case PluginPlatform.Win: pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows, true); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, false); pi.SetCompatibleWithEditor(true); pi.SetEditorData("CPU", "X86"); pi.SetEditorData("OS", "Windows"); pi.SetPlatformData("Editor", "CPU", "X86"); pi.SetPlatformData("Editor", "OS", "Windows"); break; - case BuildTarget.StandaloneWindows64: - pi.SetCompatibleWithPlatform(BuildTarget.Android, false); - pi.SetPlatformData(BuildTarget.Android, "CPU", "ARMv7"); -#if UNITY_2017_3_OR_NEWER - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, false); -#else - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXUniversal, false); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel, false); - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel64, false); -#endif - pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows, false); + case PluginPlatform.Win64: pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, true); pi.SetCompatibleWithEditor(true); pi.SetEditorData("CPU", "X86_64"); @@ -351,7 +384,6 @@ class OVRPluginUpdater AssetDatabase.SaveAssets(); } - private static bool restartPending = false; private static readonly string autoUpdateEnabledKey = "Oculus_Utilities_OVRPluginUpdater_AutoUpdate_" + OVRManager.utilitiesVersion; private static bool autoUpdateEnabled { @@ -402,7 +434,6 @@ class OVRPluginUpdater } } } - } [MenuItem("Tools/Oculus/Update OVR Utilities Plugin")] @@ -413,6 +444,7 @@ class OVRPluginUpdater private static void AttemptPluginUpdate(bool triggeredByAutoUpdate) { + OVRPlugin.SendEvent("attempt_plugin_update_auto", triggeredByAutoUpdate.ToString()); autoUpdateEnabled = true; PluginPackage bundledPluginPkg = GetBundledPluginPackage(); @@ -437,6 +469,7 @@ class OVRPluginUpdater } } + bool reenableCurrentPluginPkg = false; PluginPackage targetPluginPkg = null; if ((newestUtilsPluginPkg != null) && (newestUtilsPluginPkg.Version > bundledPluginPkg.Version)) @@ -450,14 +483,21 @@ class OVRPluginUpdater { targetPluginPkg = bundledPluginPkg; } - - System.Version currentVersion = (enabledUtilsPluginPkg != null) ? enabledUtilsPluginPkg.Version : bundledPluginPkg.Version; + + PluginPackage currentPluginPkg = (enabledUtilsPluginPkg != null) ? enabledUtilsPluginPkg : bundledPluginPkg; + + if ((targetPluginPkg == null) && !UnitySupportsEnabledAndroidPlugin()) + { + // Force reenabling the current package to configure the correct android plugin for this unity version. + reenableCurrentPluginPkg = true; + targetPluginPkg = currentPluginPkg; + } if (targetPluginPkg == null) { if (!triggeredByAutoUpdate) { - EditorUtility.DisplayDialog("Update Oculus Utilities Plugin", "OVRPlugin is already up to date.\n\nCurrent version: " + currentVersion + "\nBundled version: " + bundledPluginPkg.Version, "Ok", ""); + EditorUtility.DisplayDialog("Update Oculus Utilities Plugin", "OVRPlugin is already up to date.\n\nCurrent version: " + currentPluginPkg.Version + "\nBundled version: " + bundledPluginPkg.Version, "Ok", ""); } return; // No update necessary. @@ -465,7 +505,18 @@ class OVRPluginUpdater System.Version targetVersion = targetPluginPkg.Version; - int dialogResult = EditorUtility.DisplayDialogComplex("Update Oculus Utilities Plugin", "Oculus Utilities has detected that a newer OVRPlugin is available. Using the newest version is recommended. Do you want to enable it?\n\nCurrent version: " + currentVersion + "\nAvailable version: " + targetVersion, "Yes", "No, Don't Ask Again", "No"); + string dialogBody = "Oculus Utilities has detected that a newer OVRPlugin is available. Using the newest version is recommended. Do you want to enable it?\n\nCurrent version: " + + currentPluginPkg.Version + + "\nAvailable version: " + + targetVersion; + + if (reenableCurrentPluginPkg) + { + dialogBody = "Oculus Utilities has detected a configuration change that requires re-enabling the current OVRPlugin. Do you want to proceed?\n\nCurrent version: " + + currentPluginPkg.Version; + } + + int dialogResult = EditorUtility.DisplayDialogComplex("Update Oculus Utilities Plugin", dialogBody, "Yes", "No, Don't Ask Again", "No"); bool userAcceptsUpdate = false; @@ -499,6 +550,30 @@ class OVRPluginUpdater } } + private static bool UnitySupportsEnabledAndroidPlugin() + { + List allUtilsPluginPkgs = GetAllUtilitiesPluginPackages(); + + foreach(PluginPackage pluginPkg in allUtilsPluginPkgs) + { + if (pluginPkg.IsEnabled()) + { + if (pluginPkg.IsAndroidUniversalEnabled() && !unityVersionSupportsAndroidUniversal) + { + // Android Universal should only be enabled on supported Unity versions since it can prevent app launch. + return false; + } + else if (!pluginPkg.IsAndroidUniversalEnabled() && pluginPkg.IsAndroidUniversalPresent() && unityVersionSupportsAndroidUniversal) + { + // Android Universal is present and should be enabled on supported Unity versions since ARM64 config will fail otherwise. + return false; + } + } + } + + return true; + } + private static void RestartUnityEditor() { restartPending = true; diff --git a/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs.meta b/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs.meta index ec95e43..db61148 100644 --- a/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs.meta +++ b/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 9e64a3a065da39f4caa17a7372962df6 timeCreated: 1493086775 -licenseType: Free +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs b/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs index 362f4e3..296bda6 100644 --- a/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs +++ b/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs.meta b/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs.meta index 192b4b4..911e463 100644 --- a/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs.meta +++ b/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 791840c2fc67dd3409b79f212fad7dd4 timeCreated: 1493148044 -licenseType: Free +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs.meta b/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs.meta index fde246e..6a0655d 100644 --- a/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs.meta +++ b/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: b8b9ee1d7b188284f90d944cd54eb026 timeCreated: 1462825988 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: diff --git a/Assets/Oculus/VR/Materials/GearVrController.meta b/Assets/Oculus/VR/Materials/GearVrController.meta index 6596487..8349453 100644 --- a/Assets/Oculus/VR/Materials/GearVrController.meta +++ b/Assets/Oculus/VR/Materials/GearVrController.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 856d6414a7cf7e94888ee2d5f959efd7 folderAsset: yes timeCreated: 1488168366 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Materials/GearVrController/GearVrControllerMat_1024.mat.meta b/Assets/Oculus/VR/Materials/GearVrController/GearVrControllerMat_1024.mat.meta index 850f1d9..9eeec83 100644 --- a/Assets/Oculus/VR/Materials/GearVrController/GearVrControllerMat_1024.mat.meta +++ b/Assets/Oculus/VR/Materials/GearVrController/GearVrControllerMat_1024.mat.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: a62abb16d1535b647956d3be68acdd59 timeCreated: 1488144668 -licenseType: Free +licenseType: Store NativeFormatImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Materials/GearVrController/GearVrControllerMat_128.mat.meta b/Assets/Oculus/VR/Materials/GearVrController/GearVrControllerMat_128.mat.meta index 888e2c1..e24c8fd 100644 --- a/Assets/Oculus/VR/Materials/GearVrController/GearVrControllerMat_128.mat.meta +++ b/Assets/Oculus/VR/Materials/GearVrController/GearVrControllerMat_128.mat.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: f6ccc53b9bcfb114996e76ee88ce6948 timeCreated: 1488144149 -licenseType: Free +licenseType: Store NativeFormatImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Meshes/GearVrController.meta b/Assets/Oculus/VR/Meshes/GearVrController.meta index 0301039..af1b3e7 100644 --- a/Assets/Oculus/VR/Meshes/GearVrController.meta +++ b/Assets/Oculus/VR/Meshes/GearVrController.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 1f5d118b13c965a40a0cd4e358205ac3 folderAsset: yes timeCreated: 1486168258 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Meshes/GearVrController/GearVrController.fbx.meta b/Assets/Oculus/VR/Meshes/GearVrController/GearVrController.fbx.meta index e3bf43c..60008fc 100644 --- a/Assets/Oculus/VR/Meshes/GearVrController/GearVrController.fbx.meta +++ b/Assets/Oculus/VR/Meshes/GearVrController/GearVrController.fbx.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 84c37137326e7b943a87be7ae2a7ea19 timeCreated: 1488144149 -licenseType: Free +licenseType: Store ModelImporter: serializedVersion: 19 fileIDToRecycleName: diff --git a/Assets/Oculus/VR/Meshes/GearVrController/Materials.meta b/Assets/Oculus/VR/Meshes/GearVrController/Materials.meta index c2a2508..03e0fe0 100644 --- a/Assets/Oculus/VR/Meshes/GearVrController/Materials.meta +++ b/Assets/Oculus/VR/Meshes/GearVrController/Materials.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 1f3bd5b7b89f2bc43b851174a56851f3 folderAsset: yes timeCreated: 1488174699 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Meshes/GearVrController/Materials/malibuController_color_1024.mat.meta b/Assets/Oculus/VR/Meshes/GearVrController/Materials/malibuController_color_1024.mat.meta index d8d0513..c0c0006 100644 --- a/Assets/Oculus/VR/Meshes/GearVrController/Materials/malibuController_color_1024.mat.meta +++ b/Assets/Oculus/VR/Meshes/GearVrController/Materials/malibuController_color_1024.mat.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 54fb84af388c3734b9a4cae0b38e2c68 timeCreated: 1488174699 -licenseType: Free +licenseType: Store NativeFormatImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Meshes/OculusGoController.meta b/Assets/Oculus/VR/Meshes/OculusGoController.meta index d78be16..a7f4d3b 100644 --- a/Assets/Oculus/VR/Meshes/OculusGoController.meta +++ b/Assets/Oculus/VR/Meshes/OculusGoController.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 2f5a65d8d712ba9458f8b931e7db3113 folderAsset: yes timeCreated: 1513040713 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Meshes/OculusGoController/Materials.meta b/Assets/Oculus/VR/Meshes/OculusGoController/Materials.meta index 3ec83eb..4c7abd3 100644 --- a/Assets/Oculus/VR/Meshes/OculusGoController/Materials.meta +++ b/Assets/Oculus/VR/Meshes/OculusGoController/Materials.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 8be9af30e3bae8c47a188358ead030df folderAsset: yes timeCreated: 1513040723 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Meshes/OculusGoController/Materials/OculusGoControllerMat.mat.meta b/Assets/Oculus/VR/Meshes/OculusGoController/Materials/OculusGoControllerMat.mat.meta index f73daae..bb52467 100644 --- a/Assets/Oculus/VR/Meshes/OculusGoController/Materials/OculusGoControllerMat.mat.meta +++ b/Assets/Oculus/VR/Meshes/OculusGoController/Materials/OculusGoControllerMat.mat.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 6c0b208d35ece4a459821be19df69561 timeCreated: 1513127267 -licenseType: Free +licenseType: Store NativeFormatImporter: mainObjectFileID: 2100000 userData: diff --git a/Assets/Oculus/VR/Meshes/OculusGoController/OculusGoController.fbx.meta b/Assets/Oculus/VR/Meshes/OculusGoController/OculusGoController.fbx.meta index 3ce7ada..e737326 100644 --- a/Assets/Oculus/VR/Meshes/OculusGoController/OculusGoController.fbx.meta +++ b/Assets/Oculus/VR/Meshes/OculusGoController/OculusGoController.fbx.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: e0f1914fdbfd3764faeff5474c0cbe1e timeCreated: 1513040723 -licenseType: Free +licenseType: Store ModelImporter: serializedVersion: 19 fileIDToRecycleName: diff --git a/Assets/Oculus/VR/Plugins.meta b/Assets/Oculus/VR/Plugins.meta index 62fe905..f6141c8 100644 --- a/Assets/Oculus/VR/Plugins.meta +++ b/Assets/Oculus/VR/Plugins.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: e1f06b56b3e7614419c5db24e2262938 folderAsset: yes timeCreated: 1493321336 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Plugins/1.28.0/Android/OVRPlugin.aar b/Assets/Oculus/VR/Plugins/1.28.0/Android/OVRPlugin.aar.disabled similarity index 100% rename from Assets/Oculus/VR/Plugins/1.28.0/Android/OVRPlugin.aar rename to Assets/Oculus/VR/Plugins/1.28.0/Android/OVRPlugin.aar.disabled diff --git a/Assets/Oculus/VR/Plugins/1.28.0/Android/OVRPlugin.aar.meta b/Assets/Oculus/VR/Plugins/1.28.0/Android/OVRPlugin.aar.disabled.meta similarity index 100% rename from Assets/Oculus/VR/Plugins/1.28.0/Android/OVRPlugin.aar.meta rename to Assets/Oculus/VR/Plugins/1.28.0/Android/OVRPlugin.aar.disabled.meta diff --git a/Assets/Oculus/VR/Plugins/1.28.0/Win/OVRPlugin.dll b/Assets/Oculus/VR/Plugins/1.28.0/Win/OVRPlugin.dll.disabled similarity index 100% rename from Assets/Oculus/VR/Plugins/1.28.0/Win/OVRPlugin.dll rename to Assets/Oculus/VR/Plugins/1.28.0/Win/OVRPlugin.dll.disabled diff --git a/Assets/Oculus/VR/Plugins/1.28.0/Win/OVRPlugin.dll.meta b/Assets/Oculus/VR/Plugins/1.28.0/Win/OVRPlugin.dll.disabled.meta similarity index 100% rename from Assets/Oculus/VR/Plugins/1.28.0/Win/OVRPlugin.dll.meta rename to Assets/Oculus/VR/Plugins/1.28.0/Win/OVRPlugin.dll.disabled.meta diff --git a/Assets/Oculus/VR/Plugins/1.28.0/Win64/OVRPlugin.dll b/Assets/Oculus/VR/Plugins/1.28.0/Win64/OVRPlugin.dll.disabled similarity index 100% rename from Assets/Oculus/VR/Plugins/1.28.0/Win64/OVRPlugin.dll rename to Assets/Oculus/VR/Plugins/1.28.0/Win64/OVRPlugin.dll.disabled diff --git a/Assets/Oculus/VR/Plugins/1.28.0/Win64/OVRPlugin.dll.meta b/Assets/Oculus/VR/Plugins/1.28.0/Win64/OVRPlugin.dll.disabled.meta similarity index 100% rename from Assets/Oculus/VR/Plugins/1.28.0/Win64/OVRPlugin.dll.meta rename to Assets/Oculus/VR/Plugins/1.28.0/Win64/OVRPlugin.dll.disabled.meta diff --git a/Assets/Oculus/VR/Plugins/1.30.0.meta b/Assets/Oculus/VR/Plugins/1.30.0.meta new file mode 100644 index 0000000..cb79bc8 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7a0f3def8c730ab4085b16e4eb4c41c7 +folderAsset: yes +timeCreated: 1538673149 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Android.meta b/Assets/Oculus/VR/Plugins/1.30.0/Android.meta new file mode 100644 index 0000000..969515e --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0/Android.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 54fc7d014e615dd47b0c4f5d46b6a6dc +folderAsset: yes +timeCreated: 1538673150 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Android/OVRPlugin.aar b/Assets/Oculus/VR/Plugins/1.30.0/Android/OVRPlugin.aar new file mode 100644 index 0000000..7b2baef Binary files /dev/null and b/Assets/Oculus/VR/Plugins/1.30.0/Android/OVRPlugin.aar differ diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Android/OVRPlugin.aar.meta b/Assets/Oculus/VR/Plugins/1.30.0/Android/OVRPlugin.aar.meta new file mode 100644 index 0000000..59976a6 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0/Android/OVRPlugin.aar.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: 55c6194daef86974299fbe67af9d5126 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal.meta b/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal.meta new file mode 100644 index 0000000..50d3f5f --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: be115da2805ff3f428754a29d8cb93e3 +folderAsset: yes +timeCreated: 1538673151 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal/OVRPlugin.aar b/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal/OVRPlugin.aar new file mode 100644 index 0000000..3368ff5 Binary files /dev/null and b/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal/OVRPlugin.aar differ diff --git a/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal/OVRPlugin.aar.meta b/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal/OVRPlugin.aar.meta new file mode 100644 index 0000000..1fd2b51 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0/AndroidUniversal/OVRPlugin.aar.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: f61df922762206440884256c0c05769a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARM64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Win.meta b/Assets/Oculus/VR/Plugins/1.30.0/Win.meta new file mode 100644 index 0000000..27d9392 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0/Win.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b3ce532e3b3a6f04eb031d8a999fcf63 +folderAsset: yes +timeCreated: 1538673150 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Win/OVRPlugin.dll b/Assets/Oculus/VR/Plugins/1.30.0/Win/OVRPlugin.dll new file mode 100644 index 0000000..9c81516 Binary files /dev/null and b/Assets/Oculus/VR/Plugins/1.30.0/Win/OVRPlugin.dll differ diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Win/OVRPlugin.dll.meta b/Assets/Oculus/VR/Plugins/1.30.0/Win/OVRPlugin.dll.meta new file mode 100644 index 0000000..814fe33 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0/Win/OVRPlugin.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: a34a908e65b21244e8986f1d4a4ad513 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Editor + second: + enabled: 0 + settings: + CPU: X86 + OS: Windows + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: X86 + DefaultValueInitialized: true + OS: Windows + - first: + Standalone: Win + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Win64.meta b/Assets/Oculus/VR/Plugins/1.30.0/Win64.meta new file mode 100644 index 0000000..4812b11 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0/Win64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b3fefd84751188540b627f29ead86888 +folderAsset: yes +timeCreated: 1538673150 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Win64/OVRPlugin.dll b/Assets/Oculus/VR/Plugins/1.30.0/Win64/OVRPlugin.dll new file mode 100644 index 0000000..4c8b23e Binary files /dev/null and b/Assets/Oculus/VR/Plugins/1.30.0/Win64/OVRPlugin.dll differ diff --git a/Assets/Oculus/VR/Plugins/1.30.0/Win64/OVRPlugin.dll.meta b/Assets/Oculus/VR/Plugins/1.30.0/Win64/OVRPlugin.dll.meta new file mode 100644 index 0000000..fa87a3d --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.30.0/Win64/OVRPlugin.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 3eb13d4a4fc029f4e9cca90c4bded47d +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Editor + second: + enabled: 0 + settings: + CPU: X86_64 + OS: Windows + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: X86_64 + DefaultValueInitialized: true + OS: Windows + - first: + Standalone: Win64 + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/MacOSX.meta b/Assets/Oculus/VR/Plugins/MacOSX.meta index 0088008..3a388d7 100644 --- a/Assets/Oculus/VR/Plugins/MacOSX.meta +++ b/Assets/Oculus/VR/Plugins/MacOSX.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 3b0808cda9a8d4b458fad2788f63ff7f folderAsset: yes timeCreated: 1522878718 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle.meta index a1ca751..e180086 100644 --- a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle.meta +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 537f08a1aac8553459f3574a939a05ed folderAsset: yes timeCreated: 1441326310 -licenseType: Pro +licenseType: Store PluginImporter: serializedVersion: 2 iconMap: {} @@ -10,6 +10,30 @@ PluginImporter: isPreloaded: 0 isOverridable: 0 platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude Win: 0 + Exclude Win64: 0 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: OSX data: first: '': WP8 @@ -25,7 +49,7 @@ PluginImporter: second: enabled: 0 settings: - CPU: AnyCPU + CPU: ARMv7 data: first: Any: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents.meta index a609e8a..84554d1 100644 --- a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents.meta +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 648a2605a2bc848728f27adc59fe8010 folderAsset: yes timeCreated: 1441327083 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist.meta index b23513b..869e1dc 100644 --- a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist.meta +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 5de957de5187b406687f99aa5a30871b timeCreated: 1441327083 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS.meta index ad324a3..75806c1 100644 --- a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS.meta +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 8fad9c333897547a59f91edacd69f7db folderAsset: yes timeCreated: 1441327083 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad.meta index 6976cab..0100c74 100644 --- a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad.meta +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 3af79ea9cc1984e498b6a7e5409cdcac timeCreated: 1441327083 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Plugins/placeholder.txt.meta b/Assets/Oculus/VR/Plugins/placeholder.txt.meta index 03ab984..9aebb0e 100644 --- a/Assets/Oculus/VR/Plugins/placeholder.txt.meta +++ b/Assets/Oculus/VR/Plugins/placeholder.txt.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 6c111fff50cd6404baf2b833432e6ee8 timeCreated: 1493325988 -licenseType: Free +licenseType: Store TextScriptImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab b/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab index 9bfbc7d..327b8c0 100644 --- a/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab +++ b/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab @@ -5,10 +5,10 @@ GameObject: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + serializedVersion: 5 m_Component: - - 4: {fileID: 400000} - - 20: {fileID: 20000010189485334} + - component: {fileID: 400000} + - component: {fileID: 20000010189485334} m_Layer: 0 m_Name: RightEyeAnchor m_TagString: Untagged @@ -21,11 +21,11 @@ GameObject: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + serializedVersion: 5 m_Component: - - 4: {fileID: 400002} - - 81: {fileID: 8100000} - - 20: {fileID: 2037080} + - component: {fileID: 400002} + - component: {fileID: 8100000} + - component: {fileID: 2037080} m_Layer: 0 m_Name: CenterEyeAnchor m_TagString: MainCamera @@ -38,11 +38,12 @@ GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + serializedVersion: 5 m_Component: - - 4: {fileID: 400004} - - 114: {fileID: 11400010} - - 114: {fileID: 11400000} + - component: {fileID: 400004} + - component: {fileID: 11400010} + - component: {fileID: 11400000} + - component: {fileID: 114473266101150724} m_Layer: 0 m_Name: OVRCameraRig m_TagString: Untagged @@ -55,10 +56,10 @@ GameObject: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + serializedVersion: 5 m_Component: - - 4: {fileID: 400006} - - 20: {fileID: 20000012175207052} + - component: {fileID: 400006} + - component: {fileID: 20000012175207052} m_Layer: 0 m_Name: LeftEyeAnchor m_TagString: MainCamera @@ -71,9 +72,9 @@ GameObject: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + serializedVersion: 5 m_Component: - - 4: {fileID: 482130} + - component: {fileID: 482130} m_Layer: 0 m_Name: LeftHandAnchor m_TagString: Untagged @@ -86,9 +87,9 @@ GameObject: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + serializedVersion: 5 m_Component: - - 4: {fileID: 487254} + - component: {fileID: 487254} m_Layer: 0 m_Name: RightHandAnchor m_TagString: Untagged @@ -101,9 +102,9 @@ GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + serializedVersion: 5 m_Component: - - 4: {fileID: 459718} + - component: {fileID: 459718} m_Layer: 0 m_Name: TrackingSpace m_TagString: Untagged @@ -116,9 +117,9 @@ GameObject: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + serializedVersion: 5 m_Component: - - 4: {fileID: 468682} + - component: {fileID: 468682} m_Layer: 0 m_Name: TrackerAnchor m_TagString: Untagged @@ -135,10 +136,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 459718} m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &400002 Transform: m_ObjectHideFlags: 1 @@ -148,10 +149,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 459718} m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &400004 Transform: m_ObjectHideFlags: 1 @@ -161,11 +162,11 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 459718} m_Father: {fileID: 0} m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &400006 Transform: m_ObjectHideFlags: 1 @@ -175,10 +176,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 459718} m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &459718 Transform: m_ObjectHideFlags: 1 @@ -188,7 +189,6 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 400006} - {fileID: 400002} @@ -198,6 +198,7 @@ Transform: - {fileID: 487254} m_Father: {fileID: 400004} m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &468682 Transform: m_ObjectHideFlags: 1 @@ -207,10 +208,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 459718} m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &482130 Transform: m_ObjectHideFlags: 1 @@ -220,10 +221,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 459718} m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &487254 Transform: m_ObjectHideFlags: 1 @@ -233,10 +234,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 459718} m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!20 &2037080 Camera: m_ObjectHideFlags: 1 @@ -267,6 +268,8 @@ Camera: m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 @@ -291,21 +294,44 @@ MonoBehaviour: m_EditorClassIdentifier: queueAhead: 1 useRecommendedMSAALevel: 0 + _monoscopic: 0 enableAdaptiveResolution: 0 minRenderScale: 0.7 maxRenderScale: 1 + _headPoseRelativeOffsetRotation: {x: 0, y: 0, z: 0} + _headPoseRelativeOffsetTranslation: {x: 0, y: 0, z: 0} + expandMixedRealityCapturePropertySheet: 0 enableMixedReality: 0 - useDirectComposition: 0 - greenScreenColorToleranceA: 20 - greenScreenColorToleranceB: 15 - greenScreenColorAlphaCutoff: 0.01 - greenScreenColorShadows: 0.02 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 _trackingOriginType: 0 usePositionTracking: 1 useRotationTracking: 1 useIPDInPositionTracking: 1 resetTrackerOnLoad: 0 - multipleMainCameraWarningPresented: 0 + AllowRecenter: 1 + _reorientHMDOnControllerRecenter: 1 --- !u!114 &11400010 MonoBehaviour: m_ObjectHideFlags: 1 @@ -360,6 +386,8 @@ Camera: m_TargetDisplay: 0 m_TargetEye: 2 m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 @@ -394,7 +422,25 @@ Camera: m_TargetDisplay: 0 m_TargetEye: 1 m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 m_StereoMirrorMode: 0 +--- !u!114 &114473266101150724 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5178bc8574ce2bf4388e787a2e2af326, type: 3} + m_Name: + m_EditorClassIdentifier: + opMode: 1 + resetHmdPoseOnRelease: 1 + resetHmdPoseByMiddleMouseButton: 1 + activateKeys: 3201000031010000 + pitchKeys: 3401000033010000 diff --git a/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab.meta b/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab.meta index a843125..cc45bd7 100644 --- a/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab.meta +++ b/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 7a400e96d4650ff4e827a7e727fad81d timeCreated: 1464847331 -licenseType: Pro +licenseType: Store NativeFormatImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab b/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab index 179fb0a..26008d8 100644 --- a/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab +++ b/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab @@ -10,6 +10,7 @@ GameObject: - component: {fileID: 400008} - component: {fileID: 11400020} - component: {fileID: 11400002} + - component: {fileID: 114814064252544740} m_Layer: 0 m_Name: OVRCameraRig m_TagString: Untagged @@ -354,9 +355,12 @@ MonoBehaviour: m_EditorClassIdentifier: queueAhead: 1 useRecommendedMSAALevel: 0 + _monoscopic: 0 enableAdaptiveResolution: 0 minRenderScale: 0.7 maxRenderScale: 1 + _headPoseRelativeOffsetRotation: {x: 0, y: 0, z: 0} + _headPoseRelativeOffsetTranslation: {x: 0, y: 0, z: 0} expandMixedRealityCapturePropertySheet: 0 enableMixedReality: 0 compositionMethod: 0 @@ -387,6 +391,8 @@ MonoBehaviour: useRotationTracking: 1 useIPDInPositionTracking: 1 resetTrackerOnLoad: 0 + AllowRecenter: 1 + _reorientHMDOnControllerRecenter: 1 --- !u!114 &11400010 MonoBehaviour: m_ObjectHideFlags: 1 @@ -404,10 +410,14 @@ MonoBehaviour: JumpForce: 0.3 RotationAmount: 1.5 RotationRatchet: 45 + SnapRotation: 1 + FixedSpeedSteps: 0 HmdResetsY: 1 HmdRotatesY: 1 GravityModifier: 1 useProfileData: 1 + EnableLinearMovement: 1 + EnableRotation: 1 --- !u!114 &11400020 MonoBehaviour: m_ObjectHideFlags: 1 @@ -435,6 +445,7 @@ MonoBehaviour: fadeTime: 2 fadeColor: {r: 0.01, g: 0.01, b: 0.01, a: 1} fadeOnStart: 1 + renderQueue: 5000 --- !u!114 &11462408 MonoBehaviour: m_ObjectHideFlags: 1 @@ -489,3 +500,19 @@ Prefab: m_ParentPrefab: {fileID: 0} m_RootGameObject: {fileID: 100008} m_IsPrefabParent: 1 +--- !u!114 &114814064252544740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5178bc8574ce2bf4388e787a2e2af326, type: 3} + m_Name: + m_EditorClassIdentifier: + opMode: 1 + resetHmdPoseOnRelease: 1 + resetHmdPoseByMiddleMouseButton: 1 + activateKeys: 3201000031010000 + pitchKeys: 3401000033010000 diff --git a/Assets/Oculus/VR/Prefabs/TrackedRemote.prefab.meta b/Assets/Oculus/VR/Prefabs/TrackedRemote.prefab.meta index f4e2875..ddb2ed2 100644 --- a/Assets/Oculus/VR/Prefabs/TrackedRemote.prefab.meta +++ b/Assets/Oculus/VR/Prefabs/TrackedRemote.prefab.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: d9809c5e8418bb047bf2c8ba1d1a2cec timeCreated: 1486168892 -licenseType: Free +licenseType: Store NativeFormatImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Resources.meta b/Assets/Oculus/VR/Resources.meta index 8758267..565abcf 100644 --- a/Assets/Oculus/VR/Resources.meta +++ b/Assets/Oculus/VR/Resources.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 807714291dbf2a54c9b3975c271b2493 folderAsset: yes timeCreated: 1466707364 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Resources/Cubemap Blit.shader.meta b/Assets/Oculus/VR/Resources/Cubemap Blit.shader.meta index 849ae16..30d0f65 100644 --- a/Assets/Oculus/VR/Resources/Cubemap Blit.shader.meta +++ b/Assets/Oculus/VR/Resources/Cubemap Blit.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 561ccac587275c745aec500620f12fc7 timeCreated: 1507678760 -licenseType: Free +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader.meta b/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader.meta index bb6256b..306ec7e 100644 --- a/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader.meta +++ b/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 2bd7618c3fa0e4b4ab8e08dc3fadc376 timeCreated: 1497574409 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader.meta b/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader.meta index 2e386c0..354270d 100644 --- a/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader.meta +++ b/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: a8577c885e80d8043946ac5b7abcf9a1 timeCreated: 1497574409 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc.meta b/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc.meta index 172fb64..a105e53 100644 --- a/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc.meta +++ b/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 680577023e93e564c9b00f18b0164afa timeCreated: 1503944830 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader.meta b/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader.meta index e08ab95..a72bde3 100644 --- a/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader.meta +++ b/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 2ab721dccaa7e6f4693cedd904dfdcac timeCreated: 1494743027 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/OVRMRUnlit.shader.meta b/Assets/Oculus/VR/Resources/OVRMRUnlit.shader.meta index 5744562..43380aa 100644 --- a/Assets/Oculus/VR/Resources/OVRMRUnlit.shader.meta +++ b/Assets/Oculus/VR/Resources/OVRMRUnlit.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 9aa46566e1d86644c9a55e3037e935f6 timeCreated: 1504826310 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader.meta b/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader.meta index 3b5e84d..11edb84 100644 --- a/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader.meta +++ b/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 38ad33c152e32ee46a9bbbb0e656f7e1 timeCreated: 1504826310 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/Texture2D Blit.shader.meta b/Assets/Oculus/VR/Resources/Texture2D Blit.shader.meta index 7e8a996..1375862 100644 --- a/Assets/Oculus/VR/Resources/Texture2D Blit.shader.meta +++ b/Assets/Oculus/VR/Resources/Texture2D Blit.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: a31796e9e8816c7448b55d584c9417f1 timeCreated: 1498190241 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/Underlay Impostor.shader.meta b/Assets/Oculus/VR/Resources/Underlay Impostor.shader.meta index 6cdc866..c351671 100644 --- a/Assets/Oculus/VR/Resources/Underlay Impostor.shader.meta +++ b/Assets/Oculus/VR/Resources/Underlay Impostor.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: eaeac9ce83896a04691d2590189776f5 timeCreated: 1471282585 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader.meta b/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader.meta index 5b73e5b..da76c87 100644 --- a/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader.meta +++ b/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: d6708eb99dec8334fb83db57b764097a timeCreated: 1470867310 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader.meta b/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader.meta index 4dd2ff7..3da1ea9 100644 --- a/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader.meta +++ b/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: ced943c76cb8fb8489bab18c3dfcdcd3 timeCreated: 1435284538 -licenseType: Pro +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity.meta b/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity.meta index 20a26d6..2fc4597 100644 --- a/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity.meta +++ b/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: d56af3aeb2176e7459f753c1c2e2dd97 timeCreated: 1486173281 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Scenes/Trivial.unity.meta b/Assets/Oculus/VR/Scenes/Trivial.unity.meta index b4a1401..04addcc 100644 --- a/Assets/Oculus/VR/Scenes/Trivial.unity.meta +++ b/Assets/Oculus/VR/Scenes/Trivial.unity.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: d8d21f2460d13554780e4af04a9e0d6e timeCreated: 1427350486 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Scripts/Composition.meta b/Assets/Oculus/VR/Scripts/Composition.meta index 758acd7..056bd3f 100644 --- a/Assets/Oculus/VR/Scripts/Composition.meta +++ b/Assets/Oculus/VR/Scripts/Composition.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 1f92828e69374384b8cb197653871a6e folderAsset: yes timeCreated: 1502989983 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs.meta index 60b864f..f556fe5 100644 --- a/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs.meta +++ b/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 70818bad1fe6859439b190a61dfb6eb8 timeCreated: 1503089686 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs.meta index 77ca9d0..a0bf0ed 100644 --- a/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs.meta +++ b/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 829a382f3380d4b46ad9670463232a0b timeCreated: 1502990005 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs.meta index e59ac18..be1a0e9 100644 --- a/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs.meta +++ b/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 43bf91d46b2eb874a842be95aee2cc9a timeCreated: 1502992822 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs.meta index 5b7706c..cd1305e 100644 --- a/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs.meta +++ b/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 8e9d1c62d6c68c7429ce265558cfd2b2 timeCreated: 1502990248 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs.meta index 228eb67..4a21a41 100644 --- a/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs.meta +++ b/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 2c109ff55176f71418ec2c06d1b5d28e timeCreated: 1502990231 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs.meta index f998d77..7da346c 100644 --- a/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs.meta +++ b/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 3c02efcdd3fb2aa4e9c641b0c2a54b9a timeCreated: 1502990248 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Editor.meta b/Assets/Oculus/VR/Scripts/Editor.meta index 68c33e1..1173d0a 100644 --- a/Assets/Oculus/VR/Scripts/Editor.meta +++ b/Assets/Oculus/VR/Scripts/Editor.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: e87d4bbdfc8d17445b4a41760b401026 folderAsset: yes timeCreated: 1510282190 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs.meta b/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs.meta index 4ed7ed0..162a4e5 100644 --- a/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs.meta +++ b/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 9b07d18088099f94fa00fc15e64b2b17 timeCreated: 1502747851 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVRBoundary.cs.meta b/Assets/Oculus/VR/Scripts/OVRBoundary.cs.meta index 186477c..db8f70c 100644 --- a/Assets/Oculus/VR/Scripts/OVRBoundary.cs.meta +++ b/Assets/Oculus/VR/Scripts/OVRBoundary.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 332b8e08854932543ba356eec601c0ef timeCreated: 1470352252 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVRCameraRig.cs b/Assets/Oculus/VR/Scripts/OVRCameraRig.cs index 6641e99..4a49584 100644 --- a/Assets/Oculus/VR/Scripts/OVRCameraRig.cs +++ b/Assets/Oculus/VR/Scripts/OVRCameraRig.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -24,6 +24,14 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +#if UNITY_2017_2_OR_NEWER +using InputTracking = UnityEngine.XR.InputTracking; +using Node = UnityEngine.XR.XRNode; +#else +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +#endif + /// /// A head-tracked stereoscopic virtual reality camera rig. /// @@ -136,34 +144,29 @@ public class OVRCameraRig : MonoBehaviour } bool monoscopic = OVRManager.instance.monoscopic; + bool hmdPresent = OVRNodeStateProperties.IsHmdPresent(); OVRPose tracker = OVRManager.tracker.GetPose(); trackerAnchor.localRotation = tracker.orientation; -#if UNITY_2017_2_OR_NEWER - centerEyeAnchor.localRotation = UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.CenterEye); - leftEyeAnchor.localRotation = monoscopic ? centerEyeAnchor.localRotation : UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.LeftEye); - rightEyeAnchor.localRotation = monoscopic ? centerEyeAnchor.localRotation : UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.RightEye); -#else - centerEyeAnchor.localRotation = UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.CenterEye); - leftEyeAnchor.localRotation = monoscopic ? centerEyeAnchor.localRotation : UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.LeftEye); - rightEyeAnchor.localRotation = monoscopic ? centerEyeAnchor.localRotation : UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.RightEye); -#endif - leftHandAnchor.localRotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.LTouch); - rightHandAnchor.localRotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTouch); + + Quaternion emulatedRotation = Quaternion.Euler(-OVRManager.instance.headPoseRelativeOffsetRotation.x, -OVRManager.instance.headPoseRelativeOffsetRotation.y, OVRManager.instance.headPoseRelativeOffsetRotation.z); + + centerEyeAnchor.localRotation = hmdPresent ? InputTracking.GetLocalRotation(Node.CenterEye) : emulatedRotation; + leftEyeAnchor.localRotation = (!hmdPresent || monoscopic) ? centerEyeAnchor.localRotation : InputTracking.GetLocalRotation(Node.LeftEye); + rightEyeAnchor.localRotation = (!hmdPresent || monoscopic) ? centerEyeAnchor.localRotation : InputTracking.GetLocalRotation(Node.RightEye); + + leftHandAnchor.localRotation = InputTracking.GetLocalRotation(Node.LeftHand); + rightHandAnchor.localRotation = InputTracking.GetLocalRotation(Node.RightHand); trackerAnchor.localPosition = tracker.position; -#if UNITY_2017_2_OR_NEWER - centerEyeAnchor.localPosition = UnityEngine.XR.InputTracking.GetLocalPosition(UnityEngine.XR.XRNode.CenterEye); - leftEyeAnchor.localPosition = monoscopic ? centerEyeAnchor.localPosition : UnityEngine.XR.InputTracking.GetLocalPosition(UnityEngine.XR.XRNode.LeftEye); - rightEyeAnchor.localPosition = monoscopic ? centerEyeAnchor.localPosition : UnityEngine.XR.InputTracking.GetLocalPosition(UnityEngine.XR.XRNode.RightEye); -#else - centerEyeAnchor.localPosition = UnityEngine.VR.InputTracking.GetLocalPosition(UnityEngine.VR.VRNode.CenterEye); - leftEyeAnchor.localPosition = monoscopic ? centerEyeAnchor.localPosition : UnityEngine.VR.InputTracking.GetLocalPosition(UnityEngine.VR.VRNode.LeftEye); - rightEyeAnchor.localPosition = monoscopic ? centerEyeAnchor.localPosition : UnityEngine.VR.InputTracking.GetLocalPosition(UnityEngine.VR.VRNode.RightEye); -#endif - leftHandAnchor.localPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.LTouch); - rightHandAnchor.localPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch); + + centerEyeAnchor.localPosition = hmdPresent ? InputTracking.GetLocalPosition(Node.CenterEye) : OVRManager.instance.headPoseRelativeOffsetTranslation; + leftEyeAnchor.localPosition = (!hmdPresent || monoscopic) ? centerEyeAnchor.localPosition : InputTracking.GetLocalPosition(Node.LeftEye); + rightEyeAnchor.localPosition = (!hmdPresent || monoscopic) ? centerEyeAnchor.localPosition : InputTracking.GetLocalPosition(Node.RightEye); + + leftHandAnchor.localPosition = InputTracking.GetLocalPosition(Node.LeftHand); + rightHandAnchor.localPosition = InputTracking.GetLocalPosition(Node.RightHand); RaiseUpdatedAnchorsEvent(); } @@ -293,13 +296,9 @@ public class OVRCameraRig : MonoBehaviour // The ideal approach would be using UnityEngine.VR.VRNode.TrackingReference, then we would not have to depend on the OVRCameraRig. Unfortunately, it is not available in Unity 5.4.3 OVRPose headPose; -#if UNITY_2017_2_OR_NEWER - headPose.position = UnityEngine.XR.InputTracking.GetLocalPosition(UnityEngine.XR.XRNode.Head); - headPose.orientation = UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.Head); -#else - headPose.position = UnityEngine.VR.InputTracking.GetLocalPosition(UnityEngine.VR.VRNode.Head); - headPose.orientation = UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.Head); -#endif + + headPose.position = InputTracking.GetLocalPosition(Node.Head); + headPose.orientation = InputTracking.GetLocalRotation(Node.Head); OVRPose invHeadPose = headPose.Inverse(); Matrix4x4 invHeadMatrix = Matrix4x4.TRS(invHeadPose.position, invHeadPose.orientation, Vector3.one); diff --git a/Assets/Oculus/VR/Scripts/OVRCommon.cs b/Assets/Oculus/VR/Scripts/OVRCommon.cs index b8fbf85..c1d5f0e 100644 --- a/Assets/Oculus/VR/Scripts/OVRCommon.cs +++ b/Assets/Oculus/VR/Scripts/OVRCommon.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -24,6 +24,22 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; +#if UNITY_2017_2_OR_NEWER +using InputTracking = UnityEngine.XR.InputTracking; +using Node = UnityEngine.XR.XRNode; +using NodeState = UnityEngine.XR.XRNodeState; +using Device = UnityEngine.XR.XRDevice; +#elif UNITY_2017_1_OR_NEWER +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +using NodeState = UnityEngine.VR.VRNodeState; +using Device = UnityEngine.VR.VRDevice; +#else +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +using Device = UnityEngine.VR.VRDevice; +#endif + /// /// Miscellaneous extension methods that any script can use. /// @@ -35,13 +51,9 @@ public static class OVRExtensions public static OVRPose ToTrackingSpacePose(this Transform transform, Camera camera) { OVRPose headPose; -#if UNITY_2017_2_OR_NEWER - headPose.position = UnityEngine.XR.InputTracking.GetLocalPosition(UnityEngine.XR.XRNode.Head); - headPose.orientation = UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.Head); -#else - headPose.position = UnityEngine.VR.InputTracking.GetLocalPosition(UnityEngine.VR.VRNode.Head); - headPose.orientation = UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.Head); -#endif + + headPose.position = InputTracking.GetLocalPosition(Node.Head); + headPose.orientation = InputTracking.GetLocalRotation(Node.Head); var ret = headPose * transform.ToHeadSpacePose(camera); @@ -55,13 +67,9 @@ public static class OVRExtensions public static OVRPose ToWorldSpacePose(OVRPose trackingSpacePose) { OVRPose headPose; -#if UNITY_2017_2_OR_NEWER - headPose.position = UnityEngine.XR.InputTracking.GetLocalPosition(UnityEngine.XR.XRNode.Head); - headPose.orientation = UnityEngine.XR.InputTracking.GetLocalRotation(UnityEngine.XR.XRNode.Head); -#else - headPose.position = UnityEngine.VR.InputTracking.GetLocalPosition(UnityEngine.VR.VRNode.Head); - headPose.orientation = UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.Head); -#endif + + headPose.position = InputTracking.GetLocalPosition(Node.Head); + headPose.orientation = InputTracking.GetLocalRotation(Node.Head); // Transform from tracking-Space to head-Space OVRPose poseInHeadSpace = headPose.Inverse() * trackingSpacePose; @@ -177,6 +185,129 @@ public static class OVRExtensions } } +//4 types of node state properties that can be queried with UnityEngine.XR +public enum NodeStatePropertyType +{ + Acceleration, + AngularAcceleration, + Velocity, + AngularVelocity, +} + +public static class OVRNodeStateProperties +{ +#if UNITY_2017_1_OR_NEWER + private static List nodeStateList = new List(); +#endif + + public static bool IsHmdPresent() + { + return Device.isPresent; + } + + public static Vector3 GetNodeStateProperty(Node nodeType, NodeStatePropertyType propertyType, OVRPlugin.Node ovrpNodeType, OVRPlugin.Step stepType) + { + switch (propertyType) + { + case NodeStatePropertyType.Acceleration: +#if UNITY_2017_1_OR_NEWER + return GetUnityXRNodeState(nodeType, NodeStatePropertyType.Acceleration); +#else + return OVRPlugin.GetNodeAcceleration(ovrpNodeType, stepType).FromFlippedZVector3f(); +#endif + + case NodeStatePropertyType.AngularAcceleration: +#if UNITY_2017_2_OR_NEWER + return GetUnityXRNodeState(nodeType, NodeStatePropertyType.AngularAcceleration); +#else + return OVRPlugin.GetNodeAngularAcceleration(ovrpNodeType, stepType).FromFlippedZVector3f() * Mathf.Rad2Deg; +#endif + + case NodeStatePropertyType.Velocity: +#if UNITY_2017_1_OR_NEWER + return GetUnityXRNodeState(nodeType, NodeStatePropertyType.Velocity); +#else + return OVRPlugin.GetNodeVelocity(ovrpNodeType, stepType).FromFlippedZVector3f(); +#endif + + case NodeStatePropertyType.AngularVelocity: +#if UNITY_2017_2_OR_NEWER + return GetUnityXRNodeState(nodeType, NodeStatePropertyType.AngularVelocity); +#else + return OVRPlugin.GetNodeAngularVelocity(ovrpNodeType, stepType).FromFlippedZVector3f() * Mathf.Rad2Deg; +#endif + + } + return Vector3.zero; + } + + +#if UNITY_2017_1_OR_NEWER + private static Vector3 GetUnityXRNodeState(Node nodeType, NodeStatePropertyType propertyType) + { + InputTracking.GetNodeStates(nodeStateList); + + if (nodeStateList.Count == 0) + return Vector3.zero; + + bool nodeStateFound = false; + NodeState requestedNodeState = nodeStateList[0]; + + for (int i = 0; i < nodeStateList.Count; i++) + { + if (nodeStateList[i].nodeType == nodeType) + { + requestedNodeState = nodeStateList[i]; + nodeStateFound = true; + break; + } + } + + if (!nodeStateFound) + return Vector3.zero; + + Vector3 retVec; + if (propertyType == NodeStatePropertyType.Acceleration) + { + if (requestedNodeState.TryGetAcceleration(out retVec)) + { + return retVec; + } + } + else if (propertyType == NodeStatePropertyType.AngularAcceleration) + { +#if UNITY_2017_2_OR_NEWER + if (requestedNodeState.TryGetAngularAcceleration(out retVec)) + { + retVec = retVec * Mathf.Rad2Deg; + return retVec; + } +#endif + } + else if (propertyType == NodeStatePropertyType.Velocity) + { + if (requestedNodeState.TryGetVelocity(out retVec)) + { + return retVec; + } + } + else if (propertyType == NodeStatePropertyType.AngularVelocity) + { +#if UNITY_2017_2_OR_NEWER + if (requestedNodeState.TryGetAngularVelocity(out retVec)) + { + retVec = retVec * Mathf.Rad2Deg; + return retVec; + } +#endif + } + + return Vector3.zero; + } +#endif + +} + /// /// An affine transformation built from a Unity position and orientation. /// diff --git a/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs b/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs index 8d0cb36..2db36e0 100644 --- a/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs +++ b/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs.meta b/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs.meta index f90a79d..4fc0bf6 100644 --- a/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs.meta +++ b/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 563681618daa71b4c89f979b1fd7170b timeCreated: 1433450365 -licenseType: Free +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVRDisplay.cs b/Assets/Oculus/VR/Scripts/OVRDisplay.cs index baa65fe..003de53 100644 --- a/Assets/Oculus/VR/Scripts/OVRDisplay.cs +++ b/Assets/Oculus/VR/Scripts/OVRDisplay.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -23,6 +23,22 @@ using System; using System.Runtime.InteropServices; using System.Text.RegularExpressions; using UnityEngine; +using System.Collections.Generic; + +#if UNITY_2017_2_OR_NEWER +using InputTracking = UnityEngine.XR.InputTracking; +using Node = UnityEngine.XR.XRNode; +using NodeState = UnityEngine.XR.XRNodeState; +using Settings = UnityEngine.XR.XRSettings; +#elif UNITY_2017_1_OR_NEWER +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +using NodeState = UnityEngine.VR.VRNodeState; +using Settings = UnityEngine.VR.VRSettings; +#else +using Node = UnityEngine.VR.VRNode; +using Settings = UnityEngine.VR.VRSettings; +#endif /// /// Manages an Oculus Rift head-mounted display (HMD). @@ -156,12 +172,13 @@ public class OVRDisplay if (!OVRManager.isHmdPresent) return Vector3.zero; - return OVRPlugin.GetNodeAcceleration(OVRPlugin.Node.Head, OVRPlugin.Step.Render).FromFlippedZVector3f(); + return OVRNodeStateProperties.GetNodeStateProperty(Node.Head, NodeStatePropertyType.Acceleration, OVRPlugin.Node.Head, OVRPlugin.Step.Render); + } } /// - /// Gets the current angular acceleration of the head. + /// Gets the current angular acceleration of the head in radians per second per second about each axis. /// public Vector3 angularAcceleration { @@ -170,12 +187,13 @@ public class OVRDisplay if (!OVRManager.isHmdPresent) return Vector3.zero; - return OVRPlugin.GetNodeAngularAcceleration(OVRPlugin.Node.Head, OVRPlugin.Step.Render).FromFlippedZVector3f() * Mathf.Rad2Deg; + return OVRNodeStateProperties.GetNodeStateProperty(Node.Head, NodeStatePropertyType.AngularAcceleration, OVRPlugin.Node.Head, OVRPlugin.Step.Render); + } } /// - /// Gets the current linear velocity of the head. + /// Gets the current linear velocity of the head in meters per second. /// public Vector3 velocity { @@ -184,12 +202,13 @@ public class OVRDisplay if (!OVRManager.isHmdPresent) return Vector3.zero; - return OVRPlugin.GetNodeVelocity(OVRPlugin.Node.Head, OVRPlugin.Step.Render).FromFlippedZVector3f(); + return OVRNodeStateProperties.GetNodeStateProperty(Node.Head, NodeStatePropertyType.Velocity, OVRPlugin.Node.Head, OVRPlugin.Step.Render); + } } /// - /// Gets the current angular velocity of the head. + /// Gets the current angular velocity of the head in radians per second about each axis. /// public Vector3 angularVelocity { @@ -197,7 +216,8 @@ public class OVRDisplay if (!OVRManager.isHmdPresent) return Vector3.zero; - return OVRPlugin.GetNodeAngularVelocity(OVRPlugin.Node.Head, OVRPlugin.Step.Render).FromFlippedZVector3f() * Mathf.Rad2Deg; + return OVRNodeStateProperties.GetNodeStateProperty(Node.Head, NodeStatePropertyType.AngularVelocity, OVRPlugin.Node.Head, OVRPlugin.Step.Render); + } } @@ -313,10 +333,11 @@ public class OVRDisplay if (!OVRManager.isHmdPresent) return; - OVRPlugin.Sizei size = OVRPlugin.GetEyeTextureSize((OVRPlugin.Eye)eye); + int eyeTextureWidth = Settings.eyeTextureWidth; + int eyeTextureHeight = Settings.eyeTextureHeight; eyeDescs[(int)eye] = new EyeRenderDesc(); - eyeDescs[(int)eye].resolution = new Vector2(size.w, size.h); + eyeDescs[(int)eye].resolution = new Vector2(eyeTextureWidth, eyeTextureHeight); OVRPlugin.Frustumf2 frust; if (OVRPlugin.GetNodeFrustum2((OVRPlugin.Node)eye, out frust)) diff --git a/Assets/Oculus/VR/Scripts/OVRHaptics.cs.meta b/Assets/Oculus/VR/Scripts/OVRHaptics.cs.meta index bffc538..38c207a 100644 --- a/Assets/Oculus/VR/Scripts/OVRHaptics.cs.meta +++ b/Assets/Oculus/VR/Scripts/OVRHaptics.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: d3b22b858e27329498781f145fa42610 timeCreated: 1463018541 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs.meta b/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs.meta index c893687..52111d8 100644 --- a/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs.meta +++ b/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: c123270a848515b458069b5242866451 timeCreated: 1467575852 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs b/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs new file mode 100644 index 0000000..73984a2 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs @@ -0,0 +1,147 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class OVRHeadsetEmulator : MonoBehaviour { + public enum OpMode + { + Off, + EditorOnly, + AlwaysOn + } + + public OpMode opMode = OpMode.EditorOnly; + public bool resetHmdPoseOnRelease = true; + public bool resetHmdPoseByMiddleMouseButton = true; + + public KeyCode[] activateKeys = new KeyCode[] { KeyCode.LeftControl, KeyCode.RightControl }; + + public KeyCode[] pitchKeys = new KeyCode[] { KeyCode.LeftAlt, KeyCode.RightAlt }; + + OVRManager manager; + + const float MOUSE_SCALE_X = -2.0f; + const float MOUSE_SCALE_X_PITCH = -2.0f; + const float MOUSE_SCALE_Y = 2.0f; + const float MOUSE_SCALE_HEIGHT = 1.0f; + const float MAX_ROLL = 85.0f; + + private bool lastFrameEmulationActivated = false; + + private Vector3 recordedHeadPoseRelativeOffsetTranslation; + private Vector3 recordedHeadPoseRelativeOffsetRotation; + + private bool hasSentEvent = false; + + // Use this for initialization + void Start () { + Cursor.lockState = CursorLockMode.None; + manager = OVRManager.instance; + recordedHeadPoseRelativeOffsetTranslation = manager.headPoseRelativeOffsetTranslation; + recordedHeadPoseRelativeOffsetRotation = manager.headPoseRelativeOffsetRotation; + } + + // Update is called once per frame + void Update () { + bool emulationActivated = IsEmulationActivated(); + if (emulationActivated) + { + Cursor.lockState = CursorLockMode.Locked; + + if (!lastFrameEmulationActivated && resetHmdPoseOnRelease) + { + manager.headPoseRelativeOffsetTranslation = recordedHeadPoseRelativeOffsetTranslation; + manager.headPoseRelativeOffsetRotation = recordedHeadPoseRelativeOffsetRotation; + } + + if (resetHmdPoseByMiddleMouseButton && Input.GetMouseButton(2)) + { + manager.headPoseRelativeOffsetTranslation = Vector3.zero; + manager.headPoseRelativeOffsetRotation = Vector3.zero; + } + else + { + Vector3 emulatedTranslation = manager.headPoseRelativeOffsetTranslation; + float deltaMouseScrollWheel = Input.GetAxis("Mouse ScrollWheel"); + float emulatedHeight = deltaMouseScrollWheel * MOUSE_SCALE_HEIGHT; + emulatedTranslation.y += emulatedHeight; + manager.headPoseRelativeOffsetTranslation = emulatedTranslation; + + float deltaX = Input.GetAxis("Mouse X"); + float deltaY = Input.GetAxis("Mouse Y"); + + Vector3 emulatedAngles = manager.headPoseRelativeOffsetRotation; + float emulatedRoll = emulatedAngles.x; + float emulatedYaw = emulatedAngles.y; + float emulatedPitch = emulatedAngles.z; + if (IsTweakingPitch()) + { + emulatedPitch += deltaX * MOUSE_SCALE_X_PITCH; + } + else + { + emulatedRoll += deltaY * MOUSE_SCALE_Y; + emulatedYaw += deltaX * MOUSE_SCALE_X; + } + + manager.headPoseRelativeOffsetRotation = new Vector3(emulatedRoll, emulatedYaw, emulatedPitch); + } + + if (!hasSentEvent) + { + OVRPlugin.SendEvent("headset_emulator", "activated"); + hasSentEvent = true; + } + } + else + { + Cursor.lockState = CursorLockMode.None; + if (lastFrameEmulationActivated) + { + recordedHeadPoseRelativeOffsetTranslation = manager.headPoseRelativeOffsetTranslation; + recordedHeadPoseRelativeOffsetRotation = manager.headPoseRelativeOffsetRotation; + + if (resetHmdPoseOnRelease) + { + manager.headPoseRelativeOffsetTranslation = Vector3.zero; + manager.headPoseRelativeOffsetRotation = Vector3.zero; + } + } + } + lastFrameEmulationActivated = emulationActivated; + } + + bool IsEmulationActivated() + { + if (opMode == OpMode.Off) + { + return false; + } + else if (opMode == OpMode.EditorOnly && !Application.isEditor) + { + return false; + } + + foreach (KeyCode key in activateKeys) + { + if (Input.GetKey(key)) + return true; + } + + return false; + } + + bool IsTweakingPitch() + { + if (!IsEmulationActivated()) + return false; + + foreach (KeyCode key in pitchKeys) + { + if (Input.GetKey(key)) + return true; + } + + return false; + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs.meta b/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs.meta new file mode 100644 index 0000000..2a67cb0 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5178bc8574ce2bf4388e787a2e2af326 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRInput.cs b/Assets/Oculus/VR/Scripts/OVRInput.cs index 96e3e9f..1baa931 100644 --- a/Assets/Oculus/VR/Scripts/OVRInput.cs +++ b/Assets/Oculus/VR/Scripts/OVRInput.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -25,6 +25,14 @@ using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; +#if UNITY_2017_2_OR_NEWER +using InputTracking = UnityEngine.XR.InputTracking; +using Node = UnityEngine.XR.XRNode; +#else +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +#endif + /// /// Provides a unified input system for Oculus controllers and gamepads. /// @@ -372,7 +380,7 @@ public static class OVRInput double predictionSeconds = (double)fixedUpdateCount * Time.fixedDeltaTime / Mathf.Max(Time.timeScale, 1e-6f); fixedUpdateCount++; - + OVRPlugin.UpdateNodePhysicsPoses(0, predictionSeconds); } @@ -415,7 +423,7 @@ public static class OVRInput } /// - /// Gets the position of the given Controller local to its tracking space. + /// Gets the position of the given Controller relative to its local coordinate space. /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. /// public static Vector3 GetLocalControllerPosition(OVRInput.Controller controllerType) @@ -424,17 +432,17 @@ public static class OVRInput { case Controller.LTouch: case Controller.LTrackedRemote: - return OVRPlugin.GetNodePose(OVRPlugin.Node.HandLeft, stepType).ToOVRPose().position; - case Controller.RTouch: + return InputTracking.GetLocalPosition(Node.LeftHand); + case Controller.RTouch: case Controller.RTrackedRemote: - return OVRPlugin.GetNodePose(OVRPlugin.Node.HandRight, stepType).ToOVRPose().position; - default: + return InputTracking.GetLocalPosition(Node.RightHand); + default: return Vector3.zero; } } /// - /// Gets the linear velocity of the given Controller local to its tracking space. + /// Gets the linear velocity of the given Controller relative to its local coordinate space. /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. /// public static Vector3 GetLocalControllerVelocity(OVRInput.Controller controllerType) @@ -443,17 +451,17 @@ public static class OVRInput { case Controller.LTouch: case Controller.LTrackedRemote: - return OVRPlugin.GetNodeVelocity(OVRPlugin.Node.HandLeft, stepType).FromFlippedZVector3f(); - case Controller.RTouch: + return OVRNodeStateProperties.GetNodeStateProperty(Node.LeftHand, NodeStatePropertyType.Velocity, OVRPlugin.Node.HandLeft, stepType); + case Controller.RTouch: case Controller.RTrackedRemote: - return OVRPlugin.GetNodeVelocity(OVRPlugin.Node.HandRight, stepType).FromFlippedZVector3f(); - default: + return OVRNodeStateProperties.GetNodeStateProperty(Node.RightHand, NodeStatePropertyType.Velocity, OVRPlugin.Node.HandRight, stepType); + default: return Vector3.zero; } } /// - /// Gets the linear acceleration of the given Controller local to its tracking space. + /// Gets the linear acceleration of the given Controller relative to its local coordinate space. /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. /// public static Vector3 GetLocalControllerAcceleration(OVRInput.Controller controllerType) @@ -462,17 +470,17 @@ public static class OVRInput { case Controller.LTouch: case Controller.LTrackedRemote: - return OVRPlugin.GetNodeAcceleration(OVRPlugin.Node.HandLeft, stepType).FromFlippedZVector3f(); - case Controller.RTouch: + return OVRNodeStateProperties.GetNodeStateProperty(Node.LeftHand, NodeStatePropertyType.Acceleration, OVRPlugin.Node.HandLeft, stepType); + case Controller.RTouch: case Controller.RTrackedRemote: - return OVRPlugin.GetNodeAcceleration(OVRPlugin.Node.HandRight, stepType).FromFlippedZVector3f(); - default: + return OVRNodeStateProperties.GetNodeStateProperty(Node.RightHand, NodeStatePropertyType.Acceleration, OVRPlugin.Node.HandRight, stepType); + default: return Vector3.zero; } } /// - /// Gets the rotation of the given Controller local to its tracking space. + /// Gets the rotation of the given Controller relative to its local coordinate space. /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Quaternion.identity. /// public static Quaternion GetLocalControllerRotation(OVRInput.Controller controllerType) @@ -481,18 +489,18 @@ public static class OVRInput { case Controller.LTouch: case Controller.LTrackedRemote: - return OVRPlugin.GetNodePose(OVRPlugin.Node.HandLeft, stepType).ToOVRPose().orientation; - case Controller.RTouch: + return InputTracking.GetLocalRotation(Node.LeftHand); + case Controller.RTouch: case Controller.RTrackedRemote: - return OVRPlugin.GetNodePose(OVRPlugin.Node.HandRight, stepType).ToOVRPose().orientation; - default: + return InputTracking.GetLocalRotation(Node.RightHand); + default: return Quaternion.identity; } } /// - /// Gets the angular velocity of the given Controller local to its tracking space in radians per second around each axis. - /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Quaternion.identity. + /// Gets the angular velocity of the given Controller relative to its local coordinate space in radians per second around each axis. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. /// public static Vector3 GetLocalControllerAngularVelocity(OVRInput.Controller controllerType) { @@ -500,18 +508,18 @@ public static class OVRInput { case Controller.LTouch: case Controller.LTrackedRemote: - return OVRPlugin.GetNodeAngularVelocity(OVRPlugin.Node.HandLeft, stepType).FromFlippedZVector3f(); + return OVRNodeStateProperties.GetNodeStateProperty(Node.LeftHand, NodeStatePropertyType.AngularVelocity, OVRPlugin.Node.HandLeft, stepType); case Controller.RTouch: case Controller.RTrackedRemote: - return OVRPlugin.GetNodeAngularVelocity(OVRPlugin.Node.HandRight, stepType).FromFlippedZVector3f(); + return OVRNodeStateProperties.GetNodeStateProperty(Node.RightHand, NodeStatePropertyType.AngularVelocity, OVRPlugin.Node.HandRight, stepType); default: return Vector3.zero; } } /// - /// Gets the angular acceleration of the given Controller local to its tracking space in radians per second per second around each axis. - /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Quaternion.identity. + /// Gets the angular acceleration of the given Controller relative to its local coordinate space in radians per second per second around each axis. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. /// public static Vector3 GetLocalControllerAngularAcceleration(OVRInput.Controller controllerType) { @@ -519,10 +527,10 @@ public static class OVRInput { case Controller.LTouch: case Controller.LTrackedRemote: - return OVRPlugin.GetNodeAngularAcceleration(OVRPlugin.Node.HandLeft, stepType).FromFlippedZVector3f(); + return OVRNodeStateProperties.GetNodeStateProperty(Node.LeftHand, NodeStatePropertyType.AngularAcceleration, OVRPlugin.Node.HandLeft, stepType); case Controller.RTouch: case Controller.RTrackedRemote: - return OVRPlugin.GetNodeAngularAcceleration(OVRPlugin.Node.HandRight, stepType).FromFlippedZVector3f(); + return OVRNodeStateProperties.GetNodeStateProperty(Node.RightHand, NodeStatePropertyType.AngularAcceleration, OVRPlugin.Node.HandRight, stepType); default: return Vector3.zero; } @@ -1118,7 +1126,7 @@ public static class OVRInput { return connectedControllerTypes; } - + /// /// Returns true if the specified controller type is currently connected. /// @@ -1592,7 +1600,12 @@ public static class OVRInput public virtual Controller Update() { - OVRPlugin.ControllerState4 state = OVRPlugin.GetControllerState4((uint)controllerType); + OVRPlugin.ControllerState4 state; + + if (!OVRPlugin.initialized && ( (controllerType & Controller.Touch) != 0) ) + state = GetCrossPlatformState(controllerType); + else + state = OVRPlugin.GetControllerState4((uint)controllerType); if (state.LIndexTrigger >= AXIS_AS_BUTTON_THRESHOLD) state.Buttons |= (uint)RawButton.LIndexTrigger; @@ -1626,6 +1639,39 @@ public static class OVRInput return ((Controller)currentState.ConnectedControllers & controllerType); } + private OVRPlugin.ControllerState4 GetCrossPlatformState(Controller controllerType) + { + OVRPlugin.ControllerState4 state = new OVRPlugin.ControllerState4(); + + if (controllerType == Controller.LTouch) + { + if (Input.GetButton("Oculus_CrossPlatform_Button4")) + state.Buttons |= (uint)RawButton.Y; + if (Input.GetButton("Oculus_CrossPlatform_PrimaryThumbstick")) + state.Buttons |= (uint)RawButton.LThumbstick; + + state.LThumbstick.x = Input.GetAxis("Oculus_CrossPlatform_PrimaryThumbstickHorizontal"); + state.LThumbstick.y = Input.GetAxis("Oculus_CrossPlatform_PrimaryThumbstickVertical"); + state.LIndexTrigger = Input.GetAxis("Oculus_CrossPlatform_PrimaryIndexTrigger"); + state.LHandTrigger = Input.GetAxis("Oculus_CrossPlatform_PrimaryHandTrigger"); + } + else if (controllerType == Controller.RTouch) + { + if (Input.GetButton("Oculus_CrossPlatform_Button2")) + state.Buttons |= (uint)RawButton.B; + + if (Input.GetButton("Oculus_CrossPlatform_SecondaryThumbstick")) + state.Buttons |= (uint)RawButton.RThumbstick; + + state.RThumbstick.x = Input.GetAxis("Oculus_CrossPlatform_SecondaryThumbstickHorizontal"); + state.RThumbstick.y = Input.GetAxis("Oculus_CrossPlatform_SecondaryThumbstickVertical"); + state.RIndexTrigger = Input.GetAxis("Oculus_CrossPlatform_SecondaryIndexTrigger"); + state.RHandTrigger = Input.GetAxis("Oculus_CrossPlatform_SecondaryHandTrigger"); + } + + return state; + } + public virtual void SetControllerVibration(float frequency, float amplitude) { OVRPlugin.SetControllerVibration((uint)controllerType, frequency, amplitude); diff --git a/Assets/Oculus/VR/Scripts/OVRInput.cs.meta b/Assets/Oculus/VR/Scripts/OVRInput.cs.meta index d72ccb4..e24b4ec 100644 --- a/Assets/Oculus/VR/Scripts/OVRInput.cs.meta +++ b/Assets/Oculus/VR/Scripts/OVRInput.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: d210caf8a50e1954c80690fa858572ad timeCreated: 1438295094 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs.meta b/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs.meta index daaacd9..1a136bf 100644 --- a/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs.meta +++ b/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 701bfebb60063334f994e36546c103d6 timeCreated: 1499749327 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVRLint.cs b/Assets/Oculus/VR/Scripts/OVRLint.cs index 720bda6..904eba7 100644 --- a/Assets/Oculus/VR/Scripts/OVRLint.cs +++ b/Assets/Oculus/VR/Scripts/OVRLint.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -293,6 +293,24 @@ public class OVRLint : EditorWindow } #endif +#if UNITY_2017_3_OR_NEWER && !UNITY_ANDROID + if (!PlayerSettings.VROculus.dashSupport) + { + AddFix("Enable Dash Integration", "We recommend to enable Dash Integration for better user experience.", delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.VROculus.dashSupport = true; + }, null, "Fix"); + } + + if (!PlayerSettings.VROculus.sharedDepthBuffer) + { + AddFix("Enable Depth Buffer Sharing", "We recommend to enable Depth Buffer Sharing for better user experience on Oculus Dash.", delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.VROculus.sharedDepthBuffer = true; + }, null, "Fix"); + } +#endif + BuildTargetGroup target = EditorUserBuildSettings.selectedBuildTargetGroup; var tier = UnityEngine.Rendering.GraphicsTier.Tier1; var tierSettings = UnityEditor.Rendering.EditorGraphicsSettings.GetTierSettings(target, tier); diff --git a/Assets/Oculus/VR/Scripts/OVRLint.cs.meta b/Assets/Oculus/VR/Scripts/OVRLint.cs.meta index 80c4209..df5dfc3 100644 --- a/Assets/Oculus/VR/Scripts/OVRLint.cs.meta +++ b/Assets/Oculus/VR/Scripts/OVRLint.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: f483b2ec6fdc344049771ed51034b4e4 timeCreated: 1484088598 -licenseType: Free +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVRManager.cs b/Assets/Oculus/VR/Scripts/OVRManager.cs index a2750a4..38220e5 100644 --- a/Assets/Oculus/VR/Scripts/OVRManager.cs +++ b/Assets/Oculus/VR/Scripts/OVRManager.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -174,7 +174,7 @@ public class OVRManager : MonoBehaviour if (!_isHmdPresentCached) { _isHmdPresentCached = true; - _isHmdPresent = OVRPlugin.hmdPresent; + _isHmdPresent = OVRNodeStateProperties.IsHmdPresent(); } return _isHmdPresent; @@ -337,6 +337,60 @@ public class OVRManager : MonoBehaviour [Tooltip("Max RenderScale the app can reach under adaptive resolution mode")] public float maxRenderScale = 1.0f; + /// + /// Set the relative offset rotation of head poses + /// + [SerializeField] + [Tooltip("Set the relative offset rotation of head poses")] + private Vector3 _headPoseRelativeOffsetRotation; + public Vector3 headPoseRelativeOffsetRotation + { + get + { + return _headPoseRelativeOffsetRotation; + } + set + { + OVRPlugin.Quatf rotation; + OVRPlugin.Vector3f translation; + if (OVRPlugin.GetHeadPoseModifier(out rotation, out translation)) + { + Quaternion finalRotation = Quaternion.Euler(value); + rotation = finalRotation.ToQuatf(); + OVRPlugin.SetHeadPoseModifier(ref rotation, ref translation); + } + _headPoseRelativeOffsetRotation = value; + } + } + + /// + /// Set the relative offset translation of head poses + /// + [SerializeField] + [Tooltip("Set the relative offset translation of head poses")] + private Vector3 _headPoseRelativeOffsetTranslation; + public Vector3 headPoseRelativeOffsetTranslation + { + get + { + return _headPoseRelativeOffsetTranslation; + } + set + { + OVRPlugin.Quatf rotation; + OVRPlugin.Vector3f translation; + if (OVRPlugin.GetHeadPoseModifier(out rotation, out translation)) + { + if (translation.FromFlippedZVector3f() != value) + { + translation = value.ToFlippedZVector3f(); + OVRPlugin.SetHeadPoseModifier(ref rotation, ref translation); + } + } + _headPoseRelativeOffsetTranslation = value; + } + } + #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN /// /// If true, the MixedRealityCapture properties will be displayed @@ -1102,7 +1156,7 @@ public class OVRManager : MonoBehaviour if (OVRPlugin.shouldQuit) Application.Quit(); - if (AllowRecenter && OVRPlugin.shouldRecenter) + if (AllowRecenter && OVRPlugin.shouldRecenter) { OVRManager.display.RecenterPose(); } @@ -1118,7 +1172,7 @@ public class OVRManager : MonoBehaviour // Dispatch HMD events. - isHmdPresent = OVRPlugin.hmdPresent; + isHmdPresent = OVRNodeStateProperties.IsHmdPresent(); if (useRecommendedMSAALevel && QualitySettings.antiAliasing != display.recommendedMSAALevel) { @@ -1134,6 +1188,16 @@ public class OVRManager : MonoBehaviour monoscopic = _monoscopic; } + if (headPoseRelativeOffsetRotation != _headPoseRelativeOffsetRotation) + { + headPoseRelativeOffsetRotation = _headPoseRelativeOffsetRotation; + } + + if (headPoseRelativeOffsetTranslation != _headPoseRelativeOffsetTranslation) + { + headPoseRelativeOffsetTranslation = _headPoseRelativeOffsetTranslation; + } + if (_wasHmdPresent && !isHmdPresent) { try diff --git a/Assets/Oculus/VR/Scripts/OVRMixedReality.cs b/Assets/Oculus/VR/Scripts/OVRMixedReality.cs index ef0d068..1e0ede9 100644 --- a/Assets/Oculus/VR/Scripts/OVRMixedReality.cs +++ b/Assets/Oculus/VR/Scripts/OVRMixedReality.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/OVRMixedReality.cs.meta b/Assets/Oculus/VR/Scripts/OVRMixedReality.cs.meta index 8207904..ddc827c 100644 --- a/Assets/Oculus/VR/Scripts/OVRMixedReality.cs.meta +++ b/Assets/Oculus/VR/Scripts/OVRMixedReality.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 5daf6258e951ab84bb8b3e3b03386396 timeCreated: 1497574405 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs b/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs index 06b124e..2a668a6 100644 --- a/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs +++ b/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/OVROverlay.cs b/Assets/Oculus/VR/Scripts/OVROverlay.cs index edc54d3..68889eb 100644 --- a/Assets/Oculus/VR/Scripts/OVROverlay.cs +++ b/Assets/Oculus/VR/Scripts/OVROverlay.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -94,12 +94,36 @@ public class OVROverlay : MonoBehaviour [Tooltip("If true, the layer would be used to present protected content (e.g. HDCP). The flag is effective only on PC.")] public bool isProtectedContent = false; + /// + /// If true, the layer will be created as an external surface. externalSurfaceObject contains the Surface object. It's effective only on Android. + /// + [Tooltip("If true, the layer will be created as an external surface. externalSurfaceObject contains the Surface object. It's effective only on Android.")] + public bool isExternalSurface = false; + + /// + /// The width which will be used to create the external surface. It's effective only on Android. + /// + [Tooltip("The width which will be used to create the external surface. It's effective only on Android.")] + public int externalSurfaceWidth = 0; + + /// + /// The height which will be used to create the external surface. It's effective only on Android. + /// + [Tooltip("The height which will be used to create the external surface. It's effective only on Android.")] + public int externalSurfaceHeight = 0; + /// /// The compositionDepth defines the order of the OVROverlays in composition. The overlay/underlay with smaller compositionDepth would be composited in the front of the overlay/underlay with larger compositionDepth. /// [Tooltip("The compositionDepth defines the order of the OVROverlays in composition. The overlay/underlay with smaller compositionDepth would be composited in the front of the overlay/underlay with larger compositionDepth.")] public int compositionDepth = 0; + /// + /// The noDepthBufferTesting will stop layer's depth buffer compositing even if the engine has "Depth buffer sharing" enabled on Rift. + /// + [Tooltip("The noDepthBufferTesting will stop layer's depth buffer compositing even if the engine has \"Shared Depth Buffer\" enabled")] + public bool noDepthBufferTesting = false; + /// /// Specify overlay's shape /// @@ -116,6 +140,17 @@ public class OVROverlay : MonoBehaviour protected IntPtr[] texturePtrs = new IntPtr[] { IntPtr.Zero, IntPtr.Zero }; + /// + /// The Surface object (Android only). + /// + public System.IntPtr externalSurfaceObject; + + public delegate void ExternalSurfaceObjectCreated(); + /// + /// Will be triggered after externalSurfaceTextueObject get created. + /// + public ExternalSurfaceObjectCreated externalSurfaceObjectCreated; + /// /// Use this function to set texture and texNativePtr when app is running /// GetNativeTexturePtr is a slow behavior, the value should be pre-cached @@ -226,7 +261,14 @@ public class OVROverlay : MonoBehaviour if (layerId > 0) { layerDesc = desc; - stageCount = OVRPlugin.GetLayerTextureStageCount(layerId); + if (isExternalSurface) + { + stageCount = 1; + } + else + { + stageCount = OVRPlugin.GetLayerTextureStageCount(layerId); + } } isOverridePending = false; @@ -236,6 +278,23 @@ public class OVROverlay : MonoBehaviour private bool CreateLayerTextures(bool useMipmaps, OVRPlugin.Sizei size, bool isHdr) { + if (isExternalSurface) + { + if (externalSurfaceObject == System.IntPtr.Zero) + { + externalSurfaceObject = OVRPlugin.GetLayerAndroidSurfaceObject(layerId); + if (externalSurfaceObject != System.IntPtr.Zero) + { + Debug.LogFormat("GetLayerAndroidSurfaceObject returns {0}", externalSurfaceObject); + if (externalSurfaceObjectCreated != null) + { + externalSurfaceObjectCreated(); + } + } + } + return false; + } + bool needsCopy = false; if (stageCount <= 0) @@ -289,6 +348,11 @@ public class OVROverlay : MonoBehaviour private void DestroyLayerTextures() { + if (isExternalSurface) + { + return; + } + for (int eyeId = 0; layerTextures != null && eyeId < texturesPerStage; ++eyeId) { if (layerTextures[eyeId].swapChain != null) @@ -306,7 +370,7 @@ public class OVROverlay : MonoBehaviour if (layerIndex != -1) { // Turn off the overlay if it was on. - OVRPlugin.EnqueueSubmitLayer(true, false, IntPtr.Zero, IntPtr.Zero, -1, 0, OVRPose.identity.ToPosef(), Vector3.one.ToVector3f(), layerIndex, (OVRPlugin.OverlayShape)prevOverlayShape); + OVRPlugin.EnqueueSubmitLayer(true, false, false, IntPtr.Zero, IntPtr.Zero, -1, 0, OVRPose.identity.ToPosef(), Vector3.one.ToVector3f(), layerIndex, (OVRPlugin.OverlayShape)prevOverlayShape); instances[layerIndex] = null; layerIndex = -1; } @@ -327,6 +391,11 @@ public class OVROverlay : MonoBehaviour private bool LatchLayerTextures() { + if (isExternalSurface) + { + return true; + } + for (int i = 0; i < texturesPerStage; ++i) { if (textures[i] != layerTextures[i].appTexture || layerTextures[i].appTexturePtr == IntPtr.Zero) @@ -379,14 +448,31 @@ public class OVROverlay : MonoBehaviour private OVRPlugin.LayerDesc GetCurrentLayerDesc() { + OVRPlugin.Sizei textureSize = new OVRPlugin.Sizei() { w = 0, h = 0 }; + + if (isExternalSurface) + { + textureSize.w = externalSurfaceWidth; + textureSize.h = externalSurfaceHeight; + } + else + { + if (textures[0] == null) + { + Debug.LogWarning("textures[0] hasn't been set"); + } + textureSize.w = textures[0] ? textures[0].width : 0; + textureSize.h = textures[0] ? textures[0].height : 0; + } + OVRPlugin.LayerDesc newDesc = new OVRPlugin.LayerDesc() { Format = OVRPlugin.EyeTextureFormat.R8G8B8A8_sRGB, - LayerFlags = (int)OVRPlugin.LayerFlags.TextureOriginAtBottomLeft, + LayerFlags = isExternalSurface ? 0 : (int)OVRPlugin.LayerFlags.TextureOriginAtBottomLeft, Layout = layout, MipLevels = 1, SampleCount = 1, Shape = (OVRPlugin.OverlayShape)currentOverlayShape, - TextureSize = new OVRPlugin.Sizei() { w = textures[0].width, h = textures[0].height } + TextureSize = textureSize }; var tex2D = textures[0] as Texture2D; @@ -421,11 +507,21 @@ public class OVROverlay : MonoBehaviour newDesc.LayerFlags |= (int)OVRPlugin.LayerFlags.ProtectedContent; } + if (isExternalSurface) + { + newDesc.LayerFlags |= (int)OVRPlugin.LayerFlags.AndroidSurfaceSwapChain; + } + return newDesc; } private bool PopulateLayer(int mipLevels, bool isHdr, OVRPlugin.Sizei size, int sampleCount, int stage) { + if (isExternalSurface) + { + return true; + } + bool ret = false; RenderTextureFormat rtFormat = (isHdr) ? RenderTextureFormat.ARGBHalf : RenderTextureFormat.ARGB32; @@ -508,10 +604,13 @@ public class OVROverlay : MonoBehaviour return ret; } - private bool SubmitLayer(bool overlay, bool headLocked, OVRPose pose, Vector3 scale, int frameIndex) + private bool SubmitLayer(bool overlay, bool headLocked, bool noDepthBufferTesting, OVRPose pose, Vector3 scale, int frameIndex) { int rightEyeIndex = (texturesPerStage >= 2) ? 1 : 0; - bool isOverlayVisible = OVRPlugin.EnqueueSubmitLayer(overlay, headLocked, layerTextures[0].appTexturePtr, layerTextures[rightEyeIndex].appTexturePtr, layerId, frameIndex, pose.flipZ().ToPosef(), scale.ToVector3f(), layerIndex, (OVRPlugin.OverlayShape)currentOverlayShape); + bool isOverlayVisible = OVRPlugin.EnqueueSubmitLayer(overlay, headLocked, noDepthBufferTesting, + isExternalSurface ? System.IntPtr.Zero : layerTextures[0].appTexturePtr, + isExternalSurface ? System.IntPtr.Zero : layerTextures[rightEyeIndex].appTexturePtr, + layerId, frameIndex, pose.flipZ().ToPosef(), scale.ToVector3f(), layerIndex, (OVRPlugin.OverlayShape)currentOverlayShape); prevOverlayShape = currentOverlayShape; @@ -617,7 +716,7 @@ public class OVROverlay : MonoBehaviour // The overlay must be specified every eye frame, because it is positioned relative to the // current head location. If frames are dropped, it will be time warped appropriately, // just like the eye buffers. - if (currentOverlayType == OverlayType.None || textures.Length < texturesPerStage || textures[0] == null) + if (currentOverlayType == OverlayType.None || ((textures.Length < texturesPerStage || textures[0] == null) && !isExternalSurface)) return; OVRPose pose = OVRPose.identity; @@ -639,7 +738,7 @@ public class OVROverlay : MonoBehaviour createdLayer |= CreateLayerTextures(useMipmaps, newDesc.TextureSize, isHdr); - if (layerTextures[0].appTexture as RenderTexture != null) + if (!isExternalSurface && (layerTextures[0].appTexture as RenderTexture != null)) isDynamic = true; if (!LatchLayerTextures()) @@ -653,7 +752,7 @@ public class OVROverlay : MonoBehaviour return; } - bool isOverlayVisible = SubmitLayer(overlay, headLocked, pose, scale, frameIndex); + bool isOverlayVisible = SubmitLayer(overlay, headLocked, noDepthBufferTesting, pose, scale, frameIndex); prevFrameIndex = frameIndex; if (isDynamic) diff --git a/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs b/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs index 8beb18f..176917b 100644 --- a/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs +++ b/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/OVRPlugin.cs b/Assets/Oculus/VR/Scripts/OVRPlugin.cs index 2b69cbd..1ffafc0 100644 --- a/Assets/Oculus/VR/Scripts/OVRPlugin.cs +++ b/Assets/Oculus/VR/Scripts/OVRPlugin.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -40,7 +40,7 @@ public static class OVRPlugin #if OVRPLUGIN_UNSUPPORTED_PLATFORM public static readonly System.Version wrapperVersion = _versionZero; #else - public static readonly System.Version wrapperVersion = OVRP_1_28_0.version; + public static readonly System.Version wrapperVersion = OVRP_1_30_0.version; #endif private static System.Version _version; @@ -343,6 +343,25 @@ public static class OVRPlugin EnumSize = 0x7FFFFFFF } + public enum PerfMetrics + { + App_CpuTime_Float = 0, + App_GpuTime_Float, + App_MotionToPhotonLatencyTime_Float, + + Compositor_CpuTime_Float, + Compositor_GpuTime_Float, + Compositor_DroppedFrameCount_Int, + Compositor_LatencyTime_Float, + + System_GpuUtilPercentage_Float, + System_CpuUtilAveragePercentage_Float, + System_CpuUtilWorstPercentage_Float, + + Count, + EnumSize = 0x7FFFFFFF + } + [StructLayout(LayoutKind.Sequential)] public struct CameraDeviceIntrinsicsParameters { @@ -368,6 +387,7 @@ public static class OVRPlugin None = unchecked((int)0x00000000), OnTop = unchecked((int)0x00000001), HeadLocked = unchecked((int)0x00000002), + NoDepth = unchecked((int)0x00000004), // Using the 5-8 bits for shapes, total 16 potential shapes can be supported 0x000000[0]0 -> 0x000000[F]0 ShapeFlag_Quad = unchecked((int)OverlayShape.Quad << OverlayShapeFlagShift), @@ -432,6 +452,15 @@ public static class OVRPlugin public Vector3f AngularVelocity; public Vector3f AngularAcceleration; double Time; + + public static readonly PoseStatef identity = new PoseStatef + { + Pose = Posef.identity, + Velocity = Vector3f.zero, + Acceleration = Vector3f.zero, + AngularVelocity = Vector3f.zero, + AngularAcceleration = Vector3f.zero + }; } [StructLayout(LayoutKind.Sequential)] @@ -772,6 +801,7 @@ public static class OVRPlugin ChromaticAberrationCorrection = (1 << 4), NoAllocation = (1 << 5), ProtectedContent = (1 << 6), + AndroidSurfaceSwapChain = (1 << 7), } [StructLayout(LayoutKind.Sequential)] @@ -1206,10 +1236,13 @@ public static class OVRPlugin public static string latency { - get { + get { #if OVRPLUGIN_UNSUPPORTED_PLATFORM return string.Empty; #else + if (!initialized) + return string.Empty; + return OVRP_1_1_0.ovrp_GetAppLatencyTimings(); #endif } @@ -1221,6 +1254,9 @@ public static class OVRPlugin #if OVRPLUGIN_UNSUPPORTED_PLATFORM return 0.0f; #else + if (!initialized) + return 0.0f; + return OVRP_1_1_0.ovrp_GetUserEyeDepth(); #endif } @@ -1362,13 +1398,16 @@ public static class OVRPlugin #if OVRPLUGIN_UNSUPPORTED_PLATFORM return false; #else - return OVRP_1_3_0.ovrp_GetEyeOcclusionMeshEnabled() == Bool.True; + return initialized && (OVRP_1_3_0.ovrp_GetEyeOcclusionMeshEnabled() == Bool.True); #endif } set { #if OVRPLUGIN_UNSUPPORTED_PLATFORM return; #else + if (!initialized) + return; + OVRP_1_3_0.ovrp_SetEyeOcclusionMeshEnabled(ToBool(value)); #endif } @@ -1430,7 +1469,7 @@ public static class OVRPlugin #endif } - public static bool EnqueueSubmitLayer(bool onTop, bool headLocked, IntPtr leftTexture, IntPtr rightTexture, int layerId, int frameIndex, Posef pose, Vector3f scale, int layerIndex=0, OverlayShape shape=OverlayShape.Quad) + public static bool EnqueueSubmitLayer(bool onTop, bool headLocked, bool noDepthBufferTesting, IntPtr leftTexture, IntPtr rightTexture, int layerId, int frameIndex, Posef pose, Vector3f scale, int layerIndex=0, OverlayShape shape=OverlayShape.Quad) { #if OVRPLUGIN_UNSUPPORTED_PLATFORM return false; @@ -1442,6 +1481,8 @@ public static class OVRPlugin flags |= (uint)OverlayFlag.OnTop; if (headLocked) flags |= (uint)OverlayFlag.HeadLocked; + if (noDepthBufferTesting) + flags |= (uint)OverlayFlag.NoDepth; if (shape == OverlayShape.Cylinder || shape == OverlayShape.Cubemap) { @@ -1570,6 +1611,20 @@ public static class OVRPlugin #endif } + public static IntPtr GetLayerAndroidSurfaceObject(int layerId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return IntPtr.Zero; +#else + IntPtr surfaceObject = IntPtr.Zero; + + if (version >= OVRP_1_29_0.version) + OVRP_1_29_0.ovrp_GetLayerAndroidSurfaceObject(layerId, ref surfaceObject); + + return surfaceObject; +#endif + } + public static bool UpdateNodePhysicsPoses(int frameIndex, double predictionSeconds) { #if OVRPLUGIN_UNSUPPORTED_PLATFORM @@ -1678,6 +1733,81 @@ public static class OVRPlugin #endif } + public static PoseStatef GetNodePoseStateRaw(Node nodeId, Step stepId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return PoseStatef.identity; +#else + if (version >= OVRP_1_29_0.version) + { + PoseStatef nodePoseState; + Result result = OVRP_1_29_0.ovrp_GetNodePoseStateRaw(stepId, -1, nodeId, out nodePoseState); + if (result == Result.Success) + { + return nodePoseState; + } + else + { + return PoseStatef.identity; + } + } + if (version >= OVRP_1_12_0.version) + return OVRP_1_12_0.ovrp_GetNodePoseState(stepId, nodeId); + else + return PoseStatef.identity; +#endif + } + + public static Posef GetCurrentTrackingTransformPose() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Posef.identity; +#else + if (version >= OVRP_1_30_0.version) + { + Posef trackingTransformPose; + Result result = OVRP_1_30_0.ovrp_GetCurrentTrackingTransformPose(out trackingTransformPose); + if (result == Result.Success) + { + return trackingTransformPose; + } + else + { + return Posef.identity; + } + } + else + { + return Posef.identity; + } +#endif + } + + public static Posef GetTrackingTransformRawPose() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Posef.identity; +#else + if (version >= OVRP_1_30_0.version) + { + Posef trackingTransforRawPose; + Result result = OVRP_1_30_0.ovrp_GetTrackingTransformRawPose(out trackingTransforRawPose); + if (result == Result.Success) + { + return trackingTransforRawPose; + } + else + { + return Posef.identity; + } + } + else + { + return Posef.identity; + } +#endif + } + public static ControllerState GetControllerState(uint controllerMask) { #if OVRPLUGIN_UNSUPPORTED_PLATFORM @@ -3003,12 +3133,16 @@ public static class OVRPlugin #endif } - public static bool SendEvent(string name, string param = "") + public static bool SendEvent(string name, string param = "", string source = "") { #if OVRPLUGIN_UNSUPPORTED_PLATFORM return false; #else - if (version >= OVRP_1_28_0.version) + if (version >= OVRP_1_30_0.version) + { + return OVRP_1_30_0.ovrp_SendEvent2(name, param, source.Length == 0 ? "integration": source) == Result.Success; + } + else if (version >= OVRP_1_28_0.version) { return OVRP_1_28_0.ovrp_SendEvent(name, param) == Result.Success; } @@ -3019,6 +3153,117 @@ public static class OVRPlugin #endif } + public static bool SetHeadPoseModifier(ref Quatf relativeRotation, ref Vector3f relativeTranslation) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_29_0.version) + { + return OVRP_1_29_0.ovrp_SetHeadPoseModifier(ref relativeRotation, ref relativeTranslation) == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool GetHeadPoseModifier(out Quatf relativeRotation, out Vector3f relativeTranslation) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + relativeRotation = Quatf.identity; + relativeTranslation = Vector3f.zero; + return false; +#else + if (version >= OVRP_1_29_0.version) + { + return OVRP_1_29_0.ovrp_GetHeadPoseModifier(out relativeRotation, out relativeTranslation) == Result.Success; + } + else + { + relativeRotation = Quatf.identity; + relativeTranslation = Vector3f.zero; + return false; + } +#endif + } + + public static bool IsPerfMetricsSupported(PerfMetrics perfMetrics) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_30_0.version) + { + Bool isSupported; + Result result = OVRP_1_30_0.ovrp_IsPerfMetricsSupported(perfMetrics, out isSupported); + if (result == Result.Success) + { + return isSupported == Bool.True; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static float? GetPerfMetricsFloat(PerfMetrics perfMetrics) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return null; +#else + if (version >= OVRP_1_30_0.version) + { + float value; + Result result = OVRP_1_30_0.ovrp_GetPerfMetricsFloat(perfMetrics, out value); + if (result == Result.Success) + { + return value; + } + else + { + return null; + } + } + else + { + return null; + } +#endif + } + + public static int? GetPerfMetricsInt(PerfMetrics perfMetrics) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return null; +#else + if (version >= OVRP_1_30_0.version) + { + int value; + Result result = OVRP_1_30_0.ovrp_GetPerfMetricsInt(perfMetrics, out value); + if (result == Result.Success) + { + return value; + } + else + { + return null; + } + } + else + { + return null; + } +#endif + } + private const string pluginName = "OVRPlugin"; private static System.Version _versionZero = new System.Version(0, 0, 0); @@ -3606,6 +3851,46 @@ public static class OVRPlugin public static extern Result ovrp_EnqueueSetupLayer2(ref LayerDesc desc, int compositionDepth, IntPtr layerId); } + private static class OVRP_1_29_0 + { + public static readonly System.Version version = new System.Version(1, 29, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetLayerAndroidSurfaceObject(int layerId, ref IntPtr surfaceObject); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetHeadPoseModifier(ref Quatf relativeRotation, ref Vector3f relativeTranslation); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetHeadPoseModifier(out Quatf relativeRotation, out Vector3f relativeTranslation); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetNodePoseStateRaw(Step stepId, int frameIndex, Node nodeId, out PoseStatef nodePoseState); + } + + private static class OVRP_1_30_0 + { + public static readonly System.Version version = new System.Version(1, 30, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCurrentTrackingTransformPose(out Posef trackingTransformPose); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetTrackingTransformRawPose(out Posef trackingTransformRawPose); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SendEvent2(string name, string param, string source); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_IsPerfMetricsSupported(PerfMetrics perfMetrics, out Bool isSupported); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetPerfMetricsFloat(PerfMetrics perfMetrics, out float value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetPerfMetricsInt(PerfMetrics perfMetrics, out int value); + } + #endif // !OVRPLUGIN_UNSUPPORTED_PLATFORM } diff --git a/Assets/Oculus/VR/Scripts/OVRProfile.cs b/Assets/Oculus/VR/Scripts/OVRProfile.cs index cd4ad94..fe27cec 100644 --- a/Assets/Oculus/VR/Scripts/OVRProfile.cs +++ b/Assets/Oculus/VR/Scripts/OVRProfile.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/OVRTracker.cs b/Assets/Oculus/VR/Scripts/OVRTracker.cs index c1ad0fe..46a8099 100644 --- a/Assets/Oculus/VR/Scripts/OVRTracker.cs +++ b/Assets/Oculus/VR/Scripts/OVRTracker.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs b/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs index 82c4cf0..da0b898 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs.meta index 5150e69..701e800 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs.meta +++ b/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 7a489178b0acf0147846b3873447beaf timeCreated: 1464728890 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs b/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs index 2124458..a7262c6 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs b/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs index 13c1829..2b2460d 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -12,7 +12,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs b/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs index ee9e066..0976da2 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs.meta index cb3767f..b1ca9b5 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs.meta +++ b/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 7acc4619d4cb5e64e9ed05e5a7a8099f timeCreated: 1486173066 -licenseType: Free +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs b/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs index 6ad10a3..e4a8020 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs.meta index 69f59b2..87da434 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs.meta +++ b/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 02d61468f8b77ae4b92c344bc9a600fb timeCreated: 1481833527 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs b/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs index 3d8823b..a9d3fa4 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs.meta index 6e32ddd..9775835 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs.meta +++ b/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: fd425c2d06f39bf4899d07c05d0f10eb timeCreated: 1481832436 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs b/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs index 60c999b..2a82820 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs b/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs index dc8d6fb..1321dd2 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -12,7 +12,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs.meta index a280de9..e7a7e07 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs.meta +++ b/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 99bbd170d56da4248941de890e6d7af5 timeCreated: 1501004238 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs b/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs index 865a426..5d4aad8 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs b/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs index 08e63f6..1385942 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs b/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs index 7d5b26d..358f4c4 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -12,7 +12,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs b/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs index aba7fb1..e6c2027 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs b/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs index a1daed0..1dd5a82 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -12,7 +12,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs.meta index 1d19ac1..457a3a4 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs.meta +++ b/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 3303d4232ee59ac40a9fdc223870fbbc timeCreated: 1520636357 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs b/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs index 691fce8..4037bc2 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs b/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs index 40a3f27..45ba5a1 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -12,7 +12,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs.meta index 96fffaa..5c24402 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs.meta +++ b/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 63f0fe0d60ddeb54f9f43d701286af2d timeCreated: 1520636357 -licenseType: Pro +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs b/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs index 36573d7..fbd143f 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs b/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs index 775615f..d6c37a4 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs b/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs index 51058be..cc3c61b 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRTrackedRemote.cs b/Assets/Oculus/VR/Scripts/Util/OVRTrackedRemote.cs index 078327d..69d4b04 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRTrackedRemote.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRTrackedRemote.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -12,7 +12,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Scripts/Util/OVRTrackedRemote.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRTrackedRemote.cs.meta index f82dbbf..e562f6b 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRTrackedRemote.cs.meta +++ b/Assets/Oculus/VR/Scripts/Util/OVRTrackedRemote.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: aed62bf3ae2456c408f247f96808ce96 timeCreated: 1486166271 -licenseType: Free +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs b/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs index edc02db..1814306 100644 --- a/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs +++ b/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs @@ -1,9 +1,9 @@ /************************************************************************************ -Copyright : Copyright 2017 Oculus VR, LLC. All Rights reserved. +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. -Licensed under the Oculus VR Rift SDK License Version 3.4.1 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, which is provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form. @@ -11,7 +11,7 @@ You may obtain a copy of the License at https://developer.oculus.com/licenses/sdk-3.4.1 -Unless required by applicable law or agreed to in writing, the Oculus VR SDK +Unless required by applicable law or agreed to in writing, the Oculus SDK distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/Assets/Oculus/VR/Shaders.meta b/Assets/Oculus/VR/Shaders.meta index 0026c39..0e450f4 100644 --- a/Assets/Oculus/VR/Shaders.meta +++ b/Assets/Oculus/VR/Shaders.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: d79c5fa4d57bda54f88884a89963d684 folderAsset: yes timeCreated: 1466707365 -licenseType: Pro +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Shaders/OVRColorRampAlpha.shader.meta b/Assets/Oculus/VR/Shaders/OVRColorRampAlpha.shader.meta index cf96ffc..3a021b3 100644 --- a/Assets/Oculus/VR/Shaders/OVRColorRampAlpha.shader.meta +++ b/Assets/Oculus/VR/Shaders/OVRColorRampAlpha.shader.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: b95caf64e2cc3614892026a94bb2be84 timeCreated: 1433268462 -licenseType: Free +licenseType: Store ShaderImporter: defaultTextures: [] userData: diff --git a/Assets/Oculus/VR/Textures/GearVrController.meta b/Assets/Oculus/VR/Textures/GearVrController.meta index 04784b3..64bb3eb 100644 --- a/Assets/Oculus/VR/Textures/GearVrController.meta +++ b/Assets/Oculus/VR/Textures/GearVrController.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 6f0243e2a75c57c4dbd1b782c7557b50 folderAsset: yes timeCreated: 1486168258 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_ao_1024.tif.meta b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_ao_1024.tif.meta index b7ddf5b..89c2177 100644 --- a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_ao_1024.tif.meta +++ b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_ao_1024.tif.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 4b12fa22be3f7f143b055ad60e483684 timeCreated: 1488144144 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_ao_128.tif.meta b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_ao_128.tif.meta index 83ba69c..20753c6 100644 --- a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_ao_128.tif.meta +++ b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_ao_128.tif.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 8556f6ca8690f0a47bcc8c5adec768da timeCreated: 1488144144 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_color_1024.tif.meta b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_color_1024.tif.meta index efeaf6c..8bd3f45 100644 --- a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_color_1024.tif.meta +++ b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_color_1024.tif.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 8dcaddcb07fa3214989bf16d62f3efbc timeCreated: 1488144146 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_color_128.tif.meta b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_color_128.tif.meta index 65d04e8..28d67cd 100644 --- a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_color_128.tif.meta +++ b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_color_128.tif.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 2cf74d0adf6b17348bb03c979684482b timeCreated: 1488144137 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_normal_1024.tif.meta b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_normal_1024.tif.meta index e17923c..ac918bb 100644 --- a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_normal_1024.tif.meta +++ b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_normal_1024.tif.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: ab629f733cdfcfa4ba04695645307f24 timeCreated: 1488144803 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_normal_128.tif.meta b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_normal_128.tif.meta index d67d9db..fed42ef 100644 --- a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_normal_128.tif.meta +++ b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_normal_128.tif.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: cd52447b7b5ad174bb3858eb22a8fe2e timeCreated: 1488144473 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_roughness_1024.tif.meta b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_roughness_1024.tif.meta index d12021f..f2d5230 100644 --- a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_roughness_1024.tif.meta +++ b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_roughness_1024.tif.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 2dd5a3d0ec7b92841a55a5e07e67db76 timeCreated: 1488144138 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_roughness_128.tif.meta b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_roughness_128.tif.meta index 6159945..c3ab210 100644 --- a/Assets/Oculus/VR/Textures/GearVrController/GearVrController_roughness_128.tif.meta +++ b/Assets/Oculus/VR/Textures/GearVrController/GearVrController_roughness_128.tif.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 8200b8b7f126cc949bdb39c3eff99890 timeCreated: 1488144144 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/Logos/OculusLogoSplash.png.meta b/Assets/Oculus/VR/Textures/Logos/OculusLogoSplash.png.meta index 1b3498c..2695406 100644 --- a/Assets/Oculus/VR/Textures/Logos/OculusLogoSplash.png.meta +++ b/Assets/Oculus/VR/Textures/Logos/OculusLogoSplash.png.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 3caded05dba914447a5f85650f9f4ab2 timeCreated: 1456251719 -licenseType: Pro +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VR/Textures/OculusGoController.meta b/Assets/Oculus/VR/Textures/OculusGoController.meta index 1a35164..376fdc7 100644 --- a/Assets/Oculus/VR/Textures/OculusGoController.meta +++ b/Assets/Oculus/VR/Textures/OculusGoController.meta @@ -2,7 +2,7 @@ fileFormatVersion: 2 guid: 829191324a3df8944b07ba1bd4c8f335 folderAsset: yes timeCreated: 1513040773 -licenseType: Free +licenseType: Store DefaultImporter: userData: assetBundleName: diff --git a/Assets/Oculus/VR/Textures/OculusGoController/OculusGoController_albedo.tga.meta b/Assets/Oculus/VR/Textures/OculusGoController/OculusGoController_albedo.tga.meta index 233c75a..b0ab014 100644 --- a/Assets/Oculus/VR/Textures/OculusGoController/OculusGoController_albedo.tga.meta +++ b/Assets/Oculus/VR/Textures/OculusGoController/OculusGoController_albedo.tga.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 6fd132ea4bdd3ec4298a583f001ed5ab timeCreated: 1513127630 -licenseType: Free +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 4 diff --git a/Assets/Oculus/VR/Textures/cube_texture.png.meta b/Assets/Oculus/VR/Textures/cube_texture.png.meta index ea2a739..2c7dc86 100644 --- a/Assets/Oculus/VR/Textures/cube_texture.png.meta +++ b/Assets/Oculus/VR/Textures/cube_texture.png.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 020d1a102a7f2a14ebf6cefe7b977303 timeCreated: 1425942022 -licenseType: Pro +licenseType: Store TextureImporter: fileIDToRecycleName: {} serializedVersion: 2 diff --git a/Assets/Oculus/VoiceMod.meta b/Assets/Oculus/VoiceMod.meta new file mode 100644 index 0000000..d3d17b5 --- /dev/null +++ b/Assets/Oculus/VoiceMod.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 13f3639c5c91f1647a88798f297020a5 +folderAsset: yes +timeCreated: 1538788975 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Audio.meta b/Assets/Oculus/VoiceMod/Audio.meta new file mode 100644 index 0000000..99ac5d1 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Audio.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2f1252adfdbb44e48a363533cb81ef33 +folderAsset: yes +timeCreated: 1450118836 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Audio/vox_lp_01.wav b/Assets/Oculus/VoiceMod/Audio/vox_lp_01.wav new file mode 100644 index 0000000..c0fbe8e Binary files /dev/null and b/Assets/Oculus/VoiceMod/Audio/vox_lp_01.wav differ diff --git a/Assets/Oculus/VoiceMod/Audio/vox_lp_01.wav.meta b/Assets/Oculus/VoiceMod/Audio/vox_lp_01.wav.meta new file mode 100644 index 0000000..0716455 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Audio/vox_lp_01.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 66cec73d2756bad4387104c24275d8ee +timeCreated: 1450118840 +licenseType: Store +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins.meta b/Assets/Oculus/VoiceMod/Plugins.meta new file mode 100644 index 0000000..b2ea1ea --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1212e8445759d2f458590eb01473a1b2 +folderAsset: yes +timeCreated: 1522867455 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/Android32.meta b/Assets/Oculus/VoiceMod/Plugins/Android32.meta new file mode 100644 index 0000000..640c217 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/Android32.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1e85597b83246fe4baaea6063c2dfc38 +folderAsset: yes +timeCreated: 1522867501 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/Android32/libOVRVoiceMod.so b/Assets/Oculus/VoiceMod/Plugins/Android32/libOVRVoiceMod.so new file mode 100644 index 0000000..142d27a Binary files /dev/null and b/Assets/Oculus/VoiceMod/Plugins/Android32/libOVRVoiceMod.so differ diff --git a/Assets/Oculus/VoiceMod/Plugins/Android32/libOVRVoiceMod.so.meta b/Assets/Oculus/VoiceMod/Plugins/Android32/libOVRVoiceMod.so.meta new file mode 100644 index 0000000..8da6686 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/Android32/libOVRVoiceMod.so.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: ff117dedf0ac5ca499ffe71a71f1a148 +timeCreated: 1450389765 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/MacOSX.meta b/Assets/Oculus/VoiceMod/Plugins/MacOSX.meta new file mode 100644 index 0000000..e7ae39d --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/MacOSX.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 26f6bfb1cd4a2ce45af2ec0f5e5d2122 +folderAsset: yes +timeCreated: 1522867492 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle.meta b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle.meta new file mode 100644 index 0000000..51429f8 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: 76fe01982ab585c4194c39237b7fe64d +folderAsset: yes +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude Win: 1 + Exclude Win64: 1 + - first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: OSX + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: OSX + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents.meta b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents.meta new file mode 100644 index 0000000..1756dfd --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c9424d88b779a2e4d981c8f1206c36b8 +folderAsset: yes +timeCreated: 1481693829 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/Info.plist b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/Info.plist new file mode 100644 index 0000000..1a8db8d --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + OVRVoiceMod + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLongVersionString + 1.1.1.321891 TCID: 1623387 + CFBundleName + + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.1.1.321891 TCID: 1623387 + CFBundleSignature + ???? + CFBundleVersion + 1.1.1.321891 TCID: 1623387 + CSResourcesFileMapped + + LSRequiresCarbon + + NSHumanReadableCopyright + + + diff --git a/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/Info.plist.meta b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/Info.plist.meta new file mode 100644 index 0000000..49d2cb3 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/Info.plist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac30ff44ace5bd347b3c43173629f59b +timeCreated: 1481693829 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS.meta b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS.meta new file mode 100644 index 0000000..9a0cf8c --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: dd21282443aa93049ab3c25a7de2698c +folderAsset: yes +timeCreated: 1481693829 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS/OVRVoiceMod b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS/OVRVoiceMod new file mode 100644 index 0000000..60a888f Binary files /dev/null and b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS/OVRVoiceMod differ diff --git a/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS/OVRVoiceMod.meta b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS/OVRVoiceMod.meta new file mode 100644 index 0000000..4abcee3 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/MacOSX/OVRVoiceMod.bundle/Contents/MacOS/OVRVoiceMod.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c696554405e27614e99208705df8d371 +timeCreated: 1481693829 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/Win32.meta b/Assets/Oculus/VoiceMod/Plugins/Win32.meta new file mode 100644 index 0000000..f4d50ae --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/Win32.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d02373d93b4b79e41af291b26708f322 +folderAsset: yes +timeCreated: 1425156097 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/Win32/OVRVoiceMod.dll b/Assets/Oculus/VoiceMod/Plugins/Win32/OVRVoiceMod.dll new file mode 100644 index 0000000..812033f Binary files /dev/null and b/Assets/Oculus/VoiceMod/Plugins/Win32/OVRVoiceMod.dll differ diff --git a/Assets/Oculus/VoiceMod/Plugins/Win32/OVRVoiceMod.dll.meta b/Assets/Oculus/VoiceMod/Plugins/Win32/OVRVoiceMod.dll.meta new file mode 100644 index 0000000..d1195d1 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/Win32/OVRVoiceMod.dll.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 58114d9f02556f847b7562b6aeb657aa +timeCreated: 1450389764 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 0 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86 + OS: Windows + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + data: + first: + Facebook: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/Win64.meta b/Assets/Oculus/VoiceMod/Plugins/Win64.meta new file mode 100644 index 0000000..60e3ae6 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/Win64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 08cfceeb8a0af76409eaeb6bbd906e6d +folderAsset: yes +timeCreated: 1425156097 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Plugins/Win64/OVRVoiceMod.dll b/Assets/Oculus/VoiceMod/Plugins/Win64/OVRVoiceMod.dll new file mode 100644 index 0000000..5f20c85 Binary files /dev/null and b/Assets/Oculus/VoiceMod/Plugins/Win64/OVRVoiceMod.dll differ diff --git a/Assets/Oculus/VoiceMod/Plugins/Win64/OVRVoiceMod.dll.meta b/Assets/Oculus/VoiceMod/Plugins/Win64/OVRVoiceMod.dll.meta new file mode 100644 index 0000000..455dcd2 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Plugins/Win64/OVRVoiceMod.dll.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 2dd330b32ea8eb5448eb7bffdcc30acf +timeCreated: 1450389764 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 0 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 0 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86_64 + OS: Windows + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + data: + first: + Facebook: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Prefabs.meta b/Assets/Oculus/VoiceMod/Prefabs.meta new file mode 100644 index 0000000..ae377ed --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fba310cd40244674e889f839bb5460d4 +folderAsset: yes +timeCreated: 1450118836 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Prefabs/OVRCameraWithDebug.prefab b/Assets/Oculus/VoiceMod/Prefabs/OVRCameraWithDebug.prefab new file mode 100644 index 0000000..76dd7d1 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs/OVRCameraWithDebug.prefab @@ -0,0 +1,332 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &109376 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22423024} + - 222: {fileID: 22237410} + - 114: {fileID: 11438746} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &138100 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22459746} + - 223: {fileID: 22358686} + - 114: {fileID: 11450160} + - 114: {fileID: 11462386} + m_Layer: 0 + m_Name: OVRDebugConsoleOutput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171706 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 485614} + - 20: {fileID: 2003780} + - 92: {fileID: 9229790} + - 124: {fileID: 12434708} + - 81: {fileID: 8191414} + m_Layer: 0 + m_Name: OVRCameraWithDebug + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &176320 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 451574} + - 114: {fileID: 11466570} + m_Layer: 0 + m_Name: OVRDebugConsole + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &451574 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176320} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 485614} + m_RootOrder: 0 +--- !u!4 &485614 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171706} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 451574} + - {fileID: 22459746} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!20 &2003780 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171706} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 + m_StereoMirrorMode: 0 +--- !u!81 &8191414 +AudioListener: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171706} + m_Enabled: 1 +--- !u!92 &9229790 +Behaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171706} + m_Enabled: 1 +--- !u!114 &11438746 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 5 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '1 + + 2 + + 3 + + 4 + + 5 + + 6 + + 7 + + 8 + + 9 + + 10 + + 11 + + 12 + + 13 + + 14 + + 15' +--- !u!114 &11450160 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 10 +--- !u!114 &11462386 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11466570 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 032142ba4fe4a53458d86dc9a8610f36, type: 3} + m_Name: + m_EditorClassIdentifier: + maxMessages: 15 + textMsg: {fileID: 11438746} +--- !u!124 &12434708 +Behaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171706} + m_Enabled: 1 +--- !u!222 &22237410 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109376} +--- !u!223 &22358686 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138100} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!224 &22423024 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109376} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22459746} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 120, y: 90} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22459746 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138100} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5.25} + m_LocalScale: {x: .0500000007, y: .0500000007, z: .200000003} + m_Children: + - {fileID: 22423024} + m_Father: {fileID: 485614} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: .180000007, y: 0} + m_SizeDelta: {x: 1024, y: 1024} + m_Pivot: {x: .5, y: .5} +--- !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: 171706} + m_IsPrefabParent: 1 diff --git a/Assets/Oculus/VoiceMod/Prefabs/OVRCameraWithDebug.prefab.meta b/Assets/Oculus/VoiceMod/Prefabs/OVRCameraWithDebug.prefab.meta new file mode 100644 index 0000000..7d524d5 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs/OVRCameraWithDebug.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4887a8c62805ff24aa5f127600cbbde3 +timeCreated: 1450135244 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsole.prefab b/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsole.prefab new file mode 100644 index 0000000..8ab3bcd --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsole.prefab @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &128374 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 403852} + - 114: {fileID: 11407780} + m_Layer: 0 + m_Name: OVRDebugConsole + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &403852 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128374} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11407780 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128374} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 032142ba4fe4a53458d86dc9a8610f36, type: 3} + m_Name: + m_EditorClassIdentifier: + maxMessages: 15 + textMsg: {fileID: 0} +--- !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: 128374} + m_IsPrefabParent: 1 diff --git a/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsole.prefab.meta b/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsole.prefab.meta new file mode 100644 index 0000000..9f9cf94 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsole.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2e4865f563dc614bb668f046569e0cd +timeCreated: 1450118839 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsoleOutput.prefab b/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsoleOutput.prefab new file mode 100644 index 0000000..956522b --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsoleOutput.prefab @@ -0,0 +1,211 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100658 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22469590} + - 222: {fileID: 22212472} + - 114: {fileID: 11460950} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &130260 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22402796} + - 223: {fileID: 22301806} + - 114: {fileID: 11495334} + - 114: {fileID: 11476360} + m_Layer: 0 + m_Name: OVRDebugConsoleOutput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11460950 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 5 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '1 + + 2 + + 3 + + 4 + + 5 + + 6 + + 7 + + 8 + + 9 + + 10 + + 11 + + 12 + + 13 + + 14 + + 15' +--- !u!114 &11476360 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11495334 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 10 +--- !u!222 &22212472 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100658} +--- !u!223 &22301806 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!224 &22402796 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130260} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5.25} + m_LocalScale: {x: .0500000007, y: .0500000007, z: .200000003} + m_Children: + - {fileID: 22469590} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: .180000007, y: 0} + m_SizeDelta: {x: 1024, y: 1024} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22469590 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22402796} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 120, y: 90} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 0} + propertyPath: m_AnchoredPosition.x + value: .200000003 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 130260} + m_IsPrefabParent: 1 diff --git a/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsoleOutput.prefab.meta b/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsoleOutput.prefab.meta new file mode 100644 index 0000000..aeb6e9c --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs/OVRDebugConsoleOutput.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5273e314db9ad674fb4117eb07218ad7 +timeCreated: 1450118839 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Prefabs/OVRVoiceModInterface.prefab b/Assets/Oculus/VoiceMod/Prefabs/OVRVoiceModInterface.prefab new file mode 100644 index 0000000..9128154 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs/OVRVoiceModInterface.prefab @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &130688 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 447286} + - 114: {fileID: 11450296} + m_Layer: 0 + m_Name: OVRVoiceModInterface + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &447286 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130688} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11450296 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f9518abe0e11ea14dbba5c3d7a2fec2d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !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: 130688} + m_IsPrefabParent: 1 diff --git a/Assets/Oculus/VoiceMod/Prefabs/OVRVoiceModInterface.prefab.meta b/Assets/Oculus/VoiceMod/Prefabs/OVRVoiceModInterface.prefab.meta new file mode 100644 index 0000000..62b15f8 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Prefabs/OVRVoiceModInterface.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 013e95e8ef6cafb4b93fe4b6123ca5cb +timeCreated: 1450126725 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scenes.meta b/Assets/Oculus/VoiceMod/Scenes.meta new file mode 100644 index 0000000..0c2dae8 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d663b272c86baa142aeb35aab04f9ecc +folderAsset: yes +timeCreated: 1450118836 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scenes/Materials.meta b/Assets/Oculus/VoiceMod/Scenes/Materials.meta new file mode 100644 index 0000000..de72bd9 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b5f8482295cf23345a0fb48c786a2b00 +folderAsset: yes +timeCreated: 1450219319 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scenes/Materials/Color.mat b/Assets/Oculus/VoiceMod/Scenes/Materials/Color.mat new file mode 100644 index 0000000..40b0751 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes/Materials/Color.mat @@ -0,0 +1,138 @@ +%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: Color + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + 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 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 0, b: 1, a: 1} diff --git a/Assets/Oculus/VoiceMod/Scenes/Materials/Color.mat.meta b/Assets/Oculus/VoiceMod/Scenes/Materials/Color.mat.meta new file mode 100644 index 0000000..c244cbc --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes/Materials/Color.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e92c598ccd7563b408cb22916184a2e9 +timeCreated: 1450219331 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scenes/Scripts.meta b/Assets/Oculus/VoiceMod/Scenes/Scripts.meta new file mode 100644 index 0000000..8c823b5 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c587b99ce5f86e04696f985f627394f9 +folderAsset: yes +timeCreated: 1450124138 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scenes/Scripts/VoiceModDemo_Logic.cs b/Assets/Oculus/VoiceMod/Scenes/Scripts/VoiceModDemo_Logic.cs new file mode 100644 index 0000000..ef907bb --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes/Scripts/VoiceModDemo_Logic.cs @@ -0,0 +1,254 @@ +using UnityEngine; +using System.Collections; + +public class VoiceModDemo_Logic : MonoBehaviour +{ + public OVRVoiceModContext[] contexts; + public Material material; + public Transform[] xfrms; + public EnableSwitch SwitchTarget; + + private int targetSet = 0; + + // Use this as the init value for the model scale + private Vector3 scale = new Vector3(3.0f, 3.0f, 3.0f); + private float scaleMax = 10.0f; + + private int currentPreset = 0; + + // Use this for initialization + void Start () + { + // Add a listener to the OVRMessenger for touch events + OVRMessenger.AddListener("Touchpad", LocalTouchEventCallback); + + // Initialize the proper target set + targetSet = 0; + SwitchTarget.SetActive(0); + + // Set initial color on models + if(material != null) + material.SetColor("_Color", Color.grey); + + } + + // Update is called once per frame + // Logic for LipSync_Demo + void Update () + { + // Change preset + int preset = -1; + + if(Input.GetKeyDown(KeyCode.Alpha1)) + preset = 0; + else + if(Input.GetKeyDown(KeyCode.Alpha2)) + preset = 1; + else + if(Input.GetKeyDown(KeyCode.Alpha3)) + preset = 2; + else + if(Input.GetKeyDown(KeyCode.Alpha4)) + preset = 3; + else + if(Input.GetKeyDown(KeyCode.Alpha5)) + preset = 4; + else + if(Input.GetKeyDown(KeyCode.Alpha6)) + preset = 5; + else + if(Input.GetKeyDown(KeyCode.Alpha7)) + preset = 6; + else + if(Input.GetKeyDown(KeyCode.Alpha8)) + preset = 7; + else + if(Input.GetKeyDown(KeyCode.Alpha9)) + preset = 8; + else + if(Input.GetKeyDown(KeyCode.Alpha0)) + preset = 9; + + if(preset != -1) + { + Color c = Color.black; + + for (int i = 0; i < contexts.Length; i++) + { + if(contexts[i].SetPreset(preset) == true) + { + // query color from preset and set material color + // of sphere + c = contexts[i].GetPresetColor(preset); + } + } + + // Set the material(s) note: each context is sharing a single + // material in this demo :) + if(material != null) + material.SetColor("_Color", c); + } + + // Update transforms with context average volume + UpdateModelScale(); + + // Change visible target context + if (Input.GetKeyDown(KeyCode.Z)) + { + targetSet = 0; + SetCurrentTarget(); + } + else + if (Input.GetKeyDown(KeyCode.X)) + { + targetSet = 1; + SetCurrentTarget(); + } + + // Close app + if(Input.GetKeyDown (KeyCode.Escape)) + Application.Quit(); + } + + /// + /// Sets the current target. + /// + void SetCurrentTarget() + { + switch(targetSet) + { + case(0): + SwitchTarget.SetActive(0); + OVRDebugConsole.Clear(); + OVRDebugConsole.Log("MICROPHONE INPUT"); + OVRDebugConsole.ClearTimeout(1.5f); + + break; + case(1): + SwitchTarget.SetActive(1); + OVRDebugConsole.Clear(); + OVRDebugConsole.Log("SAMPLE INPUT"); + OVRDebugConsole.ClearTimeout(1.5f); + + break; + } + } + + /// + /// Local touch event callback. + /// + /// Touch event. + void LocalTouchEventCallback(OVRTouchpad.TouchEvent touchEvent) + { + switch(touchEvent) + { + case(OVRTouchpad.TouchEvent.Left): + + targetSet--; + if(targetSet < 0) + targetSet = 1; + + SetCurrentTarget(); + + break; + + case(OVRTouchpad.TouchEvent.Right): + + targetSet++; + if(targetSet > 1) + targetSet = 0; + + SetCurrentTarget(); + + break; + + case(OVRTouchpad.TouchEvent.Up): + + if(contexts.Length != 0) + { + if(contexts[0].GetNumPresets() == 0) + { + OVRDebugConsole.Clear(); + OVRDebugConsole.Log("NO PRESETS!"); + OVRDebugConsole.ClearTimeout(1.5f); + } + else + { + currentPreset++; + if(currentPreset >= contexts[0].GetNumPresets()) + currentPreset = 0; + + Color c = Color.black; + + for (int i = 0; i < contexts.Length; i++) + { + if(contexts[i].SetPreset(currentPreset) == true) + { + // query color from preset and set material color + // of sphere + c = contexts[i].GetPresetColor(currentPreset); + } + } + + // Set the material(s) note: each context is sharing a single + // material in this demo :) + if(material != null) + material.SetColor("_Color", c); + } + } + + break; + + case(OVRTouchpad.TouchEvent.Down): + if(contexts.Length != 0) + { + if(contexts[0].GetNumPresets() == 0) + { + OVRDebugConsole.Clear(); + OVRDebugConsole.Log("NO PRESETS!"); + OVRDebugConsole.ClearTimeout(1.5f); + } + else + { + currentPreset--; + if(currentPreset < 0) + currentPreset = contexts[0].GetNumPresets() - 1; + + Color c = Color.black; + + for (int i = 0; i < contexts.Length; i++) + { + if(contexts[i].SetPreset(currentPreset) == true) + { + // query color from preset and set material color + // of sphere + c = contexts[i].GetPresetColor(currentPreset); + } + } + + // Set the material(s) note: each context is sharing a single + // material in this demo :) + if(material != null) + material.SetColor("_Color", c); + } + } + + break; + + } + } + + /// + /// Updates the model scale. + /// + void UpdateModelScale() + { + for (int i = 0; i < xfrms.Length; i++) + { + if(i < contexts.Length) + { + xfrms[i].localScale = scale * (1.0f + (contexts[i].GetAverageAbsVolume() * scaleMax)); + } + } + } +} diff --git a/Assets/Oculus/VoiceMod/Scenes/Scripts/VoiceModDemo_Logic.cs.meta b/Assets/Oculus/VoiceMod/Scenes/Scripts/VoiceModDemo_Logic.cs.meta new file mode 100644 index 0000000..f736eff --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes/Scripts/VoiceModDemo_Logic.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c59da31e1adfd5c40b48ee01f62c1002 +timeCreated: 1450135121 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scenes/VoiceMod_Demo.unity b/Assets/Oculus/VoiceMod/Scenes/VoiceMod_Demo.unity new file mode 100644 index 0000000..aa6f368 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes/VoiceMod_Demo.unity @@ -0,0 +1,740 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + 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: 3 + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_GIWorkflowMode: 1 + m_LightmapsMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 3 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AOMaxDistance: 1 + m_Padding: 2 + m_CompAOExponent: 0 + m_LightmapParameters: {fileID: 0} + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666667 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &21197967 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 447286, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 447286, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 447286, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 447286, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 447286, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 447286, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 447286, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 447286, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 013e95e8ef6cafb4b93fe4b6123ca5cb, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &420186774 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 485614, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 485614, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 485614, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + propertyPath: m_LocalPosition.z + value: -10 + objectReference: {fileID: 0} + - target: {fileID: 485614, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 485614, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 485614, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 485614, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 485614, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 4887a8c62805ff24aa5f127600cbbde3, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &563670406 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 563670407} + - 82: {fileID: 563670409} + - 114: {fileID: 563670408} + m_Layer: 0 + m_Name: SampleInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &563670407 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 563670406} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1103851422} + m_Father: {fileID: 1783704650} + m_RootOrder: 1 +--- !u!114 &563670408 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 563670406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: beb05abfbdc9f804ab7e1bdd89727bd7, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + gain: 1 + audioMute: 0 + loopback: 108 + VM_MixAudio: 1 + VM_Pitch: 1 + VM_Bands: 32 + VM_FormantCorrect: 0 + VM_C1_TrackPitch: 0 + VM_C1_Type: 0 + VM_C1_Gain: 0.5 + VM_C1_Freq: 440 + VM_C1_Note: 67 + VM_C1_PulseWidth: 0.5 + VM_C1_CycledNoiseSize: 512 + VM_C2_TrackPitch: 0 + VM_C2_Type: 0 + VM_C2_Gain: 0.5 + VM_C2_Freq: 440 + VM_C2_Note: 67 + VM_C2_PulseWidth: 0.5 + VM_C2_CycledNoiseSize: 512 +--- !u!82 &563670409 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 563670406} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 66cec73d2756bad4387104c24275d8ee, type: 3} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!1 &1002608923 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1002608924} + - 33: {fileID: 1002608927} + - 135: {fileID: 1002608926} + - 23: {fileID: 1002608925} + m_Layer: 0 + m_Name: SphereMicInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1002608924 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1002608923} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 1953342594} + m_RootOrder: 0 +--- !u!23 &1002608925 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1002608923} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: e92c598ccd7563b408cb22916184a2e9, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!135 &1002608926 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1002608923} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1002608927 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1002608923} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1103851421 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1103851422} + - 33: {fileID: 1103851425} + - 135: {fileID: 1103851424} + - 23: {fileID: 1103851423} + m_Layer: 0 + m_Name: SphereSampleInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1103851422 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1103851421} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 563670407} + m_RootOrder: 0 +--- !u!23 &1103851423 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1103851421} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: e92c598ccd7563b408cb22916184a2e9, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!135 &1103851424 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1103851421} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1103851425 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1103851421} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1783704647 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1783704650} + - 114: {fileID: 1783704649} + - 114: {fileID: 1783704648} + m_Layer: 0 + m_Name: VoiceModInputs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1783704648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1783704647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ae0626e0efd05a54f82ac59bc4c3557d, type: 3} + m_Name: + m_EditorClassIdentifier: + SwitchTargets: + - {fileID: 1953342590} + - {fileID: 563670406} +--- !u!114 &1783704649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1783704647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c59da31e1adfd5c40b48ee01f62c1002, type: 3} + m_Name: + m_EditorClassIdentifier: + contexts: + - {fileID: 1953342591} + - {fileID: 563670408} + material: {fileID: 2100000, guid: e92c598ccd7563b408cb22916184a2e9, type: 2} + xfrms: + - {fileID: 1002608924} + - {fileID: 1103851422} + SwitchTarget: {fileID: 1783704648} +--- !u!4 &1783704650 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1783704647} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1953342594} + - {fileID: 563670407} + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &1953342590 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1953342594} + - 82: {fileID: 1953342593} + - 114: {fileID: 1953342592} + - 114: {fileID: 1953342591} + m_Layer: 0 + m_Name: MicrophoneInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1953342591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953342590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: beb05abfbdc9f804ab7e1bdd89727bd7, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + gain: 1 + audioMute: 1 + loopback: 108 + VM_MixAudio: 1 + VM_Pitch: 1 + VM_Bands: 32 + VM_FormantCorrect: 0 + VM_C1_TrackPitch: 0 + VM_C1_Type: 0 + VM_C1_Gain: 0.5 + VM_C1_Freq: 440 + VM_C1_Note: 67 + VM_C1_PulseWidth: 0.5 + VM_C1_CycledNoiseSize: 512 + VM_C2_TrackPitch: 0 + VM_C2_Type: 0 + VM_C2_Gain: 0.5 + VM_C2_Freq: 440 + VM_C2_Note: 67 + VM_C2_PulseWidth: 0.5 + VM_C2_CycledNoiseSize: 512 +--- !u!114 &1953342592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953342590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 19e8290db1b2e0748a6126d146686a6d, type: 3} + m_Name: + m_EditorClassIdentifier: + audioSource: {fileID: 0} + GuiSelectDevice: 1 + sensitivity: 100 + sourceVolume: 100 + micFrequency: 16000 + micControl: 2 + selectedDevice: + loudness: 0 +--- !u!82 &1953342593 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953342590} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!4 &1953342594 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953342590} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1002608924} + m_Father: {fileID: 1783704650} + m_RootOrder: 0 +--- !u!1 &2022580288 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2022580290} + - 108: {fileID: 2022580289} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &2022580289 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2022580288} + m_Enabled: 1 + serializedVersion: 6 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_AreaSize: {x: 1, y: 1} +--- !u!4 &2022580290 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2022580288} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 diff --git a/Assets/Oculus/VoiceMod/Scenes/VoiceMod_Demo.unity.meta b/Assets/Oculus/VoiceMod/Scenes/VoiceMod_Demo.unity.meta new file mode 100644 index 0000000..85208ce --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scenes/VoiceMod_Demo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b58c6b47668e3b49b538ddc3f3a4c5b +timeCreated: 1450119176 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scripts.meta b/Assets/Oculus/VoiceMod/Scripts.meta new file mode 100644 index 0000000..f3e7968 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f13e12c3c3759f645bed844d7295faba +folderAsset: yes +timeCreated: 1450118836 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scripts/Helpers.meta b/Assets/Oculus/VoiceMod/Scripts/Helpers.meta new file mode 100644 index 0000000..dd6d1dc --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/Helpers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 30e0cd6fabc83a94ea16a972dd7778a0 +folderAsset: yes +timeCreated: 1450118836 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRDebugConsole.cs b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRDebugConsole.cs new file mode 100644 index 0000000..d6f1f0b --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRDebugConsole.cs @@ -0,0 +1,223 @@ +/************************************************************************************ +Filename : OVRDebugConsole.cs +Content : Write to a text string, used by UI.Text +Created : May 22, 2015 +Copyright : Copyright 2015 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +public class OVRDebugConsole : MonoBehaviour +{ + public ArrayList messages = new ArrayList(); + public int maxMessages = 15; // The max number of messages displayed + public Text textMsg; // text string to display + + // Our instance to allow this script to be called without a direct connection. + private static OVRDebugConsole s_Instance = null; + + // Clear timeout + private bool clearTimeoutOn = false; + private float clearTimeout = 0.0f; + + /// + /// Gets the instance. + /// + /// The instance. + public static OVRDebugConsole instance + { + get + { + if (s_Instance == null) + { + s_Instance = FindObjectOfType(typeof(OVRDebugConsole)) as OVRDebugConsole; + + if (s_Instance == null) + { + GameObject console = new GameObject(); + console.AddComponent(); + console.name = "OVRDebugConsole"; + s_Instance = FindObjectOfType(typeof(OVRDebugConsole)) as OVRDebugConsole; + } + } + + return s_Instance; + } + } + + /// + /// Awake this instance. + /// + void Awake() + { + s_Instance = this; + Init(); + + } + + /// + /// Update this instance. + /// + void Update() + { + if(clearTimeoutOn == true) + { + clearTimeout -= Time.deltaTime; + if(clearTimeout < 0.0f) + { + Clear(); + clearTimeout = 0.0f; + clearTimeoutOn = false; + } + } + } + + /// + /// Init this instance. + /// + public void Init() + { + if(textMsg == null) + { + Debug.LogWarning("DebugConsole Init WARNING::UI text not set. Will not be able to display anything."); + } + + Clear(); + } + + + //+++++++++ INTERFACE FUNCTIONS ++++++++++++++++++++++++++++++++ + + /// + /// Log the specified message. + /// + /// Message. + public static void Log(string message) + { + OVRDebugConsole.instance.AddMessage(message, Color.white); + } + + /// + /// Log the specified message and color. + /// + /// Message. + /// Color. + public static void Log(string message, Color color) + { + OVRDebugConsole.instance.AddMessage(message, color); + } + + /// + /// Clear this instance. + /// + public static void Clear() + { + OVRDebugConsole.instance.ClearMessages(); + } + + /// + /// Calls clear after a certain time. + /// + /// Time to clear. + public static void ClearTimeout(float timeToClear) + { + OVRDebugConsole.instance.SetClearTimeout(timeToClear); + } + + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + /// + /// Adds the message. + /// + /// Message. + /// Color. + public void AddMessage(string message, Color color) + { + messages.Add(message); + + if(textMsg != null) + textMsg.color = color; + + Display(); + } + + /// + /// Clears the messages. + /// + public void ClearMessages() + { + messages.Clear(); + Display(); + } + + /// + /// Sets the clear timeout. + /// + /// Timeout. + public void SetClearTimeout(float timeout) + { + clearTimeout = timeout; + clearTimeoutOn = true; + } + + /// + // Prunes the array to fit within the maxMessages limit + /// + void Prune() + { + int diff; + if (messages.Count > maxMessages) + { + if (messages.Count <= 0) + { + diff = 0; + } + else + { + diff = messages.Count - maxMessages; + } + messages.RemoveRange(0, (int)diff); + } + } + + /// + /// Display this instance. + /// + void Display() + { + if (messages.Count > maxMessages) + { + Prune(); + } + + if(textMsg != null) + { + textMsg.text = ""; // Clear text out + int x = 0; + + while (x < messages.Count) + { + textMsg.text += (string)messages[x]; + textMsg.text +='\n'; + x += 1; + } + } + } +} diff --git a/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRDebugConsole.cs.meta b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRDebugConsole.cs.meta new file mode 100644 index 0000000..96ddfcb --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRDebugConsole.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 032142ba4fe4a53458d86dc9a8610f36 +timeCreated: 1450118836 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMessenger.cs b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMessenger.cs new file mode 100644 index 0000000..ff414aa --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMessenger.cs @@ -0,0 +1,470 @@ +/************************************************************************************ +Filename : OVRMessenger.cs +Content : Base component OVR class +Created : January 8, 2013 +Authors : Peter Giokaris +Copyright : Copyright 2014 Oculus VR, LLC. All Rights reserved. + +Use of this software is subject to the terms of the Oculus LLC license +agreement provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + + Messenger.cs from Unity3d: http://wiki.unity3d.com/index.php/Advanced_CSharp_Messenger + + Renamed to OVRMessenger + + * Advanced C# messenger by Ilya Suzdalnitski. V1.0 + * + * Based on Rod Hyde's "CSharpMessenger" and Magnus Wolffelt's "CSharpMessenger Extended". + * + * Features: + * Prevents a MissingReferenceException because of a reference to a destroyed message handler. + * Option to log all messages + * Extensive error detection, preventing silent bugs + * + * Usage examples: + 1. Messenger.AddListener("prop collected", PropCollected); + Messenger.Broadcast("prop collected", prop); + 2. Messenger.AddListener("speed changed", SpeedChanged); + Messenger.Broadcast("speed changed", 0.5f); + * + * Messenger cleans up its evenTable automatically upon loading of a new level. + * + * Don't forget that the messages that should survive the cleanup, should be marked with Messenger.MarkAsPermanent(string) + * + +************************************************************************************/ +//#define LOG_ALL_MESSAGES +//#define LOG_ADD_LISTENER +//#define LOG_BROADCAST_MESSAGE +//#define REQUIRE_LISTENER + +using System; +using System.Collections.Generic; +using UnityEngine; + + // Add more delegate types here and implement them the same way below.. +public delegate void OVRCallback(); +public delegate void OVRCallback(T arg1); +public delegate void OVRCallback(T arg1, U arg2); +public delegate void OVRCallback(T arg1, U arg2, V arg3); + +static internal class OVRMessenger { + +#region Internal variables + //Disable the unused variable warning +#pragma warning disable 0414 + //Ensures that the MessengerHelper will be created automatically upon start of the game. + static private MessengerHelper messengerHelper = ( new GameObject("MessengerHelper") ).AddComponent< MessengerHelper >(); +#pragma warning restore 0414 + + static public Dictionary eventTable = new Dictionary(); + + //Message handlers that should never be removed, regardless of calling Cleanup + static public List< string > permanentMessages = new List< string > (); +#endregion + +#region Helper methods + + /// + /// Marks a certain message as permanent. + /// + /// Event type. + static public void MarkAsPermanent(string eventType) + { +#if LOG_ALL_MESSAGES + Debug.Log("Messenger MarkAsPermanent \t\"" + eventType + "\""); +#endif + permanentMessages.Add( eventType ); + } + + /// + /// Cleanup this instance. + /// + static public void Cleanup() + { +#if LOG_ALL_MESSAGES + Debug.Log("MESSENGER Cleanup. Make sure that none of necessary listeners are removed."); +#endif + List< string > messagesToRemove = new List(); + + foreach (KeyValuePair pair in eventTable) { + bool wasFound = false; + + foreach (string message in permanentMessages) { + + if (pair.Key == message) { + wasFound = true; + break; + } + } + + if (!wasFound) + messagesToRemove.Add( pair.Key ); + } + + + foreach (string message in messagesToRemove) { + eventTable.Remove( message ); + } + } + + /// + /// Prints the event table. + /// + static public void PrintEventTable() + { + Debug.Log("\t\t\t=== MESSENGER PrintEventTable ==="); + + foreach (KeyValuePair pair in eventTable) { + Debug.Log("\t\t\t" + pair.Key + "\t\t" + pair.Value); + } + + Debug.Log("\n"); + } +#endregion + + #region Message logging and exception throwing + /// + /// Raises the listener adding event. + /// + /// Event type. + /// Listener being added. + static public void OnListenerAdding(string eventType, Delegate listenerBeingAdded) + { +#if LOG_ALL_MESSAGES || LOG_ADD_LISTENER + Debug.Log("MESSENGER OnListenerAdding \t\"" + eventType + "\"\t{" + listenerBeingAdded.Target + " -> " + listenerBeingAdded.Method + "}"); +#endif + + if (!eventTable.ContainsKey(eventType)) { + eventTable.Add(eventType, null ); + } + + Delegate d = eventTable[eventType]; + + if (d != null && d.GetType() != listenerBeingAdded.GetType()) { + throw new ListenerException(string.Format("Attempting to add listener with inconsistent signature for event type {0}. Current listeners have type {1} and listener being added has type {2}", eventType, d.GetType().Name, listenerBeingAdded.GetType().Name)); + } + } + + /// + /// Raises the listener removing event. + /// + /// Event type. + /// Listener being removed. + static public void OnListenerRemoving(string eventType, Delegate listenerBeingRemoved) + { + +#if LOG_ALL_MESSAGES + Debug.Log("MESSENGER OnListenerRemoving \t\"" + eventType + "\"\t{" + listenerBeingRemoved.Target + " -> " + listenerBeingRemoved.Method + "}"); +#endif + + if (eventTable.ContainsKey(eventType)) + { + Delegate d = eventTable[eventType]; + + if (d == null) + { + throw new ListenerException(string.Format("Attempting to remove listener with for event type \"{0}\" but current listener is null.", eventType)); + } else if (d.GetType() != listenerBeingRemoved.GetType()) + { + throw new ListenerException(string.Format("Attempting to remove listener with inconsistent signature for event type {0}. Current listeners have type {1} and listener being removed has type {2}", eventType, d.GetType().Name, listenerBeingRemoved.GetType().Name)); + } + } + else + { + throw new ListenerException(string.Format("Attempting to remove listener for type \"{0}\" but Messenger doesn't know about this event type.", eventType)); + } + } + + /// + /// Raises the listener removed event. + /// + /// Event type. + static public void OnListenerRemoved(string eventType) { + + if (eventTable[eventType] == null) { + eventTable.Remove(eventType); + } + } + + /// + /// Raises the broadcasting event. + /// + /// Event type. + static public void OnBroadcasting(string eventType) + { + +#if REQUIRE_LISTENER + if (!eventTable.ContainsKey(eventType)) { + throw new BroadcastException(string.Format("Broadcasting message \"{0}\" but no listener found. Try marking the message with Messenger.MarkAsPermanent.", eventType)); + } +#endif + } + + /// + /// Creates the broadcast signature exception. + /// + /// The broadcast signature exception. + /// Event type. + static public BroadcastException CreateBroadcastSignatureException(string eventType) + { + return new BroadcastException(string.Format("Broadcasting message \"{0}\" but listeners have a different signature than the broadcaster.", eventType)); + } + + public class BroadcastException : Exception + { + public BroadcastException(string msg) + : base(msg) + { + } + } + + public class ListenerException : Exception + { + public ListenerException(string msg) + : base(msg) + { + } + } +#endregion + +#region AddListener + /// + /// No parameters. + /// + /// Event type. + /// Handler. + static public void AddListener(string eventType, OVRCallback handler) + { + OnListenerAdding(eventType, handler); + eventTable[eventType] = (OVRCallback)eventTable[eventType] + handler; + } + + /// + /// Single parameter. + /// + /// Event type. + /// Handler. + /// The 1st type parameter. + static public void AddListener(string eventType, OVRCallback handler) + { + OnListenerAdding(eventType, handler); + eventTable[eventType] = (OVRCallback)eventTable[eventType] + handler; + } + + /// + /// Two parameters. + /// + /// Event type. + /// Handler. + /// The 1st type parameter. + /// The 2nd type parameter. + static public void AddListener(string eventType, OVRCallback handler) + { + OnListenerAdding(eventType, handler); + eventTable[eventType] = (OVRCallback)eventTable[eventType] + handler; + } + + /// + /// Three parameters + /// Event type. + /// Handler. + /// The 1st type parameter. + /// The 2nd type parameter. + /// The 3rd type parameter. + static public void AddListener(string eventType, OVRCallback handler) + { + OnListenerAdding(eventType, handler); + eventTable[eventType] = (OVRCallback)eventTable[eventType] + handler; + } +#endregion + +#region RemoveListener + /// + /// No parameters + /// + /// Event type. + /// Handler. + static public void RemoveListener(string eventType, OVRCallback handler) + { + OnListenerRemoving(eventType, handler); + eventTable[eventType] = (OVRCallback)eventTable[eventType] - handler; + OnListenerRemoved(eventType); + } + + /// + /// Single parameter + /// + /// Event type. + /// Handler. + /// The 1st type parameter. + static public void RemoveListener(string eventType, OVRCallback handler) + { + OnListenerRemoving(eventType, handler); + eventTable[eventType] = (OVRCallback)eventTable[eventType] - handler; + OnListenerRemoved(eventType); + } + + /// + /// Two parameters + /// + /// Event type. + /// Handler. + /// The 1st type parameter. + /// The 2nd type parameter. + static public void RemoveListener(string eventType, OVRCallback handler) + { + OnListenerRemoving(eventType, handler); + eventTable[eventType] = (OVRCallback)eventTable[eventType] - handler; + OnListenerRemoved(eventType); + } + + /// + //Three parameters. + /// + /// Event type. + /// Handler. + /// The 1st type parameter. + /// The 2nd type parameter. + /// The 3rd type parameter. + static public void RemoveListener(string eventType, OVRCallback handler) + { + OnListenerRemoving(eventType, handler); + eventTable[eventType] = (OVRCallback)eventTable[eventType] - handler; + OnListenerRemoved(eventType); + } + +#endregion + +#region Broadcast + /// + /// Broadcast the specified eventType. + /// + /// Event type. + static public void Broadcast(string eventType) + { +#if LOG_ALL_MESSAGES || LOG_BROADCAST_MESSAGE + Debug.Log("MESSENGER\t" + System.DateTime.Now.ToString("hh:mm:ss.fff") + "\t\t\tInvoking \t\"" + eventType + "\""); +#endif + OnBroadcasting(eventType); + + Delegate d; + if (eventTable.TryGetValue(eventType, out d)) { + OVRCallback callback = d as OVRCallback; + + if (callback != null) { + callback(); + } else { + throw CreateBroadcastSignatureException(eventType); + } + } + } + + /// + /// Broadcast the specified eventType and arg1. + /// + /// Event type. + /// Arg1. + /// The 1st type parameter. + static public void Broadcast(string eventType, T arg1) { +#if LOG_ALL_MESSAGES || LOG_BROADCAST_MESSAGE + Debug.Log("MESSENGER\t" + System.DateTime.Now.ToString("hh:mm:ss.fff") + "\t\t\tInvoking \t\"" + eventType + "\""); +#endif + OnBroadcasting(eventType); + + Delegate d; + + if (eventTable.TryGetValue(eventType, out d)) { + OVRCallback callback = d as OVRCallback; + + if (callback != null) { + callback(arg1); + } else { + throw CreateBroadcastSignatureException(eventType); + } + } + } + + /// + /// Broadcast the specified eventType, arg1 and arg2. + /// + /// Event type. + /// Arg1. + /// Arg2. + /// The 1st type parameter. + /// The 2nd type parameter. + static public void Broadcast(string eventType, T arg1, U arg2) + { +#if LOG_ALL_MESSAGES || LOG_BROADCAST_MESSAGE + Debug.Log("MESSENGER\t" + System.DateTime.Now.ToString("hh:mm:ss.fff") + "\t\t\tInvoking \t\"" + eventType + "\""); +#endif + OnBroadcasting(eventType); + + Delegate d; + + if (eventTable.TryGetValue(eventType, out d)) { + OVRCallback callback = d as OVRCallback; + + if (callback != null) { + callback(arg1, arg2); + } else { + throw CreateBroadcastSignatureException(eventType); + } + } + } + + /// + /// Broadcast the specified eventType, arg1, arg2 and arg3. + /// + /// Event type. + /// Arg1. + /// Arg2. + /// Arg3. + /// The 1st type parameter. + /// The 2nd type parameter. + /// The 3rd type parameter. + static public void Broadcast(string eventType, T arg1, U arg2, V arg3) + { +#if LOG_ALL_MESSAGES || LOG_BROADCAST_MESSAGE + Debug.Log("MESSENGER\t" + System.DateTime.Now.ToString("hh:mm:ss.fff") + "\t\t\tInvoking \t\"" + eventType + "\""); +#endif + OnBroadcasting(eventType); + + Delegate d; + if (eventTable.TryGetValue(eventType, out d)) { + OVRCallback callback = d as OVRCallback; + + if (callback != null) { + callback(arg1, arg2, arg3); + } else { + throw CreateBroadcastSignatureException(eventType); + } + } + } +#endregion +} + +/// +/// Messenger helper. +/// This manager will ensure that the messenger's eventTable will be cleaned up upon loading of a new level. +/// +public sealed class MessengerHelper : MonoBehaviour +{ + /// + /// Awake this instance. + /// + void Awake () + { + DontDestroyOnLoad(gameObject); + } + + /// + /// Raises the disable event. + /// + public void OnDisable() + { + OVRMessenger.Cleanup(); + } +} diff --git a/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMessenger.cs.meta b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMessenger.cs.meta new file mode 100644 index 0000000..bdd9a01 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMessenger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c7841d42721591642aa796e18d66d248 +timeCreated: 1447374135 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs new file mode 100644 index 0000000..0c4fee0 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs @@ -0,0 +1,297 @@ +/************************************************************************************ +Filename : OVRMicInput.cs +Content : Interface to microphone input +Created : May 12, 2015 +Copyright : Copyright 2015 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System.Collections; + +[RequireComponent(typeof(AudioSource))] + +public class OVRMicInput : MonoBehaviour +{ + public enum micActivation + { + HoldToSpeak, + PushToSpeak, + ConstantSpeak + } + + // PUBLIC MEMBERS + public AudioSource audioSource = null; + public bool GuiSelectDevice = true; + + [SerializeField] + private float sensitivity = 100; + public float Sensitivity + { + get{return sensitivity;} + set{sensitivity = Mathf.Clamp (value, 0, 100);} + } + + [SerializeField] + private float sourceVolume = 100; + public float SourceVolume + { + get{return sourceVolume;} + set{sourceVolume = Mathf.Clamp (value, 0, 100);} + } + + [SerializeField] + private int micFrequency = 16000; + public float MicFrequency + { + get{return micFrequency;} + set{micFrequency = (int)Mathf.Clamp ((float)value, 0, 96000);} + } + + + public micActivation micControl; + + public string selectedDevice; + + public float loudness; // Use this to chenge visual values. Range is 0 - 100 + + // PRIVATE MEMBERS + private bool micSelected = false; + private int minFreq, maxFreq; + private bool focused = true; + + //---------------------------------------------------- + // MONOBEHAVIOUR OVERRIDE FUNCTIONS + //---------------------------------------------------- + + /// + /// Awake this instance. + /// + void Awake() + { + // First thing to do, cache the unity audio source (can be managed by the + // user if audio source can change) + if (!audioSource) audioSource = GetComponent(); + if (!audioSource) return; // this should never happen + } + + /// + /// Start this instance. + /// + void Start() + { + audioSource.loop = true; // Set the AudioClip to loop + audioSource.mute = false; + + if(Microphone.devices.Length!= 0) + { + selectedDevice = Microphone.devices[0].ToString(); + micSelected = true; + GetMicCaps(); + } + } + + /// + /// Update this instance. + /// + void Update() + { + if (!focused) + StopMicrophone(); + + if (!Application.isPlaying) + StopMicrophone(); + + audioSource.volume = (sourceVolume / 100); + loudness = Mathf.Clamp(GetAveragedVolume() * sensitivity * (sourceVolume / 10), 0, 100); + + //Hold To Speak + if (micControl == micActivation.HoldToSpeak) + { + if (Microphone.IsRecording(selectedDevice) && Input.GetKey(KeyCode.Space) == false) + StopMicrophone(); + + if (Input.GetKeyDown(KeyCode.Space)) //Push to talk + StartMicrophone(); + + if (Input.GetKeyUp(KeyCode.Space)) + StopMicrophone(); + } + + //Push To Talk + if (micControl == micActivation.PushToSpeak) + { + if (Input.GetKeyDown(KeyCode.Space)) + { + if (Microphone.IsRecording(selectedDevice)) + StopMicrophone(); + else if (!Microphone.IsRecording(selectedDevice)) + StartMicrophone(); + } + } + + //Constant Speak + if (micControl == micActivation.ConstantSpeak) + if (!Microphone.IsRecording(selectedDevice)) + StartMicrophone(); + + + //Mic Slected = False + if (Input.GetKeyDown(KeyCode.M)) + micSelected = false; + } + + + /// + /// Raises the application focus event. + /// + /// If set to true focus. + void OnApplicationFocus(bool focus) + { + focused = focus; + + // fixes app with a delayed buffer if going out of focus + if (!focused) + StopMicrophone(); + } + + /// + /// Raises the application pause event. + /// + /// If set to true focus. + void OnApplicationPause(bool focus) + { + focused = focus; + + // fixes app with a delayed buffer if going out of focus + if (!focused) + StopMicrophone(); + } + + void OnDisable() + { + StopMicrophone(); + } + + /// + /// Raises the GU event. + /// + void OnGUI() + { + MicDeviceGUI((Screen.width/2)-150, (Screen.height/2)-75, 300, 50, 10, -300); + } + + //---------------------------------------------------- + // PUBLIC FUNCTIONS + //---------------------------------------------------- + + /// + /// Mics the device GU. + /// + /// Left. + /// Top. + /// Width. + /// Height. + /// Button space top. + /// Button space left. + public void MicDeviceGUI (float left, float top, float width, float height, float buttonSpaceTop, float buttonSpaceLeft) + { + //If there is more than one device, choose one. + if (Microphone.devices.Length >= 1 && GuiSelectDevice == true && micSelected == false) + { + for (int i = 0; i < Microphone.devices.Length; ++i) + { + if (GUI.Button(new Rect(left + ((width + buttonSpaceLeft) * i), top + ((height + buttonSpaceTop) * i), width, height), + Microphone.devices[i].ToString())) + { + StopMicrophone(); + selectedDevice = Microphone.devices[i].ToString(); + micSelected = true; + GetMicCaps(); + StartMicrophone(); + } + } + } + } + + /// + /// Gets the mic caps. + /// + public void GetMicCaps () + { + if(micSelected == false) return; + + //Gets the frequency of the device + Microphone.GetDeviceCaps(selectedDevice, out minFreq, out maxFreq); + + if ( minFreq == 0 && maxFreq == 0 ) + { + Debug.LogWarning ("GetMicCaps warning:: min and max frequencies are 0"); + minFreq = 44100; + maxFreq = 44100; + } + + if (micFrequency > maxFreq) + micFrequency = maxFreq; + } + + /// + /// Starts the microphone. + /// + public void StartMicrophone () + { + if(micSelected == false) return; + + //Starts recording + audioSource.clip = Microphone.Start(selectedDevice, true, 1, micFrequency); + + // Wait until the recording has started + while (!(Microphone.GetPosition(selectedDevice) > 0)){} + + // Play the audio source + audioSource.Play(); + } + + /// + /// Stops the microphone. + /// + public void StopMicrophone () + { + if(micSelected == false) return; + + // Overriden with a clip to play? Don't stop the audio source + if((audioSource != null) && (audioSource.clip != null) &&(audioSource.clip.name == "Microphone")) + audioSource.Stop(); + + Microphone.End(selectedDevice); + } + + + //---------------------------------------------------- + // PRIVATE FUNCTIONS + //---------------------------------------------------- + + /// + /// Gets the averaged volume. + /// + /// The averaged volume. + float GetAveragedVolume() + { + // We will use the SR to get average volume + // return OVRSpeechRec.GetAverageVolume(); + return 0.0f; + } +} diff --git a/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs.meta b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs.meta new file mode 100644 index 0000000..71f81d3 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 19e8290db1b2e0748a6126d146686a6d +timeCreated: 1450118836 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scripts/OVRVoiceMod.cs b/Assets/Oculus/VoiceMod/Scripts/OVRVoiceMod.cs new file mode 100644 index 0000000..8e437eb --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/OVRVoiceMod.cs @@ -0,0 +1,263 @@ +/************************************************************************************ +Filename : OVRVoiceMod.cs +Content : Interface to Oculus voice mod +Created : December 14th, 2015 +Copyright : Copyright 2015 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System; +using System.Runtime.InteropServices; + +//------------------------------------------------------------------------------------- +// ***** OVRVoiceMod +// +/// +/// OVRVoiceMod interfaces into the Oculus voice-mod engine. This component should be added +/// into the scene once. +/// +/// +public class OVRVoiceMod : MonoBehaviour +{ + public const int ovrVoiceModSuccess = 0; + + // Error codes that may return from VoiceMod engine + public enum ovrVoiceModError + { + Unknown = -2250, //< An unknown error has occurred + CannotCreateContext = -2251, //< Unable to create a context + InvalidParam = -2252, //< An invalid parameter, e.g. NULL pointer or out of range + BadSampleRate = -2253, //< An unsupported sample rate was declared + MissingDLL = -2254, //< The DLL or shared library could not be found + BadVersion = -2255, //< Mismatched versions between header and libs + UndefinedFunction = -2256 //< An undefined function + }; + + /// Flags (unused at this time) + public enum ovrViceModFlag + { + None = 0x0000, + }; + + /// NOTE: Opaque typedef for voice mod context is an unsigned int (uint) + + // * * * * * * * * * * * * * + // Import functions + public const string strOVRLS = "OVRVoiceMod"; + [DllImport(strOVRLS)] + private static extern int ovrVoiceModDll_Initialize(int SampleRate, int BufferSize); + [DllImport(strOVRLS)] + private static extern void ovrVoiceModDll_Shutdown(); + [DllImport(strOVRLS)] + private static extern IntPtr ovrVoicemodDll_GetVersion(ref int Major, + ref int Minor, + ref int Patch); + [DllImport(strOVRLS)] + private static extern int ovrVoiceModDll_CreateContext(ref uint Context); + [DllImport(strOVRLS)] + private static extern int ovrVoiceModDll_DestroyContext(uint Context); + [DllImport(strOVRLS)] + private static extern int ovrVoiceModDll_SendParameter(uint Context, int Parameter, int Value); + [DllImport(strOVRLS)] + private static extern int ovrVoiceModDll_ProcessFrame(uint Context, uint Flags, float [] AudioBuffer); + [DllImport(strOVRLS)] + private static extern int ovrVoiceModDll_ProcessFrameInterleaved(uint Context, uint Flags, float [] AudioBuffer); + [DllImport(strOVRLS)] + private static extern int ovrVoiceModDll_GetAverageAbsVolume(uint Context, ref float Volume); + + // * * * * * * * * * * * * * + // Public members + + // * * * * * * * * * * * * * + // Static members + private static int sOVRVoiceModInit = (int)ovrVoiceModError.Unknown; + + // interface through this static member. + public static OVRVoiceMod sInstance = null; + + // * * * * * * * * * * * * * + // MonoBehaviour overrides + + /// + /// Awake this instance. + /// + void Awake () + { + // We can only have one instance of OVRLipSync in a scene (use this for local property query) + if(sInstance == null) + { + sInstance = this; + } + else + { + Debug.LogWarning (System.String.Format ("OVRVoiceMod Awake: Only one instance of OVRVoiceMod can exist in the scene.")); + return; + } + + int samplerate; + int bufsize; + int numbuf; + + // Get the current sample rate + samplerate = AudioSettings.outputSampleRate; + // Get the current buffer size and number of buffers + AudioSettings.GetDSPBufferSize (out bufsize, out numbuf); + + String str = System.String.Format + ("OvrVoiceMod Awake: Queried SampleRate: {0:F0} BufferSize: {1:F0}", samplerate, bufsize); + Debug.LogWarning (str); + + sOVRVoiceModInit = ovrVoiceModDll_Initialize(samplerate, bufsize); + + if(sOVRVoiceModInit != ovrVoiceModSuccess) + { + Debug.LogWarning (System.String.Format + ("OvrVoiceMod Awake: Failed to init VoiceMod library")); + } + + // Important: Use the touchpad mechanism for input, call Create on the OVRTouchpad helper class + OVRTouchpad.Create(); + } + + /// + /// Start this instance. + /// Note: make sure to always have a Start function for classes that have editor scripts. + /// + void Start() + { + } + + /// + /// Run processes that need to be updated in our game thread + /// + void Update() + { + } + + /// + /// Raises the destroy event. + /// + void OnDestroy() + { + if(sInstance != this) + { + Debug.LogWarning ("OVRVoiceMod OnDestroy: This is not the correct OVRVoiceMod instance."); + } + + ovrVoiceModDll_Shutdown(); + sOVRVoiceModInit = (int)ovrVoiceModError.Unknown; + } + + // * * * * * * * * * * * * * + // Public Functions + + /// + /// Determines if is initialized. + /// + /// true if is initialized; otherwise, false. + public static int IsInitialized() + { + return sOVRVoiceModInit; + } + + /// + /// Creates the context. + /// + /// The context. + /// Context. + public static int CreateContext(ref uint context) + { + if(IsInitialized() != ovrVoiceModSuccess) + return (int)ovrVoiceModError.CannotCreateContext; + + return ovrVoiceModDll_CreateContext(ref context); + } + + /// + /// Destroies the context. + /// + /// The context. + /// Context. + public static int DestroyContext (uint context) + { + if(IsInitialized() != ovrVoiceModSuccess) + return (int)ovrVoiceModError.Unknown; + + return ovrVoiceModDll_DestroyContext(context); + } + + /// + /// Sends the parameter. + /// + /// The parameter. + /// Context. + /// Parameter. + /// Value. + public static int SendParameter(uint context, int parameter, int value) + { + if(IsInitialized() != ovrVoiceModSuccess) + return (int)ovrVoiceModError.Unknown; + + return ovrVoiceModDll_SendParameter(context, parameter, value); + } + + /// + /// Processes the frame. + /// + /// The frame. + /// Context. + /// Audio buffer. + public static int ProcessFrame(uint context, float [] audioBuffer) + { + if(IsInitialized() != ovrVoiceModSuccess) + return (int)ovrVoiceModError.Unknown; + + return ovrVoiceModDll_ProcessFrame(context, (uint)ovrViceModFlag.None , audioBuffer); + } + + /// + /// Processes the frame interleaved. + /// + /// The frame interleaved. + /// Context. + /// Audio buffer. + public static int ProcessFrameInterleaved(uint context, float [] audioBuffer) + { + if(IsInitialized() != ovrVoiceModSuccess) + return (int)ovrVoiceModError.Unknown; + + return ovrVoiceModDll_ProcessFrameInterleaved(context, (uint)ovrViceModFlag.None, audioBuffer); + } + + /// + /// Gets the average abs volume. + /// + /// The average abs volume. + /// Context. + /// Volume. + public static float GetAverageAbsVolume(uint context) + { + if(IsInitialized() != ovrVoiceModSuccess) + return 0.0f; + + float volume = 0; + + int result = ovrVoiceModDll_GetAverageAbsVolume(context, ref volume); + + return volume; + } +} diff --git a/Assets/Oculus/VoiceMod/Scripts/OVRVoiceMod.cs.meta b/Assets/Oculus/VoiceMod/Scripts/OVRVoiceMod.cs.meta new file mode 100644 index 0000000..66dddc0 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/OVRVoiceMod.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f9518abe0e11ea14dbba5c3d7a2fec2d +timeCreated: 1450120036 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VoiceMod/Scripts/OVRVoiceModContext.cs b/Assets/Oculus/VoiceMod/Scripts/OVRVoiceModContext.cs new file mode 100644 index 0000000..8d04538 --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/OVRVoiceModContext.cs @@ -0,0 +1,517 @@ +/************************************************************************************ +Filename : OVRVoiceModContext.cs +Content : Interface to Oculus Lip-Sync engine +Created : December 14th, 2015 +Copyright : Copyright 2015 Oculus VR, Inc. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.1 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.1 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +************************************************************************************/ +using UnityEngine; +using System; +using System.Runtime.InteropServices; + + +[RequireComponent(typeof(AudioSource))] + +//------------------------------------------------------------------------------------- +// ***** OVRVoiceModContext +// +/// +/// OVRVoiceModContext interfaces into VoiceMod engine. +/// Includes preset bank. +/// This component should be added into the scene once for each Audio Source. +/// +/// +public class OVRVoiceModContext : MonoBehaviour +{ + // Enum for various voice mod parameters (lines up with native context, OVRVoiceModContext.h) + public enum ovrVoiceModParams + { + MixInputAudio, // 0.0->1.0 + PitchInputAudio, // 0.5->2.0 + SetBands, // 1 -> 128 + FormantCorrection, // 0 = off, 1 = on + Carrier1_TrackPitch, // 0 = off, 1 = om + Carrier1_Type, // Carrier type: 0 = Noise, 1 = CycledNoise, 2 = SawUp, 3 = Pulse + Carrier1_Gain, // Linear multiplier (0.0 -> 1.0) + Carrier1_Frequency, // Frequency of carrier (used by SawUp and Pulse) 0.0 -> Sample Rate + Carrier1_Note, // Translates to frequency (0-127) + Carrier1_PulseWidth, // Used by Pulse carrier (0.0 -> 1.0) + Carrier1_CycledNoiseSize, // Number of samples in cycled noise carrier: 1 - 1024 + Carrier2_TrackPitch, // Same as Carrier 1 + Carrier2_Type, // + Carrier2_Gain, // + Carrier2_Frequency, // + Carrier2_Note, // + Carrier2_PulseWidth, // + Carrier2_CycledNoiseSize, // + Count + }; + + // * * * * * * * * * * * * * + // Public members + public AudioSource audioSource = null; + public float gain = 1.0f; + public bool audioMute = true; + public KeyCode loopback = KeyCode.L; + + // Voice Mod Preset + public struct VMPreset + { + public string info; + public Color color; + public float mix; + public float pitch; + public int bands; + public int formant; + public int c1PTrack; + public int c1Type; + public float c1Gain; + public float c1Freq; + public int c1Note; + public float c1PW; + public int c1CNS; + public int c2PTrack; + public int c2Type; + public float c2Gain; + public float c2Freq; + public int c2Note; + public float c2PW; + public int c2CNS; + }; + + private VMPreset [] VMPresets = new VMPreset[] + { + // INIT + new VMPreset{info="-INIT-\nNo pitch shift, no vocode", + color = Color.gray, + mix = 1.0f, pitch = 1.0f, bands = 32, formant = 0, + c1PTrack = 0, c1Type = 0, c1Gain = 0.0f, c1Freq = 440.0f, c1Note = -1, c1PW = 0.5f, c1CNS = 512, + c2PTrack = 0, c2Type = 0, c2Gain = 0.0f, c2Freq = 440.0f, c2Note = -1, c2PW = 0.5f, c2CNS = 512,}, + + new VMPreset{info="FULL VOCODE\nCarrier 1: Full noise", + color = Color.white, + mix = 0.0f, pitch = 1.0f, bands = 32, formant = 0, + c1PTrack = 0, c1Type = 0, c1Gain = 1.0f, c1Freq = 440.0f, c1Note = -1, c1PW = 0.5f, c1CNS = 512, + c2PTrack = 0, c2Type = 0, c2Gain = 0.0f, c2Freq = 440.0f, c2Note = -1, c2PW = 0.5f, c2CNS = 512,}, + + new VMPreset{info="FULL VOCODE\nCarrier 1: Cycled noise 512", + color = Color.blue, + mix = 0.0f, pitch = 1.0f, bands = 32, formant = 0, + c1PTrack = 0, c1Type = 1, c1Gain = 1.0f, c1Freq = 440.0f, c1Note = -1, c1PW = 0.5f, c1CNS = 512, + c2PTrack = 0, c2Type = 0, c2Gain = 0.0f, c2Freq = 440.0f, c2Note = -1, c2PW = 0.5f, c2CNS = 512,}, + + new VMPreset{info="FULL VOCODE\nCarrier 1: Saw Up, Freq 220", + color = Color.magenta, + mix = 0.0f, pitch = 1.0f, bands = 32, formant = 0, + c1PTrack = 0, c1Type = 2, c1Gain = 1.0f, c1Freq = 220.0f, c1Note = -1, c1PW = 0.5f, c1CNS = 512, + c2PTrack = 0, c2Type = 0, c2Gain = 0.0f, c2Freq = 440.0f, c2Note = -1, c2PW = 0.5f, c2CNS = 512,}, + + new VMPreset{info="FULL VOCODE\nCarrier 1: Saw Up, Pitch tracked\n", + color = Color.cyan, + mix = 0.0f, pitch = 1.0f, bands = 32, formant = 0, + c1PTrack = 1, c1Type = 2, c1Gain = 0.34f, c1Freq = 440.0f, c1Note = -1, c1PW = 0.1f, c1CNS = 512, + c2PTrack = 0, c2Type = 0, c2Gain = 0.0f, c2Freq = 440.0f, c2Note = -1, c2PW = 0.5f, c2CNS = 512,}, + + new VMPreset{info="INPUT PLUS VOCODE\nInput 50%, Vocode 50%\nPitch 1.0\nCarrier 1: Full Noise,\nCarrier 2: Cycled Noise 512", + color = Color.green, + mix = 0.5f, pitch = 1.0f, bands = 32, formant = 0, + c1PTrack = 0, c1Type = 0, c1Gain = 0.5f, c1Freq = 440.0f, c1Note = 57, c1PW = 0.5f, c1CNS = 512, + c2PTrack = 0, c2Type = 1, c2Gain = 0.5f, c2Freq = 440.0f, c2Note = 45, c2PW = 0.25f, c2CNS = 512,}, + + new VMPreset{info="INPUT PLUS VOCODE PLUS PITCH DOWN\nInput 50%, Vocode 50%\nPitch 0.75\nCarrier 1: Cycled Noise 512\nCarrier 2: Cycled Noise 768", + color = Color.red, + mix = 0.5f, pitch = 0.75f, bands = 32, formant = 0, + c1PTrack = 0, c1Type = 1, c1Gain = 0.6f, c1Freq = 440.0f, c1Note = 57, c1PW = 0.5f, c1CNS = 512, + c2PTrack = 0, c2Type = 3, c2Gain = 0.2f, c2Freq = 440.0f, c2Note = 40, c2PW = 0.25f, c2CNS = 768,}, + + new VMPreset{info="PITCH ONLY\nPitch 1.25 (Formant correction)", + color = Color.blue, + mix = 1.0f, pitch = 1.25f, bands = 32, formant = 1, + c1PTrack = 0, c1Type = 1, c1Gain = 1.0f, c1Freq = 440.0f, c1Note = 57, c1PW = 0.5f, c1CNS = 400, + c2PTrack = 0, c2Type = 3, c2Gain = 0.0f, c2Freq = 440.0f, c2Note = 52, c2PW = 0.5f, c2CNS = 512,}, + + new VMPreset{info="PITCH ONLY\nPitch 0.5 (Formant correction)", + color = Color.green, + mix = 1.0f, pitch = 0.5f, bands = 32, formant = 1, + c1PTrack = 0, c1Type = 1, c1Gain = 1.0f, c1Freq = 440.0f, c1Note = 57, c1PW = 0.5f, c1CNS = 400, + c2PTrack = 0, c2Type = 3, c2Gain = 0.0f, c2Freq = 440.0f, c2Note = 52, c2PW = 0.5f, c2CNS = 512,}, + + new VMPreset{info="PITCH ONLY\nPitch 2.0 (Formant correction)", + color = Color.yellow, + mix = 1.0f, pitch = 2.0f, bands = 32, formant = 1, + c1PTrack = 0, c1Type = 1, c1Gain = 1.0f, c1Freq = 440.0f, c1Note = 57, c1PW = 0.5f, c1CNS = 400, + c2PTrack = 0, c2Type = 3, c2Gain = 0.0f, c2Freq = 440.0f, c2Note = 52, c2PW = 0.5f, c2CNS = 512,}, + }; + + // Current VoiceMod values (visible in inspector without writing a editor helper class) + public float VM_MixAudio = 1.0f; + public float VM_Pitch = 1.0f; + public int VM_Bands = 32; + public int VM_FormantCorrect = 0; + + // Carrier 1 + public int VM_C1_TrackPitch = 0; + public int VM_C1_Type = 0; + public float VM_C1_Gain = 0.5f; + public float VM_C1_Freq = 440.0f; + public int VM_C1_Note = 67; + public float VM_C1_PulseWidth = 0.5f; + public int VM_C1_CycledNoiseSize = 512; + + // Carrier 2 + public int VM_C2_TrackPitch = 0; + public int VM_C2_Type = 0; + public float VM_C2_Gain = 0.5f; + public float VM_C2_Freq = 440.0f; + public int VM_C2_Note = 67; + public float VM_C2_PulseWidth = 0.5f; + public int VM_C2_CycledNoiseSize = 512; + + // * * * * * * * * * * * * * + // Private members + private uint context = 0; // 0 is no context + private float prevVol = 0.0f; // used for smoothing avg volume + + // * * * * * * * * * * * * * + // Static members + + // * * * * * * * * * * * * * + // MonoBehaviour overrides + + /// + /// Awake this instance. + /// + void Awake () + { + // Cache the audio source we are going to be using to pump data to the SR + if (!audioSource) audioSource = GetComponent(); + if (!audioSource) return; + } + + /// + /// Start this instance. + /// Note: make sure to always have a Start function for classes that have editor scripts. + /// + void Start() + { + // Create the context that we will feed into the audio buffer + lock(this) + { + if(context == 0) + { + if(OVRVoiceMod.CreateContext(ref context) != OVRVoiceMod.ovrVoiceModSuccess) + { + Debug.Log ("OVRVoiceModContext.Start ERROR: Could not create VoiceMod context."); + return; + } + } + } + + // Add a listener to the OVRMessenger for touch events + OVRMessenger.AddListener("Touchpad", LocalTouchEventCallback); + + // VoiceMod: Set the current state of the voice mod as set in the inspector + SendVoiceModUpdate(); + } + + /// + /// Run processes that need to be updated in our game thread + /// + void Update() + { + // Turn loopback on/off + if (Input.GetKeyDown(loopback)) + { + audioMute = !audioMute; + + OVRDebugConsole.Clear(); + OVRDebugConsole.ClearTimeout(1.5f); + + if(!audioMute) + OVRDebugConsole.Log("LOOPBACK MODE: ENABLED"); + else + OVRDebugConsole.Log("LOOPBACK MODE: DISABLED"); + + } + else if(Input.GetKeyDown(KeyCode.LeftArrow)) + { + gain -= 0.1f; + if(gain < 0.5f) gain = 0.5f; + + string g = "LINEAR GAIN: "; + g += gain; + OVRDebugConsole.Clear(); + OVRDebugConsole.Log(g); + OVRDebugConsole.ClearTimeout(1.5f); + + } + else if(Input.GetKeyDown(KeyCode.RightArrow)) + { + gain += 0.1f; + if(gain > 3.0f) + gain = 3.0f; + + string g = "LINEAR GAIN: "; + g += gain; + OVRDebugConsole.Clear(); + OVRDebugConsole.Log(g); + OVRDebugConsole.ClearTimeout(1.5f); + + } + + UpdateVoiceModUpdate(); + } + + /// + /// Raises the destroy event. + /// + void OnDestroy() + { + // Create the context that we will feed into the audio buffer + lock(this) + { + if(context != 0) + { + if(OVRVoiceMod.DestroyContext(context) != OVRVoiceMod.ovrVoiceModSuccess) + { + Debug.Log ("OVRVoiceModContext.OnDestroy ERROR: Could not delete VoiceMod context."); + } + } + } + } + + /// + /// Raises the audio filter read event. + /// + /// Data. + /// Channels. + void OnAudioFilterRead(float[] data, int channels) + { + // Do not spatialize if we are not initialized, or if there is no + // audio source attached to game object + if ((OVRVoiceMod.IsInitialized() != OVRVoiceMod.ovrVoiceModSuccess) || audioSource == null) + return; + + // increase the gain of the input to get a better signal input + for (int i = 0; i < data.Length; ++i) + data[i] = data[i] * gain; + + // Send data into VoiceMod context for processing (if context is not 0) + lock(this) + { + if(context != 0) + { + OVRVoiceMod.ProcessFrameInterleaved(context, data); + } + } + + // Turn off output (so that we don't get feedback from a mic too close to speakers) + if(audioMute == true) + { + for (int i = 0; i < data.Length; ++i) + data[i] = data[i] * 0.0f; + } + } + + // * * * * * * * * * * * * * + // Public Functions + + /// + /// Sends the parameter. + /// + /// The parameter. + /// Parameter. + /// Value. + public int SendParameter(ovrVoiceModParams parameter, int value) + { + if(OVRVoiceMod.IsInitialized() != OVRVoiceMod.ovrVoiceModSuccess) + return (int)OVRVoiceMod.ovrVoiceModError.Unknown; + + return OVRVoiceMod.SendParameter(context, (int)parameter, value); + } + + /// + /// Sets the preset. + /// + /// true, if preset was set, false otherwise. + /// Preset. + public bool SetPreset(int preset) + { + if(preset < 0 || preset >= VMPresets.Length) + return false; + + VM_MixAudio = VMPresets[preset].mix; + VM_Pitch = VMPresets[preset].pitch; + VM_Bands = VMPresets[preset].bands; + VM_FormantCorrect = VMPresets[preset].formant; + VM_C1_TrackPitch = VMPresets[preset].c1PTrack; + VM_C1_Type = VMPresets[preset].c1Type; + VM_C1_Gain = VMPresets[preset].c1Gain; + VM_C1_Freq = VMPresets[preset].c1Freq; + VM_C1_Note = VMPresets[preset].c1Note; + VM_C1_PulseWidth = VMPresets[preset].c1PW; + VM_C1_CycledNoiseSize = VMPresets[preset].c1CNS; + VM_C2_TrackPitch = VMPresets[preset].c2PTrack; + VM_C2_Type = VMPresets[preset].c2Type; + VM_C2_Gain = VMPresets[preset].c2Gain; + VM_C2_Freq = VMPresets[preset].c2Freq; + VM_C2_Note = VMPresets[preset].c2Note; + VM_C2_PulseWidth = VMPresets[preset].c2PW; + VM_C2_CycledNoiseSize = VMPresets[preset].c2CNS; + + SendVoiceModUpdate(); + + OVRDebugConsole.Clear(); + OVRDebugConsole.Log(VMPresets[preset].info); + OVRDebugConsole.ClearTimeout(5.0f); + + return true; + } + + /// + /// Gets the number presets. + /// + /// The number presets. + public int GetNumPresets() + { + return VMPresets.Length; + } + + /// + /// Gets the color of the preset. + /// + /// The preset color. + /// Preset. + public Color GetPresetColor(int preset) + { + if(preset < 0 || preset >= VMPresets.Length) + return Color.black; + + return VMPresets[preset].color; + } + + /// + /// Gets the average abs volume. + /// + /// The average abs volume. + public float GetAverageAbsVolume() + { + if(context == 0) + return 0.0f; + + float V = prevVol * 0.8f + OVRVoiceMod.GetAverageAbsVolume(context) * 0.2f; + prevVol = V; + + return V; + } + + // LocalTouchEventCallback + // NOTE: We will not worry about gain on Android, since it will be + // more important to switch presets. We will keep gain available on + // Desktop + void LocalTouchEventCallback(OVRTouchpad.TouchEvent touchEvent) + { + switch(touchEvent) + { + case(OVRTouchpad.TouchEvent.SingleTap): + audioMute = !audioMute; + + OVRDebugConsole.Clear(); + OVRDebugConsole.ClearTimeout(1.5f); + + if(!audioMute) + OVRDebugConsole.Log("LOOPBACK MODE: ENABLED"); + else + OVRDebugConsole.Log("LOOPBACK MODE: DISABLED"); + + break; + } + } + + // Update directly from current state in inspector + void UpdateVoiceModUpdate() + { + // Send directly from inspector + if(Input.GetKeyDown(KeyCode.Space)) + { + SendVoiceModUpdate(); + OVRDebugConsole.Clear(); + OVRDebugConsole.Log("UPDATED VOICE MOD FROM INSPECTOR"); + OVRDebugConsole.ClearTimeout(1.0f); + } + } + + // Sends the current state of voice mod values + void SendVoiceModUpdate() + { + VM_MixAudio = Mathf.Clamp(VM_MixAudio, 0.0f, 1.0f); + VM_Pitch = Mathf.Clamp(VM_Pitch, 0.5f, 2.0f); + VM_Bands = Mathf.Clamp(VM_Bands, 1, 128); + VM_FormantCorrect = Mathf.Clamp(VM_FormantCorrect, 0, 1); + VM_C1_TrackPitch = Mathf.Clamp(VM_C1_TrackPitch, 0, 1); + VM_C1_Type = Mathf.Clamp(VM_C1_Type, 0, 3); + VM_C1_Gain = Mathf.Clamp(VM_C1_Gain, 0.0f, 1.0f); + VM_C1_Freq = Mathf.Clamp(VM_C1_Freq, 0.0f, 96000.0f); + VM_C1_Note = Mathf.Clamp(VM_C1_Note, -1, 127); + VM_C1_PulseWidth = Mathf.Clamp(VM_C1_PulseWidth, 0.0f, 1.0f); + VM_C1_CycledNoiseSize = Mathf.Clamp(VM_C1_CycledNoiseSize, 0, 1024); + VM_C2_TrackPitch = Mathf.Clamp(VM_C2_TrackPitch, 0, 1); + VM_C2_Type = Mathf.Clamp(VM_C2_Type, 0, 3); + VM_C2_Gain = Mathf.Clamp(VM_C2_Gain, 0.0f, 1.0f); + VM_C2_Freq = Mathf.Clamp(VM_C2_Freq, 0.0f, 96000.0f); + VM_C2_Note = Mathf.Clamp(VM_C2_Note, -1, 127); + VM_C2_PulseWidth = Mathf.Clamp(VM_C2_PulseWidth, 0.0f, 1.0f); + VM_C2_CycledNoiseSize = Mathf.Clamp(VM_C2_CycledNoiseSize, 0, 1024); + + // We will send these in as Int and use 100 as a scale + // Might go to 1000 :) + + // VoiceMod and Vocoder values + SendParameter(ovrVoiceModParams.MixInputAudio, (int)(100.0f * VM_MixAudio)); + SendParameter(ovrVoiceModParams.PitchInputAudio,(int)(100.0f * VM_Pitch)); + SendParameter(ovrVoiceModParams.SetBands, (int)VM_Bands); + SendParameter(ovrVoiceModParams.FormantCorrection, (int)VM_FormantCorrect); + + // Carrier 1 + SendParameter(ovrVoiceModParams.Carrier1_TrackPitch, (int)VM_C1_TrackPitch); + SendParameter(ovrVoiceModParams.Carrier1_Type, (int)VM_C1_Type); + SendParameter(ovrVoiceModParams.Carrier1_Gain, (int)(100.0f * VM_C1_Gain)); + + // Note overrides Frequency if valid range + if(VM_C1_Note == -1) + SendParameter(ovrVoiceModParams.Carrier1_Frequency, (int)(100.0f * VM_C1_Freq)); + else + SendParameter(ovrVoiceModParams.Carrier1_Note, (int)VM_C1_Note); + + SendParameter(ovrVoiceModParams.Carrier1_PulseWidth, (int)(100.0f * VM_C1_PulseWidth)); + SendParameter(ovrVoiceModParams.Carrier1_CycledNoiseSize, (int)VM_C1_CycledNoiseSize); + + // Carrier 2 + SendParameter(ovrVoiceModParams.Carrier2_TrackPitch, (int)VM_C2_TrackPitch); + SendParameter(ovrVoiceModParams.Carrier2_Type, (int)VM_C2_Type); + SendParameter(ovrVoiceModParams.Carrier2_Gain, (int)(100.0f * VM_C2_Gain)); + + // Note overrides Frequency if valid range + if(VM_C2_Note == -1) + SendParameter(ovrVoiceModParams.Carrier2_Frequency, (int)(100.0f * VM_C2_Freq)); + else + SendParameter(ovrVoiceModParams.Carrier2_Note, (int)VM_C2_Note); + + SendParameter(ovrVoiceModParams.Carrier2_PulseWidth, (int)(100.0f * VM_C2_PulseWidth)); + SendParameter(ovrVoiceModParams.Carrier2_CycledNoiseSize, (int)VM_C1_CycledNoiseSize); + } +} diff --git a/Assets/Oculus/VoiceMod/Scripts/OVRVoiceModContext.cs.meta b/Assets/Oculus/VoiceMod/Scripts/OVRVoiceModContext.cs.meta new file mode 100644 index 0000000..c81d23b --- /dev/null +++ b/Assets/Oculus/VoiceMod/Scripts/OVRVoiceModContext.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: beb05abfbdc9f804ab7e1bdd89727bd7 +timeCreated: 1450128495 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Oculus.unity b/Assets/Scenes/Oculus.unity index 127c536..ae18951 100644 --- a/Assets/Scenes/Oculus.unity +++ b/Assets/Scenes/Oculus.unity @@ -179,6 +179,48 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1001 &509735874 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + propertyPath: m_LocalPosition.y + value: 1.67 + objectReference: {fileID: 0} + - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} + m_IsPrefabAsset: 0 --- !u!1 &824984008 GameObject: m_ObjectHideFlags: 0 @@ -266,136 +308,3 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &886681054 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 886681057} - - component: {fileID: 886681056} - - component: {fileID: 886681058} - - component: {fileID: 886681055} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &886681055 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 886681054} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b4a9c50de96f6d04386957f4741ac65c, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - joyPadClickButton: 8192 - performSphereCastForGazepointer: 0 - matchNormalOnPhysicsColliders: 0 - useLeftStickScroll: 1 - leftStickDeadZone: 0.15 - useSwipeScroll: 1 - minSwipeMovement: 0 - swipeScrollScale: 4 - activeController: 0 - angleDragThreshold: 1 - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_AllowActivationOnMobileDevice: 1 ---- !u!114 &886681056 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 886681054} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &886681057 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 886681054} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.03, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &886681058 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 886681054} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!1001 &1728729268 -Prefab: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - propertyPath: m_LocalPosition.y - value: 1.41 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} - m_IsPrefabAsset: 0 diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset index 59f8ec0..776e8e3 100644 --- a/ProjectSettings/InputManager.asset +++ b/ProjectSettings/InputManager.asset @@ -421,3 +421,195 @@ InputManager: type: 2 axis: 11 joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_Button2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_Button4 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryThumbstick + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 8 + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryThumbstick + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 9 + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryIndexTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 8 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryIndexTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 9 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryHandTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 10 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryHandTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 11 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryThumbstickHorizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryThumbstickVertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryThumbstickHorizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 3 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryThumbstickVertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 4 + joyNum: 0