diff --git a/.gitignore b/.gitignore index 6aaa93d8..bee1729b 100644 --- a/.gitignore +++ b/.gitignore @@ -104,6 +104,8 @@ sample/mono_crash* # Vuplex sample/Assets/Vuplex* +Vuplex/ +Vuplex.meta __pycache__/ *.pyc diff --git a/sample/Assets/Scenes/Passport/InitialisationWithUI.unity b/sample/Assets/Scenes/Passport/InitialisationWithUI.unity new file mode 100644 index 00000000..86dc8a8d --- /dev/null +++ b/sample/Assets/Scenes/Passport/InitialisationWithUI.unity @@ -0,0 +1,2105 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 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 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &27701369 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 27701370} + - component: {fileID: 27701373} + - component: {fileID: 27701372} + - component: {fileID: 27701371} + m_Layer: 5 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &27701370 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 27701369} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1201663675} + m_Father: {fileID: 172384059} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!114 &27701371 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 27701369} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.87058824, g: 0.87058824, b: 0.87058824, a: 1} + m_HighlightedColor: {r: 0.87058824, g: 0.87058824, b: 0.87058824, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.87058824, g: 0.87058824, b: 0.87058824, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 416242725} + m_HandleRect: {fileID: 416242724} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &27701372 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 27701369} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &27701373 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 27701369} + m_CullTransparentMesh: 1 +--- !u!1 &96192975 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 96192976} + - component: {fileID: 96192978} + - component: {fileID: 96192977} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &96192976 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96192975} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1274086208} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &96192977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96192975} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Login +--- !u!222 &96192978 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96192975} + m_CullTransparentMesh: 1 +--- !u!1 &109433253 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 109433254} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &109433254 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 109433253} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1690937180} + m_Father: {fileID: 1045894642} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.000030040741, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!1 &167431870 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 167431871} + - component: {fileID: 167431873} + - component: {fileID: 167431872} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &167431871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167431870} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1500770698} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &167431872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167431870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &167431873 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167431870} + m_CullTransparentMesh: 1 +--- !u!1 &172384058 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 172384059} + - component: {fileID: 172384062} + - component: {fileID: 172384061} + - component: {fileID: 172384060} + m_Layer: 5 + m_Name: Scroll View + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &172384059 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 172384058} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1045894642} + - {fileID: 27701370} + - {fileID: 1403438476} + m_Father: {fileID: 1508764521} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &172384060 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 172384058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 109433254} + m_Horizontal: 1 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 1045894642} + m_HorizontalScrollbar: {fileID: 27701371} + m_VerticalScrollbar: {fileID: 1403438477} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &172384061 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 172384058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &172384062 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 172384058} + m_CullTransparentMesh: 1 +--- !u!1 &416242723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 416242724} + - component: {fileID: 416242726} + - component: {fileID: 416242725} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &416242724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 416242723} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1201663675} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &416242725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 416242723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &416242726 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 416242723} + m_CullTransparentMesh: 1 +--- !u!1 &447127384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 447127388} + - component: {fileID: 447127387} + - component: {fileID: 447127386} + - component: {fileID: 447127385} + - component: {fileID: 447127391} + - component: {fileID: 447127389} + - component: {fileID: 447127390} + m_Layer: 5 + m_Name: PassportUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &447127385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447127384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &447127386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447127384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, 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.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &447127387 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447127384} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 1000 + m_TargetDisplay: 0 +--- !u!224 &447127388 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447127384} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + 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, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &447127389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447127384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 32208e882b664251bb0da03443581c5f, type: 3} + m_Name: + m_EditorClassIdentifier: + loginButton: {fileID: 1274086209} + OnLoginSuccess: + m_PersistentCalls: + m_Calls: [] + OnLoginFailure: + m_PersistentCalls: + m_Calls: [] + enableRemoteDebugging: 1 + remoteDebuggingPort: 9222 + clearCacheOnLogin: 1 + clientId: IllW5pJ54DShXtaSXzaAlghm40uQjptd + environment: sandbox + redirectUri: immutablerunner://callback + logoutRedirectUri: immutablerunner://logout + webViewWidth: 800 + webViewHeight: 800 +--- !u!114 &447127390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447127384} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &447127391 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447127384} + m_CullTransparentMesh: 1 +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + 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 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 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: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &631278214 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 631278215} + - component: {fileID: 631278217} + - component: {fileID: 631278216} + m_Layer: 5 + m_Name: OutputWrapper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &631278215 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 631278214} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1274086208} + m_Father: {fileID: 1238552242} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &631278216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 631278214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 50 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &631278217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 631278214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 3 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &854433808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 854433809} + - component: {fileID: 854433810} + m_Layer: 5 + m_Name: TopPadding + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &854433809 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854433808} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1238552242} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1011.9289, y: -56} + m_SizeDelta: {x: 1991.8578, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &854433810 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854433808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 80 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1045894641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1045894642} + - component: {fileID: 1045894645} + - component: {fileID: 1045894644} + - component: {fileID: 1045894643} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1045894642 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045894641} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 109433254} + m_Father: {fileID: 172384059} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1045894643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045894641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!114 &1045894644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045894641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1045894645 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045894641} + m_CullTransparentMesh: 1 +--- !u!1 &1201663674 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1201663675} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1201663675 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201663674} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 416242724} + m_Father: {fileID: 27701370} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1238552241 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1238552242} + - component: {fileID: 1238552243} + - component: {fileID: 1238552244} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1238552242 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238552241} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 854433809} + - {fileID: 1661390144} + - {fileID: 1311161409} + - {fileID: 631278215} + - {fileID: 1508764521} + m_Father: {fileID: 1850628784} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1238552243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238552241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 20 + m_Right: 20 + m_Top: 20 + m_Bottom: 20 + m_ChildAlignment: 0 + m_Spacing: 20 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1238552244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238552241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3eff14abe3dbe4539982d7c5e20b0a58, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1274086207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1274086208} + - component: {fileID: 1274086211} + - component: {fileID: 1274086210} + - component: {fileID: 1274086209} + m_Layer: 5 + m_Name: Button (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1274086208 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274086207} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 96192976} + m_Father: {fileID: 631278215} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1274086209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274086207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1274086210} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1274086210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274086207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1274086211 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274086207} + m_CullTransparentMesh: 1 +--- !u!1 &1311161408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1311161409} + - component: {fileID: 1311161410} + m_Layer: 5 + m_Name: Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1311161409 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311161408} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1238552242} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1311161410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311161408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1 + m_LayoutPriority: 1 +--- !u!1 &1314882728 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1314882730} + - component: {fileID: 1314882729} + m_Layer: 0 + m_Name: PassportInit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1314882729 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1314882728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a144ce7c7894393adac2723bdc9a63f, type: 3} + m_Name: + m_EditorClassIdentifier: + TopPadding: {fileID: 854433808} + Output: {fileID: 1690937182} +--- !u!4 &1314882730 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1314882728} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 714.41785, y: 312.47006, z: -14.656412} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1403438475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1403438476} + - component: {fileID: 1403438479} + - component: {fileID: 1403438478} + - component: {fileID: 1403438477} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1403438476 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1403438475} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1500770698} + m_Father: {fileID: 172384059} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!114 &1403438477 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1403438475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.8679245, g: 0.8679245, b: 0.8679245, a: 1} + m_HighlightedColor: {r: 0.87058824, g: 0.87058824, b: 0.87058824, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.87058824, g: 0.87058824, b: 0.87058824, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 167431872} + m_HandleRect: {fileID: 167431871} + m_Direction: 2 + m_Value: 1 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1403438478 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1403438475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1403438479 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1403438475} + m_CullTransparentMesh: 1 +--- !u!1 &1500770697 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1500770698} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1500770698 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1500770697} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 167431871} + m_Father: {fileID: 1403438476} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1508764520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1508764521} + - component: {fileID: 1508764523} + - component: {fileID: 1508764522} + m_Layer: 5 + m_Name: OutputWrapper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1508764521 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508764520} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 172384059} + m_Father: {fileID: 1238552242} + 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, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1508764522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508764520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 200 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1508764523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508764520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 3 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1557497261 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1557497264} + - component: {fileID: 1557497263} + - component: {fileID: 1557497262} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1557497262 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557497261} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1557497263 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557497261} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1557497264 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557497261} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1661390143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1661390144} + - component: {fileID: 1661390146} + - component: {fileID: 1661390145} + - component: {fileID: 1661390147} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1661390144 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661390143} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1238552242} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 923.76044, y: 0} + m_SizeDelta: {x: 1807.5209, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1661390145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661390143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Passport initialisation with PassportUI +--- !u!222 &1661390146 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661390143} + m_CullTransparentMesh: 1 +--- !u!114 &1661390147 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661390143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &1690937179 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1690937180} + - component: {fileID: 1690937181} + - component: {fileID: 1690937182} + m_Layer: 5 + m_Name: Output + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1690937180 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690937179} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 109433254} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -32, y: -32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1690937181 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690937179} + m_CullTransparentMesh: 1 +--- !u!114 &1690937182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690937179} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!1 &1850628783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1850628784} + - component: {fileID: 1850628787} + - component: {fileID: 1850628786} + - component: {fileID: 1850628785} + - component: {fileID: 1850628788} + - component: {fileID: 1850628790} + - component: {fileID: 1850628789} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1850628784 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850628783} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1238552242} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1850628785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850628783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1850628786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850628783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1600, y: 1200} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1850628787 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850628783} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + 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!114 &1850628788 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850628783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 0 +--- !u!114 &1850628789 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850628783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1850628790 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850628783} + m_CullTransparentMesh: 1 diff --git a/sample/Assets/Scenes/Passport/InitialisationWithUI.unity.meta b/sample/Assets/Scenes/Passport/InitialisationWithUI.unity.meta new file mode 100644 index 00000000..d346fadf --- /dev/null +++ b/sample/Assets/Scenes/Passport/InitialisationWithUI.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b588e10e8f614e0458aee90c7d02a499 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sample/Assets/Scenes/Passport/WebViewTest.unity b/sample/Assets/Scenes/Passport/WebViewTest.unity new file mode 100644 index 00000000..0bbb1787 --- /dev/null +++ b/sample/Assets/Scenes/Passport/WebViewTest.unity @@ -0,0 +1,3740 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 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 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &11204724 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 11204727} + - component: {fileID: 11204726} + - component: {fileID: 11204725} + m_Layer: 0 + m_Name: WebViewArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11204725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11204724} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.8, b: 0.2, a: 0.9} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &11204726 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11204724} + m_CullTransparentMesh: 1 +--- !u!224 &11204727 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11204724} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 384490364} + m_Father: {fileID: 2042004387} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -45} + m_Pivot: {x: 0, y: 0} +--- !u!1 &46133110 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 46133111} + - component: {fileID: 46133114} + - component: {fileID: 46133113} + - component: {fileID: 46133115} + - component: {fileID: 46133112} + m_Layer: 0 + m_Name: Button_TestMessaging + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &46133111 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 46133110} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 219397907} + m_Father: {fileID: 1110209261} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &46133112 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 46133110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &46133113 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 46133110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &46133114 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 46133110} + m_CullTransparentMesh: 1 +--- !u!114 &46133115 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 46133110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 46133113} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &72159644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 72159645} + - component: {fileID: 72159647} + - component: {fileID: 72159646} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &72159645 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72159644} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 816262197} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &72159646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72159644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &72159647 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72159644} + m_CullTransparentMesh: 1 +--- !u!1 &132476712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 132476713} + - component: {fileID: 132476716} + - component: {fileID: 132476715} + - component: {fileID: 132476717} + - component: {fileID: 132476714} + m_Layer: 0 + m_Name: Button_CloseWebView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &132476713 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132476712} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 352127787} + m_Father: {fileID: 1110209261} + 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: 0, y: 0} + m_SizeDelta: {x: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &132476714 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132476712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &132476715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132476712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &132476716 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132476712} + m_CullTransparentMesh: 1 +--- !u!114 &132476717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132476712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 132476715} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &219397906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 219397907} + - component: {fileID: 219397909} + - component: {fileID: 219397908} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &219397907 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 219397906} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 46133111} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &219397908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 219397906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Test Messaging +--- !u!222 &219397909 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 219397906} + m_CullTransparentMesh: 1 +--- !u!1 &264237326 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 264237327} + - component: {fileID: 264237329} + - component: {fileID: 264237328} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &264237327 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 264237326} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2123312039} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &264237328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 264237326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Forward +--- !u!222 &264237329 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 264237326} + m_CullTransparentMesh: 1 +--- !u!1 &323281746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 323281747} + - component: {fileID: 323281749} + - component: {fileID: 323281748} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &323281747 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323281746} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 770028757} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &323281748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323281746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Go +--- !u!222 &323281749 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323281746} + m_CullTransparentMesh: 1 +--- !u!1 &352127786 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 352127787} + - component: {fileID: 352127789} + - component: {fileID: 352127788} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &352127787 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 352127786} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 132476713} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &352127788 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 352127786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Close WebView +--- !u!222 &352127789 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 352127786} + m_CullTransparentMesh: 1 +--- !u!1 &384490363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 384490364} + - component: {fileID: 384490366} + - component: {fileID: 384490365} + m_Layer: 0 + m_Name: WebViewLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &384490364 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384490363} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 11204727} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.9} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &384490365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384490363} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: WebView Display Area (Press D to see dimensions) +--- !u!222 &384490366 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384490363} + m_CullTransparentMesh: 1 +--- !u!1 &419594877 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 419594878} + - component: {fileID: 419594880} + - component: {fileID: 419594879} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &419594878 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 419594877} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1774910133} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &419594879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 419594877} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Back +--- !u!222 &419594880 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 419594877} + m_CullTransparentMesh: 1 +--- !u!1 &428691714 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 428691715} + - component: {fileID: 428691717} + - component: {fileID: 428691716} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &428691715 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 428691714} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 509119375} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &428691716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 428691714} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Refresh +--- !u!222 &428691717 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 428691714} + m_CullTransparentMesh: 1 +--- !u!1 &489837108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 489837109} + - component: {fileID: 489837112} + - component: {fileID: 489837111} + - component: {fileID: 489837113} + - component: {fileID: 489837110} + m_Layer: 0 + m_Name: Button_FindWebView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &489837109 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 489837108} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1897884795} + m_Father: {fileID: 1110209261} + 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: 0, y: 0} + m_SizeDelta: {x: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &489837110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 489837108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &489837111 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 489837108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &489837112 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 489837108} + m_CullTransparentMesh: 1 +--- !u!114 &489837113 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 489837108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 489837111} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &509119374 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 509119375} + - component: {fileID: 509119378} + - component: {fileID: 509119377} + - component: {fileID: 509119379} + - component: {fileID: 509119376} + m_Layer: 0 + m_Name: Button_Refresh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &509119375 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509119374} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 428691715} + m_Father: {fileID: 1110209261} + 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: 0, y: 0} + m_SizeDelta: {x: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &509119376 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509119374} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &509119377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509119374} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &509119378 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509119374} + m_CullTransparentMesh: 1 +--- !u!114 &509119379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509119374} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 509119377} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &604535878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 604535879} + - component: {fileID: 604535881} + - component: {fileID: 604535880} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &604535879 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604535878} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1487213483} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &604535880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604535878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Test Input +--- !u!222 &604535881 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604535878} + m_CullTransparentMesh: 1 +--- !u!1 &662277847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 662277848} + - component: {fileID: 662277851} + - component: {fileID: 662277850} + - component: {fileID: 662277849} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &662277848 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662277847} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2042004387} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &662277849 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662277847} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &662277850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662277847} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, 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: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &662277851 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662277847} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + 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!1 &770028756 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 770028757} + - component: {fileID: 770028760} + - component: {fileID: 770028759} + - component: {fileID: 770028761} + - component: {fileID: 770028758} + m_Layer: 0 + m_Name: Button_Go + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &770028757 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770028756} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 323281747} + m_Father: {fileID: 1110209261} + 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: 0, y: 0} + m_SizeDelta: {x: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &770028758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770028756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &770028759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770028756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &770028760 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770028756} + m_CullTransparentMesh: 1 +--- !u!114 &770028761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770028756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 770028759} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &816262196 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 816262197} + - component: {fileID: 816262200} + - component: {fileID: 816262199} + - component: {fileID: 816262201} + - component: {fileID: 816262198} + m_Layer: 0 + m_Name: InputField_URL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &816262197 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816262196} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 72159645} + - {fileID: 1578366252} + m_Father: {fileID: 1110209261} + 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: 0, y: 0} + m_SizeDelta: {x: 300, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &816262198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816262196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 200 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &816262199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816262196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.8} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &816262200 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816262196} + m_CullTransparentMesh: 1 +--- !u!114 &816262201 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816262196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 816262199} + m_TextComponent: {fileID: 72159646} + m_Placeholder: {fileID: 1578366253} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!1 &820280800 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 820280801} + - component: {fileID: 820280804} + - component: {fileID: 820280803} + - component: {fileID: 820280802} + m_Layer: 0 + m_Name: 'Text_URL:' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &820280801 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820280800} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1110209261} + 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: 0, y: 0} + m_SizeDelta: {x: 30, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &820280802 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820280800} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 200 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &820280803 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820280800} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'URL:' +--- !u!222 &820280804 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820280800} + m_CullTransparentMesh: 1 +--- !u!1 &930111576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 930111579} + - component: {fileID: 930111578} + - component: {fileID: 930111577} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &930111577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 930111576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &930111578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 930111576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &930111579 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 930111576} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &965500708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 965500710} + - component: {fileID: 965500709} + m_Layer: 0 + m_Name: WebViewTestManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &965500709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965500708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 811054e6f94ff3140a9c103882b0ce43, type: 3} + m_Name: + m_EditorClassIdentifier: + selectedPackage: 0 + testUrl: https://passport.immutable.com/sdk-sample-app + messageTestUrl: file:///test-message-page.html + testLoginButton: {fileID: 1381477536} + testMessagingButton: {fileID: 46133115} + closeWebViewButton: {fileID: 132476717} + statusOutput: {fileID: 1615037019} + performanceOutput: {fileID: 1624574157} + urlInputField: {fileID: 816262201} + navigateButton: {fileID: 770028761} + backButton: {fileID: 1774910137} + forwardButton: {fileID: 2123312043} + refreshButton: {fileID: 509119379} + testInputButton: {fileID: 1487213487} + findWebViewButton: {fileID: 489837113} + testPopupButton: {fileID: 1825808986} + webViewWidth: 1024 + webViewHeight: 768 + fullScreenMode: 1 + webViewContainer: {fileID: 11204724} +--- !u!4 &965500710 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965500708} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1005425668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1005425669} + - component: {fileID: 1005425671} + - component: {fileID: 1005425670} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1005425669 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005425668} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1825808982} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1005425670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005425668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Test Popup +--- !u!222 &1005425671 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005425668} + m_CullTransparentMesh: 1 +--- !u!1 &1058398592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1058398593} + - component: {fileID: 1058398596} + - component: {fileID: 1058398595} + - component: {fileID: 1058398594} + m_Layer: 0 + m_Name: ControlPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1058398593 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058398592} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1110209261} + m_Father: {fileID: 2042004387} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 1030} + m_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1058398594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058398592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1058398595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058398592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.247, g: 0.247, b: 0.247, a: 0.9} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1058398596 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058398592} + m_CullTransparentMesh: 1 +--- !u!1 &1110209260 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1110209261} + - component: {fileID: 1110209263} + - component: {fileID: 1110209262} + m_Layer: 0 + m_Name: Row + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1110209261 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1110209260} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1381477532} + - {fileID: 46133111} + - {fileID: 132476713} + - {fileID: 489837109} + - {fileID: 820280801} + - {fileID: 816262197} + - {fileID: 770028757} + - {fileID: 509119375} + - {fileID: 1774910133} + - {fileID: 2123312039} + - {fileID: 1487213483} + - {fileID: 1825808982} + - {fileID: 1615037016} + - {fileID: 1624574154} + m_Father: {fileID: 1058398593} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1110209262 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1110209260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 30 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1110209263 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1110209260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1381477531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1381477532} + - component: {fileID: 1381477535} + - component: {fileID: 1381477534} + - component: {fileID: 1381477536} + - component: {fileID: 1381477533} + m_Layer: 0 + m_Name: Button_TestLogin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1381477532 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1381477531} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2120683601} + m_Father: {fileID: 1110209261} + 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: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1381477533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1381477531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1381477534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1381477531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1381477535 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1381477531} + m_CullTransparentMesh: 1 +--- !u!114 &1381477536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1381477531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1381477534} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1487213482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1487213483} + - component: {fileID: 1487213486} + - component: {fileID: 1487213485} + - component: {fileID: 1487213487} + - component: {fileID: 1487213484} + m_Layer: 0 + m_Name: Button_TestInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1487213483 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1487213482} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 604535879} + m_Father: {fileID: 1110209261} + m_RootOrder: 10 + 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: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1487213484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1487213482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1487213485 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1487213482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1487213486 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1487213482} + m_CullTransparentMesh: 1 +--- !u!114 &1487213487 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1487213482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1487213485} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1578366251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1578366252} + - component: {fileID: 1578366254} + - component: {fileID: 1578366253} + m_Layer: 0 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1578366252 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1578366251} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 816262197} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1578366253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1578366251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter URL... +--- !u!222 &1578366254 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1578366251} + m_CullTransparentMesh: 1 +--- !u!1 &1615037015 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1615037016} + - component: {fileID: 1615037018} + - component: {fileID: 1615037019} + - component: {fileID: 1615037017} + m_Layer: 0 + m_Name: StatusOutput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1615037016 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615037015} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1110209261} + m_RootOrder: 12 + 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: 200, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1615037017 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615037015} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 200 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &1615037018 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615037015} + m_CullTransparentMesh: 1 +--- !u!114 &1615037019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615037015} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Status: Ready' +--- !u!1 &1624574153 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1624574154} + - component: {fileID: 1624574156} + - component: {fileID: 1624574157} + - component: {fileID: 1624574155} + m_Layer: 0 + m_Name: PerformanceOutput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1624574154 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624574153} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1110209261} + m_RootOrder: 13 + 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: 200, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1624574155 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624574153} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 200 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &1624574156 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624574153} + m_CullTransparentMesh: 1 +--- !u!114 &1624574157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624574153} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Performance: -' +--- !u!1 &1774910132 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1774910133} + - component: {fileID: 1774910136} + - component: {fileID: 1774910135} + - component: {fileID: 1774910137} + - component: {fileID: 1774910134} + m_Layer: 0 + m_Name: Button_Back + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1774910133 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1774910132} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 419594878} + m_Father: {fileID: 1110209261} + 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: 0, y: 0} + m_SizeDelta: {x: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1774910134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1774910132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1774910135 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1774910132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1774910136 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1774910132} + m_CullTransparentMesh: 1 +--- !u!114 &1774910137 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1774910132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1774910135} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1788846601 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1788846604} + - component: {fileID: 1788846603} + - component: {fileID: 1788846602} + 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 &1788846602 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1788846601} + m_Enabled: 1 +--- !u!20 &1788846603 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1788846601} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 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: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1788846604 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1788846601} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1825808981 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1825808982} + - component: {fileID: 1825808985} + - component: {fileID: 1825808984} + - component: {fileID: 1825808986} + - component: {fileID: 1825808983} + m_Layer: 0 + m_Name: Button_TestPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1825808982 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825808981} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1005425669} + m_Father: {fileID: 1110209261} + m_RootOrder: 11 + 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: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1825808983 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825808981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1825808984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825808981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1825808985 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825808981} + m_CullTransparentMesh: 1 +--- !u!114 &1825808986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825808981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1825808984} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1897884794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1897884795} + - component: {fileID: 1897884797} + - component: {fileID: 1897884796} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1897884795 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897884794} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 489837109} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1897884796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897884794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Find WebView +--- !u!222 &1897884797 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897884794} + m_CullTransparentMesh: 1 +--- !u!1 &2042004386 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2042004387} + - component: {fileID: 2042004389} + - component: {fileID: 2042004388} + m_Layer: 0 + m_Name: TestPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2042004387 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2042004386} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1058398593} + - {fileID: 11204727} + m_Father: {fileID: 662277848} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &2042004388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2042004386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1, g: 0.1, b: 0.1, a: 0.8} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2042004389 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2042004386} + m_CullTransparentMesh: 1 +--- !u!1 &2120683600 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2120683601} + - component: {fileID: 2120683603} + - component: {fileID: 2120683602} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2120683601 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2120683600} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1381477532} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2120683602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2120683600} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Test Login +--- !u!222 &2120683603 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2120683600} + m_CullTransparentMesh: 1 +--- !u!1 &2123312038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2123312039} + - component: {fileID: 2123312042} + - component: {fileID: 2123312041} + - component: {fileID: 2123312043} + - component: {fileID: 2123312040} + m_Layer: 0 + m_Name: Button_Forward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2123312039 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123312038} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 264237327} + m_Father: {fileID: 1110209261} + 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: 0, y: 0} + m_SizeDelta: {x: 90, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2123312040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123312038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 90 + m_PreferredHeight: 25 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &2123312041 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123312038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.6, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2123312042 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123312038} + m_CullTransparentMesh: 1 +--- !u!114 &2123312043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123312038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2123312041} + m_OnClick: + m_PersistentCalls: + m_Calls: [] diff --git a/sample/Assets/Scenes/Passport/WebViewTest.unity.meta b/sample/Assets/Scenes/Passport/WebViewTest.unity.meta new file mode 100644 index 00000000..5936649b --- /dev/null +++ b/sample/Assets/Scenes/Passport/WebViewTest.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c8e2712d59c2d9a479d9177e52dd28c5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationScript.cs b/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationScript.cs index cd22015a..fe9be7ba 100644 --- a/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationScript.cs +++ b/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationScript.cs @@ -51,6 +51,7 @@ private async void InitialisePassport() // Initialise Passport const string environment = Immutable.Passport.Model.Environment.SANDBOX; const string clientId = "mp6rxfMDwwZDogcdgNrAaHnG0qMlXuMK"; + // const string clientId = "IllW5pJ54DShXtaSXzaAlghm40uQjptd"; var passport = await Passport.Init(clientId, environment, redirectUri, logoutRedirectUri); SampleAppManager.PassportInstance = passport; diff --git a/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationWithUIScript.cs b/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationWithUIScript.cs new file mode 100644 index 00000000..358951ed --- /dev/null +++ b/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationWithUIScript.cs @@ -0,0 +1,110 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.SceneManagement; +using Immutable.Passport; +using Immutable.Passport.Core.Logging; +using Cysharp.Threading.Tasks; + +/// +/// Sample script demonstrating how to initialize Passport using the PassportUI prefab. +/// This is the recommended approach for quick setup - configure Passport settings +/// in the PassportUI Inspector, then call InitializeWithPassport(). +/// +/// For advanced scenarios without UI, see PassportInitialisationScript.cs instead. +/// +public class PassportInitialisationWithUIScript : MonoBehaviour +{ +#pragma warning disable CS8618 + [SerializeField] private GameObject TopPadding; + [SerializeField] private Text Output; +#pragma warning restore CS8618 + + private PassportUI passportUI; + + void Start() + { + InitialisePassport(); + } + + private async void InitialisePassport() + { + try + { + // Set the log level for the SDK + Passport.LogLevel = LogLevel.Debug; + + // Don't redact token values from logs + Passport.RedactTokensInLogs = false; + + // Find PassportUI component + passportUI = FindObjectOfType(); + if (passportUI == null) + { + Debug.LogError("PassportUI component not found in scene - UI login will not be available"); + return; + } + + // Subscribe to login events for automatic scene transition + PassportUI.OnLoginSuccessStatic += OnPassportLoginSuccess; + PassportUI.OnLoginFailureStatic += OnPassportLoginFailure; + + // Check if Passport is already initialized (e.g., from logout flow) + if (Passport.Instance != null) + { + Debug.Log("Passport already initialized, setting up UI only..."); + + // Just initialize the UI with the existing Passport instance + await passportUI.InitializeWithPassport(Passport.Instance); + + // Store reference for other scripts that need it + SampleAppManager.PassportInstance = Passport.Instance; + + Debug.Log("PassportUI initialized with existing Passport instance"); + } + else + { + Debug.Log("Initializing Passport using PassportUI prefab configuration..."); + + // PassportUI handles both Passport.Init() and UI setup + // Configuration is done in the PassportUI Inspector (clientId, environment, etc.) + await passportUI.InitializeWithPassport(); + + // Store reference for other scripts that need it + SampleAppManager.PassportInstance = Passport.Instance; + + Debug.Log("Passport and PassportUI initialized successfully"); + } + } + catch (Exception ex) + { + Debug.LogException(ex, this); + } + } + + private void OnPassportLoginSuccess() + { + Debug.Log("Passport login successful! Navigating to authenticated scene..."); + + // Navigate to authenticated scene + SceneManager.LoadScene("AuthenticatedScene"); + } + + private void OnPassportLoginFailure(string errorMessage) + { + Debug.LogError($"Passport login failed: {errorMessage}"); + + // Could show error UI, retry options, etc. + // For now, just log the error + } + + private void OnDestroy() + { + // Clean up event subscriptions to prevent memory leaks + if (passportUI != null) + { + PassportUI.OnLoginSuccessStatic -= OnPassportLoginSuccess; + PassportUI.OnLoginFailureStatic -= OnPassportLoginFailure; + } + } +} diff --git a/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationWithUIScript.cs.meta b/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationWithUIScript.cs.meta new file mode 100644 index 00000000..1f5fca78 --- /dev/null +++ b/sample/Assets/Scripts/Passport/PassportInitialisation/PassportInitialisationWithUIScript.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a144ce7c7894393adac2723bdc9a63f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sample/ProjectSettings/EditorBuildSettings.asset b/sample/ProjectSettings/EditorBuildSettings.asset index cb98e777..58026432 100644 --- a/sample/ProjectSettings/EditorBuildSettings.asset +++ b/sample/ProjectSettings/EditorBuildSettings.asset @@ -8,6 +8,9 @@ EditorBuildSettings: - enabled: 1 path: Assets/Scenes/Passport/Initialisation.unity guid: bb0668e0c95b745ce8e2f127d5940ede + - enabled: 0 + path: Assets/Scenes/Passport/InitialisationWithUI.unity + guid: b588e10e8f614e0458aee90c7d02a499 - enabled: 1 path: Assets/Scenes/Passport/UnauthenticatedScene.unity guid: 2cda990e2423bbf4892e6590ba056729 @@ -35,19 +38,22 @@ EditorBuildSettings: - enabled: 1 path: Assets/Scenes/Other/LaunchBrowser.unity guid: 7c72c29391829c742a018e4f2e629313 - - enabled: 1 + - enabled: 0 path: Assets/Scenes/ZkEvmApi/LinkWallet.unity guid: d62e0cc2be6134dadaa8057f46fb8761 - - enabled: 1 + - enabled: 0 path: Assets/Scenes/Marketplace/MarketplaceScene.unity guid: 18f278ca9e9d34901bcc2919a143809c - - enabled: 1 + - enabled: 0 path: Assets/Scenes/Marketplace/OnRampScene.unity guid: 27e0bb5e5d04a4955b88c9f329422c89 - - enabled: 1 + - enabled: 0 path: Assets/Scenes/Marketplace/SwapScene.unity guid: a0a7416ea738d4bea8cd720ed33efbde - - enabled: 1 + - enabled: 0 path: Assets/Scenes/Marketplace/BridgeScene.unity guid: ce7072a24f12e4c91b658c798755b355 + - enabled: 0 + path: Assets/Scenes/Passport/WebViewTest.unity + guid: c8e2712d59c2d9a479d9177e52dd28c5 m_configObjects: {} diff --git a/sample/ProjectSettings/PackageManagerSettings.asset b/sample/ProjectSettings/PackageManagerSettings.asset index 4b2b1110..bb97be98 100644 --- a/sample/ProjectSettings/PackageManagerSettings.asset +++ b/sample/ProjectSettings/PackageManagerSettings.asset @@ -50,11 +50,11 @@ MonoBehaviour: m_IsDefault: 0 m_Capabilities: 0 m_ConfigSource: 4 - m_UserSelectedRegistryName: package.openupm.com + m_UserSelectedRegistryName: npmjs m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: m_Modified: 0 m_ErrorMessage: - m_UserModificationsInstanceId: -828 - m_OriginalInstanceId: -832 + m_UserModificationsInstanceId: -842 + m_OriginalInstanceId: -846 m_LoadAssets: 0 diff --git a/src/Packages/Passport/Editor/PassportEditor.asmdef b/src/Packages/Passport/Editor/PassportEditor.asmdef index 4d5cf619..8ea966a5 100644 --- a/src/Packages/Passport/Editor/PassportEditor.asmdef +++ b/src/Packages/Passport/Editor/PassportEditor.asmdef @@ -3,9 +3,7 @@ "rootNamespace": "Immutable.Passport.Editor", "references": [], "includePlatforms": [ - "Editor", - "macOSStandalone", - "WindowsStandalone64" + "Editor" ], "excludePlatforms": [], "allowUnsafeCode": false, diff --git a/src/Packages/Passport/Editor/VuplexSymbolManager.cs b/src/Packages/Passport/Editor/VuplexSymbolManager.cs new file mode 100644 index 00000000..31750163 --- /dev/null +++ b/src/Packages/Passport/Editor/VuplexSymbolManager.cs @@ -0,0 +1,108 @@ +using UnityEngine; +using UnityEditor; +using System.Linq; + +namespace Immutable.Passport.Editor +{ + /// + /// Automatically manages VUPLEX_WEBVIEW scripting define symbol + /// based on whether Vuplex WebView is present in the project + /// + [InitializeOnLoad] + public static class VuplexSymbolManager + { + private const string VUPLEX_SYMBOL = "VUPLEX_WEBVIEW"; + + static VuplexSymbolManager() + { + // Run on editor startup and after assembly reload + EditorApplication.delayCall += CheckAndUpdateVuplexSymbol; + } + + private static void CheckAndUpdateVuplexSymbol() + { + try + { + // Check if Vuplex WebView assembly exists + bool vuplexExists = DoesVuplexAssemblyExist(); + + // Get current build target group + var buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; + + // Get current scripting define symbols + var currentSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + var symbolList = currentSymbols.Split(';').Where(s => !string.IsNullOrEmpty(s)).ToList(); + + bool symbolExists = symbolList.Contains(VUPLEX_SYMBOL); + + // Update symbol if needed + if (vuplexExists && !symbolExists) + { + // Add symbol + symbolList.Add(VUPLEX_SYMBOL); + var newSymbols = string.Join(";", symbolList); + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, newSymbols); + Debug.Log($"[VuplexSymbolManager] Added {VUPLEX_SYMBOL} symbol - Vuplex WebView detected"); + } + else if (!vuplexExists && symbolExists) + { + // Remove symbol + symbolList.Remove(VUPLEX_SYMBOL); + var newSymbols = string.Join(";", symbolList); + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, newSymbols); + Debug.Log($"[VuplexSymbolManager] Removed {VUPLEX_SYMBOL} symbol - Vuplex WebView not found"); + } + + // Log current status (only once per session to avoid spam) + if (!SessionState.GetBool("VuplexSymbolManager.LoggedStatus", false)) + { + if (vuplexExists) + { + Debug.Log($"[VuplexSymbolManager] Vuplex WebView available, {VUPLEX_SYMBOL} symbol active"); + } + else + { + Debug.Log($"[VuplexSymbolManager] Vuplex WebView not found"); + } + SessionState.SetBool("VuplexSymbolManager.LoggedStatus", true); + } + } + catch (System.Exception ex) + { + Debug.LogError($"[VuplexSymbolManager] Error managing Vuplex symbol: {ex.Message}"); + } + } + + private static bool DoesVuplexAssemblyExist() + { + // Check for Vuplex assembly in multiple ways + + // Method 1: Check compiled assemblies + var assemblies = System.AppDomain.CurrentDomain.GetAssemblies(); + if (assemblies.Any(a => a.GetName().Name == "Vuplex.WebView")) + { + return true; + } + + // Method 2: Check for Vuplex types + var vuplexType = System.Type.GetType("Vuplex.WebView.CanvasWebViewPrefab, Vuplex.WebView"); + if (vuplexType != null) + { + return true; + } + + // Method 3: Check for Vuplex assets in project + var vuplexAssets = AssetDatabase.FindAssets("CanvasWebViewPrefab"); + foreach (var guid in vuplexAssets) + { + var path = AssetDatabase.GUIDToAssetPath(guid); + if (path.Contains("Vuplex")) + { + return true; + } + } + + return false; + } + } +} diff --git a/src/Packages/Passport/Editor/VuplexSymbolManager.cs.meta b/src/Packages/Passport/Editor/VuplexSymbolManager.cs.meta new file mode 100644 index 00000000..36e8e3e3 --- /dev/null +++ b/src/Packages/Passport/Editor/VuplexSymbolManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 285b7ffebc370477a823844aa4c8aa83 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Prefabs.meta b/src/Packages/Passport/Prefabs.meta new file mode 100644 index 00000000..032d815d --- /dev/null +++ b/src/Packages/Passport/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 302294de4bba1e3458ca7b7b2d0dc771 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Prefabs/PassportLogin_Vuplex.prefab b/src/Packages/Passport/Prefabs/PassportLogin_Vuplex.prefab new file mode 100644 index 00000000..6af4be73 --- /dev/null +++ b/src/Packages/Passport/Prefabs/PassportLogin_Vuplex.prefab @@ -0,0 +1,206 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5904238481854722446 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5904238481854722442} + - component: {fileID: 5904238481854722445} + - component: {fileID: 5904238481854722444} + - component: {fileID: 5904238481854722447} + m_Layer: 5 + m_Name: PassportLogin_Vuplex + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5904238481854722442 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5904238481854722446} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5904238482241975487} + 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, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &5904238481854722445 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5904238481854722446} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 1000 + m_TargetDisplay: 0 +--- !u!114 &5904238481854722444 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5904238481854722446} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, 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: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &5904238481854722447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5904238481854722446} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &5904238482241975475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5904238482241975487} + - component: {fileID: 5904238482241975486} + - component: {fileID: 5904238482241975473} + - component: {fileID: 5904238482241975484} + m_Layer: 5 + m_Name: RawImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5904238482241975487 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5904238482241975475} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0392305, y: 1.0392305, z: 1.0392305} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5904238481854722442} + 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: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5904238482241975486 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5904238482241975475} + m_CullTransparentMesh: 1 +--- !u!114 &5904238482241975473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5904238482241975475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!114 &5904238482241975484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5904238482241975475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 32208e882b664251bb0da03443581c5f, type: 3} + m_Name: + m_EditorClassIdentifier: + loginButton: {fileID: 0} + OnLoginSuccess: + m_PersistentCalls: + m_Calls: [] + OnLoginFailure: + m_PersistentCalls: + m_Calls: [] + enableRemoteDebugging: 1 + remoteDebuggingPort: 9222 + clearCacheOnLogin: 1 + clientId: + environment: sandbox + redirectUri: + logoutRedirectUri: + webViewBaseUrl: https://auth.immutable.com/im-embedded-login-prompt + webViewWidth: 800 + webViewHeight: 600 diff --git a/src/Packages/Passport/Prefabs/PassportLogin_Vuplex.prefab.meta b/src/Packages/Passport/Prefabs/PassportLogin_Vuplex.prefab.meta new file mode 100644 index 00000000..09f87161 --- /dev/null +++ b/src/Packages/Passport/Prefabs/PassportLogin_Vuplex.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 318101a79a6d44d48a0863a613fa1909 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Prefabs/PassportLogin_Windows.prefab b/src/Packages/Passport/Prefabs/PassportLogin_Windows.prefab new file mode 100644 index 00000000..a2314386 --- /dev/null +++ b/src/Packages/Passport/Prefabs/PassportLogin_Windows.prefab @@ -0,0 +1,169 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2554157028554517038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2554157028554517031} + - component: {fileID: 2554157028554517028} + - component: {fileID: 2554157028554517029} + - component: {fileID: 2554157028554517026} + - component: {fileID: 2554157028554517027} + - component: {fileID: 2554157028554517024} + - component: {fileID: 2554157028554517025} + m_Layer: 5 + m_Name: PassportLogin_Windows + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2554157028554517031 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2554157028554517038} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + 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, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &2554157028554517028 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2554157028554517038} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + 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!114 &2554157028554517029 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2554157028554517038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, 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: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &2554157028554517026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2554157028554517038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!222 &2554157028554517027 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2554157028554517038} + m_CullTransparentMesh: 1 +--- !u!114 &2554157028554517024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2554157028554517038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!114 &2554157028554517025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2554157028554517038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 32208e882b664251bb0da03443581c5f, type: 3} + m_Name: + m_EditorClassIdentifier: + loginButton: {fileID: 0} + OnLoginSuccess: + m_PersistentCalls: + m_Calls: [] + OnLoginFailure: + m_PersistentCalls: + m_Calls: [] + enableRemoteDebugging: 0 + remoteDebuggingPort: 9222 + clearCacheOnLogin: 1 + clientId: + environment: sandbox + redirectUri: + logoutRedirectUri: + webViewBaseUrl: https://auth.immutable.com/im-embedded-login-prompt + webViewWidth: 800 + webViewHeight: 600 diff --git a/src/Packages/Passport/Prefabs/PassportLogin_Windows.prefab.meta b/src/Packages/Passport/Prefabs/PassportLogin_Windows.prefab.meta new file mode 100644 index 00000000..ba131fe6 --- /dev/null +++ b/src/Packages/Passport/Prefabs/PassportLogin_Windows.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 422432bb6ceb7af4490f24f2b0383786 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/Scripts/Private/Helpers/WindowsDeepLink.cs b/src/Packages/Passport/Runtime/Scripts/Private/Helpers/WindowsDeepLink.cs index 6b2b29c5..5dfa5bf6 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/Helpers/WindowsDeepLink.cs +++ b/src/Packages/Passport/Runtime/Scripts/Private/Helpers/WindowsDeepLink.cs @@ -134,8 +134,32 @@ private static void CreateCommandScript(string protocolName) " if not \"%%B\"==\"\" set \"cmdline=!cmdline!%%B\"", " )", " echo [%date% %time%] Raw command line: !cmdline! >> \"%LOG_PATH%\"", + " REM Try multiple path formats to handle Unity's various command line formats", + " set \"MATCH_FOUND=0\"", + " ", + " REM Try 1: Exact match with backslashes", " echo !cmdline! | findstr /I /C:\"-projectPath\" | findstr /I /C:\"%PROJECT_PATH%\" >nul", - " if not errorlevel 1 (", + " if not errorlevel 1 set \"MATCH_FOUND=1\"", + " ", + " REM Try 2: Forward slashes if backslashes didn't match", + " if \"!MATCH_FOUND!\"==\"0\" (", + " set \"PROJECT_PATH_FORWARD=%PROJECT_PATH:\\=/%\"", + " echo [%date% %time%] Trying forward slash path: !PROJECT_PATH_FORWARD! >> \"%LOG_PATH%\"", + " echo !cmdline! | findstr /I /C:\"-projectPath\" | findstr /I /C:\"!PROJECT_PATH_FORWARD!\" >nul", + " if not errorlevel 1 set \"MATCH_FOUND=1\"", + " )", + " ", + " REM Try 3: With quotes around paths", + " if \"!MATCH_FOUND!\"==\"0\" (", + " echo [%date% %time%] Trying quoted paths >> \"%LOG_PATH%\"", + " echo !cmdline! | findstr /I /C:\"-projectPath \\\"!PROJECT_PATH!\\\"\" >nul", + " if not errorlevel 1 set \"MATCH_FOUND=1\"", + " if \"!MATCH_FOUND!\"==\"0\" (", + " echo !cmdline! | findstr /I /C:\"-projectPath \\\"!PROJECT_PATH_FORWARD!\\\"\" >nul", + " if not errorlevel 1 set \"MATCH_FOUND=1\"", + " )", + " )", + " if \"!MATCH_FOUND!\"==\"1\" (", " echo [%date% %time%] Found matching Unity process ID: %%A >> \"%LOG_PATH%\"", " echo [%date% %time%] Command line: !cmdline! >> \"%LOG_PATH%\"", " powershell -NoProfile -ExecutionPolicy Bypass -Command ^", @@ -161,7 +185,7 @@ private static void CreateCommandScript(string protocolName) $"echo [%date% %time%] Starting new Unity instance >> \"%LOG_PATH%\"", $"start \"\" \"{unityExe}\" -projectPath \"%PROJECT_PATH%\" >nul 2>&1" }; - + File.WriteAllLines(cmdPath, scriptLines); PassportLogger.Debug($"Writing script to {cmdPath}"); PassportLogger.Debug($"Writing logs to {logPath}"); @@ -198,7 +222,7 @@ private static void CreateCommandScript(string protocolName) private static void RegisterProtocol(string protocolName) { PassportLogger.Debug($"Register protocol: {protocolName}"); - + UIntPtr hKey; uint disposition; // Create registry key for the protocol @@ -214,14 +238,14 @@ private static void RegisterProtocol(string protocolName) out disposition); if (result != 0) - { + { throw new Exception($"Failed to create PKCE registry key. Error code: {result}"); } // Set the default value for the protocol key to Application.productName // This is often used by Windows as the display name for the protocol var appProductName = Application.productName; - var productNameDataSize = (uint)((appProductName.Length + 1) * Marshal.SystemDefaultCharSize); + var productNameDataSize = (uint)((appProductName.Length + 1) * Marshal.SystemDefaultCharSize); var setDefaultResult = RegSetValueEx(hKey, null, 0, REG_SZ, appProductName, productNameDataSize); if (setDefaultResult != 0) @@ -230,7 +254,7 @@ private static void RegisterProtocol(string protocolName) } // Set URL Protocol value - RegSetValueEx(hKey, "URL Protocol", 0, REG_SZ, string.Empty, (uint)(1 * Marshal.SystemDefaultCharSize)); + RegSetValueEx(hKey, "URL Protocol", 0, REG_SZ, string.Empty, (uint)(1 * Marshal.SystemDefaultCharSize)); // Create command subkey UIntPtr commandKey; @@ -246,7 +270,7 @@ private static void RegisterProtocol(string protocolName) out disposition); if (result != 0) - { + { RegCloseKey(hKey); throw new Exception($"Failed to create PKCE command registry key. Error code: {result}"); } @@ -255,7 +279,7 @@ private static void RegisterProtocol(string protocolName) var scriptLocation = GetGameExecutablePath(".cmd"); string command = $"\"{scriptLocation}\" \"%1\""; uint commandSize = (uint)((command.Length + 1) * 2); - + result = RegSetValueEx(commandKey, "", 0, REG_SZ, command, commandSize); if (result != 0) { @@ -268,7 +292,7 @@ private static void RegisterProtocol(string protocolName) RegCloseKey(commandKey); RegCloseKey(hKey); } - + private static string GetGameExecutablePath(string suffix) { #if !UNITY_EDITOR_WIN diff --git a/src/Packages/Passport/Runtime/Scripts/Private/Immutable.Passport.Runtime.Private.asmdef b/src/Packages/Passport/Runtime/Scripts/Private/Immutable.Passport.Runtime.Private.asmdef index bbb0c0aa..5e9e9c5d 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/Immutable.Passport.Runtime.Private.asmdef +++ b/src/Packages/Passport/Runtime/Scripts/Private/Immutable.Passport.Runtime.Private.asmdef @@ -6,7 +6,9 @@ "UniTask", "Immutable.Browser.Core", "Immutable.Browser.Gree", - "Immutable.Passport.Core.Logging" + "Immutable.Passport.Core.Logging", + "Vuplex.WebView", + "Unity.InputSystem" ], "includePlatforms": [ "Android", @@ -20,10 +22,17 @@ "allowUnsafeCode": false, "overrideReferences": true, "precompiledReferences": [ - "Newtonsoft.Json.dll" + "Newtonsoft.Json.dll", + "VoltstroStudios.UnityWebBrowser.Shared.dll" ], "autoReferenced": true, "defineConstraints": [], - "versionDefines": [], + "versionDefines": [ + { + "name": "com.unity.inputsystem", + "expression": "1.0.0", + "define": "ENABLE_INPUT_SYSTEM" + } + ], "noEngineReferences": false } \ No newline at end of file diff --git a/src/Packages/Passport/Runtime/Scripts/Private/Model/DirectLoginMethod.cs b/src/Packages/Passport/Runtime/Scripts/Private/Model/DirectLoginMethod.cs index 5996371f..052064d7 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/Model/DirectLoginMethod.cs +++ b/src/Packages/Passport/Runtime/Scripts/Private/Model/DirectLoginMethod.cs @@ -8,6 +8,7 @@ namespace Immutable.Passport.Model [Serializable] public enum DirectLoginMethod { + None, Email, Google, Apple, diff --git a/src/Packages/Passport/Runtime/Scripts/Private/Model/DirectLoginOptions.cs b/src/Packages/Passport/Runtime/Scripts/Private/Model/DirectLoginOptions.cs index fbf157d3..7c23dae2 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/Model/DirectLoginOptions.cs +++ b/src/Packages/Passport/Runtime/Scripts/Private/Model/DirectLoginOptions.cs @@ -17,7 +17,12 @@ public class DirectLoginOptions /// /// Email address for email-based authentication (only used when directLoginMethod is Email). /// - public string email; + public string? email; + + /// + /// Marketing consent status. Defaults to OptedIn. Required by Auth endpoints. + /// + public MarketingConsentStatus? marketingConsentStatus; /// /// Default constructor. @@ -26,6 +31,7 @@ public DirectLoginOptions() { directLoginMethod = DirectLoginMethod.Email; email = null; + marketingConsentStatus = MarketingConsentStatus.OptedIn; } /// @@ -33,10 +39,12 @@ public DirectLoginOptions() /// /// The direct login method /// The email address (optional) - public DirectLoginOptions(DirectLoginMethod loginMethod, string emailAddress = null) + /// Marketing consent status. Defaults to OptedIn if not specified. Required. + public DirectLoginOptions(DirectLoginMethod loginMethod, string? emailAddress = null, MarketingConsentStatus? marketingConsentStatus = null) { directLoginMethod = loginMethod; email = emailAddress; + this.marketingConsentStatus = marketingConsentStatus ?? MarketingConsentStatus.OptedIn; } /// diff --git a/src/Packages/Passport/Runtime/Scripts/Private/Model/MarketingConsentStatus.cs b/src/Packages/Passport/Runtime/Scripts/Private/Model/MarketingConsentStatus.cs new file mode 100644 index 00000000..07e74fce --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/Model/MarketingConsentStatus.cs @@ -0,0 +1,35 @@ +using System; + +namespace Immutable.Passport.Model +{ + /// + /// Enum representing marketing consent status. + /// + [Serializable] + public enum MarketingConsentStatus + { + OptedIn, + Unsubscribed + } + + /// + /// Extension methods for MarketingConsentStatus enum. + /// + public static class MarketingConsentStatusExtensions + { + /// + /// Converts the enum value to the string format expected by the game bridge. + /// + /// The marketing consent status + /// The corresponding string value + public static string ToApiString(this MarketingConsentStatus status) + { + return status switch + { + MarketingConsentStatus.OptedIn => "opted_in", + MarketingConsentStatus.Unsubscribed => "unsubscribed", + _ => throw new ArgumentOutOfRangeException(nameof(status), status, "Unknown MarketingConsentStatus value") + }; + } + } +} diff --git a/src/Packages/Passport/Runtime/Scripts/Private/Model/MarketingConsentStatus.cs.meta b/src/Packages/Passport/Runtime/Scripts/Private/Model/MarketingConsentStatus.cs.meta new file mode 100644 index 00000000..8ac5513e --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/Model/MarketingConsentStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e38402137fa13e409b3c88ab5cb27c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs b/src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs index 874e8c8e..2a492d56 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs +++ b/src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs @@ -98,7 +98,7 @@ public void SetCallTimeout(int ms) _communicationsManager.SetCallTimeout(ms); } - public UniTask Login(bool useCachedSession = false, DirectLoginOptions directLoginOptions = null) + public UniTask Login(bool useCachedSession = false, DirectLoginOptions? directLoginOptions = null) { if (useCachedSession) { @@ -163,7 +163,7 @@ private async UniTask Relogin() return false; } - public async UniTask ConnectImx(bool useCachedSession = false, DirectLoginOptions directLoginOptions = null) + public async UniTask ConnectImx(bool useCachedSession = false, DirectLoginOptions? directLoginOptions = null) { if (useCachedSession) { @@ -275,22 +275,19 @@ private async UniTask LaunchAuthUrl() { try { - // Create the request JSON manually to ensure proper serialization - var requestJson = $"{{\"isConnectImx\":{(!_pkceLoginOnly).ToString().ToLower()}"; - - if (_directLoginOptions != null) + // Create the request using a serializable class for clean JSON generation + var request = new AuthUrlRequest { - requestJson += $",\"directLoginOptions\":{{\"directLoginMethod\":\"{_directLoginOptions.directLoginMethod.ToString().ToLower()}\""; - - if (_directLoginOptions.IsEmailValid()) + isConnectImx = !_pkceLoginOnly, + directLoginOptions = _directLoginOptions != null ? new DirectLoginRequestOptions { - requestJson += $",\"email\":\"{_directLoginOptions.email}\""; - } + directLoginMethod = _directLoginOptions.directLoginMethod.ToString().ToLower(), + email = _directLoginOptions.IsEmailValid() ? _directLoginOptions.email : null, + marketingConsentStatus = _directLoginOptions.marketingConsentStatus?.ToApiString() + } : null + }; - requestJson += "}"; - } - - requestJson += "}"; + var requestJson = JsonUtility.ToJson(request); var callResponse = await _communicationsManager.Call(PassportFunction.GET_PKCE_AUTH_URL, requestJson); var response = callResponse.OptDeserializeObject(); @@ -298,6 +295,7 @@ private async UniTask LaunchAuthUrl() if (response != null && response.success == true && response.result != null) { var url = response.result.Replace(" ", "+"); + #if UNITY_ANDROID && !UNITY_EDITOR loginPKCEUrl = url; SendAuthEvent(_pkceLoginOnly ? PassportAuthEvent.LoginPKCELaunchingCustomTabs : PassportAuthEvent.ConnectImxPKCELaunchingCustomTabs); @@ -781,7 +779,7 @@ public interface PKCECallback { /// - /// Called when the Android Chrome Custom Tabs is hidden. + /// Called when the Android Chrome Custom Tabs is hidden. /// Note that you won't be able to tell whether it was closed by the user or the SDK. /// True if the user has entered everything required (e.g. email address), /// Chrome Custom Tabs have closed, and the SDK is trying to complete the PKCE flow. @@ -820,4 +818,25 @@ async void onDeeplinkResult(string url) } } #endif + + /// + /// Serializable request class for LaunchAuthUrl to replace manual JSON string concatenation + /// + [Serializable] + internal class AuthUrlRequest + { + public bool isConnectImx; + public DirectLoginRequestOptions directLoginOptions; + } + + /// + /// Serializable class for directLoginOptions within AuthUrlRequest + /// + [Serializable] + internal class DirectLoginRequestOptions + { + public string directLoginMethod; + public string email; + public string marketingConsentStatus; + } } \ No newline at end of file diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI.meta b/src/Packages/Passport/Runtime/Scripts/Private/UI.meta new file mode 100644 index 00000000..289777ea --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e37cc302b4cce3e4c8e8cf095aabcabc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/IPassportWebView.cs b/src/Packages/Passport/Runtime/Scripts/Private/UI/IPassportWebView.cs new file mode 100644 index 00000000..d29a7f79 --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/IPassportWebView.cs @@ -0,0 +1,153 @@ +using System; + +namespace Immutable.Passport +{ + /// + /// Message structure for Vuplex WebView communication + /// Matches the JSON format: {method: "MethodName", data: "..."} + /// + [System.Serializable] + public class VuplexMessage + { + public string method; + public string data; + } + + /// + /// Error data structure for JavaScript error messages + /// Matches the TypeScript Error serialization: {message: string, name: string} + /// + [System.Serializable] + public class ErrorData + { + public string message; + public string name; + + public override string ToString() + { + return $"ErrorData(name: {name}, message: {message})"; + } + } + /// + /// Platform abstraction interface for PassportUI WebView implementations. + /// Provides a unified API for different WebView technologies across platforms: + /// - Windows: Volt Unity Web Browser (UWB) with Chromium CEF + /// - macOS: Volt Unity Web Browser (UWB) with Chromium CEF + /// - iOS: Vuplex 3D WebView with WKWebView + /// - Android: Gree WebView with Android WebView + /// + public interface IPassportWebView + { + /// + /// Load a URL in the WebView + /// + /// The URL to load + void LoadUrl(string url); + + /// + /// Show the WebView (make it visible to the user) + /// + void Show(); + + /// + /// Hide the WebView (make it invisible) + /// + void Hide(); + + /// + /// Execute JavaScript code in the WebView + /// + /// JavaScript code to execute + void ExecuteJavaScript(string js); + + /// + /// Event triggered when JavaScript sends a message to Unity + /// The string parameter contains the message data from JavaScript + /// + event Action OnJavaScriptMessage; + + /// + /// Event triggered when a page finishes loading in the WebView + /// + event Action OnLoadFinished; + + /// + /// Event triggered when a page starts loading in the WebView + /// + event Action OnLoadStarted; + + /// + /// Get or set whether the WebView is currently visible + /// + bool IsVisible { get; } + + /// + /// Get the current URL loaded in the WebView + /// + string CurrentUrl { get; } + + /// + /// Initialize the WebView with the specified configuration + /// + /// WebView configuration options + void Initialize(PassportWebViewConfig config); + + /// + /// Register a JavaScript method that can be called from web pages + /// + /// Name of the method to register + /// Handler function to call when JavaScript invokes this method + void RegisterJavaScriptMethod(string methodName, Action handler); + + /// + /// Clean up resources and dispose of the WebView + /// + void Dispose(); + } + + /// + /// Configuration options for PassportUI WebView + /// + public class PassportWebViewConfig + { + /// + /// Enable remote debugging (Chrome DevTools, Safari Web Inspector, etc.) + /// + public bool EnableRemoteDebugging { get; set; } = false; + + /// + /// Port for remote debugging (Windows UWB only) + /// + public uint RemoteDebuggingPort { get; set; } = 9222; + + /// + /// Clear cache on initialization + /// + public bool ClearCacheOnInit { get; set; } = false; + + /// + /// Initial URL to load (use "about:blank" for blank page) + /// + public string InitialUrl { get; set; } = "about:blank"; + + /// + /// WebView width in pixels (0 = use RawImage width) + /// + public int Width { get; set; } = 1920; + + /// + /// WebView height in pixels (0 = use RawImage height) + /// + public int Height { get; set; } = 1080; + + /// + /// Custom User-Agent string (optional) + /// + public string UserAgent { get; set; } = ""; + + /// + /// Platform-specific configuration data + /// + public object PlatformSpecificConfig { get; set; } + } +} diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/IPassportWebView.cs.meta b/src/Packages/Passport/Runtime/Scripts/Private/UI/IPassportWebView.cs.meta new file mode 100644 index 00000000..637ac13d --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/IPassportWebView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aacda77949c949a45aa35fa6fb796334 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews.meta b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews.meta new file mode 100644 index 00000000..10c217fc --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d990766b2963fd843a7bf5ac205ef02d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/AndroidVuplexWebView.cs b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/AndroidVuplexWebView.cs new file mode 100644 index 00000000..15efe2ed --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/AndroidVuplexWebView.cs @@ -0,0 +1,204 @@ +#nullable enable +using System; +using System.Collections.Generic; +using Cysharp.Threading.Tasks; +using UnityEngine; +using UnityEngine.UI; +using Immutable.Passport.Core.Logging; + +#if UNITY_ANDROID && VUPLEX_WEBVIEW +using Vuplex.WebView; + +namespace Immutable.Passport +{ + /// + /// Android implementation of IPassportWebView using Vuplex WebView + /// Provides embedded WebView functionality within the Unity app + /// Consistent with iOS and macOS Vuplex implementations + /// + public class AndroidVuplexWebView : IPassportWebView + { + private const string TAG = "[AndroidVuplexWebView]"; + + private CanvasWebViewPrefab? _webViewPrefab; + private readonly Dictionary> _jsHandlers = new Dictionary>(); + private readonly RawImage _canvasReference; + private bool _isInitialized = false; + + public event Action? OnJavaScriptMessage; + public event Action? OnLoadFinished; + public event Action? OnLoadStarted; + + public bool IsVisible => _webViewPrefab?.Visible ?? false; + public string CurrentUrl => _webViewPrefab?.WebView?.Url ?? ""; + + public AndroidVuplexWebView(RawImage canvasReference) + { + _canvasReference = canvasReference ?? throw new ArgumentNullException(nameof(canvasReference)); + } + + public void Initialize(PassportWebViewConfig config) + { + if (_isInitialized) + { + PassportLogger.Warn($"{TAG} Already initialized, skipping"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Initializing Vuplex WebView..."); + + // Start async initialization but don't wait + InitializeAsync(config).Forget(); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize: {ex.Message}"); + throw; + } + } + + private async UniTaskVoid InitializeAsync(PassportWebViewConfig config) + { + try + { + // Create WebView prefab and parent to Canvas + _webViewPrefab = CanvasWebViewPrefab.Instantiate(); + _webViewPrefab.Native2DModeEnabled = true; + + // Must be child of Canvas for Vuplex to work + _webViewPrefab.transform.SetParent(_canvasReference.canvas.transform, false); + + // Set WebView size based on configuration + var rect = _webViewPrefab.GetComponent(); + + // Use configured dimensions or fallback to full-screen for Native 2D Mode + if (config.Width > 0 && config.Height > 0) + { + // Center the WebView with specific dimensions + rect.anchorMin = new Vector2(0.5f, 0.5f); + rect.anchorMax = new Vector2(0.5f, 0.5f); + rect.sizeDelta = new Vector2(config.Width, config.Height); + rect.anchoredPosition = Vector2.zero; + PassportLogger.Info($"{TAG} Using configured dimensions: {config.Width}x{config.Height}"); + } + else + { + // Full-screen fallback for Native 2D Mode + rect.anchorMin = Vector2.zero; + rect.anchorMax = Vector2.one; + rect.offsetMin = rect.offsetMax = Vector2.zero; + PassportLogger.Info($"{TAG} Using full-screen dimensions for Native 2D Mode"); + } + + // Wait for WebView initialization + await _webViewPrefab.WaitUntilInitialized(); + + // Setup event handlers + _webViewPrefab.WebView.LoadProgressChanged += (sender, progressArgs) => + { + if (progressArgs.Type == ProgressChangeType.Started) + { + OnLoadStarted?.Invoke(); + } + else if (progressArgs.Type == ProgressChangeType.Finished) + { + OnLoadFinished?.Invoke(); + } + }; + _webViewPrefab.WebView.MessageEmitted += (sender, messageArgs) => + { + try + { + // Parse the JSON message from window.vuplex.postMessage() + var message = JsonUtility.FromJson(messageArgs.Value); + + if (_jsHandlers.ContainsKey(message.method)) + { + _jsHandlers[message.method]?.Invoke(message.data); + return; + } + + PassportLogger.Warn($"{TAG} No handler registered for method: {message.method}"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to parse Vuplex message: {ex.Message}, Raw message: {messageArgs.Value}"); + // Fallback to raw message for backwards compatibility + OnJavaScriptMessage?.Invoke(messageArgs.Value); + } + }; + _webViewPrefab.WebView.LoadFailed += (sender, failedArgs) => PassportLogger.Warn($"{TAG} Load failed: {failedArgs.NativeErrorCode} for {failedArgs.Url}"); + + _isInitialized = true; + PassportLogger.Info($"{TAG} Vuplex WebView initialized successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize async: {ex.Message}"); + throw; + } + } + + public void LoadUrl(string url) + { + if (!_isInitialized || _webViewPrefab?.WebView == null) + { + PassportLogger.Error($"{TAG} Cannot load URL - WebView not initialized"); + return; + } + + _webViewPrefab.WebView.LoadUrl(url); + } + + public void Show() + { + if (_webViewPrefab != null) + { + _webViewPrefab.Visible = true; + } + } + + public void Hide() + { + if (_webViewPrefab != null) + { + _webViewPrefab.Visible = false; + } + } + + public void ExecuteJavaScript(string js) + { + if (!_isInitialized || _webViewPrefab?.WebView == null) + { + PassportLogger.Error($"{TAG} Cannot execute JavaScript - WebView not initialized"); + return; + } + + _webViewPrefab.WebView.ExecuteJavaScript(js); + } + + public void RegisterJavaScriptMethod(string methodName, Action handler) + { + _jsHandlers[methodName] = handler; + PassportLogger.Info($"{TAG} JavaScript method '{methodName}' registered for Vuplex message handling"); + + // Note: No JavaScript injection needed with Vuplex - web page should call: + // window.vuplex.postMessage({method: 'methodName', data: 'jsonData'}) + } + + public void Dispose() + { + if (_webViewPrefab != null) + { + _webViewPrefab.Destroy(); + _webViewPrefab = null; + } + + _jsHandlers.Clear(); + _isInitialized = false; + } + } +} +#endif diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/AndroidVuplexWebView.cs.meta b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/AndroidVuplexWebView.cs.meta new file mode 100644 index 00000000..f2b1d18c --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/AndroidVuplexWebView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee900f6b1f028034f8399f83385c3a44 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/MacOSPassportWebView.cs b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/MacOSPassportWebView.cs new file mode 100644 index 00000000..c710fd45 --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/MacOSPassportWebView.cs @@ -0,0 +1,279 @@ +#nullable enable +using System; +using System.Collections.Generic; +using Cysharp.Threading.Tasks; +using UnityEngine; +using UnityEngine.UI; +using Immutable.Passport.Core.Logging; + +#if (UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX) && VUPLEX_WEBVIEW +using Vuplex.WebView; + +namespace Immutable.Passport +{ + /// + /// MacOS implementation of IPassportWebView using Vuplex WebView + /// Provides embedded WebView functionality within the Unity app + /// Similar to iOS implementation but optimized for MacOS desktop environment + /// + public class MacOSPassportWebView : IPassportWebView + { + private const string TAG = "[MacOSPassportWebView]"; + + private CanvasWebViewPrefab? _webViewPrefab; + private readonly Dictionary> _jsHandlers = new Dictionary>(); + private readonly RawImage _canvasReference; + private bool _isInitialized = false; + private string? _queuedUrl = null; // Queue URL if LoadUrl called before initialization + + public event Action? OnJavaScriptMessage; + public event Action? OnLoadFinished; + public event Action? OnLoadStarted; + + public bool IsVisible => _webViewPrefab?.Visible ?? false; + public string CurrentUrl => _webViewPrefab?.WebView?.Url ?? ""; + + public MacOSPassportWebView(RawImage canvasReference) + { + _canvasReference = canvasReference ?? throw new ArgumentNullException(nameof(canvasReference)); + } + + public void Initialize(PassportWebViewConfig config) + { + if (_isInitialized) + { + PassportLogger.Warn($"{TAG} Already initialized, skipping"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Initializing MacOS WebView..."); + + // Start async initialization but don't wait + InitializeAsync(config).Forget(); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize: {ex.Message}"); + throw; + } + } + + private async UniTaskVoid InitializeAsync(PassportWebViewConfig config) + { + try + { + PassportLogger.Info($"{TAG} Starting Vuplex CanvasWebViewPrefab instantiation..."); + + // Apply aggressive performance optimizations for macOS + try + { + StandaloneWebView.SetCommandLineArguments( + "--disable-gpu " + + "--disable-gpu-compositing " + + "--disable-software-rasterizer " + + "--disable-background-timer-throttling " + + "--disable-renderer-backgrounding " + + "--disable-features=TranslateUI " + + "--no-sandbox" + ); + PassportLogger.Info($"{TAG} Applied comprehensive performance optimizations for macOS"); + } + catch (System.Exception ex) + { + PassportLogger.Warn($"{TAG} Could not apply performance optimizations: {ex.Message}"); + } + + // Create WebView prefab and parent to Canvas + _webViewPrefab = CanvasWebViewPrefab.Instantiate(); + PassportLogger.Info($"{TAG} CanvasWebViewPrefab created successfully"); + + // Enable Native2DMode and additional performance settings + _webViewPrefab.Native2DModeEnabled = true; // Direct native rendering - fastest on desktop + _webViewPrefab.Resolution = 0.5f; // Balanced resolution for desktop + + // Additional 2D mode optimizations + if (_webViewPrefab.Native2DModeEnabled) + { + PassportLogger.Info($"{TAG} Native2DMode confirmed enabled - using direct native rendering"); + // In Native2D mode, reduce pixel density for better performance + _webViewPrefab.PixelDensity = 1.0f; // Standard density, no high-DPI overhead + } + + // Must be child of Canvas for Vuplex to work + _webViewPrefab.transform.SetParent(_canvasReference.canvas.transform, false); + + // Set WebView size based on configuration + var rect = _webViewPrefab.GetComponent(); + rect.anchorMin = new Vector2(0.5f, 0.5f); // Center anchor + rect.anchorMax = new Vector2(0.5f, 0.5f); + + // Use configured dimensions or fallback to desktop-appropriate defaults (optimized for performance) + float width = config.Width > 0 ? config.Width : 600; + float height = config.Height > 0 ? config.Height : 650; + rect.sizeDelta = new Vector2(width, height); + rect.anchoredPosition = Vector2.zero; // Center position + + PassportLogger.Info($"{TAG} Using WebView dimensions: {width}x{height}"); + + // Wait for WebView initialization with timing + var startTime = System.DateTime.Now; + await _webViewPrefab.WaitUntilInitialized(); + var initTime = (System.DateTime.Now - startTime).TotalSeconds; + PassportLogger.Info($"{TAG} Vuplex WebView initialization completed in {initTime:F2}s"); + + // Pre-load the login page for instant display + try + { + if (!string.IsNullOrEmpty(config.InitialUrl) && config.InitialUrl != "about:blank") + { + _webViewPrefab.WebView.LoadUrl(config.InitialUrl); + PassportLogger.Info($"{TAG} Pre-loaded login page: {config.InitialUrl}"); + } + else + { + // Load minimal blank page if no URL provided (rare edge case) + _webViewPrefab.WebView.LoadHtml("Initializing..."); + PassportLogger.Info($"{TAG} Loaded minimal blank page (no InitialUrl provided)"); + } + } + catch (System.Exception ex) + { + PassportLogger.Warn($"{TAG} Could not pre-load content: {ex.Message}"); + } + + // Setup event handlers + _webViewPrefab.WebView.LoadProgressChanged += (sender, progressArgs) => + { + if (progressArgs.Type == ProgressChangeType.Started) + { + OnLoadStarted?.Invoke(); + } + else if (progressArgs.Type == ProgressChangeType.Finished) + { + OnLoadFinished?.Invoke(); + } + }; + _webViewPrefab.WebView.MessageEmitted += (sender, messageArgs) => + { + try + { + // Parse the JSON message from window.vuplex.postMessage() + var message = JsonUtility.FromJson(messageArgs.Value); + + if (_jsHandlers.ContainsKey(message.method)) + { + _jsHandlers[message.method]?.Invoke(message.data); + return; + } + + PassportLogger.Warn($"{TAG} No handler registered for method: {message.method}"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to parse Vuplex message: {ex.Message}, Raw message: {messageArgs.Value}"); + // Fallback to raw message for backwards compatibility + OnJavaScriptMessage?.Invoke(messageArgs.Value); + } + }; + _webViewPrefab.WebView.LoadFailed += (sender, failedArgs) => PassportLogger.Warn($"{TAG} Load failed: {failedArgs.NativeErrorCode} for {failedArgs.Url}"); + + _isInitialized = true; + PassportLogger.Info($"{TAG} MacOS WebView initialized successfully"); + + // Load queued URL if one was requested before initialization completed + if (!string.IsNullOrEmpty(_queuedUrl)) + { + PassportLogger.Info($"{TAG} Loading queued URL: {_queuedUrl}"); + var urlToLoad = _queuedUrl; + _queuedUrl = null; // Clear the queue + _webViewPrefab.WebView.LoadUrl(urlToLoad); + } + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize MacOS WebView: {ex.Message}"); + throw; + } + } + + public void LoadUrl(string url) + { + if (!_isInitialized || _webViewPrefab?.WebView == null) + { + PassportLogger.Info($"{TAG} WebView not ready, queueing URL: {url}"); + _queuedUrl = url; // Queue the URL for later loading + return; + } + + // Check if the requested URL is already loaded (performance optimization) + var currentUrl = _webViewPrefab.WebView.Url; + if (currentUrl == url) + { + PassportLogger.Info($"{TAG} URL already loaded, showing instantly: {url}"); + // No need to reload - just show the WebView if hidden + if (!_webViewPrefab.Visible) + { + _webViewPrefab.Visible = true; + } + return; + } + + PassportLogger.Info($"{TAG} Loading URL: {url}"); + _webViewPrefab.WebView.LoadUrl(url); + } + + public void Show() + { + if (_webViewPrefab != null) + { + _webViewPrefab.Visible = true; + PassportLogger.Info($"{TAG} WebView shown"); + } + } + + public void Hide() + { + if (_webViewPrefab != null) + { + _webViewPrefab.Visible = false; + PassportLogger.Info($"{TAG} WebView hidden"); + } + } + + public void ExecuteJavaScript(string js) + { + if (!_isInitialized || _webViewPrefab?.WebView == null) + { + PassportLogger.Error($"{TAG} Cannot execute JavaScript - MacOS WebView not initialized"); + return; + } + + _webViewPrefab.WebView.ExecuteJavaScript(js); + } + + public void RegisterJavaScriptMethod(string methodName, Action handler) + { + _jsHandlers[methodName] = handler; + PassportLogger.Info($"{TAG} JavaScript method '{methodName}' registered for Vuplex message handling"); + + // Note: No JavaScript injection needed with Vuplex - web page should call: + // window.vuplex.postMessage({method: 'methodName', data: 'jsonData'}) + } + + public void Dispose() + { + if (_webViewPrefab != null) + { + PassportLogger.Info($"{TAG} Disposing MacOS WebView"); + _webViewPrefab.Destroy(); + _webViewPrefab = null; + } + + _jsHandlers.Clear(); + _isInitialized = false; + } + } +} +#endif diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/MacOSPassportWebView.cs.meta b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/MacOSPassportWebView.cs.meta new file mode 100644 index 00000000..8781c0e6 --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/MacOSPassportWebView.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f8e4d9c2b1a5e7f3d6c8b4a9e2f7c1d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/WindowsPassportWebView.cs b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/WindowsPassportWebView.cs new file mode 100644 index 00000000..29f824e0 --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/WindowsPassportWebView.cs @@ -0,0 +1,843 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.IO; +using System.Net; +using System.Net.NetworkInformation; +using UnityEngine; +using UnityEngine.UI; +using Immutable.Passport.Core.Logging; +using Cysharp.Threading.Tasks; + +#if ENABLE_INPUT_SYSTEM +using UnityEngine.InputSystem; +#endif + +#if UNITY_EDITOR +using UnityEditor; +#endif + +#if UNITY_STANDALONE_WIN && !UNITY_EDITOR +using System.Runtime.InteropServices; +#endif + +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_EDITOR && UNITY_EDITOR_WIN)) +using VoltstroStudios.UnityWebBrowser; +using VoltstroStudios.UnityWebBrowser.Core; +using VoltstroStudios.UnityWebBrowser.Core.Engines; +using VoltstroStudios.UnityWebBrowser.Communication; +using VoltstroStudios.UnityWebBrowser.Shared; +using VoltstroStudios.UnityWebBrowser.Shared.Core; +using VoltstroStudios.UnityWebBrowser.Shared.Popups; +using VoltstroStudios.UnityWebBrowser.Input; +using static VoltstroStudios.UnityWebBrowser.Core.Engines.Engine; +using Resolution = VoltstroStudios.UnityWebBrowser.Shared.Resolution; +#endif + +namespace Immutable.Passport +{ +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_EDITOR && UNITY_EDITOR_WIN)) + /// + /// Windows implementation of IPassportWebView using Volt Unity Web Browser (UWB) + /// Wraps all UWB-specific functionality in a clean, platform-agnostic interface + /// + public class WindowsPassportWebView : IPassportWebView + { + private const string TAG = "[WindowsPassportWebView]"; + +#if UNITY_STANDALONE_WIN && !UNITY_EDITOR + // Windows API calls for window focus + [DllImport("user32.dll")] + private static extern System.IntPtr GetActiveWindow(); + + [DllImport("user32.dll")] + private static extern System.IntPtr GetForegroundWindow(); + + [DllImport("user32.dll")] + private static extern bool SetForegroundWindow(System.IntPtr hWnd); + + [DllImport("user32.dll")] + private static extern bool SetFocus(System.IntPtr hWnd); + + [DllImport("user32.dll")] + private static extern bool BringWindowToTop(System.IntPtr hWnd); + + [DllImport("user32.dll")] + private static extern System.IntPtr FindWindow(string lpClassName, string lpWindowName); +#endif + + // UWB Components + private GameObject uwbGameObject; + private WebBrowserUIFull webBrowserUI; + private WebBrowserClient webBrowserClient; + private RawImage targetRawImage; + private MonoBehaviour coroutineRunner; + + // State + private bool isInitialized = false; + private bool isVisible = false; + private bool isWebBrowserReady = false; + private string currentUrl = ""; + private string queuedUrl = null; + private PassportWebViewConfig config; + private bool needsResolutionUpdate = false; + + // Input management + private Coroutine inputActivationCoroutine; + + // Events + public event Action OnJavaScriptMessage; + public event Action OnLoadFinished; + public event Action OnLoadStarted; + + // Properties + public bool IsVisible => isVisible; + public string CurrentUrl => currentUrl; + + /// + /// Constructor for Windows PassportWebView + /// + /// RawImage component where the WebView will render + /// MonoBehaviour to run coroutines (usually PassportUI) + public WindowsPassportWebView(RawImage targetRawImage, MonoBehaviour coroutineRunner) + { + this.targetRawImage = targetRawImage ?? throw new ArgumentNullException(nameof(targetRawImage)); + this.coroutineRunner = coroutineRunner ?? throw new ArgumentNullException(nameof(coroutineRunner)); + + PassportLogger.Info($"{TAG} Windows WebView wrapper created"); + } + + public void Initialize(PassportWebViewConfig config) + { + if (isInitialized) + { + PassportLogger.Warn($"{TAG} Already initialized, skipping"); + return; + } + + this.config = config ?? new PassportWebViewConfig(); + + try + { + PassportLogger.Info($"{TAG} Initializing Windows WebView with UWB..."); + + CreateUWBInstance(); + ConfigureUWBSettings(); + SetupEventHandlers(); + + isInitialized = true; + PassportLogger.Info($"{TAG} Windows WebView initialized successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize: {ex.Message}"); + throw; + } + } + + public void LoadUrl(string url) + { + if (!isInitialized) + { + PassportLogger.Error($"{TAG} Cannot load URL - WebView not initialized"); + return; + } + + if (string.IsNullOrEmpty(url)) + { + PassportLogger.Error($"{TAG} Cannot load empty URL"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Loading URL: {url}"); + currentUrl = url; + + // Check if WebBrowser is ready + if (isWebBrowserReady) + { + // Navigate immediately + webBrowserClient.LoadUrl(url); + PassportLogger.Info($"{TAG} Navigated immediately (WebBrowser ready): {url}"); + } + else + { + // Queue for when WebBrowser becomes ready + queuedUrl = url; + PassportLogger.Info($"{TAG} Queued URL for when WebBrowser is ready: {url}"); + } + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to load URL: {ex.Message}"); + } + } + + public void Show() + { + if (!isInitialized) + { + PassportLogger.Error($"{TAG} Cannot show - WebView not initialized"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Showing WebView"); + + // Update UWB internal resolution to match PassportUI dimensions + if (webBrowserClient != null && webBrowserClient.IsConnected) + { + SetUWBResolution(config.Width, config.Height); + } + + // Show the UWB GameObject + if (uwbGameObject != null) + { + uwbGameObject.SetActive(true); + } + + // Enable the RawImage and set size to match WebView + if (targetRawImage != null) + { + targetRawImage.enabled = true; + var rectTransform = targetRawImage.GetComponent(); + if (rectTransform != null) + { + // Match the WebView dimensions that were configured + if (config.Width > 0 && config.Height > 0) + { + // Center the RawImage with specific dimensions to match WebView + rectTransform.anchorMin = new Vector2(0.5f, 0.5f); + rectTransform.anchorMax = new Vector2(0.5f, 0.5f); + rectTransform.sizeDelta = new Vector2(config.Width, config.Height); + rectTransform.anchoredPosition = Vector2.zero; + PassportLogger.Info($"{TAG} RawImage sized to match WebView: {config.Width}x{config.Height}"); + } + else + { + // Full-screen fallback to match WebView + rectTransform.anchorMin = Vector2.zero; + rectTransform.anchorMax = Vector2.one; + rectTransform.offsetMin = Vector2.zero; + rectTransform.offsetMax = Vector2.zero; + PassportLogger.Info($"{TAG} RawImage sized to full-screen to match WebView"); + } + } + } + + isVisible = true; + + // Start input preparation + coroutineRunner.StartCoroutine(PrepareInputAfterShow()); + + PassportLogger.Info($"{TAG} WebView shown successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to show WebView: {ex.Message}"); + } + } + + public void Hide() + { + if (!isInitialized) + { + PassportLogger.Warn($"{TAG} Cannot hide - WebView not initialized"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Hiding WebView"); + + // Stop input coroutine if running + if (inputActivationCoroutine != null) + { + coroutineRunner.StopCoroutine(inputActivationCoroutine); + inputActivationCoroutine = null; + } + + // Hide the UWB GameObject + if (uwbGameObject != null) + { + uwbGameObject.SetActive(false); + } + + // Hide the RawImage and set size to zero + if (targetRawImage != null) + { + targetRawImage.enabled = false; + var rectTransform = targetRawImage.GetComponent(); + if (rectTransform != null) + { + rectTransform.sizeDelta = Vector2.zero; + } + } + + isVisible = false; + + PassportLogger.Info($"{TAG} WebView hidden successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to hide WebView: {ex.Message}"); + } + } + + public void ExecuteJavaScript(string js) + { + if (!isInitialized || webBrowserClient == null) + { + PassportLogger.Error($"{TAG} Cannot execute JavaScript - WebView not ready"); + return; + } + + try + { + PassportLogger.Debug($"{TAG} Executing JavaScript: {js}"); + webBrowserClient.ExecuteJs(js); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to execute JavaScript: {ex.Message}"); + } + } + + public void RegisterJavaScriptMethod(string methodName, Action handler) + { + if (!isInitialized || webBrowserClient == null) + { + PassportLogger.Error($"{TAG} Cannot register JS method - WebView not ready"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Registering JavaScript method: {methodName}"); + + // Enable JS methods if not already enabled + if (!webBrowserClient.jsMethodManager.jsMethodsEnable) + { + webBrowserClient.jsMethodManager.jsMethodsEnable = true; + PassportLogger.Info($"{TAG} JavaScript methods enabled"); + } + + // Register the method + webBrowserClient.RegisterJsMethod(methodName, handler); + PassportLogger.Info($"{TAG} JavaScript method '{methodName}' registered successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to register JavaScript method '{methodName}': {ex.Message}"); + } + } + + /// + /// Check and apply any pending resolution updates (call from main thread) + /// + public void UpdatePendingResolution() + { + if (needsResolutionUpdate && isWebBrowserReady && webBrowserClient != null) + { + needsResolutionUpdate = false; + SetUWBResolution(config.Width, config.Height); + } + } + + /// + /// Update the UWB internal resolution to match new dimensions + /// + /// New width in pixels + /// New height in pixels + public void UpdateUWBResolution(int width, int height) + { + if (!isInitialized || webBrowserClient == null || !webBrowserClient.IsConnected) + { + return; // Silently ignore if not ready + } + + SetUWBResolution(width, height); + } + + /// + /// Internal method to set UWB resolution with validation and logging + /// + private void SetUWBResolution(int width, int height) + { + if (width <= 0 || height <= 0) return; + + try + { + var newResolution = new Resolution((uint)width, (uint)height); + webBrowserClient.Resolution = newResolution; + PassportLogger.Info($"{TAG} UWB resolution set to: {width}x{height}"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to set UWB resolution: {ex.Message}"); + } + } + + public void Dispose() + { + try + { + PassportLogger.Info($"{TAG} Disposing Windows WebView"); + + // Stop any running coroutines + if (inputActivationCoroutine != null) + { + coroutineRunner.StopCoroutine(inputActivationCoroutine); + inputActivationCoroutine = null; + } + + // Unsubscribe from events + if (webBrowserClient != null) + { + webBrowserClient.OnLoadFinish -= OnLoadFinishHandler; + webBrowserClient.OnLoadStart -= OnLoadStartHandler; + webBrowserClient.OnClientConnected -= OnClientConnectedHandler; + } + + // Destroy UWB GameObject + if (uwbGameObject != null) + { + UnityEngine.Object.DestroyImmediate(uwbGameObject); + uwbGameObject = null; + } + + // Clear references + webBrowserClient = null; + webBrowserUI = null; + targetRawImage = null; + coroutineRunner = null; + + isInitialized = false; + isVisible = false; + isWebBrowserReady = false; + queuedUrl = null; + + PassportLogger.Info($"{TAG} Windows WebView disposed successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Error during disposal: {ex.Message}"); + } + } + + #region Private Implementation + + private void CreateUWBInstance() + { + PassportLogger.Info($"{TAG} Creating UWB instance..."); + + // Check if WebView already exists (prevent double creation) + if (uwbGameObject != null) + { + PassportLogger.Warn($"{TAG} UWB GameObject already exists! Destroying previous instance."); + UnityEngine.Object.DestroyImmediate(uwbGameObject); + uwbGameObject = null; + } + + // Find or create Canvas + Canvas canvas = FindOrCreateCanvas(); + + // Create UWB GameObject as child of Canvas with unique name + uwbGameObject = new GameObject("PassportUI_WebView"); + uwbGameObject.transform.SetParent(canvas.transform, false); + + // IMPORTANT: Start hidden + uwbGameObject.SetActive(false); + + // Add RectTransform for UI positioning + RectTransform rectTransform = uwbGameObject.AddComponent(); + + // Use configured dimensions or fallback to full-screen + if (config.Width > 0 && config.Height > 0) + { + // Center the WebView with specific dimensions + rectTransform.anchorMin = new Vector2(0.5f, 0.5f); + rectTransform.anchorMax = new Vector2(0.5f, 0.5f); + rectTransform.sizeDelta = new Vector2(config.Width, config.Height); + rectTransform.anchoredPosition = Vector2.zero; + PassportLogger.Info($"{TAG} Using configured dimensions: {config.Width}x{config.Height}"); + } + else + { + // Full-screen fallback + rectTransform.anchorMin = Vector2.zero; + rectTransform.anchorMax = Vector2.one; + rectTransform.offsetMin = Vector2.zero; + rectTransform.offsetMax = Vector2.zero; + PassportLogger.Info($"{TAG} Using full-screen dimensions"); + } + + // Add WebBrowserUIFull component + webBrowserUI = uwbGameObject.AddComponent(); + + // Configure input handling + ConfigureInputHandler(); + + // Get the browser client + webBrowserClient = webBrowserUI.browserClient; + + PassportLogger.Info($"{TAG} UWB instance created successfully"); + } + + private void ConfigureUWBSettings() + { + PassportLogger.Info($"{TAG} Configuring UWB settings..."); + + // Set UWB resolution before starting (direct field access to avoid Resize() call) + if (config.Width > 0 && config.Height > 0) + { + try + { + // Use reflection to set the private resolution field directly + var resolutionField = typeof(VoltstroStudios.UnityWebBrowser.Core.WebBrowserClient).GetField("resolution", + System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + if (resolutionField != null) + { + var initialResolution = new Resolution((uint)config.Width, (uint)config.Height); + resolutionField.SetValue(webBrowserClient, initialResolution); + PassportLogger.Info($"{TAG} Set initial UWB resolution field to: {config.Width}x{config.Height}"); + } + else + { + PassportLogger.Warn($"{TAG} Could not find UWB resolution field for direct setting"); + } + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to set initial UWB resolution field: {ex.Message}"); + } + } + + // Configure for UI display (not headless) + webBrowserClient.headless = false; + webBrowserClient.popupAction = PopupAction.OpenExternalWindow; + + // Set initial URL (use about:blank for fast startup, pre-load login page separately) + if (!string.IsNullOrEmpty(config.InitialUrl) && config.InitialUrl != "about:blank") + { + // Store login URL for pre-loading after initialization + queuedUrl = config.InitialUrl; + webBrowserClient.initialUrl = "about:blank"; // Fast startup + PassportLogger.Info($"{TAG} Queued login URL for pre-loading: {config.InitialUrl}"); + } + else + { + webBrowserClient.initialUrl = config.InitialUrl; + PassportLogger.Info($"{TAG} Set initial URL to: {config.InitialUrl}"); + } + + // Configure isolated instance + ConfigureIsolatedInstance(); + + PassportLogger.Info($"{TAG} UWB settings configured successfully"); + } + + private void ConfigureIsolatedInstance() + { + PassportLogger.Info($"{TAG} Configuring isolated UWB instance..."); + + // CRITICAL: Use completely different ports from SDK's bridge instance + var tcpLayer = ScriptableObject.CreateInstance(); + + // Use fixed, well-separated ports for UI WebView to avoid conflicts + int basePort = 7777; // Well above default 5555/5556 + int attempts = 0; + + do + { + tcpLayer.inPort = basePort + (attempts * 2); // 7777, 7779, 7781... + tcpLayer.outPort = tcpLayer.inPort + 1; // 7778, 7780, 7782... + attempts++; + if (attempts > 50) break; // Try up to port 7877 + } while (!IsPortAvailable(tcpLayer.inPort) || !IsPortAvailable(tcpLayer.outPort)); + + webBrowserClient.communicationLayer = tcpLayer; + PassportLogger.Info($"{TAG} Using isolated ports: {tcpLayer.inPort}/{tcpLayer.outPort}"); + + // Configure engine + ConfigureEngine(); + + // Configure cache path (isolated from SDK) + if (config.ClearCacheOnInit) + { + ClearWebViewCache(); + } + + var cacheDir = Path.Combine(Application.persistentDataPath, "PassportUI_UWBCache"); + webBrowserClient.CachePath = new FileInfo(cacheDir); + PassportLogger.Info($"{TAG} Using isolated cache: {cacheDir}"); + + // Configure remote debugging if enabled + if (config.EnableRemoteDebugging) + { + webBrowserClient.remoteDebugging = true; + webBrowserClient.remoteDebuggingPort = config.RemoteDebuggingPort; + PassportLogger.Info($"{TAG} Remote debugging enabled on port {config.RemoteDebuggingPort}"); + } + + PassportLogger.Info($"{TAG} Isolated instance configured successfully"); + } + + private void ConfigureEngine() + { + var engineConfig = ScriptableObject.CreateInstance(); + engineConfig.engineAppName = "UnityWebBrowser.Engine.Cef"; + + List engineFiles = new List + { + new EnginePlatformFiles + { + platform = Platform.Windows64, + engineBaseAppLocation = "", + engineRuntimeLocation = "UWB/" +#if UNITY_EDITOR + , + engineEditorLocation = "Packages/com.immutable.passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.win.x64@2.2.5-130.1.16/Engine~" +#endif + } + }; + + engineConfig.engineFiles = engineFiles.ToArray(); + webBrowserClient.engine = engineConfig; + } + + private void ConfigureInputHandler() + { + try + { +#if ENABLE_INPUT_SYSTEM + // Use UWB's built-in Input System handler + PassportLogger.Info($"{TAG} Using UWB Input System handler"); + var inputSystemHandler = ScriptableObject.CreateInstance(); + + // Configure Input Actions for the handler + // Set up scroll input action + inputSystemHandler.scrollInput = new InputAction("Scroll", InputActionType.Value, "/scroll"); + inputSystemHandler.scrollInput.Enable(); + + // Set up pointer position input action + inputSystemHandler.pointPosition = new InputAction("PointerPosition", InputActionType.Value, "/position"); + inputSystemHandler.pointPosition.Enable(); + + webBrowserUI.inputHandler = inputSystemHandler; + PassportLogger.Info($"{TAG} Input System handler configured with mouse actions"); +#else + // Load the BrowserInput asset from SDK Resources (legacy input) + var inputHandler = Resources.Load("BrowserInput"); + if (inputHandler != null) + { + webBrowserUI.inputHandler = inputHandler; + PassportLogger.Info($"{TAG} Loaded BrowserInput.asset from SDK Resources"); + } + else + { + PassportLogger.Warn($"{TAG} BrowserInput.asset not found in Resources, creating fallback"); + var fallbackHandler = ScriptableObject.CreateInstance(); + webBrowserUI.inputHandler = fallbackHandler; + } +#endif + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to configure input handler: {ex.Message}"); + } + } + + private void SetupEventHandlers() + { + if (webBrowserClient != null) + { + webBrowserClient.OnLoadFinish += OnLoadFinishHandler; + webBrowserClient.OnLoadStart += OnLoadStartHandler; + webBrowserClient.OnClientConnected += OnClientConnectedHandler; + PassportLogger.Info($"{TAG} Event handlers configured"); + } + } + + private void OnLoadFinishHandler(string url) + { + PassportLogger.Info($"{TAG} Load finished: {url}"); + currentUrl = url; + OnLoadFinished?.Invoke(); + } + + private void OnLoadStartHandler(string url) + { + PassportLogger.Info($"{TAG} Load started: {url}"); + currentUrl = url; + OnLoadStarted?.Invoke(); + } + + private void OnClientConnectedHandler() + { + PassportLogger.Info($"{TAG} WebBrowser client connected and ready!"); + isWebBrowserReady = true; + + // Set flag to update resolution on main thread + if (config.Width > 0 && config.Height > 0) + { + needsResolutionUpdate = true; + } + + // Process any queued URL + if (!string.IsNullOrEmpty(queuedUrl)) + { + PassportLogger.Info($"{TAG} Processing queued URL: {queuedUrl}"); + string urlToLoad = queuedUrl; + queuedUrl = null; + + // Load the queued URL now that we're ready + webBrowserClient.LoadUrl(urlToLoad); + PassportLogger.Info($"{TAG} Navigated to queued URL: {urlToLoad}"); + } + } + + private Canvas FindOrCreateCanvas() + { + // Try to find existing Canvas + Canvas canvas = UnityEngine.Object.FindObjectOfType(); + if (canvas != null) + { + PassportLogger.Info($"{TAG} Using existing Canvas: {canvas.name}"); + return canvas; + } + + // Create new Canvas if none exists + GameObject canvasGO = new GameObject("PassportUI_Canvas"); + canvas = canvasGO.AddComponent(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + canvas.sortingOrder = 1000; // High sorting order to appear on top + + // Add CanvasScaler for responsive UI + var scaler = canvasGO.AddComponent(); + scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; + scaler.referenceResolution = new Vector2(1920, 1080); + + // Add GraphicRaycaster for UI interaction + canvasGO.AddComponent(); + + PassportLogger.Info($"{TAG} Created new Canvas: {canvas.name}"); + return canvas; + } + + private IEnumerator PrepareInputAfterShow() + { + PassportLogger.Info($"{TAG} Preparing input after show..."); + + // Wait a frame for UI to settle + yield return null; + + // Focus handling for editor +#if UNITY_EDITOR + if (uwbGameObject != null) + { + UnityEditor.Selection.activeGameObject = uwbGameObject; + PassportLogger.Info($"{TAG} WebView GameObject selected for input focus (Editor)"); + } +#endif + + // Focus handling for builds + TryForceWindowFocus(); + + // Additional input activation attempts + for (int i = 0; i < 3; i++) + { + yield return new WaitForSeconds(0.5f); + TryActivateInput(); + } + + PassportLogger.Info($"{TAG} Input preparation completed"); + } + + private void TryForceWindowFocus() + { +#if UNITY_STANDALONE_WIN && !UNITY_EDITOR + try + { + var currentWindow = GetForegroundWindow(); + if (currentWindow != System.IntPtr.Zero) + { + SetForegroundWindow(currentWindow); + SetFocus(currentWindow); + BringWindowToTop(currentWindow); + PassportLogger.Info($"{TAG} Window focus applied (Windows)"); + } + } + catch (Exception ex) + { + PassportLogger.Warn($"{TAG} Windows focus call failed: {ex.Message}"); + } +#endif + } + + private void TryActivateInput() + { + try + { + // Focus the WebView GameObject + if (uwbGameObject != null && uwbGameObject.activeInHierarchy) + { +#if UNITY_EDITOR + UnityEditor.Selection.activeGameObject = uwbGameObject; +#endif + PassportLogger.Debug($"{TAG} Input activation attempted"); + } + } + catch (Exception ex) + { + PassportLogger.Warn($"{TAG} Input activation failed: {ex.Message}"); + } + } + + private void ClearWebViewCache() + { + try + { + var cacheDir = Path.Combine(Application.persistentDataPath, "PassportUI_UWBCache"); + if (Directory.Exists(cacheDir)) + { + Directory.Delete(cacheDir, true); + PassportLogger.Info($"{TAG} WebView cache cleared: {cacheDir}"); + } + } + catch (Exception ex) + { + PassportLogger.Warn($"{TAG} Failed to clear cache: {ex.Message}"); + } + } + + private bool IsPortAvailable(int port) + { + try + { + IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); + TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections(); + + foreach (TcpConnectionInformation tcpi in tcpConnInfoArray) + { + if (tcpi.LocalEndPoint.Port == port) + { + return false; + } + } + + return true; + } + catch + { + return false; + } + } + + #endregion + } +#endif +} diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/WindowsPassportWebView.cs.meta b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/WindowsPassportWebView.cs.meta new file mode 100644 index 00000000..54982f33 --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/WindowsPassportWebView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: adceafe5674e623438175e397e10a2d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/iOSPassportWebView.cs b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/iOSPassportWebView.cs new file mode 100644 index 00000000..70869b34 --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/iOSPassportWebView.cs @@ -0,0 +1,198 @@ +#nullable enable +using System; +using System.Collections.Generic; +using Cysharp.Threading.Tasks; +using UnityEngine; +using UnityEngine.UI; +using Immutable.Passport.Core.Logging; + +#if UNITY_IOS && VUPLEX_WEBVIEW +using Vuplex.WebView; + +namespace Immutable.Passport +{ + /// + /// iOS implementation of IPassportWebView using Vuplex WebView + /// Provides embedded WebView functionality within the Unity app + /// Consistent with Android and macOS Vuplex implementations + /// + public class iOSPassportWebView : IPassportWebView + { + private const string TAG = "[iOSPassportWebView]"; + + private CanvasWebViewPrefab? _webViewPrefab; + private readonly Dictionary> _jsHandlers = new Dictionary>(); + private readonly RawImage _canvasReference; + private bool _isInitialized = false; + + public event Action? OnJavaScriptMessage; + public event Action? OnLoadFinished; + public event Action? OnLoadStarted; + + public bool IsVisible => _webViewPrefab?.Visible ?? false; + public string CurrentUrl => _webViewPrefab?.WebView?.Url ?? ""; + + public iOSPassportWebView(RawImage canvasReference) + { + _canvasReference = canvasReference ?? throw new ArgumentNullException(nameof(canvasReference)); + } + + public void Initialize(PassportWebViewConfig config) + { + if (_isInitialized) + { + PassportLogger.Warn($"{TAG} Already initialized, skipping"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Initializing iOS WebView..."); + + // Start async initialization but don't wait + InitializeAsync(config).Forget(); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize: {ex.Message}"); + throw; + } + } + + private async UniTaskVoid InitializeAsync(PassportWebViewConfig config) + { + try + { + // Create WebView prefab and parent to Canvas + _webViewPrefab = CanvasWebViewPrefab.Instantiate(); + _webViewPrefab.Native2DModeEnabled = false; // Disable Native2DMode to avoid Unity integration issues + + // Set higher resolution for better content scaling on mobile + _webViewPrefab.Resolution = 0.5f; // increase to scale down content, decrease to scale up content + + // Must be child of Canvas for Vuplex to work + _webViewPrefab.transform.SetParent(_canvasReference.canvas.transform, false); + + // Set WebView size based on configuration + var rect = _webViewPrefab.GetComponent(); + rect.anchorMin = new Vector2(0.5f, 0.5f); // Center anchor + rect.anchorMax = new Vector2(0.5f, 0.5f); + + // Use configured dimensions or fallback to mobile-optimized defaults + float width = config.Width > 0 ? config.Width : 1000; + float height = config.Height > 0 ? config.Height : 1200; + rect.sizeDelta = new Vector2(width, height); + rect.anchoredPosition = Vector2.zero; // Center position + + PassportLogger.Info($"{TAG} Using WebView dimensions: {width}x{height}"); + + // Wait for WebView initialization + await _webViewPrefab.WaitUntilInitialized(); + + // Setup event handlers + _webViewPrefab.WebView.LoadProgressChanged += (sender, progressArgs) => + { + if (progressArgs.Type == ProgressChangeType.Started) + { + OnLoadStarted?.Invoke(); + } + else if (progressArgs.Type == ProgressChangeType.Finished) + { + OnLoadFinished?.Invoke(); + } + }; + _webViewPrefab.WebView.MessageEmitted += (sender, messageArgs) => + { + try + { + // Parse the JSON message from window.vuplex.postMessage() + var message = JsonUtility.FromJson(messageArgs.Value); + + if (_jsHandlers.ContainsKey(message.method)) + { + _jsHandlers[message.method]?.Invoke(message.data); + return; + } + + PassportLogger.Warn($"{TAG} No handler registered for method: {message.method}"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to parse Vuplex message: {ex.Message}, Raw message: {messageArgs.Value}"); + // Fallback to raw message for backwards compatibility + OnJavaScriptMessage?.Invoke(messageArgs.Value); + } + }; + _webViewPrefab.WebView.LoadFailed += (sender, failedArgs) => PassportLogger.Warn($"{TAG} Load failed: {failedArgs.NativeErrorCode} for {failedArgs.Url}"); + + _isInitialized = true; + PassportLogger.Info($"{TAG} iOS WebView initialized successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize iOS WebView: {ex.Message}"); + throw; + } + } + + public void LoadUrl(string url) + { + if (!_isInitialized || _webViewPrefab?.WebView == null) + { + PassportLogger.Error($"{TAG} Cannot load URL - iOS WebView not initialized"); + return; + } + + _webViewPrefab.WebView.LoadUrl(url); + } + + public void Show() + { + if (_webViewPrefab != null) + { + _webViewPrefab.Visible = true; + } + } + + public void Hide() + { + if (_webViewPrefab != null) + { + _webViewPrefab.Visible = false; + } + } + + public void ExecuteJavaScript(string js) + { + if (!_isInitialized || _webViewPrefab?.WebView == null) + { + PassportLogger.Error($"{TAG} Cannot execute JavaScript - iOS WebView not initialized"); + return; + } + + _webViewPrefab.WebView.ExecuteJavaScript(js); + } + + public void RegisterJavaScriptMethod(string methodName, Action handler) + { + _jsHandlers[methodName] = handler; + PassportLogger.Info($"{TAG} JavaScript method '{methodName}' registered for Vuplex message handling"); + + // Note: No JavaScript injection needed with Vuplex - web page should call: + // window.vuplex.postMessage({method: 'methodName', data: 'jsonData'}) + } + + public void Dispose() + { + if (_webViewPrefab != null) + { + _webViewPrefab.Destroy(); + _webViewPrefab = null; + } + + _jsHandlers.Clear(); + _isInitialized = false; + } + } +} +#endif diff --git a/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/iOSPassportWebView.cs.meta b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/iOSPassportWebView.cs.meta new file mode 100644 index 00000000..37c5a7bf --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Private/UI/WebViews/iOSPassportWebView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40556bd2822651041b083fe251fc73e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/Scripts/Public/Passport.cs b/src/Packages/Passport/Runtime/Scripts/Public/Passport.cs index 8dff3afa..f028b114 100644 --- a/src/Packages/Passport/Runtime/Scripts/Public/Passport.cs +++ b/src/Packages/Passport/Runtime/Scripts/Public/Passport.cs @@ -237,6 +237,7 @@ private async UniTask Initialise( #elif (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX || UNITY_WEBGL // Initialise default browser client for Android, iOS, and macOS _webBrowserClient = new GreeBrowserClient(); + await UniTask.CompletedTask; #else throw new PassportException("Platform not supported"); #endif diff --git a/src/Packages/Passport/Runtime/Scripts/Public/PassportUI.cs b/src/Packages/Passport/Runtime/Scripts/Public/PassportUI.cs new file mode 100644 index 00000000..64298b12 --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Public/PassportUI.cs @@ -0,0 +1,830 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.Events; +using Immutable.Passport.Core.Logging; +using System; +using System.IO; +using System.Collections; +using Cysharp.Threading.Tasks; +using System.Reflection; +using Immutable.Passport.Helpers; +using Immutable.Passport.Model; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Immutable.Passport +{ + /// + /// Data structure for login information received from JavaScript + /// Matches the TypeScript LoginData interface from the web page + /// + [System.Serializable] + public class LoginData + { + public string directLoginMethod; + public string email; + public string marketingConsentStatus; + + public override string ToString() + { + return $"LoginData(directLoginMethod: {directLoginMethod}, email: {email}, marketingConsentStatus: {marketingConsentStatus})"; + } + } + + /// + /// Cross-platform WebView UI component for Passport authentication. + /// Automatically selects the appropriate WebView implementation based on the target platform: + /// - Windows: Unity Web Browser (UWB) with Chromium CEF + /// - iOS/Android: Vuplex WebView with embedded browser + /// - macOS: Vuplex WebView with embedded browser + /// + /// INITIALIZATION OPTIONS: + /// 1. Simple: Call InitializeWithPassport() - PassportUI handles both Passport.Init() and UI setup + /// 2. Hybrid: Call InitializeWithPassport(passport) - Use existing Passport instance with UI + /// 3. Traditional: Call Passport.Init() yourself, then call Init(passport) - for advanced control + /// + /// SETUP: When configuring the PassportUI prefab in the editor: + /// - Set RawImage component's width and height to 0 in the RectTransform + /// - This ensures the UI is completely hidden before initialization + /// + /// NOTE: In the Unity Editor, the WebView GameObject must be selected for input to work. + /// This is handled automatically when the WebView is shown. + /// + [RequireComponent(typeof(RawImage))] + public class PassportUI : MonoBehaviour + { + private const string TAG = "[PassportUI]"; + + // Static events for automatic cross-scene behavior + /// + /// Static event triggered when any PassportUI instance successfully completes login + /// + public static event Action OnLoginSuccessStatic; + + /// + /// Static event triggered when any PassportUI instance fails login + /// + public static event Action OnLoginFailureStatic; + + [Header("UI Settings")] + public Button loginButton; + + [Header("Login Events")] + [Tooltip("Unity Event triggered when login succeeds")] + public UnityEvent OnLoginSuccess; + + [Tooltip("Unity Event triggered when login fails (with error message)")] + public UnityEvent OnLoginFailure; + + [Header("Debug Settings (Windows WebView Only)")] + [Tooltip("Enable remote debugging for the Windows WebView (Volt Unity Web Browser). Not used on other platforms.")] + public bool enableRemoteDebugging = false; + [Tooltip("Port for remote debugging on Windows WebView (Volt Unity Web Browser). Not used on other platforms.")] + public uint remoteDebuggingPort = 9222; + + [Header("Cache Settings (Windows WebView Only)")] + [Tooltip("Clear WebView cache on login for Windows WebView (Volt Unity Web Browser). Not used on other platforms.")] + public bool clearCacheOnLogin = true; + + [Header("Passport Configuration")] + [Tooltip("Passport client ID from the Immutable Developer Hub")] + [SerializeField] private string clientId = ""; + + [Tooltip("Passport environment (sandbox or production)")] + [SerializeField] private string environment = "sandbox"; + + [Tooltip("Redirect URI for authentication callbacks (configure in the Immutable Developer Hub)")] + [SerializeField] private string redirectUri = ""; + + [Tooltip("OAuth logout redirect URI for logout callbacks (configure in the Immutable Developer Hub)")] + [SerializeField] private string logoutRedirectUri = ""; + + [Header("WebView Settings")] + // Internal base URL for Passport authentication - users don't need to modify this + private const string webViewBaseUrl = "https://auth.immutable.com/im-embedded-login-prompt"; + + [Tooltip("Width of the WebView in pixels. Set to 0 to use the RawImage's current width.")] + [SerializeField] private int webViewWidth = 800; + + [Tooltip("Height of the WebView in pixels. Set to 0 to use the RawImage's current height.")] + [SerializeField] private int webViewHeight = 600; + + /// + /// Gets the complete WebView URL with the client ID automatically appended + /// + public string WebViewUrl + { + get + { + if (string.IsNullOrEmpty(clientId)) + { + return webViewBaseUrl; + } + return $"{webViewBaseUrl}?isWebView=true&client_id={clientId}"; + } + } + + /// + /// Gets the base WebView URL (without client_id parameter) - read-only + /// + public string WebViewBaseUrl => webViewBaseUrl; + + /// + /// Gets or sets the WebView width in pixels + /// + public int WebViewWidth + { + get => webViewWidth; + set + { + if (webViewWidth != value) + { + webViewWidth = value; + UpdateWebViewResolution(); + } + } + } + + /// + /// Gets or sets the WebView height in pixels + /// + public int WebViewHeight + { + get => webViewHeight; + set + { + if (webViewHeight != value) + { + webViewHeight = value; + UpdateWebViewResolution(); + } + } + } + + // Cross-platform WebView abstraction + private IPassportWebView webView; + + private Passport _passportInstance; + private RawImage rawImage; + // Login completion source removed - OAuth handled by external browser + private bool isInitialized = false; + private GameObject bridgeWebViewGameObject; + + // Input management + // Note: Input coroutine removed - games should manage cursor state themselves + + /// + /// Auto-initialize PassportUI when the component starts if clientId is configured. + /// This enables "drag and drop" functionality - just configure the Inspector fields and it works. + /// + private async void Start() + { + if (!isInitialized && !string.IsNullOrEmpty(clientId)) + { + try + { + PassportLogger.Info($"{TAG} Auto-initializing PassportUI from Start()..."); + if (Passport.Instance != null) + { + PassportLogger.Info($"{TAG} Auto-initialization: Passport already exists, setting up UI only"); + await InitializeWithPassport(Passport.Instance); + } + else + { + PassportLogger.Info($"{TAG} Auto-initialization: Creating new Passport instance"); + await InitializeWithPassport(); + } + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Auto-initialization failed: {ex.Message}"); + } + } + else if (string.IsNullOrEmpty(clientId)) + { + PassportLogger.Warn($"{TAG} Auto-initialization skipped - Client ID not configured in Inspector"); + } + else if (isInitialized) + { + PassportLogger.Info($"{TAG} Auto-initialization skipped - Already initialized"); + } + } + + /// + /// Initialize Passport and PassportUI in one call using the configured settings. + /// This is the simple initialization method that handles both Passport.Init() and UI setup. + /// Uses the serialized fields (clientId, environment, redirectUri, logoutRedirectUri) from the Unity Inspector. + /// + /// UniTask that completes when initialization is finished + public async UniTask InitializeWithPassport() + { + if (isInitialized) + { + PassportLogger.Warn($"{TAG} PassportUI is already initialized, skipping InitializeWithPassport()"); + return; + } + + // Validate configuration + if (string.IsNullOrEmpty(clientId)) + { + PassportLogger.Error($"{TAG} Client ID is required but not set in the Inspector"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Initializing Passport with client ID: {clientId}"); + + // Initialize Passport using the configured settings + var passport = await Passport.Init(clientId, environment, redirectUri, logoutRedirectUri); + + // Initialize the UI with the created Passport instance + Init(passport); + + PassportLogger.Info($"{TAG} Passport and PassportUI initialized successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize Passport: {ex.Message}"); + throw; + } + } + + /// + /// Initialize PassportUI with an existing Passport instance in one call. + /// Use this method when you already have a Passport instance from elsewhere in your code + /// and just want to set up the UI component. + /// + /// The existing initialized Passport instance + /// UniTask that completes when UI initialization is finished + public async UniTask InitializeWithPassport(Passport passportInstance) + { + if (isInitialized) + { + PassportLogger.Warn($"{TAG} PassportUI is already initialized, skipping InitializeWithPassport(passport)"); + return; + } + + if (passportInstance == null) + { + PassportLogger.Error($"{TAG} Passport instance cannot be null"); + return; + } + + try + { + PassportLogger.Info($"{TAG} Initializing PassportUI with existing Passport instance"); + + // Initialize the UI with the provided Passport instance + Init(passportInstance); + + // Wait a frame to ensure initialization is complete + await UniTask.Yield(); + + PassportLogger.Info($"{TAG} PassportUI initialized successfully with existing Passport instance"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize PassportUI with existing Passport: {ex.Message}"); + throw; + } + } + + /// + /// Initialize PassportUI with an existing Passport instance. + /// Use this method if you want to control Passport.Init() yourself. + /// Following the working WebViewTest pattern. + /// + /// The initialized Passport instance + public void Init(Passport passportInstance) + { + if (isInitialized) + { + PassportLogger.Warn($"{TAG} PassportUI is already initialized, skipping Init(passport)"); + return; + } + + if (passportInstance == null) + { + PassportLogger.Error($"{TAG} Passport instance cannot be null"); + return; + } + + _passportInstance = passportInstance; + PassportLogger.Info($"{TAG} Initializing PassportUI with working WebViewTest pattern..."); + + // Get RawImage component + rawImage = GetComponent(); + + // Set transparent background so unused areas don't show white + rawImage.color = Color.clear; + + // Ensure UI starts completely hidden + rawImage.enabled = false; + + // Also set size to zero as additional safeguard + var rectTransform = rawImage.GetComponent(); + if (rectTransform != null) + { + rectTransform.sizeDelta = Vector2.zero; + PassportLogger.Info($"{TAG} RawImage size set to zero for startup hiding"); + } + + if (rawImage == null) + { + PassportLogger.Error($"{TAG} RawImage component not found!"); + return; + } + + // Create cross-platform WebView + CreateWebView(); + + // Set up login button + SetupLoginButton(); + + // Hide initially + HideLoginUI(logMessage: false); + + isInitialized = true; + PassportLogger.Info($"{TAG} PassportUI initialized successfully"); + } + + /// + /// Create cross-platform WebView using the appropriate implementation for the current platform + /// + private void CreateWebView() + { + try + { + PassportLogger.Info($"{TAG} Creating cross-platform WebView..."); + + // Dispose existing WebView if any + if (webView != null) + { + PassportLogger.Warn($"{TAG} WebView already exists! Disposing previous instance."); + webView.Dispose(); + webView = null; + } + + // Create platform-specific WebView + webView = CreatePlatformWebView(); + if (webView == null) + { + throw new NotSupportedException("WebView not supported on this platform"); + } + + // Configure WebView with login page pre-loading for better performance + var config = new PassportWebViewConfig + { + EnableRemoteDebugging = enableRemoteDebugging, + RemoteDebuggingPort = remoteDebuggingPort, + ClearCacheOnInit = clearCacheOnLogin, + InitialUrl = WebViewUrl, // Pre-load the login page during initialization + Width = webViewWidth > 0 ? webViewWidth : (int)rawImage.rectTransform.rect.width, + Height = webViewHeight > 0 ? webViewHeight : (int)rawImage.rectTransform.rect.height + }; + + // Initialize WebView + webView.Initialize(config); + + // Subscribe to events + webView.OnLoadFinished += OnWebViewLoadFinished; + webView.OnLoadStarted += OnWebViewLoadStarted; + + // Register JavaScript methods + webView.RegisterJavaScriptMethod("HandleLoginData", HandleLoginData); + webView.RegisterJavaScriptMethod("HandleLoginError", HandleLoginError); + webView.RegisterJavaScriptMethod("HandleClose", (data) => HideLoginUI()); + + PassportLogger.Info($"{TAG} Cross-platform WebView created successfully"); + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to create WebView: {ex.Message}"); + throw; + } + } + + /// + /// Factory method to create the appropriate WebView implementation for the current platform + /// + private IPassportWebView CreatePlatformWebView() + { +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_EDITOR && UNITY_EDITOR_WIN)) + PassportLogger.Info($"{TAG} Creating Windows WebView (UWB)"); + return new WindowsPassportWebView(rawImage, this); +#elif UNITY_IOS && VUPLEX_WEBVIEW + PassportLogger.Info($"{TAG} Creating iOS WebView (Vuplex)"); + return new iOSPassportWebView(rawImage); +#elif UNITY_ANDROID && VUPLEX_WEBVIEW + PassportLogger.Info($"{TAG} Creating Android WebView (Vuplex)"); + return new AndroidVuplexWebView(rawImage); +#elif (UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX) && VUPLEX_WEBVIEW + PassportLogger.Info($"{TAG} Creating MacOS WebView (Vuplex)"); + return new MacOSPassportWebView(rawImage); +#else + PassportLogger.Error($"{TAG} WebView not supported on this platform"); + return null; +#endif + } + + /// + /// Event handler for WebView load finished + /// + private void OnWebViewLoadFinished() + { + string url = webView?.CurrentUrl ?? ""; + PassportLogger.Info($"{TAG} WebView load finished: {url}"); + + // Loading UI removed + if (!url.StartsWith("about:blank")) + { + PassportLogger.Info($"{TAG} Content loaded"); + } + + // Input activation is now handled by the WebView wrapper + PassportLogger.Info($"{TAG} Input activation delegated to WebView wrapper"); + } + + /// + /// Event handler for WebView load started + /// + private void OnWebViewLoadStarted() + { + string url = webView?.CurrentUrl ?? ""; + PassportLogger.Info($"{TAG} WebView loading started: {url}"); + // OAuth callbacks handled by external browser for security - no interception needed + } + + /// + /// Handles login data received from JavaScript + /// Called when the mock login page submits login information + /// + /// JSON string containing login data + private async void HandleLoginData(string jsonData) + { + try + { + PassportLogger.Info($"{TAG} Received login data from JavaScript: {jsonData}"); + + // Parse the JSON data + LoginData loginData = JsonUtility.FromJson(jsonData); + PassportLogger.Info($"{TAG} Parsed login data: {loginData}"); + + // Validate required login data + if (string.IsNullOrEmpty(loginData.directLoginMethod)) + { + PassportLogger.Error($"{TAG} Login method is required but was null or empty"); + return; + } + + // For now, just log the data - in the future this could trigger OAuth flow + PassportLogger.Info($"{TAG} Login attempt - Method: {loginData.directLoginMethod}, Email: {loginData.email}, Marketing Consent: {loginData.marketingConsentStatus}"); + + // Login(bool useCachedSession = false, DirectLoginOptions directLoginOptions = null) + DirectLoginMethod loginMethod; + switch (loginData.directLoginMethod) + { + case "email": + loginMethod = DirectLoginMethod.Email; + break; + case "google": + loginMethod = DirectLoginMethod.Google; + break; + case "apple": + loginMethod = DirectLoginMethod.Apple; + break; + case "facebook": + loginMethod = DirectLoginMethod.Facebook; + break; + default: + PassportLogger.Error($"{TAG} Invalid login method: {loginData.directLoginMethod}"); + return; + } + var loginOptions = new DirectLoginOptions(loginMethod); + + // Validate email is provided for email login method + if (loginMethod == DirectLoginMethod.Email) + { + if (string.IsNullOrEmpty(loginData.email)) + { + PassportLogger.Error($"{TAG} Email is required for email login method but was null or empty"); + return; + } + + loginOptions.email = loginData.email; + } + + // Parse and set marketing consent status if provided + if (!string.IsNullOrEmpty(loginData.marketingConsentStatus)) + { + switch (loginData.marketingConsentStatus.ToLower()) + { + case "opted_in": + loginOptions.marketingConsentStatus = MarketingConsentStatus.OptedIn; + break; + case "unsubscribed": + loginOptions.marketingConsentStatus = MarketingConsentStatus.Unsubscribed; + break; + default: + PassportLogger.Warn($"{TAG} Unknown marketing consent status: {loginData.marketingConsentStatus}"); + break; + } + } + + // Perform the login and handle the result + PassportLogger.Info($"{TAG} Starting login with method: {loginData.directLoginMethod}"); + bool loginSuccess = await _passportInstance.Login(false, loginOptions); + + if (loginSuccess) + { + PassportLogger.Info($"{TAG} Login successful!"); + + // Trigger events + OnLoginSuccess?.Invoke(); + OnLoginSuccessStatic?.Invoke(); + + // Hide the WebView after successful login + HideLoginUI(); + } + else + { + string errorMessage = "Login failed - authentication was not completed"; + PassportLogger.Error($"{TAG} {errorMessage}"); + + // Trigger failure events + OnLoginFailure?.Invoke(errorMessage); + OnLoginFailureStatic?.Invoke(errorMessage); + } + } + catch (Exception ex) + { + string errorMessage = $"Login failed with exception: {ex.Message}"; + + // Check if this is a user cancellation vs a real error + if (ex.Message.Contains("the connection was disabled")) + { + errorMessage = "Login cancelled by user or connection was disabled"; + PassportLogger.Warn($"{TAG} {errorMessage}"); + } + else if (ex.Message.Contains("Uri was missing state and/or code")) + { + errorMessage = "OAuth callback error - this usually means the user cancelled login or there was a network issue"; + PassportLogger.Warn($"{TAG} {errorMessage}"); + } + else + { + PassportLogger.Error($"{TAG} Failed to handle login data: {errorMessage}"); + } + + // Trigger failure events for exceptions too + OnLoginFailure?.Invoke(errorMessage); + OnLoginFailureStatic?.Invoke(errorMessage); + } + } + + /// + /// Handles error messages received from JavaScript + /// Called when the login page encounters an error and sends error information + /// + /// JSON string containing error data + private void HandleLoginError(string jsonData) + { + try + { + PassportLogger.Info($"{TAG} Received error data from JavaScript: {jsonData}"); + + // Parse the JSON error data + ErrorData errorData = JsonUtility.FromJson(jsonData); + PassportLogger.Error($"{TAG} Login page error: {errorData}"); + + // Create user-friendly error message + string errorMessage = !string.IsNullOrEmpty(errorData.message) + ? $"Login failed: {errorData.message}" + : "Login failed due to an unknown error"; + + // Trigger failure events + OnLoginFailure?.Invoke(errorMessage); + OnLoginFailureStatic?.Invoke(errorMessage); + + // Hide the WebView after error + HideLoginUI(); + } + catch (Exception ex) + { + string errorMessage = $"Failed to handle error message from JavaScript: {ex.Message}"; + PassportLogger.Error($"{TAG} {errorMessage}"); + + // Trigger failure events even if we can't parse the error + OnLoginFailure?.Invoke("Login failed due to an error processing error message"); + OnLoginFailureStatic?.Invoke("Login failed due to an error processing error message"); + } + } + + /// + /// Update the WebView internal resolution when PassportUI dimensions change + /// + private void UpdateWebViewResolution() + { + if (webView != null && isInitialized && webViewWidth > 0 && webViewHeight > 0) + { +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_EDITOR && UNITY_EDITOR_WIN)) + // For Windows UWB, update the internal resolution + if (webView is WindowsPassportWebView windowsWebView) + { + windowsWebView.UpdateUWBResolution(webViewWidth, webViewHeight); + } +#endif + // For other platforms (Vuplex), the RectTransform size is sufficient + // as they don't have separate internal resolution properties + } + } + + /// + /// Unity Update method to handle main thread operations + /// + private void Update() + { +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_EDITOR && UNITY_EDITOR_WIN)) + // Check for pending resolution updates on Windows WebView + if (webView is WindowsPassportWebView windowsWebView) + { + windowsWebView.UpdatePendingResolution(); + } +#endif + } + + private void SetupLoginButton() + { + if (loginButton != null) + { + loginButton.onClick.RemoveListener(OnLoginButtonClicked); + loginButton.onClick.AddListener(OnLoginButtonClicked); + PassportLogger.Info($"{TAG} Login button configured"); + } + } + + private async void OnLoginButtonClicked() + { + await ShowLoginUI(); + } + + /// + /// Show the login UI and start the authentication flow + /// + public async UniTask ShowLoginUI() + { + if (!isInitialized) + { + PassportLogger.Error($"{TAG} PassportUI not initialized"); + return false; + } + + if (_passportInstance == null) + { + PassportLogger.Error($"{TAG} Passport instance is null"); + return false; + } + + try + { + PassportLogger.Info($"{TAG} Starting login flow..."); + + // Cache clearing is now handled by WebView configuration during initialization + PassportLogger.Info($"{TAG} Cache clearing configured: {clearCacheOnLogin}"); + + // Wait for main Passport bridge to be ready + await WaitForPassportReady(); + PassportLogger.Info($"{TAG} Passport bridge ready - waiting for login form submission"); + + // CRITICAL: Initialize deep link system for OAuth callback handling + PassportLogger.Info($"{TAG} Initializing deep link system for OAuth callbacks"); +#if UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN) + try + { + // Get the PassportImpl instance to access OnDeepLinkActivated + var passportType = typeof(Passport); + var implField = passportType.GetField("_passportImpl", + BindingFlags.NonPublic | BindingFlags.Instance); + + if (implField?.GetValue(_passportInstance) is PassportImpl passportImpl) + { + // Initialize deep link system with the redirect URI and PassportImpl's callback + var redirectUri = "immutablerunner://callback"; + WindowsDeepLink.Initialise(redirectUri, passportImpl.OnDeepLinkActivated); + PassportLogger.Info($"{TAG} Deep link system initialized for protocol: {redirectUri}"); + } + else + { + PassportLogger.Error($"{TAG} Could not access PassportImpl for deep link initialization"); + } + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Failed to initialize deep link system: {ex.Message}"); + } +#endif + + webView.Show(); + PassportLogger.Info($"{TAG} WebView shown"); + + // Load URL (WebView will optimize if already loaded) + webView.LoadUrl(WebViewUrl); + PassportLogger.Info($"{TAG} Login page ready: {WebViewUrl}"); + + // Return true since we successfully started the OAuth flow + // The actual authentication completion is handled by the deep link system + return true; + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Login flow failed: {ex.Message}"); + HideLoginUI(); + return false; + } + } + + /// + /// Hide the login UI + /// + public void HideLoginUI(bool logMessage = true) + { + // Hide the WebView + if (webView != null) + { + webView.Hide(); + if (logMessage) + { + PassportLogger.Info($"{TAG} Login UI hidden"); + } + } + } + + /// + /// Clean up WebView resources when the component is destroyed + /// + private void OnDestroy() + { + try + { + // Clean up event subscription + Application.focusChanged -= OnApplicationFocusChanged; + + // Dispose of the WebView + if (webView != null) + { + webView.Dispose(); + webView = null; + PassportLogger.Info($"{TAG} WebView disposed on destroy"); + } + + // Note: Input coroutine handling removed - games should manage cursor state themselves + } + catch (Exception ex) + { + PassportLogger.Error($"{TAG} Error during cleanup: {ex.Message}"); + } + } + + private async UniTask WaitForPassportReady() + { + PassportLogger.Info($"{TAG} Waiting for main Passport bridge to be ready..."); + + int attempts = 0; + while (attempts < 150) // 15 second timeout + { + try + { + if (_passportInstance?.Environment != null) + { + PassportLogger.Info($"{TAG} Main Passport bridge is ready"); + return; + } + } + catch + { + // Continue waiting + } + + await UniTask.Delay(100); + attempts++; + } + + throw new TimeoutException("Passport bridge not ready after 15 seconds"); + } + + private void OnApplicationFocusChanged(bool hasFocus) + { + if (hasFocus) + { + PassportLogger.Info($"{TAG} Application regained focus - WebView input should now work"); + } + else + { + PassportLogger.Info($"{TAG} Application lost focus"); + } + } + } +} diff --git a/src/Packages/Passport/Runtime/Scripts/Public/PassportUI.cs.meta b/src/Packages/Passport/Runtime/Scripts/Public/PassportUI.cs.meta new file mode 100644 index 00000000..0a0aa646 --- /dev/null +++ b/src/Packages/Passport/Runtime/Scripts/Public/PassportUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 32208e882b664251bb0da03443581c5f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/NativeArrayExtensions.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/NativeArrayExtensions.cs index 1e6832e6..20fd0789 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/NativeArrayExtensions.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/NativeArrayExtensions.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) using System; using Unity.Collections; diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/NativeSliceExtensions.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/NativeSliceExtensions.cs index ed07348a..b0f80baf 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/NativeSliceExtensions.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/NativeSliceExtensions.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) using System; using Unity.Collections; diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/SpanExtensions.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/SpanExtensions.cs index 1b2aea59..c40c6211 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/SpanExtensions.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/SpanExtensions.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) using System; using Unity.Collections; diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/Utils.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/Utils.cs index 20c8a610..e70d35b4 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/Utils.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/Utils.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) using System; using System.Diagnostics; diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/VoltstroStudios.NativeArraySpanExtensions.asmdef b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/VoltstroStudios.NativeArraySpanExtensions.asmdef index d692497f..64500497 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/VoltstroStudios.NativeArraySpanExtensions.asmdef +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.nativearrayspanextensions@1.0.1/Runtime/VoltstroStudios.NativeArraySpanExtensions.asmdef @@ -4,7 +4,8 @@ "references": [], "includePlatforms": [ "Editor", - "WindowsStandalone64" + "WindowsStandalone64", + "macOSStandalone" ], "excludePlatforms": [], "allowUnsafeCode": true, diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16.meta b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16.meta new file mode 100644 index 00000000..719a35b0 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4657c5fb2b5694de48f3e3a25fddabc8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/LICENSE.md b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/LICENSE.md new file mode 100644 index 00000000..5b7f48cd --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-2024 Voltstro-Studios + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/LICENSE.md.meta b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/LICENSE.md.meta new file mode 100644 index 00000000..6cd72849 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fe09333555055432dad68641e2d31312 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/package.json b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/package.json new file mode 100644 index 00000000..09f65378 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/package.json @@ -0,0 +1,22 @@ +{ + "name": "dev.voltstro.unitywebbrowser.engine.cef.macos.arm64", + "displayName": "Unity Web Browser CEF Engine (MacOS arm64)", + "description": "CEF engine for Unity Web Browser (MacOS arm64).", + "version": "2.2.5-130.1.16", + "unity": "2021.2", + "author": { + "name": "Voltstro", + "email": "me@voltstro.dev", + "url": "https://voltstro.dev" + }, + "repository": { + "type": "git", + "url": "https://github.com/Voltstro-Studios/UnityWebBrowser.git" + }, + "changelogUrl": "https://projects.voltstro.dev/UnityWebBrowser/latest/changelog/", + "documentationUrl": "https://projects.voltstro.dev/UnityWebBrowser/latest/articles/user/engines/#cef-engine", + "licensesUrl": "https://github.com/Voltstro-Studios/UnityWebBrowser/blob/master/LICENSE.md", + "dependencies": { + "dev.voltstro.unitywebbrowser.engine.cef": "2.2.5-130.1.16" + } +} \ No newline at end of file diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/package.json.meta b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/package.json.meta new file mode 100644 index 00000000..75157295 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 25f2f9846ae244e6891f567c8d08ab2d +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16.meta b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16.meta new file mode 100644 index 00000000..a1cc5e33 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3faf4f9374dc341f99901ca5aa8a3d3c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/LICENSE.md b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/LICENSE.md new file mode 100644 index 00000000..5b7f48cd --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-2024 Voltstro-Studios + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/LICENSE.md.meta b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/LICENSE.md.meta new file mode 100644 index 00000000..c97cdf24 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9809e4b21981842979ba21745c928434 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/package.json b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/package.json new file mode 100644 index 00000000..998096e6 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/package.json @@ -0,0 +1,22 @@ +{ + "name": "dev.voltstro.unitywebbrowser.engine.cef.macos.x64", + "displayName": "Unity Web Browser CEF Engine (MacOS x64)", + "description": "CEF engine for Unity Web Browser (MacOS x64).", + "version": "2.2.5-130.1.16", + "unity": "2021.2", + "author": { + "name": "Voltstro", + "email": "me@voltstro.dev", + "url": "https://voltstro.dev" + }, + "repository": { + "type": "git", + "url": "https://github.com/Voltstro-Studios/UnityWebBrowser.git" + }, + "changelogUrl": "https://projects.voltstro.dev/UnityWebBrowser/latest/changelog/", + "documentationUrl": "https://projects.voltstro.dev/UnityWebBrowser/latest/articles/user/engines/#cef-engine", + "licensesUrl": "https://github.com/Voltstro-Studios/UnityWebBrowser/blob/master/LICENSE.md", + "dependencies": { + "dev.voltstro.unitywebbrowser.engine.cef": "2.2.5-130.1.16" + } +} \ No newline at end of file diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/package.json.meta b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/package.json.meta new file mode 100644 index 00000000..3449b8a6 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bd81b72557caa45f6aa41db0f703eeec +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef@2.2.5-130.1.16/Resources/BrowserInput.asset b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef@2.2.5-130.1.16/Resources/BrowserInput.asset new file mode 100644 index 00000000..dc836183 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef@2.2.5-130.1.16/Resources/BrowserInput.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 99b8c6b87c07aef42a4f1cf4636e5b09, type: 3} + m_Name: BrowserInput + m_EditorClassIdentifier: + scrollAxisName: Mouse ScrollWheel + scrollSensitivity: 2 diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef@2.2.5-130.1.16/Resources/BrowserInput.asset.meta b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef@2.2.5-130.1.16/Resources/BrowserInput.asset.meta new file mode 100644 index 00000000..92cd47e7 --- /dev/null +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef@2.2.5-130.1.16/Resources/BrowserInput.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f42b520053d76984dbe0a740dec665e4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/AssemblyInfo.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/AssemblyInfo.cs index f4763ab2..40ee987f 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/AssemblyInfo.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/AssemblyInfo.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Communication/CommunicationLayer.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Communication/CommunicationLayer.cs index 1aa3b16e..300a6f89 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Communication/CommunicationLayer.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Communication/CommunicationLayer.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Communication/TCPCommunicationLayer.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Communication/TCPCommunicationLayer.cs index 3696e79a..59cc4344 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Communication/TCPCommunicationLayer.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Communication/TCPCommunicationLayer.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/BaseUwbClientManager.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/BaseUwbClientManager.cs index 3febafbf..f08b78aa 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/BaseUwbClientManager.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/BaseUwbClientManager.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Engine.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Engine.cs index d712faa2..7cd34693 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Engine.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Engine.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/EngineConfiguration.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/EngineConfiguration.cs index cf9e7fab..6c7b52a0 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/EngineConfiguration.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/EngineConfiguration.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios @@ -31,7 +31,11 @@ public class EngineConfiguration : Engine public override string GetEngineExecutableName() { +#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN return engineAppName + ".exe"; +#else + return engineAppName; +#endif } [Obsolete] diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/EngineProcess.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/EngineProcess.cs index 28e08bae..18d81291 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/EngineProcess.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/EngineProcess.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios @@ -31,7 +31,15 @@ internal sealed class EngineProcess : IDisposable /// public EngineProcess(Engine engine, IWebBrowserLogger logger) { +#if UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN) processHandle = new WindowProcess(); +#elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX + processHandle = new MacOsProcess(); +#elif UNITY_STANDALONE_LINUX + processHandle = new LinuxProcess(); +#else + throw new PlatformNotSupportedException("Current platform is not supported for UWB engine processes"); +#endif this.engine = engine; this.logger = logger; diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/IProcess.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/IProcess.cs index 79b5f6e0..7e3496e9 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/IProcess.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/IProcess.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/LinuxProcess.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/LinuxProcess.cs index 0a6f029e..12c04a08 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/LinuxProcess.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/LinuxProcess.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/MacOsProcess.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/MacOsProcess.cs index 81b8109c..6345e14b 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/MacOsProcess.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Engines/Process/MacOsProcess.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios @@ -8,7 +8,7 @@ using System.Diagnostics; using VoltstroStudios.UnityWebBrowser.Helper; -#if UNITY_STANDALONE_OSX +#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX namespace VoltstroStudios.UnityWebBrowser.Core.Engines.Process { @@ -24,34 +24,68 @@ public MacOsProcess() public void StartProcess(string executable, string workingDir, string arguments, DataReceivedEventHandler onLogEvent, DataReceivedEventHandler onErrorLogEvent) { - ProcessStartInfo startInfo = new(executable, arguments) + try { - CreateNoWindow = true, - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - WorkingDirectory = workingDir - }; - - process.StartInfo = startInfo; - process.OutputDataReceived += onLogEvent; - process.ErrorDataReceived += onErrorLogEvent; - process.Start(); - process.BeginOutputReadLine(); - process.BeginErrorReadLine(); + ProcessStartInfo startInfo = new(executable, arguments) + { + CreateNoWindow = true, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + WorkingDirectory = workingDir + }; + + process.StartInfo = startInfo; + process.OutputDataReceived += onLogEvent; + process.ErrorDataReceived += onErrorLogEvent; + + UnityEngine.Debug.Log($"[MacOsProcess] πŸš€ Starting process: {executable}"); + UnityEngine.Debug.Log($"[MacOsProcess] πŸ“ Working directory: {workingDir}"); + UnityEngine.Debug.Log($"[MacOsProcess] βš™οΈ Arguments: {arguments}"); + + process.Start(); + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + + UnityEngine.Debug.Log($"[MacOsProcess] βœ… Process started successfully with PID: {process.Id}"); + } + catch (System.Exception ex) + { + UnityEngine.Debug.LogError($"[MacOsProcess] ❌ Failed to start process: {ex.Message}"); + UnityEngine.Debug.LogError($"[MacOsProcess] πŸ“ Executable: {executable}"); + UnityEngine.Debug.LogError($"[MacOsProcess] πŸ“ Working Dir: {workingDir}"); + throw; + } } public void KillProcess() { - process.KillTree(); + try + { + if (process != null && !process.HasExited) + { + process.KillTree(); + } + } + catch (System.Exception ex) + { + UnityEngine.Debug.LogWarning($"[MacOsProcess] ⚠️ Error killing process: {ex.Message}"); + } } - public bool HasExited => process.HasExited; - public int ExitCode => process.ExitCode; + public bool HasExited => process?.HasExited ?? true; + public int ExitCode => process?.ExitCode ?? -1; public void Dispose() { - process.Dispose(); + try + { + process?.Dispose(); + } + catch (System.Exception ex) + { + UnityEngine.Debug.LogWarning($"[MacOsProcess] ⚠️ Error disposing process: {ex.Message}"); + } } } } diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/FullscreenHandler.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/FullscreenHandler.cs index 682ef8aa..a56fece4 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/FullscreenHandler.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/FullscreenHandler.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/InvalidArgumentsException.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/InvalidArgumentsException.cs index fd70bfda..7af9839b 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/InvalidArgumentsException.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/InvalidArgumentsException.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/JsMethodManager.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/JsMethodManager.cs index 4109e4a7..ea2a43d8 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/JsMethodManager.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/JsMethodManager.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/MethodNotFoundException.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/MethodNotFoundException.cs index 0031604a..4f4af778 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/MethodNotFoundException.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/MethodNotFoundException.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/NotEnabledException.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/NotEnabledException.cs index 17135b33..02cc6822 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/NotEnabledException.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/NotEnabledException.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/UnsupportedTypeException.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/UnsupportedTypeException.cs index 3cb5a8d4..cfbee7b1 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/UnsupportedTypeException.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Js/UnsupportedTypeException.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/PixelsEventTypeReader.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/PixelsEventTypeReader.cs index 202f01ce..cef7ebe8 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/PixelsEventTypeReader.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/PixelsEventTypeReader.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Popups/WebBrowserPopupInfo.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Popups/WebBrowserPopupInfo.cs index 5f5c8384..df5d072f 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Popups/WebBrowserPopupInfo.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Popups/WebBrowserPopupInfo.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Popups/WebBrowserPopupService.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Popups/WebBrowserPopupService.cs index b22b5913..450970cf 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Popups/WebBrowserPopupService.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/Popups/WebBrowserPopupService.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/RawImageUwbClientInputHandler.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/RawImageUwbClientInputHandler.cs index 740fbeda..e3f50467 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/RawImageUwbClientInputHandler.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/RawImageUwbClientInputHandler.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/RawImageUwbClientManager.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/RawImageUwbClientManager.cs index 542fa4cf..ea0f9548 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/RawImageUwbClientManager.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/RawImageUwbClientManager.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserArgsBuilder.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserArgsBuilder.cs index 93a53a02..d3697cdd 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserArgsBuilder.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserArgsBuilder.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios @@ -42,6 +42,15 @@ public void AppendArgument(string arg, object parameters = null, bool quotes = f arguments.Add(builtArg); } + /// + /// Adds a flag-only argument (without parameters) + /// + /// + public void AppendFlag(string arg) + { + arguments.Add($"-{arg}"); + } + /// /// Gets the joined arguments /// diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserClient.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserClient.cs index 12219c8a..f18f47c1 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserClient.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserClient.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios @@ -13,6 +13,7 @@ using System.Threading.Tasks; using Cysharp.Threading.Tasks; using Unity.Collections; +using VoltstroStudios.UnityWebBrowser.Shared.Core; using Unity.Profiling; using UnityEngine; using VoltstroStudios.UnityWebBrowser.Communication; @@ -323,9 +324,12 @@ internal void Init() } //Get the path to the UWB process we are using and make sure it exists - string browserEnginePath = engine.GetEngineAppPath(WebBrowserUtils.GetRunningPlatform()); + Platform detectedPlatform = WebBrowserUtils.GetRunningPlatform(); + string browserEnginePath = engine.GetEngineAppPath(detectedPlatform); logger.Debug($"Starting browser engine process from '{browserEnginePath}'..."); + + if (!File.Exists(browserEnginePath)) { logger.Error("The engine process could not be found!"); @@ -431,6 +435,13 @@ internal void Init() { argsBuilder.AppendArgument("no-sandbox", true); } + + //Single-process mode for macOS stability +#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX + // Use single-process mode to prevent separate GPU process crashes on macOS + argsBuilder.AppendFlag("single-process"); + // Note: Testing without disable-web-security to minimize security impact +#endif //Final built arguments string arguments = argsBuilder.ToString(); diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserCommunicationsManager.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserCommunicationsManager.cs index 59c295f0..e59297d2 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserCommunicationsManager.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Core/WebBrowserCommunicationsManager.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/Drawers/ResolutionDrawer.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/Drawers/ResolutionDrawer.cs index 6f7a34e3..06b2a032 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/Drawers/ResolutionDrawer.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/Drawers/ResolutionDrawer.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EditorHelper.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EditorHelper.cs index ce43cf31..7cabdd92 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EditorHelper.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EditorHelper.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EngineManagement/EngineManager.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EngineManagement/EngineManager.cs index ef034e57..563c7620 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EngineManagement/EngineManager.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EngineManagement/EngineManager.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EngineManagement/EngineManagerPostprocess.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EngineManagement/EngineManagerPostprocess.cs index 63216ec1..25a52e4a 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EngineManagement/EngineManagerPostprocess.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Editor/EngineManagement/EngineManagerPostprocess.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnClientConnected.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnClientConnected.cs index d9b13556..6612d3ba 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnClientConnected.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnClientConnected.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnClientInitialized.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnClientInitialized.cs index 119552b5..f1720cdd 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnClientInitialized.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnClientInitialized.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnFullscreenChange.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnFullscreenChange.cs index 7273490f..66d79dbd 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnFullscreenChange.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnFullscreenChange.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnInputFocus.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnInputFocus.cs index 4875e9bd..5fcc8bef 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnInputFocus.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnInputFocus.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2023 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadFinish.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadFinish.cs index 62ba8256..196d4aca 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadFinish.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadFinish.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadStart.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadStart.cs index 3b10936a..3adc46de 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadStart.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadStart.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadingProgressChange.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadingProgressChange.cs index 6667f3da..eb2c12f6 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadingProgressChange.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnLoadingProgressChange.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnPopup.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnPopup.cs index fb213deb..1b6e4d08 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnPopup.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnPopup.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnTitleChange.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnTitleChange.cs index 047eebef..1158e1ed 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnTitleChange.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnTitleChange.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnUrlChange.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnUrlChange.cs index 4003fa69..3f967870 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnUrlChange.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Events/OnUrlChange.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Helper/ProcessExtensions.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Helper/ProcessExtensions.cs index 3842f538..1451ab13 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Helper/ProcessExtensions.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Helper/ProcessExtensions.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Helper/WebBrowserUtils.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Helper/WebBrowserUtils.cs index b51d2fc5..3d32dfea 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Helper/WebBrowserUtils.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Helper/WebBrowserUtils.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios @@ -140,7 +140,34 @@ public static bool GetScreenPointToLocalPositionDeltaOnImage(Graphic graphic, Ve /// public static Platform GetRunningPlatform() { +#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN return Platform.Windows64; +#elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX + // Check if we're on ARM64 or Intel Mac + return System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture == System.Runtime.InteropServices.Architecture.Arm64 + ? Platform.MacOSArm64 + : Platform.MacOS; +#elif UNITY_STANDALONE_LINUX || UNITY_EDITOR_LINUX + return Platform.Linux64; +#else + // Fallback to runtime detection + switch (Application.platform) + { + case RuntimePlatform.WindowsPlayer: + case RuntimePlatform.WindowsEditor: + return Platform.Windows64; + case RuntimePlatform.OSXPlayer: + case RuntimePlatform.OSXEditor: + return System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture == System.Runtime.InteropServices.Architecture.Arm64 + ? Platform.MacOSArm64 + : Platform.MacOS; + case RuntimePlatform.LinuxPlayer: + case RuntimePlatform.LinuxEditor: + return Platform.Linux64; + default: + throw new PlatformNotSupportedException($"Platform {Application.platform} is not supported by UnityWebBrowser"); + } +#endif } /// diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputHandler.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputHandler.cs index baf6459b..54a5ed40 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputHandler.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputHandler.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputHelper.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputHelper.cs index 27a23970..4680195b 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputHelper.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputHelper.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputSystemHandler.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputSystemHandler.cs index de1e088d..864a2ed6 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputSystemHandler.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserInputSystemHandler.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserOldInputHandler.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserOldInputHandler.cs index 8b2405b1..9aa6b305 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserOldInputHandler.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Input/WebBrowserOldInputHandler.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/DefaultUnityWebBrowserLogger.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/DefaultUnityWebBrowserLogger.cs index f15ae653..9307349a 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/DefaultUnityWebBrowserLogger.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/DefaultUnityWebBrowserLogger.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/IWebBrowserLogger.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/IWebBrowserLogger.cs index 44dbe953..12e34495 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/IWebBrowserLogger.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/IWebBrowserLogger.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/JsonLogSeverityConverter.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/JsonLogSeverityConverter.cs index ab6d204a..d795b8c8 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/JsonLogSeverityConverter.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/JsonLogSeverityConverter.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/JsonLogStructure.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/JsonLogStructure.cs index 39bffb3b..43f7a949 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/JsonLogStructure.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/JsonLogStructure.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/ProcessLogHandler.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/ProcessLogHandler.cs index 110b70de..9a17408f 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/ProcessLogHandler.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/Logging/ProcessLogHandler.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbHasInitializedException.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbHasInitializedException.cs index 12d40444..88ed5840 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbHasInitializedException.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbHasInitializedException.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsConnectedException.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsConnectedException.cs index 7edfb2dd..6199d8ad 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsConnectedException.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsConnectedException.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsNotConnectedException.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsNotConnectedException.cs index 107fc5b1..05792a4b 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsNotConnectedException.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsNotConnectedException.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsNotReadyException.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsNotReadyException.cs index 8e55ecf5..8a8d4f04 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsNotReadyException.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbIsNotReadyException.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbWebView.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbWebView.cs index 016993af..f4d24dcb 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbWebView.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/UwbWebView.cs @@ -1,6 +1,7 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; @@ -28,6 +29,12 @@ public class UwbWebView : MonoBehaviour, IWebBrowserClient { public event OnUnityPostMessageDelegate? OnUnityPostMessage; + // Required for Gree browser only +#if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX || UNITY_WEBGL + public event OnUnityPostMessageDelegate? OnAuthPostMessage; + public event OnUnityPostMessageErrorDelegate? OnPostMessageError; +#endif + private WebBrowserClient? webBrowserClient; public async UniTask Init(int engineStartupTimeoutMs, bool redactTokensInLogs, Func redactionHandler) @@ -70,19 +77,46 @@ public async UniTask Init(int engineStartupTimeoutMs, bool redactTokensInLogs, F // Set up engine EngineConfiguration engineConfig = ScriptableObject.CreateInstance(); engineConfig.engineAppName = "UnityWebBrowser.Engine.Cef"; - engineConfig.engineFiles = new Engine.EnginePlatformFiles[] + + var engineFiles = new List(); + + // Windows engine configuration + engineFiles.Add(new Engine.EnginePlatformFiles() { - new Engine.EnginePlatformFiles() - { - platform = Platform.Windows64, - engineBaseAppLocation = "", - engineRuntimeLocation = "UWB/" + platform = Platform.Windows64, + engineBaseAppLocation = "", + engineRuntimeLocation = "UWB/" #if UNITY_EDITOR - , - engineEditorLocation = "Packages/com.immutable.passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.win.x64@2.2.5-130.1.16/Engine~" + , + engineEditorLocation = "Packages/com.immutable.passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.win.x64@2.2.5-130.1.16/Engine~" #endif - } - }; + }); + + // macOS engine configuration (Intel) + engineFiles.Add(new Engine.EnginePlatformFiles() + { + platform = Platform.MacOS, + engineBaseAppLocation = "UnityWebBrowser.Engine.Cef.app/Contents/MacOS", + engineRuntimeLocation = "UWB/" +#if UNITY_EDITOR + , + engineEditorLocation = "Packages/com.immutable.passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.x64@2.2.5-130.1.16/Engine~" +#endif + }); + + // macOS engine configuration (ARM64 - Apple Silicon) + engineFiles.Add(new Engine.EnginePlatformFiles() + { + platform = Platform.MacOSArm64, + engineBaseAppLocation = "UnityWebBrowser.Engine.Cef.app/Contents/MacOS", + engineRuntimeLocation = "UWB/" +#if UNITY_EDITOR + , + engineEditorLocation = "Packages/com.immutable.passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser.engine.cef.macos.arm64@2.2.5-130.1.16/Engine~" +#endif + }); + + engineConfig.engineFiles = engineFiles.ToArray(); webBrowserClient.engine = engineConfig; // Find available ports @@ -134,12 +168,30 @@ public void LaunchAuthURL(string url, string redirectUri) Application.OpenURL(url); } + // Only available for mobile devices +#if (UNITY_IPHONE && !UNITY_EDITOR) || (UNITY_ANDROID && !UNITY_EDITOR) + public void ClearCache(bool includeDiskFiles) + { + // UWB doesn't have direct cache clearing methods for mobile + // This would need to be implemented if mobile support is added + } + + public void ClearStorage() + { + // UWB doesn't have direct storage clearing methods for mobile + // This would need to be implemented if mobile support is added + } +#endif + + // Required for Windows browser only +#if UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN) public void Dispose() { if (webBrowserClient?.HasDisposed == true) return; webBrowserClient?.Dispose(); } +#endif } } diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/VoltstroStudios.UnityWebBrowser.asmdef b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/VoltstroStudios.UnityWebBrowser.asmdef index d5ba89a9..60ef654b 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/VoltstroStudios.UnityWebBrowser.asmdef +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/VoltstroStudios.UnityWebBrowser.asmdef @@ -5,13 +5,15 @@ "VoltstroStudios.NativeArraySpanExtensions", "Unity.TextMeshPro", "Unity.InputSystem", + "Unity.ugui", "UniTask", "Immutable.Browser.Core", "Immutable.Passport.Core.Logging" ], "includePlatforms": [ "Editor", - "WindowsStandalone64" + "WindowsStandalone64", + "macOSStandalone" ], "excludePlatforms": [], "allowUnsafeCode": false, diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserNoUi.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserNoUi.cs index dd107c4e..5521dc8e 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserNoUi.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserNoUi.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) ο»Ώusing VoltstroStudios.UnityWebBrowser.Core; diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIBasic.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIBasic.cs index a3a16bfd..8fdcc900 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIBasic.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIBasic.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIControls.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIControls.cs index f01b6aa0..b3f00170 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIControls.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIControls.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIControlsTMP.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIControlsTMP.cs index f62b5709..6c2b995e 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIControlsTMP.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIControlsTMP.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIFull.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIFull.cs index d1405edc..e216d32e 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIFull.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Runtime/WebBrowserUIFull.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2022 Voltstro-Studios diff --git a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Samples~/Runtime/Scripts/UWBRuntime.cs b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Samples~/Runtime/Scripts/UWBRuntime.cs index c0509307..b460cf80 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Samples~/Runtime/Scripts/UWBRuntime.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/UnityWebBrowser/dev.voltstro.unitywebbrowser@2.2.5/Samples~/Runtime/Scripts/UWBRuntime.cs @@ -1,4 +1,4 @@ -#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) +#if !IMMUTABLE_CUSTOM_BROWSER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN)) // UnityWebBrowser (UWB) // Copyright (c) 2021-2024 Voltstro-Studios