diff --git a/.gitignore b/.gitignore index 1a42c8495..94a1dd85d 100644 --- a/.gitignore +++ b/.gitignore @@ -91,4 +91,10 @@ src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/**/* *.idea # Code coverage -sample/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json \ No newline at end of file +sample/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json + +# AltTester +sample/AltTester.log + +# Crashes +sample/mono_crash* \ No newline at end of file diff --git a/sample/Assets/Editor/MacBuilder.cs b/sample/Assets/Editor/MacBuilder.cs new file mode 100644 index 000000000..2b12e8e2b --- /dev/null +++ b/sample/Assets/Editor/MacBuilder.cs @@ -0,0 +1,43 @@ +#if UNITY_EDITOR_OSX + +using UnityEngine; +using UnityEditor; +using AltTester.AltTesterUnitySDK.Editor; +using AltTester.AltTesterUnitySDK; +using System; + +public class BuildScript +{ + static void BuildForAltTester() + { + try + { + BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions(); + buildPlayerOptions.scenes = new string[] { + "Assets/Scenes/UnauthenticatedScene.unity", "Assets/Scenes/AuthenticatedScene.unity" + }; + + buildPlayerOptions.locationPathName = "Builds/MacOS/SampleApp.app"; + buildPlayerOptions.target = BuildTarget.StandaloneOSX; + buildPlayerOptions.options = BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer; + + // Setup for AltTester + var buildTargetGroup = BuildTargetGroup.Standalone; + AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(buildTargetGroup); + if (buildTargetGroup == UnityEditor.BuildTargetGroup.Standalone) + AltBuilder.CreateJsonFileForInputMappingOfAxis(); + var instrumentationSettings = new AltInstrumentationSettings(); + AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings); + + var results = BuildPipeline.BuildPlayer(buildPlayerOptions); + AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone); + + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } +} + +#endif diff --git a/sample/Assets/Editor/MacBuilder.cs.meta b/sample/Assets/Editor/MacBuilder.cs.meta new file mode 100644 index 000000000..1c0e753f8 --- /dev/null +++ b/sample/Assets/Editor/MacBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1eac0e7f392c49e39b00d289dac3948 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sample/Assets/Resources.meta b/sample/Assets/Resources.meta new file mode 100644 index 000000000..fe4626cae --- /dev/null +++ b/sample/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db7e6b8097b034c0496a426a80920c6c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sample/Assets/Resources/AltTester.meta b/sample/Assets/Resources/AltTester.meta new file mode 100644 index 000000000..637aef4c8 --- /dev/null +++ b/sample/Assets/Resources/AltTester.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e09f1d13641c24565a740d81a2ab6c8f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sample/Assets/Resources/AltTester/AltTesterInputAxisData.json b/sample/Assets/Resources/AltTester/AltTesterInputAxisData.json new file mode 100644 index 000000000..df6209207 --- /dev/null +++ b/sample/Assets/Resources/AltTester/AltTesterInputAxisData.json @@ -0,0 +1 @@ +[{"name":"Horizontal","negativeButton":"left","positiveButton":"right","altPositiveButton":"d","altNegativeButton":"a","type":0,"axisDirection":0},{"name":"Vertical","negativeButton":"down","positiveButton":"up","altPositiveButton":"w","altNegativeButton":"s","type":0,"axisDirection":0},{"name":"Fire1","negativeButton":"","positiveButton":"left ctrl","altPositiveButton":"mouse 0","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Fire2","negativeButton":"","positiveButton":"left alt","altPositiveButton":"mouse 1","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Fire3","negativeButton":"","positiveButton":"left shift","altPositiveButton":"mouse 2","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Jump","negativeButton":"","positiveButton":"space","altPositiveButton":"","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Mouse X","negativeButton":"","positiveButton":"","altPositiveButton":"","altNegativeButton":"","type":1,"axisDirection":0},{"name":"Mouse Y","negativeButton":"","positiveButton":"","altPositiveButton":"","altNegativeButton":"","type":1,"axisDirection":1},{"name":"Mouse ScrollWheel","negativeButton":"","positiveButton":"","altPositiveButton":"","altNegativeButton":"","type":1,"axisDirection":2},{"name":"Horizontal","negativeButton":"","positiveButton":"","altPositiveButton":"","altNegativeButton":"","type":2,"axisDirection":0},{"name":"Vertical","negativeButton":"","positiveButton":"","altPositiveButton":"","altNegativeButton":"","type":2,"axisDirection":1},{"name":"Fire1","negativeButton":"","positiveButton":"joystick button 0","altPositiveButton":"","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Fire2","negativeButton":"","positiveButton":"joystick button 1","altPositiveButton":"","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Fire3","negativeButton":"","positiveButton":"joystick button 2","altPositiveButton":"","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Jump","negativeButton":"","positiveButton":"joystick button 3","altPositiveButton":"","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Submit","negativeButton":"","positiveButton":"return","altPositiveButton":"joystick button 0","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Submit","negativeButton":"","positiveButton":"enter","altPositiveButton":"space","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Cancel","negativeButton":"","positiveButton":"escape","altPositiveButton":"joystick button 1","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Enable Debug Button 1","negativeButton":"","positiveButton":"left ctrl","altPositiveButton":"joystick button 8","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Enable Debug Button 2","negativeButton":"","positiveButton":"backspace","altPositiveButton":"joystick button 9","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Reset","negativeButton":"","positiveButton":"left alt","altPositiveButton":"joystick button 1","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Next","negativeButton":"","positiveButton":"page down","altPositiveButton":"joystick button 5","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Previous","negativeButton":"","positiveButton":"page up","altPositiveButton":"joystick button 4","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Validate","negativeButton":"","positiveButton":"return","altPositiveButton":"joystick button 0","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Persistent","negativeButton":"","positiveButton":"right shift","altPositiveButton":"joystick button 2","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Multiplier","negativeButton":"","positiveButton":"left shift","altPositiveButton":"joystick button 3","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Horizontal","negativeButton":"left","positiveButton":"right","altPositiveButton":"","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Vertical","negativeButton":"down","positiveButton":"up","altPositiveButton":"","altNegativeButton":"","type":0,"axisDirection":0},{"name":"Debug Vertical","negativeButton":"down","positiveButton":"up","altPositiveButton":"","altNegativeButton":"","type":2,"axisDirection":6},{"name":"Debug Horizontal","negativeButton":"left","positiveButton":"right","altPositiveButton":"","altNegativeButton":"","type":2,"axisDirection":5}] \ No newline at end of file diff --git a/sample/Assets/Resources/AltTester/AltTesterInputAxisData.json.meta b/sample/Assets/Resources/AltTester/AltTesterInputAxisData.json.meta new file mode 100644 index 000000000..12701f0db --- /dev/null +++ b/sample/Assets/Resources/AltTester/AltTesterInputAxisData.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1dc51dfbebb7443b1992ba67c48fd7d1 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sample/Assets/Scenes/UnauthenticatedScene.unity b/sample/Assets/Scenes/UnauthenticatedScene.unity index 8837c89c1..3aa97dc66 100644 --- a/sample/Assets/Scenes/UnauthenticatedScene.unity +++ b/sample/Assets/Scenes/UnauthenticatedScene.unity @@ -330,6 +330,88 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 27701369} m_CullTransparentMesh: 1 +--- !u!1 &63211680 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 63211681} + - component: {fileID: 63211683} + - component: {fileID: 63211682} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &63211681 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 63211680} + m_LocalRotation: {x: -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: 891178850} + 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: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &63211682 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 63211680} + 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: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Use PKCE (Recommended) + +' +--- !u!222 &63211683 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 63211680} + m_CullTransparentMesh: 1 --- !u!1 &109433253 GameObject: m_ObjectHideFlags: 0 @@ -364,7 +446,7 @@ RectTransform: 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_AnchoredPosition: {x: -0.000030040741, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 1} --- !u!1 &167431870 @@ -478,7 +560,7 @@ RectTransform: - {fileID: 27701370} - {fileID: 1403438476} m_Father: {fileID: 1850628784} - m_RootOrder: 6 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -571,7 +653,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &270318905 RectTransform: m_ObjectHideFlags: 0 @@ -586,7 +668,7 @@ RectTransform: m_Children: - {fileID: 778650640} m_Father: {fileID: 1850628784} - m_RootOrder: 4 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -705,7 +787,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &291915219 RectTransform: m_ObjectHideFlags: 0 @@ -720,7 +802,7 @@ RectTransform: m_Children: - {fileID: 415206} m_Father: {fileID: 1850628784} - m_RootOrder: 2 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -897,6 +979,83 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 416242723} m_CullTransparentMesh: 1 +--- !u!1 &502683867 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 502683868} + - component: {fileID: 502683870} + - component: {fileID: 502683869} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &502683868 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502683867} + m_LocalRotation: {x: -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: 654278397} + m_Father: {fileID: 1897314388} + 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: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &502683869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502683867} + 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 &502683870 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502683867} + m_CullTransparentMesh: 1 --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -999,7 +1158,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &613764572 RectTransform: m_ObjectHideFlags: 0 @@ -1014,7 +1173,7 @@ RectTransform: m_Children: - {fileID: 1173574367} m_Father: {fileID: 1850628784} - m_RootOrder: 3 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1115,6 +1274,82 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 613764571} m_CullTransparentMesh: 1 +--- !u!1 &654278396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 654278397} + - component: {fileID: 654278399} + - component: {fileID: 654278398} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &654278397 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654278396} + m_LocalRotation: {x: -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: 502683868} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &654278398 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654278396} + 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: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &654278399 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654278396} + m_CullTransparentMesh: 1 --- !u!1 &778650639 GameObject: m_ObjectHideFlags: 0 @@ -1275,7 +1510,7 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 819421121} m_CullTransparentMesh: 1 ---- !u!1 &892906552 +--- !u!1 &891178849 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1283,48 +1518,47 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 892906553} - - component: {fileID: 892906556} - - component: {fileID: 892906555} - - component: {fileID: 892906554} + - component: {fileID: 891178850} + - component: {fileID: 891178851} m_Layer: 5 - m_Name: LoginBtn + m_Name: UsePKCE m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &892906553 +--- !u!224 &891178850 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 892906552} + m_GameObject: {fileID: 891178849} m_LocalRotation: {x: 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: 1077423227} + - {fileID: 1896785204} + - {fileID: 63211681} m_Father: {fileID: 1850628784} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 76, y: -100} - m_SizeDelta: {x: 120, y: 30} + m_AnchoredPosition: {x: 395, y: -100.00003} + m_SizeDelta: {x: 200, y: 20} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &892906554 +--- !u!114 &891178851 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 892906552} + m_GameObject: {fileID: 891178849} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -1355,33 +1589,121 @@ MonoBehaviour: m_SelectedTrigger: Selected m_DisabledTrigger: Disabled m_Interactable: 1 - m_TargetGraphic: {fileID: 892906555} - m_OnClick: + m_TargetGraphic: {fileID: 1896785205} + toggleTransition: 1 + graphic: {fileID: 1586568892} + m_Group: {fileID: 0} + onValueChanged: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1192763472} - m_TargetAssemblyTypeName: UnauthenticatedScript, Assembly-CSharp - m_MethodName: Login - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &892906555 -MonoBehaviour: + m_Calls: [] + m_IsOn: 0 +--- !u!1 &892906552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 892906553} + - component: {fileID: 892906556} + - component: {fileID: 892906555} + - component: {fileID: 892906554} + m_Layer: 5 + m_Name: LoginBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &892906553 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 892906552} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: + m_LocalRotation: {x: 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: 1077423227} + m_Father: {fileID: 1850628784} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 76, y: -100} + m_SizeDelta: {x: 120, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &892906554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892906552} + 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: 892906555} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1192763472} + m_TargetAssemblyTypeName: UnauthenticatedScript, Assembly-CSharp + m_MethodName: Login + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &892906555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892906552} + 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} @@ -1694,6 +2016,9 @@ MonoBehaviour: ConnectButton: {fileID: 291915222} ReloginButton: {fileID: 613764573} ReconnectButton: {fileID: 270318906} + SelectLoginMethod: {fileID: 1523853787} + UseDeviceCodeAuthToggle: {fileID: 1897314389} + UsePKCEToggle: {fileID: 891178851} --- !u!4 &1192763473 Transform: m_ObjectHideFlags: 0 @@ -1910,6 +2235,86 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -20, y: -20} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1523853785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1523853786} + - component: {fileID: 1523853788} + - component: {fileID: 1523853787} + m_Layer: 5 + m_Name: SelectLoginMethod + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1523853786 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523853785} + m_LocalRotation: {x: 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: 1850628784} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 76, y: -100} + m_SizeDelta: {x: 120, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1523853787 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523853785} + 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: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Login method +--- !u!222 &1523853788 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523853785} + m_CullTransparentMesh: 1 --- !u!1 &1557497261 GameObject: m_ObjectHideFlags: 0 @@ -2011,7 +2416,7 @@ RectTransform: m_Children: - {fileID: 819421122} m_Father: {fileID: 1850628784} - m_RootOrder: 5 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -2112,6 +2517,82 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1582459300} m_CullTransparentMesh: 1 +--- !u!1 &1586568890 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1586568891} + - component: {fileID: 1586568893} + - component: {fileID: 1586568892} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1586568891 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1586568890} + m_LocalRotation: {x: -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: 1896785204} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1586568892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1586568890} + 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: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1586568893 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1586568890} + m_CullTransparentMesh: 1 --- !u!1 &1661390143 GameObject: m_ObjectHideFlags: 0 @@ -2272,6 +2753,88 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: +--- !u!1 &1704126031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1704126032} + - component: {fileID: 1704126034} + - component: {fileID: 1704126033} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1704126032 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704126031} + m_LocalRotation: {x: -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: 1897314388} + 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: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1704126033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704126031} + 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: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Use Device Code Auth + +' +--- !u!222 &1704126034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704126031} + m_CullTransparentMesh: 1 --- !u!1 &1850628783 GameObject: m_ObjectHideFlags: 0 @@ -2304,6 +2867,9 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1661390144} + - {fileID: 1523853786} + - {fileID: 891178850} + - {fileID: 1897314388} - {fileID: 892906553} - {fileID: 291915219} - {fileID: 613764572} @@ -2379,3 +2945,167 @@ Canvas: m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 +--- !u!1 &1896785203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1896785204} + - component: {fileID: 1896785206} + - component: {fileID: 1896785205} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1896785204 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1896785203} + m_LocalRotation: {x: -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: 1586568891} + m_Father: {fileID: 891178850} + 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: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1896785205 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1896785203} + 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 &1896785206 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1896785203} + m_CullTransparentMesh: 1 +--- !u!1 &1897314387 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1897314388} + - component: {fileID: 1897314389} + m_Layer: 5 + m_Name: UseDeviceCodeAuth + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1897314388 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897314387} + m_LocalRotation: {x: 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: 502683868} + - {fileID: 1704126032} + m_Father: {fileID: 1850628784} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 220.20392, y: -100} + m_SizeDelta: {x: 136.4078, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1897314389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897314387} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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: 502683869} + toggleTransition: 1 + graphic: {fileID: 654278398} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 0 diff --git a/sample/Assets/Scripts/AuthenticatedScript.cs b/sample/Assets/Scripts/AuthenticatedScript.cs index e433917f8..29788c724 100644 --- a/sample/Assets/Scripts/AuthenticatedScript.cs +++ b/sample/Assets/Scripts/AuthenticatedScript.cs @@ -190,7 +190,14 @@ public async void Logout() { ShowOutput("Logging out..."); #if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX - await passport.LogoutPKCE(); + if (SampleAppManager.UsePKCE) + { + await passport.LogoutPKCE(); + } + else + { + await passport.Logout(); + } #else await passport.Logout(); #endif diff --git a/sample/Assets/Scripts/SampleAppManager.cs b/sample/Assets/Scripts/SampleAppManager.cs index f5794803a..e93f6f695 100644 --- a/sample/Assets/Scripts/SampleAppManager.cs +++ b/sample/Assets/Scripts/SampleAppManager.cs @@ -1,4 +1,6 @@ public static class SampleAppManager { + public static bool InitialisedPassport { get; set; } public static bool IsConnected { get; set; } + public static bool UsePKCE { get; set; } } \ No newline at end of file diff --git a/sample/Assets/Scripts/UnauthenticatedScript.cs b/sample/Assets/Scripts/UnauthenticatedScript.cs index f77b7d186..db098f220 100644 --- a/sample/Assets/Scripts/UnauthenticatedScript.cs +++ b/sample/Assets/Scripts/UnauthenticatedScript.cs @@ -15,37 +15,79 @@ public class UnauthenticatedScript : MonoBehaviour [SerializeField] private Button ConnectButton; [SerializeField] private Button ReloginButton; [SerializeField] private Button ReconnectButton; + [SerializeField] private Text SelectLoginMethod; + [SerializeField] private Toggle UseDeviceCodeAuthToggle; + [SerializeField] private Toggle UsePKCEToggle; private Passport passport; #pragma warning restore CS8618 - async void Start() + void Start() { - try + Debug.Log("Starting..."); + if (!SampleAppManager.InitialisedPassport) { - ShowOutput("Starting..."); - LoginButton.gameObject.SetActive(false); - ConnectButton.gameObject.SetActive(false); + // Set up login method toggles +#if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX + // Allow users to select which login method + Debug.Log(""); + ShowSelectLoginMethod(true); + UseDeviceCodeAuthToggle.onValueChanged.AddListener(delegate (bool on) + { + SampleAppManager.UsePKCE = !on; + ShowSelectLoginMethod(false); + InitialisePassport(); + }); + UsePKCEToggle.onValueChanged.AddListener(delegate (bool on) + { + SampleAppManager.UsePKCE = on; + ShowSelectLoginMethod(false); + InitialisePassport(); + }); +#else + // Users cannot select which login method as only device code auth is supported + ShowSelectLoginMethod(false); + InitialisePassport(); +#endif + } + else + { + // This is called if user logged out from the Authenticated Scene + ShowSelectLoginMethod(false); ReloginButton.gameObject.SetActive(false); ReconnectButton.gameObject.SetActive(false); + LoginButton.gameObject.SetActive(true); + ConnectButton.gameObject.SetActive(true); + passport = Passport.Instance; + } + } + + private void ShowSelectLoginMethod(bool show) + { + SelectLoginMethod.gameObject.SetActive(show); + UseDeviceCodeAuthToggle.gameObject.SetActive(show); + UsePKCEToggle.gameObject.SetActive(show); + } + + private async void InitialisePassport() + { + try + { + ShowOutput("Initilising Passport"); + // Initiliase Passport string clientId = "ZJL7JvetcDFBNDlgRs5oJoxuAUUl6uQj"; string environment = Immutable.Passport.Model.Environment.SANDBOX; - string redirectUri = null; - string logoutRedirectUri = null; - -#if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX - redirectUri = "imxsample://callback"; - logoutRedirectUri = "imxsample://callback/logout"; -#endif + string redirectUri = SampleAppManager.UsePKCE ? "imxsample://callback" : null; + string logoutRedirectUri = SampleAppManager.UsePKCE ? "imxsample://callback/logout" : null; passport = await Passport.Init( #if UNITY_STANDALONE_WIN || (UNITY_ANDROID && UNITY_EDITOR_WIN) || (UNITY_IPHONE && UNITY_EDITOR_WIN) - clientId, environment, redirectUri, logoutRedirectUri, 10000 + clientId, environment, redirectUri, logoutRedirectUri, 10000 #else - clientId, environment, redirectUri, logoutRedirectUri + clientId, environment, redirectUri, logoutRedirectUri #endif - ); + ); // Listen to Passport Auth events passport.OnAuthEvent += OnPassportAuthEvent; @@ -58,11 +100,12 @@ async void Start() LoginButton.gameObject.SetActive(!hasCredsSaved); ConnectButton.gameObject.SetActive(!hasCredsSaved); + SampleAppManager.InitialisedPassport = true; ShowOutput("Ready"); } catch (Exception ex) { - ShowOutput($"Start() error: {ex.Message}"); + ShowOutput($"Initialise Passport error: {ex.Message}"); } } @@ -79,7 +122,14 @@ public async void Login() LoginButton.gameObject.SetActive(false); #if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX - await passport.LoginPKCE(); + if (SampleAppManager.UsePKCE) + { + await passport.LoginPKCE(); + } + else + { + await passport.Login(); + } #else await passport.Login(); #endif @@ -101,12 +151,7 @@ public async void Login() else { error = $"Login() error: {ex.Message}"; - // Restart everything -#if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX - await passport.Logout(); -#else - await passport.LogoutPKCE(); -#endif + await Logout(); } Debug.Log(error); @@ -149,7 +194,14 @@ public async void Connect() ConnectButton.gameObject.SetActive(false); #if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX - await passport.ConnectImxPKCE(); + if (SampleAppManager.UsePKCE) + { + await passport.ConnectImxPKCE(); + } + else + { + await passport.ConnectImx(); + } #else await passport.ConnectImx(); #endif @@ -171,12 +223,7 @@ public async void Connect() else { error = $"Connect() error: {ex.Message}"; - // Restart everything -#if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX - await passport.Logout(); -#else - await passport.LogoutPKCE(); -#endif + await Logout(); } Debug.Log(error); @@ -211,6 +258,29 @@ public async void Reconnect() } } + private async UniTask Logout() + { + try + { +#if (UNITY_ANDROID && !UNITY_EDITOR_WIN) || (UNITY_IPHONE && !UNITY_EDITOR_WIN) || UNITY_STANDALONE_OSX + if (SampleAppManager.UsePKCE) + { + await passport.LogoutPKCE(); + } + else + { + await passport.Logout(); + } +#else + await passport.Logout(); +#endif + } + catch (Exception ex) + { + ShowOutput($"Logout() error: {ex.Message}"); + } + } + public void ClearStorageAndCache() { #if (UNITY_IPHONE && !UNITY_EDITOR) || (UNITY_ANDROID && !UNITY_EDITOR) diff --git a/sample/Packages/manifest.json b/sample/Packages/manifest.json index b9f0a9a59..04e258f76 100644 --- a/sample/Packages/manifest.json +++ b/sample/Packages/manifest.json @@ -1,5 +1,6 @@ { "dependencies": { + "com.alttester.sdk": "2.1.1", "com.cysharp.unitask": "2.3.3", "com.immutable.passport": "file:../../src/Packages/Passport", "com.unity.ai.navigation": "1.1.4", @@ -7,6 +8,8 @@ "com.unity.ide.vscode": "1.2.5", "com.unity.test-framework": "1.3.0", "com.unity.testtools.codecoverage": "1.2.5", + "com.unity.editorcoroutines": "1.0.0", + "com.unity.textmeshpro": "3.0.9", "com.unity.visualscripting": "1.9.1", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", @@ -47,6 +50,13 @@ "scopes": [ "com.cysharp.unitask" ] + }, + { + "name": "package.openupm.com", + "url": "https://package.openupm.com", + "scopes": [ + "com.alttester.sdk" + ] } ] -} +} \ No newline at end of file diff --git a/sample/Packages/packages-lock.json b/sample/Packages/packages-lock.json index c16c63bda..e24504bdb 100644 --- a/sample/Packages/packages-lock.json +++ b/sample/Packages/packages-lock.json @@ -1,5 +1,12 @@ { "dependencies": { + "com.alttester.sdk": { + "version": "2.1.1", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://package.openupm.com" + }, "com.cysharp.unitask": { "version": "2.3.3", "depth": 0, @@ -25,6 +32,13 @@ }, "url": "https://packages.unity.com" }, + "com.unity.editorcoroutines": { + "version": "1.0.0", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, "com.unity.ext.nunit": { "version": "2.0.3", "depth": 1, @@ -83,6 +97,15 @@ }, "url": "https://packages.unity.com" }, + "com.unity.textmeshpro": { + "version": "3.0.9", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0" + }, + "url": "https://packages.unity.com" + }, "com.unity.ugui": { "version": "1.0.0", "depth": 1, diff --git a/sample/ProjectSettings/PackageManagerSettings.asset b/sample/ProjectSettings/PackageManagerSettings.asset index 7e6af3ad6..d86a61952 100644 --- a/sample/ProjectSettings/PackageManagerSettings.asset +++ b/sample/ProjectSettings/PackageManagerSettings.asset @@ -34,11 +34,19 @@ MonoBehaviour: m_IsDefault: 0 m_Capabilities: 0 m_ConfigSource: 4 - m_UserSelectedRegistryName: Open UPM Packages + - m_Id: scoped:project:package.openupm.com + m_Name: package.openupm.com + m_Url: https://package.openupm.com + m_Scopes: + - com.alttester.sdk + m_IsDefault: 0 + m_Capabilities: 0 + m_ConfigSource: 4 + m_UserSelectedRegistryName: package.openupm.com m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: m_Modified: 0 m_ErrorMessage: - m_UserModificationsInstanceId: -830 + m_UserModificationsInstanceId: -828 m_OriginalInstanceId: -832 m_LoadAssets: 0 diff --git a/sample/ProjectSettings/ProjectSettings.asset b/sample/ProjectSettings/ProjectSettings.asset index 1288051bf..e870ef3d4 100644 --- a/sample/ProjectSettings/ProjectSettings.asset +++ b/sample/ProjectSettings/ProjectSettings.asset @@ -765,7 +765,8 @@ PlayerSettings: webGLThreadsSupport: 0 webGLDecompressionFallback: 0 webGLPowerPreference: 2 - scriptingDefineSymbols: {} + scriptingDefineSymbols: + Standalone: additionalCompilerArguments: Standalone: - -nullable+