diff --git a/Assets/FittsLawVR/Prefabs/Canvas.prefab b/Assets/FittsLawVR/Prefabs/Canvas.prefab new file mode 100644 index 0000000..1c32aa4 --- /dev/null +++ b/Assets/FittsLawVR/Prefabs/Canvas.prefab @@ -0,0 +1,1443 @@ +%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: 1222106366571780} + m_IsPrefabAsset: 1 +--- !u!1 &1222106366571780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224720632774813148} + - component: {fileID: 223347616292351244} + - component: {fileID: 114639884264124080} + - component: {fileID: 222089336008002674} + - component: {fileID: 114447187588060706} + - component: {fileID: 114563415417697918} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1300072793757438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224639637719138810} + - component: {fileID: 222662068579130324} + - component: {fileID: 114668791054170864} + - component: {fileID: 114718433689096176} + m_Layer: 0 + m_Name: LeftMedium + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1329926865618860 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224578468027682140} + - component: {fileID: 222605649304683034} + - component: {fileID: 114661554634580074} + - component: {fileID: 114825931014251334} + m_Layer: 0 + m_Name: UpMedium + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1383124965769840 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224579954748257482} + - component: {fileID: 222346931513675838} + - component: {fileID: 114023655777658636} + - component: {fileID: 114086189665095470} + m_Layer: 0 + m_Name: LeftLong + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1540639740162224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224762053255112640} + - component: {fileID: 222596754781067234} + - component: {fileID: 114946456638147658} + - component: {fileID: 114531434077155296} + m_Layer: 0 + m_Name: RightShort + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1575352834805242 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224558075776258700} + - component: {fileID: 222421123630087756} + - component: {fileID: 114603194434061568} + - component: {fileID: 114912380756086876} + m_Layer: 0 + m_Name: UpLong + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1599297577028528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224999135438588286} + - component: {fileID: 222795952188418634} + - component: {fileID: 114308453952001826} + - component: {fileID: 114062093851758520} + m_Layer: 0 + m_Name: UpShort + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1679994978798384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224209426894857326} + - component: {fileID: 222260903675769914} + - component: {fileID: 114822698690064214} + - component: {fileID: 114281474708013094} + m_Layer: 0 + m_Name: RightMedium + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1758508743825796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224266039085603778} + - component: {fileID: 114072125749358940} + - component: {fileID: 58377436786480712} + - component: {fileID: 222107215107398658} + - component: {fileID: 114362675667547644} + - component: {fileID: 114656590209892184} + m_Layer: 0 + m_Name: StartButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1797085077735110 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224795365474473054} + - component: {fileID: 222927670478029134} + - component: {fileID: 114619505718955426} + - component: {fileID: 114620956565508940} + m_Layer: 0 + m_Name: LeftShort + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1814204617026824 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 224346185028377882} + - component: {fileID: 222491411221507294} + - component: {fileID: 114306143910496398} + - component: {fileID: 114935916494048452} + m_Layer: 0 + m_Name: RightLong + m_TagString: Dot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!58 &58377436786480712 +CircleCollider2D: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1758508743825796} + m_Enabled: 0 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 0.1 +--- !u!114 &114023655777658636 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1383124965769840} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114062093851758520 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1599297577028528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114308453952001826} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114072125749358940 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1758508743825796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingSpace: {fileID: 0} + primaryButton: 8192 + secondaryButton: 1024 + excludeLayers: + serializedVersion: 2 + m_Bits: 0 + raycastDistance: 500 + onHoverEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onHoverExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onHover: + m_PersistentCalls: + m_Calls: [] + m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onPrimarySelect: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: NextDot + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onSecondarySelect: + m_PersistentCalls: + m_Calls: [] + m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + activeController: 0 +--- !u!114 &114086189665095470 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1383124965769840} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114023655777658636} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114281474708013094 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1679994978798384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114822698690064214} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114306143910496398 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1814204617026824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114308453952001826 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1599297577028528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114362675667547644 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1758508743825796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114447187588060706 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1222106366571780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8745099, g: 0.8745099, b: 0.8745099, a: 0} + 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_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!114 &114531434077155296 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1540639740162224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114946456638147658} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114563415417697918 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1222106366571780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aee672c7b0743724ea7d0d722d5e6aa2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &114603194434061568 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575352834805242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114619505718955426 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1797085077735110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114620956565508940 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1797085077735110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114619505718955426} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114639884264124080 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1222106366571780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &114656590209892184 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1758508743825796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114362675667547644} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: NextDot + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114661554634580074 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1329926865618860} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114668791054170864 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1300072793757438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114718433689096176 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1300072793757438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114668791054170864} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114822698690064214 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1679994978798384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114825931014251334 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1329926865618860} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114661554634580074} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114912380756086876 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575352834805242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114603194434061568} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114935916494048452 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1814204617026824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114306143910496398} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114946456638147658 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1540639740162224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, 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_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &222089336008002674 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1222106366571780} + m_CullTransparentMesh: 0 +--- !u!222 &222107215107398658 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1758508743825796} + m_CullTransparentMesh: 0 +--- !u!222 &222260903675769914 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1679994978798384} + m_CullTransparentMesh: 0 +--- !u!222 &222346931513675838 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1383124965769840} + m_CullTransparentMesh: 0 +--- !u!222 &222421123630087756 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575352834805242} + m_CullTransparentMesh: 0 +--- !u!222 &222491411221507294 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1814204617026824} + m_CullTransparentMesh: 0 +--- !u!222 &222596754781067234 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1540639740162224} + m_CullTransparentMesh: 0 +--- !u!222 &222605649304683034 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1329926865618860} + m_CullTransparentMesh: 0 +--- !u!222 &222662068579130324 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1300072793757438} + m_CullTransparentMesh: 0 +--- !u!222 &222795952188418634 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1599297577028528} + m_CullTransparentMesh: 0 +--- !u!222 &222927670478029134 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1797085077735110} + m_CullTransparentMesh: 0 +--- !u!223 &223347616292351244 +Canvas: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1222106366571780} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 1 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &224209426894857326 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1679994978798384} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1073.0001, y: 905} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224266039085603778 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1758508743825796} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + 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: -80.89978, y: 897.99994} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224346185028377882 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1814204617026824} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1573.0001, y: 905} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224558075776258700 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575352834805242} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 7 + 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: -73, y: 2404.9998} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224578468027682140 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1329926865618860} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 8 + 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: -73, y: 1905} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224579954748257482 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1383124965769840} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1427.0001, y: 905} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224639637719138810 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1300072793757438} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 927.0001, y: 905} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224720632774813148 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1222106366571780} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2.1} + m_LocalScale: {x: 0.0057666996, y: 0.0057666996, z: 0.0057666996} + m_Children: + - {fileID: 224266039085603778} + - {fileID: 224346185028377882} + - {fileID: 224209426894857326} + - {fileID: 224762053255112640} + - {fileID: 224579954748257482} + - {fileID: 224639637719138810} + - {fileID: 224795365474473054} + - {fileID: 224558075776258700} + - {fileID: 224578468027682140} + - {fileID: 224999135438588286} + 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: -9.7, y: -19.2} + m_SizeDelta: {x: 3731.68, y: 5511.43} + m_Pivot: {x: 0, y: 0} +--- !u!224 &224762053255112640 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1540639740162224} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -572.9999, y: 905} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224795365474473054 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1797085077735110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 427.00012, y: 905} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224999135438588286 +RectTransform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1599297577028528} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34.000015} + m_LocalScale: {x: 1000, y: 1000, z: 1000} + m_Children: [] + m_Father: {fileID: 224720632774813148} + m_RootOrder: 9 + 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: -73, y: 1404.9998} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/FittsLawVR/Prefabs/Canvas.prefab.meta b/Assets/FittsLawVR/Prefabs/Canvas.prefab.meta new file mode 100644 index 0000000..d8b5f57 --- /dev/null +++ b/Assets/FittsLawVR/Prefabs/Canvas.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 49f39d13b583ef54c853f20f5179b584 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleVR/GVRVideoPlayer.unitypackage.meta b/Assets/GoogleVR/GVRVideoPlayer.unitypackage.meta index 7071b37..bced8d2 100644 --- a/Assets/GoogleVR/GVRVideoPlayer.unitypackage.meta +++ b/Assets/GoogleVR/GVRVideoPlayer.unitypackage.meta @@ -1,7 +1,8 @@ fileFormatVersion: 2 guid: 39850532bc74a4078a24832112e8aef3 +timeCreated: 1534545520 +licenseType: Pro DefaultImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta b/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta index 88dd0ac..a3dc343 100644 --- a/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta +++ b/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta @@ -1,7 +1,8 @@ fileFormatVersion: 2 guid: dc278786e6540af428ccbf7825495004 +timeCreated: 1500315262 +licenseType: Pro DefaultImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: 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 index abcb1f7..56926b0 100644 --- a/Assets/Oculus/Spatializer.meta +++ b/Assets/Oculus/Spatializer.meta @@ -1,8 +1,9 @@ fileFormatVersion: 2 guid: 1988efc33915aee4b9517188de9c6e6a folderAsset: yes +timeCreated: 1538788975 +licenseType: Store DefaultImporter: - externalObjects: {} 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/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/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/Experiment-Cardboard.unity b/Assets/Scenes/Experiment-Cardboard.unity index 14d9716..e8cb717 100644 --- a/Assets/Scenes/Experiment-Cardboard.unity +++ b/Assets/Scenes/Experiment-Cardboard.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657868, g: 0.49641263, b: 0.57481706, a: 1} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -113,81 +113,309 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &57852281 +--- !u!1 &80546807 stripped GameObject: + m_CorrespondingSourceObject: {fileID: 1679994978798384, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &80546812 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 57852283} - - component: {fileID: 57852282} - m_Layer: 0 - m_Name: UpLong - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &57852282 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 57852281} + m_GameObject: {fileID: 80546807} 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &57852283 -Transform: + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1001 &85115168 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalPosition.z + value: 5.7 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchoredPosition.x + value: -9.98 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchoredPosition.y + value: -18.68 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_SizeDelta.x + value: 3731.68 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_SizeDelta.y + value: 5511.43 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114656590209892184, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114656590209892184, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: NextDot + objectReference: {fileID: 0} + - target: {fileID: 114531434077155296, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114531434077155296, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 114825931014251334, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114825931014251334, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 114935916494048452, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114935916494048452, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 114912380756086876, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114912380756086876, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 114281474708013094, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114281474708013094, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 114620956565508940, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114620956565508940, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 114718433689096176, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114718433689096176, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 114086189665095470, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114086189665095470, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 114062093851758520, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1619469917} + - target: {fileID: 114062093851758520, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackToStart + objectReference: {fileID: 0} + - target: {fileID: 1814204617026824, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + propertyPath: m_Name + value: LeftLong + objectReference: {fileID: 0} + - target: {fileID: 1679994978798384, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + propertyPath: m_Name + value: LeftMedium + objectReference: {fileID: 0} + - target: {fileID: 1540639740162224, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + propertyPath: m_Name + value: LeftShort + objectReference: {fileID: 0} + - target: {fileID: 1383124965769840, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + propertyPath: m_Name + value: RightLong + objectReference: {fileID: 0} + - target: {fileID: 1300072793757438, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + propertyPath: m_Name + value: RightMedium + objectReference: {fileID: 0} + - target: {fileID: 1797085077735110, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + propertyPath: m_Name + value: RightShort + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 114072125749358940, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + m_SourcePrefab: {fileID: 100100000, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + m_IsPrefabAsset: 0 +--- !u!1 &85115169 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1222106366571780, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &85115170 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 57852281} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 20, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 8 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_GameObject: {fileID: 85115169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 0 + blockingObjects: 3 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 --- !u!1 &99160178 GameObject: m_ObjectHideFlags: 0 @@ -254,81 +482,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &150834718 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 150834720} - - component: {fileID: 150834719} - m_Layer: 0 - m_Name: LeftShort - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &150834719 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 150834718} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &150834720 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 150834718} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5, y: 5, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &260400458 Prefab: m_ObjectHideFlags: 0 @@ -366,7 +519,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4172977793111564, guid: c3713ae6a80ceef4f9f728d03835786b, type: 2} propertyPath: m_RootOrder - value: 12 + value: 2 objectReference: {fileID: 0} - target: {fileID: 4444700130726422, guid: c3713ae6a80ceef4f9f728d03835786b, type: 2} propertyPath: m_LocalPosition.x @@ -374,236 +527,88 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4444700130726422, guid: c3713ae6a80ceef4f9f728d03835786b, type: 2} propertyPath: m_LocalPosition.y - value: 5 + value: 1.37 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c3713ae6a80ceef4f9f728d03835786b, type: 2} m_IsPrefabAsset: 0 ---- !u!1 &409506796 +--- !u!1 &260400459 stripped GameObject: + m_CorrespondingSourceObject: {fileID: 1655486884145648, guid: c3713ae6a80ceef4f9f728d03835786b, + type: 2} + m_PrefabInternal: {fileID: 260400458} +--- !u!114 &260400460 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 409506798} - - component: {fileID: 409506797} - m_Layer: 0 - m_Name: UpMedium - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &409506797 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409506796} + m_GameObject: {fileID: 260400459} 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &409506798 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409506796} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 15, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 9 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &463713375 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb5dd43baba2d4dc1bab789615567e3d, type: 3} + m_Name: + m_EditorClassIdentifier: + raycasterEventMask: + serializedVersion: 2 + m_Bits: 4294967295 + maxRaycastHits: 64 +--- !u!1 &514338465 stripped GameObject: + m_CorrespondingSourceObject: {fileID: 1575352834805242, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &514338470 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 463713377} - - component: {fileID: 463713376} - m_Layer: 0 - m_Name: UpShort - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &463713376 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 463713375} + m_GameObject: {fileID: 514338465} 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &463713377 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 463713375} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 10, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 10 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &487718348 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 487718350} - - component: {fileID: 487718349} - m_Layer: 0 - m_Name: RightLong - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &487718349 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 487718348} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &487718350 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 487718348} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15, y: 5, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null --- !u!1 &534664144 GameObject: m_ObjectHideFlags: 0 @@ -689,177 +694,19 @@ Transform: m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 11 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &583706165 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 583706167} - - component: {fileID: 583706166} - m_Layer: 0 - m_Name: LeftMedium - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &583706166 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 583706165} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &583706167 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 583706165} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -10, y: 5, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &961536866 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 961536868} - - component: {fileID: 961536867} - - component: {fileID: 961536869} - - component: {fileID: 961536870} - m_Layer: 0 - m_Name: StartButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &961536867 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 961536866} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 1, g: 0, b: 0, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &961536868 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 961536866} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 5, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &961536869 +--- !u!1 &586352108 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1540639740162224, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &586352113 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 961536866} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9213a906c4bf7e743a6a93cd31e56ae8, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &961536870 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 961536866} + m_GameObject: {fileID: 586352108} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} @@ -868,9 +715,9 @@ MonoBehaviour: OnPointerClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 961536866} - m_MethodName: SetActive - m_Mode: 6 + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine @@ -906,228 +753,442 @@ MonoBehaviour: m_Calls: [] m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ---- !u!1 &1102770660 +--- !u!1 &839905006 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1300072793757438, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &839905011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 839905006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &997544637 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1758508743825796, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &997544643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997544637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: NextDot + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &1156628126 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1599297577028528, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &1156628131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1156628126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &1241050398 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1814204617026824, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &1241050403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1241050398} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &1450387522 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1329926865618860, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &1450387527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1450387522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &1619469916 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1102770662} - - component: {fileID: 1102770661} + - component: {fileID: 1619469918} + - component: {fileID: 1619469917} m_Layer: 0 - m_Name: RightMedium + m_Name: GameManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &1102770661 -SpriteRenderer: + m_IsActive: 1 +--- !u!114 &1619469917 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1102770660} + m_GameObject: {fileID: 1619469916} 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &1102770662 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b5ec14cccdc625049a7deb31b2b0aa76, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1619469918 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1102770660} + m_GameObject: {fileID: 1619469916} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 10, y: 5, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} + m_LocalPosition: {x: -29.760635, y: -13.447546, z: 35.79243} + m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1195222032 +--- !u!1 &1934273111 stripped GameObject: + m_CorrespondingSourceObject: {fileID: 1797085077735110, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &1934273116 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1195222034} - - component: {fileID: 1195222033} - m_Layer: 0 - m_Name: RightShort - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &1195222033 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1195222032} + m_GameObject: {fileID: 1934273111} 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &1195222034 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1195222032} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5, y: 5, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 7 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1727306997 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &2113003989 stripped GameObject: + m_CorrespondingSourceObject: {fileID: 1383124965769840, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + m_PrefabInternal: {fileID: 85115168} +--- !u!114 &2113003994 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1727306999} - - component: {fileID: 1727306998} - m_Layer: 0 - m_Name: LeftLong - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!212 &1727306998 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1727306997} + m_GameObject: {fileID: 2113003989} 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &1727306999 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1727306997} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15, y: 5, z: 5} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca0157c63fb794df89c6735fc602eca2, type: 3} + m_Name: + m_EditorClassIdentifier: + OnPointerClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1619469917} + m_MethodName: BackToStart + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerEnter: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPointerExit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnScroll: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GvrAllEventsTrigger+TriggerEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null diff --git a/Assets/Scenes/Experiment-Oculus.unity b/Assets/Scenes/Experiment-Oculus.unity index 227b912..c7b2ef4 100644 --- a/Assets/Scenes/Experiment-Oculus.unity +++ b/Assets/Scenes/Experiment-Oculus.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657868, g: 0.49641263, b: 0.57481706, a: 1} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -113,153 +113,6 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &57852281 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 57852283} - - component: {fileID: 57852282} - - component: {fileID: 57852285} - - component: {fileID: 57852284} - m_Layer: 0 - m_Name: UpLong - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &57852282 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 57852281} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &57852283 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 57852281} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 20, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 8 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &57852284 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 57852281} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &57852285 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 57852281} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 --- !u!1 &99160178 GameObject: m_ObjectHideFlags: 0 @@ -326,153 +179,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &150834718 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 150834720} - - component: {fileID: 150834719} - - component: {fileID: 150834722} - - component: {fileID: 150834721} - m_Layer: 0 - m_Name: RightShort - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &150834719 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 150834718} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &150834720 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 150834718} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5, y: 5, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &150834721 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 150834718} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &150834722 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 150834718} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 --- !u!1 &246886984 GameObject: m_ObjectHideFlags: 0 @@ -500,7 +206,7 @@ RectTransform: m_LocalScale: {x: 10, y: 10, z: 10} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 13 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -516,449 +222,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b5ec14cccdc625049a7deb31b2b0aa76, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &409506796 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 409506798} - - component: {fileID: 409506797} - - component: {fileID: 409506800} - - component: {fileID: 409506799} - m_Layer: 0 - m_Name: UpMedium - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &409506797 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409506796} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &409506798 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409506796} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 15, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 9 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &409506799 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409506796} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &409506800 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409506796} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 ---- !u!1 &463713375 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 463713377} - - component: {fileID: 463713376} - - component: {fileID: 463713379} - - component: {fileID: 463713378} - m_Layer: 0 - m_Name: UpShort - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &463713376 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 463713375} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &463713377 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 463713375} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 10, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 10 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &463713378 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 463713375} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &463713379 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 463713375} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 ---- !u!1 &487718348 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 487718350} - - component: {fileID: 487718349} - - component: {fileID: 487718352} - - component: {fileID: 487718351} - m_Layer: 0 - m_Name: LeftLong - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &487718349 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 487718348} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &487718350 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 487718348} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15, y: 5, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &487718351 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 487718348} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &487718352 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 487718348} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 + m_Name: + m_EditorClassIdentifier: --- !u!1 &534664144 GameObject: m_ObjectHideFlags: 0 @@ -1044,155 +309,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 11 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &583706165 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 583706167} - - component: {fileID: 583706166} - - component: {fileID: 583706168} - - component: {fileID: 583706169} - m_Layer: 0 - m_Name: RightMedium - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &583706166 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 583706165} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &583706167 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 583706165} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -10, y: 5, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &583706168 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 583706165} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 ---- !u!58 &583706169 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 583706165} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 --- !u!1001 &807211327 Prefab: m_ObjectHideFlags: 0 @@ -1210,7 +328,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} propertyPath: m_LocalPosition.z - value: 13.66 + value: 12.04 objectReference: {fileID: 0} - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} propertyPath: m_LocalRotation.x @@ -1230,7 +348,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4410846568587808, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} propertyPath: m_RootOrder - value: 12 + value: 3 objectReference: {fileID: 0} - target: {fileID: 4752821825769380, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} propertyPath: m_LocalRotation.x @@ -1255,605 +373,193 @@ Prefab: m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} m_IsPrefabAsset: 0 ---- !u!1 &961536866 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 1494179488242920, guid: f7dffcec519b4474da4f58786fb7a108, +--- !u!20 &935471317 stripped +Camera: + m_CorrespondingSourceObject: {fileID: 20888543910458868, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 961536873} - - component: {fileID: 961536872} - - component: {fileID: 961536869} - - component: {fileID: 961536867} - m_Layer: 0 - m_Name: StartButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!58 &961536867 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 961536866} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &961536869 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 114752124999218708, guid: f7dffcec519b4474da4f58786fb7a108, - type: 2} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 961536866} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 1759931873} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: NextDot - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 ---- !u!212 &961536872 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 212562471962504452, guid: f7dffcec519b4474da4f58786fb7a108, - type: 2} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 961536866} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 1, g: 0, b: 0, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!224 &961536873 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 224612821258749026, guid: f7dffcec519b4474da4f58786fb7a108, - type: 2} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 961536866} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 5} - m_SizeDelta: {x: 0.2, y: 0.2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &1102770660 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1102770662} - - component: {fileID: 1102770661} - - component: {fileID: 1102770664} - - component: {fileID: 1102770663} - m_Layer: 0 - m_Name: LeftMedium - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &1102770661 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1102770660} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &1102770662 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1102770660} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 10, y: 5, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &1102770663 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1102770660} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &1102770664 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1102770660} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 ---- !u!1 &1195222032 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1195222034} - - component: {fileID: 1195222033} - - component: {fileID: 1195222036} - - component: {fileID: 1195222035} - m_Layer: 0 - m_Name: LeftShort - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &1195222033 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1195222032} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &1195222034 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1195222032} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5, y: 5, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 7 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &1195222035 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1195222032} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &1195222036 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1195222032} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 ---- !u!1 &1727306997 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1727306999} - - component: {fileID: 1727306998} - - component: {fileID: 1727307001} - - component: {fileID: 1727307000} - m_Layer: 0 - m_Name: RightLong - m_TagString: Dot - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &1727306998 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1727306997} - 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: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Color: {r: 0, g: 0.2304256, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.2, y: 0.2} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &1727306999 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1727306997} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15, y: 5, z: -18.2} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &1727307000 -CircleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1727306997} - m_Enabled: 0 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - serializedVersion: 2 - m_Radius: 0.1 ---- !u!114 &1727307001 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1727306997} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 472cd28b041d447a4b0f2b5c603034aa, type: 3} - m_Name: - m_EditorClassIdentifier: - trackingSpace: {fileID: 0} - primaryButton: 8192 - secondaryButton: 1024 - excludeLayers: - serializedVersion: 2 - m_Bits: 0 - raycastDistance: 500 - onHoverEnter: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHoverExit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onHover: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+HoverCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onPrimarySelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 246886986} - m_MethodName: BackToStart - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - onSecondarySelect: - m_PersistentCalls: - m_Calls: [] - m_TypeName: ControllerSelection.OVRRawRaycaster+SelectionCallback, Assembly-CSharp, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - activeController: 0 + m_PrefabInternal: {fileID: 807211327} --- !u!4 &1759931873 stripped Transform: m_CorrespondingSourceObject: {fileID: 4127641868092796, guid: 3d0ed8ddd4ae30547a37f12335d8a28e, type: 2} m_PrefabInternal: {fileID: 807211327} +--- !u!1001 &1797062444 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalPosition.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchoredPosition.x + value: -12.4 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchoredPosition.y + value: -21.3 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_SizeDelta.x + value: 3731.68 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_SizeDelta.y + value: 5511.43 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114912380756086876, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114935916494048452, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114620956565508940, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114718433689096176, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114281474708013094, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114086189665095470, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114062093851758520, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114825931014251334, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114531434077155296, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 114656590209892184, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 223347616292351244, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_Camera + value: + objectReference: {fileID: 935471317} + - target: {fileID: 114072125749358940, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: trackingSpace + value: + objectReference: {fileID: 1759931873} + - target: {fileID: 114072125749358940, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: onPrimarySelect.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 246886986} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalScale.x + value: 0.006794902 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalScale.y + value: 0.006794902 + objectReference: {fileID: 0} + - target: {fileID: 224720632774813148, guid: 49f39d13b583ef54c853f20f5179b584, + type: 2} + propertyPath: m_LocalScale.z + value: 0.006794902 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 49f39d13b583ef54c853f20f5179b584, type: 2} + m_IsPrefabAsset: 0 diff --git a/Assets/Scenes/Home-Cardboard.unity b/Assets/Scenes/Home-Cardboard.unity index e7f5f6b..8d88253 100644 --- a/Assets/Scenes/Home-Cardboard.unity +++ b/Assets/Scenes/Home-Cardboard.unity @@ -427,7 +427,18 @@ MonoBehaviour: m_TargetGraphic: {fileID: 378838059} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 505933039} + m_MethodName: ChangeScenes + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Experiment-Cardboard + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &378838059 diff --git a/Assets/Scripts/ExperimentController.cs b/Assets/Scripts/ExperimentController.cs index 236dcef..08bdd6d 100644 --- a/Assets/Scripts/ExperimentController.cs +++ b/Assets/Scripts/ExperimentController.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Text; using UnityEngine; @@ -9,6 +10,7 @@ public class ExperimentController : MonoBehaviour { int trialIndex; int trialDotIndex; Participant participant; + List dots = new List(); // Use this for initialization void Start () { //FOR THE LOVE OF GOD FUCKING DELETE THIS, SERIOUSLY CHRIS DON'T YOU DARE FORGET @@ -22,6 +24,7 @@ public class ExperimentController : MonoBehaviour { trialDotIndex = 0; foreach (GameObject go in GameObject.FindGameObjectsWithTag("Dot")) { + dots.Add(go); Hide(go); }; @@ -29,19 +32,17 @@ public class ExperimentController : MonoBehaviour { void Hide(GameObject dot) { - dot.GetComponent().enabled = false; - //dot.GetComponent().enabled = false; + dot.SetActive(false); } void Show(GameObject dot) { - dot.GetComponent().enabled = true; - //dot.GetComponent(). = true; + dot.SetActive(true); } public void NextDot() { - nextDot = GameObject.Find(participant.trials[trialIndex][trialDotIndex]); + nextDot = FindDot(participant.trials[trialIndex][trialDotIndex]); trialDotIndex++; Show(nextDot); Hide(startDot); @@ -61,4 +62,13 @@ public class ExperimentController : MonoBehaviour { void Update () { } + + GameObject FindDot(string name) + { + foreach(GameObject dot in dots) + { + if (dot.name == name) return dot; + } + return null; + } } diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index cf5c2d2..91c4268 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -5,16 +5,16 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: - - enabled: 0 + - enabled: 1 path: Assets/Scenes/Home-Cardboard.unity guid: d8ad458e052dbf347926cc4a4973c528 - - enabled: 0 + - enabled: 1 path: Assets/Scenes/Experiment-Cardboard.unity guid: ff75cfd8f2a11be429cfa87317ab09f4 - - enabled: 1 + - enabled: 0 path: Assets/Scenes/Home-Oculus.unity guid: fd030c2ae45ed2d448b66af1938ef6db - - enabled: 1 + - enabled: 0 path: Assets/Scenes/Experiment-Oculus.unity guid: 37fb4da2f5a031443a4494b455ee6a4c m_configObjects: {}