diff --git a/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources.meta b/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources.meta deleted file mode 100644 index fa5da854b..000000000 --- a/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0a26dcfb4051398409745656f6a3a2cc -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources/HyperPlayConnectionProvider.asset b/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources/HyperPlayConnectionProvider.asset deleted file mode 100644 index c30bdef28..000000000 --- a/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources/HyperPlayConnectionProvider.asset +++ /dev/null @@ -1,17 +0,0 @@ -%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: 73b5e9380c5275043b3558f49f807100, type: 3} - m_Name: HyperPlayConnectionProvider - m_EditorClassIdentifier: - k__BackingField: HyperPlay - k__BackingField: {fileID: 8599114313589093787, guid: 71b112e16f898d140935553a4b33ae1f, type: 3} - k__BackingField: 1 diff --git a/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources/HyperPlayConnectionProvider.asset.meta b/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources/HyperPlayConnectionProvider.asset.meta deleted file mode 100644 index 751745b49..000000000 --- a/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Resources/HyperPlayConnectionProvider.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 70ad5245d5b5895448ba4fd9ad57ea95 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Scripts/HyperPlayConnectionProvider.cs b/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Scripts/HyperPlayConnectionProvider.cs index 6362bb5c5..59508f04b 100644 --- a/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Scripts/HyperPlayConnectionProvider.cs +++ b/Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Scripts/HyperPlayConnectionProvider.cs @@ -5,6 +5,7 @@ using ChainSafe.Gaming.Web3.Build; using ChainSafe.Gaming.Web3.Evm.Wallet; using UnityEngine; +using UnityEngine.UI; namespace ChainSafe.Gaming.HyperPlay { @@ -14,6 +15,9 @@ namespace ChainSafe.Gaming.HyperPlay [CreateAssetMenu(menuName = "ChainSafe/Connection Provider/HyperPlay", fileName = nameof(HyperPlayConnectionProvider))] public class HyperPlayConnectionProvider : RestorableConnectionProvider { + [field: SerializeField, DefaultAssetValue("Packages/io.chainsafe.web3-unity.hyperplay/Runtime/Prefabs/HyperPlayRow.prefab")] + public override Button ConnectButtonRow { get; protected set; } + public override bool IsAvailable => Application.isEditor || !Application.isMobilePlatform; private bool _storedSessionAvailable; diff --git a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources.meta b/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources.meta deleted file mode 100644 index eb97e2042..000000000 --- a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3b7a427c677a5a7489abfb303571409b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources/Web3AuthConnectionProvider.asset b/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources/Web3AuthConnectionProvider.asset deleted file mode 100644 index b1d9f4ffe..000000000 --- a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources/Web3AuthConnectionProvider.asset +++ /dev/null @@ -1,35 +0,0 @@ -%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: 6b435f36106e244449abb70cf6f41008, type: 3} - m_Name: Web3AuthConnectionProvider - m_EditorClassIdentifier: - k__BackingField: Web3Auth - k__BackingField: {fileID: 8599114313589093787, guid: 163bbaaeb51883442a20ea7532888a43, type: 3} - k__BackingField: 1 - clientId: BDoIQpmwh4ow7oDMshLsPTj0JHGnS-0ZsB14fMzZ6CnxB0kMJf4o3oWvFWiISuL_p7PzyGx4v7iGHDQQF4lNL-s - redirectUri: torusapp://io.chainsafe.gamingsdk.sdkdemoscene/auth - network: 1 - modalPrefab: {fileID: 1060439634540712661, guid: 42c53f26848d1d54a9ffe18fae333758, type: 3} - enableWalletGui: 1 - web3AuthWalletGUIPrefab: {fileID: 7656622686525558909, guid: b394e6c49b9bd734089cea0293265bd3, type: 3} - walletGuiConfig: - DisplayWalletIcon: 1 - AutoPopUpWalletOnTx: 1 - AutoConfirmTransactions: 0 - WalletIcon: {fileID: 21300000, guid: 55a46a48cd53d834f99fda690cfea4b1, type: 3} - WalletLogo: {fileID: 21300000, guid: ab400fd9b39316240b30631965553264, type: 3} - DisplayFont: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - PrimaryBackgroundColour: {r: 0, g: 0, b: 0, a: 0.7254902} - MenuBackgroundColour: {r: 0, g: 0, b: 0, a: 1} - PrimaryTextColour: {r: 1, g: 1, b: 1, a: 1} - SecondaryTextColour: {r: 0.42745098, g: 0.85882354, b: 0.29411766, a: 1} - BorderButtonColour: {r: 1, g: 1, b: 1, a: 1} diff --git a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources/Web3AuthConnectionProvider.asset.meta b/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources/Web3AuthConnectionProvider.asset.meta deleted file mode 100644 index abf411a79..000000000 --- a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Resources/Web3AuthConnectionProvider.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5a662f0c96c53db48b29a3aa7ab0f102 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/WalletGUI/Scripts/Web3AuthWalletGUI.cs b/Packages/io.chainsafe.web3-unity.web3auth/Runtime/WalletGUI/Scripts/Web3AuthWalletGUI.cs index 7060df749..f1c529972 100644 --- a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/WalletGUI/Scripts/Web3AuthWalletGUI.cs +++ b/Packages/io.chainsafe.web3-unity.web3auth/Runtime/WalletGUI/Scripts/Web3AuthWalletGUI.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using ChainSafe.Gaming; using ChainSafe.Gaming.UnityPackage; using ChainSafe.GamingSdk.Web3Auth; using TMPro; @@ -150,17 +151,21 @@ private void SetButtonsAndLines() [Serializable] public class Web3AuthWalletConfig { - public bool DisplayWalletIcon; - public bool AutoPopUpWalletOnTx; + public bool DisplayWalletIcon = true; + public bool AutoPopUpWalletOnTx = true; public bool AutoConfirmTransactions; + [DefaultAssetValue("Packages/io.chainsafe.web3-unity.web3auth/Runtime/Sprites/OpenWalletIcon.png")] public Sprite WalletIcon; + [DefaultAssetValue("Packages/io.chainsafe.web3-unity.web3auth/Runtime/Sprites/Logo.png")] public Sprite WalletLogo; + [DefaultAssetValue("Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset")] public TMP_FontAsset DisplayFont; - public Color PrimaryBackgroundColour; - public Color MenuBackgroundColour; - public Color PrimaryTextColour; - public Color SecondaryTextColour; - public Color BorderButtonColour; + + public Color PrimaryBackgroundColour = new Color(0f, 0f, 0f, .725f); + public Color MenuBackgroundColour = Color.black; + public Color PrimaryTextColour = Color.white; + public Color SecondaryTextColour = new Color(.4f, .85f, .3f); + public Color BorderButtonColour = Color.white; } #endregion diff --git a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Web3AuthConnectionProvider.cs b/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Web3AuthConnectionProvider.cs index b04b9c09d..4fc354370 100644 --- a/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Web3AuthConnectionProvider.cs +++ b/Packages/io.chainsafe.web3-unity.web3auth/Runtime/Web3AuthConnectionProvider.cs @@ -13,6 +13,7 @@ using Microsoft.Extensions.DependencyInjection; using Nethereum.Hex.HexTypes; using UnityEngine; +using UnityEngine.UI; using Network = Web3Auth.Network; /// @@ -21,18 +22,25 @@ [CreateAssetMenu(menuName = "ChainSafe/Connection Provider/Web3Auth", fileName = nameof(Web3AuthConnectionProvider))] public class Web3AuthConnectionProvider : RestorableConnectionProvider, ILogoutHandler, IWeb3InitializedHandler { + [field: SerializeField, DefaultAssetValue("Packages/io.chainsafe.web3-unity.web3auth/Runtime/Prefabs/Web3AuthRow.prefab")] + public override Button ConnectButtonRow { get; protected set; } + [SerializeField] private string clientId; [SerializeField] private string redirectUri; [SerializeField] private Network network; [Space] - [SerializeField] private GameObject modalPrefab; + [SerializeField, DefaultAssetValue("Packages/io.chainsafe.web3-unity.web3auth/Runtime/Prefabs/Web3Auth.prefab")] + private GameObject modalPrefab; [Space] [SerializeField] private bool enableWalletGui; - [SerializeField] private Web3AuthWalletGUI web3AuthWalletGUIPrefab; + + [SerializeField, DefaultAssetValue("Packages/io.chainsafe.web3-unity.web3auth/Runtime/WalletGUI/Prefabs/Web3AuthWalletGUI.prefab")] + private Web3AuthWalletGUI web3AuthWalletGUIPrefab; + [SerializeField] private Web3AuthWalletGUI.Web3AuthWalletConfig walletGuiConfig; private Web3AuthModal _modal; diff --git a/Packages/io.chainsafe.web3-unity/Editor/ConnectionHandlerEditor.cs b/Packages/io.chainsafe.web3-unity/Editor/ConnectionHandlerEditor.cs index 2a950fcdd..d3c3a338b 100644 --- a/Packages/io.chainsafe.web3-unity/Editor/ConnectionHandlerEditor.cs +++ b/Packages/io.chainsafe.web3-unity/Editor/ConnectionHandlerEditor.cs @@ -1,4 +1,7 @@ +using System; using System.Collections.Generic; +using System.IO; +using System.Linq; using ChainSafe.Gaming.UnityPackage.Connection; using Newtonsoft.Json; using UnityEditor; @@ -8,6 +11,16 @@ [CustomEditor(typeof(ConnectionHandler))] public class ConnectionHandlerEditor : Editor { + private readonly List _providerTypes = new List(); + + private Dictionary _editors = new Dictionary(); + + private Dictionary _editorFoldouts = new Dictionary(); + + private List _allProviders = new List(); + + private readonly List _availableProviders = new List(); + public struct Provider { [JsonProperty("name")] @@ -18,23 +31,41 @@ public struct Provider } private bool _foldout; - + + private void OnEnable() + { + AppDomain.CurrentDomain.GetAssemblies().ToList().ForEach(assembly => + { + _providerTypes.AddRange(assembly.GetTypes().Where(myType => myType.IsClass && !myType.IsAbstract && myType.IsSubclassOf(typeof(ConnectionProvider)))); + }); + + _editors = _providerTypes.ToDictionary(t => t, t => default(Editor)); + + _editorFoldouts = _providerTypes.ToDictionary(t => t, t => false); + + _allProviders = Resources.LoadAll(string.Empty).ToList(); + } + public override void OnInspectorGUI() { base.OnInspectorGUI(); - var providers = Resources.LoadAll(string.Empty); - _foldout = EditorGUILayout.Foldout(_foldout, "Connection Providers"); if (_foldout) { - List availableProviders = new List(); + EditorGUILayout.BeginVertical(); + // Get provider display name. var providersProperty = serializedObject.FindProperty("providers"); - int arraySize = providersProperty.arraySize; + _allProviders = _allProviders.Where(p => p != null).ToList(); + // Get available providers. + _availableProviders.Clear(); + + int arraySize = providersProperty.arraySize; + for (int i = 0; i < arraySize; i++) { var providerProperty = providersProperty.GetArrayElementAtIndex(i); @@ -48,49 +79,109 @@ public override void OnInspectorGUI() return; } - availableProviders.Add(providerProperty.objectReferenceValue as ConnectionProvider); + _availableProviders.Add(providerProperty.objectReferenceValue as ConnectionProvider); } - foreach (var provider in providers) + foreach (Type providerType in _providerTypes) { - if (provider == null) + EditorGUILayout.BeginVertical(GUI.skin.box); + + string providerDisplayName = providerType.Name; + + if (providerDisplayName.Contains(nameof(ConnectionProvider))) { - Debug.LogWarning($"Error loading {provider.Name} Provider."); - - continue; + providerDisplayName = providerDisplayName.Replace(nameof(ConnectionProvider), string.Empty); } - - EditorGUI.BeginChangeCheck(); - bool isAvailable = availableProviders.Contains(provider); + ConnectionProvider provider = _allProviders.FirstOrDefault(p => p.GetType() == providerType); - isAvailable = GUILayout.Toggle(isAvailable, provider.Name); - - if (EditorGUI.EndChangeCheck()) + if (provider != null) { - if (isAvailable) + EditorGUI.indentLevel++; + + _editorFoldouts[providerType] = EditorGUILayout.Foldout(_editorFoldouts[providerType], providerDisplayName); + + EditorGUI.indentLevel--; + + bool isAvailable = _availableProviders.Contains(provider); + + EditorGUILayout.BeginHorizontal(); + + EditorGUI.BeginChangeCheck(); + + isAvailable = EditorGUILayout.Toggle(isAvailable, GUILayout.MaxWidth(20)); + + if (EditorGUI.EndChangeCheck()) { - providersProperty.InsertArrayElementAtIndex(arraySize); + if (isAvailable) + { + providersProperty.InsertArrayElementAtIndex(providersProperty.arraySize); + + providersProperty.GetArrayElementAtIndex(providersProperty.arraySize - 1).objectReferenceValue = provider; + } - providersProperty.GetArrayElementAtIndex(arraySize).objectReferenceValue = provider; + else + { + int index = _availableProviders.IndexOf(provider); + + providersProperty.DeleteArrayElementAtIndex(index); + } + + serializedObject.ApplyModifiedProperties(); } + + EditorGUI.BeginDisabledGroup(true); + + EditorGUILayout.ObjectField(provider, typeof(ConnectionProvider), false); + + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.EndHorizontal(); - else + if (_editorFoldouts[providerType]) { - providersProperty.DeleteArrayElementAtIndex(availableProviders.IndexOf(provider)); + Editor editor = _editors[providerType]; + + if (!editor) + { + CreateCachedEditor(provider, null, ref editor); + + _editors[providerType] = editor; + } + + EditorGUILayout.BeginVertical(GUI.skin.box); + + editor.OnInspectorGUI(); + + EditorGUILayout.EndVertical(); } + } - serializedObject.ApplyModifiedProperties(); + else + { + EditorGUILayout.LabelField(providerDisplayName); - return; + if (GUILayout.Button("Add Provider", GUILayout.MaxWidth(100))) + { + ConnectionProvider newProvider = (ConnectionProvider) CreateInstance(providerType); + + AssetDatabase.CreateAsset(newProvider, Path.Combine("Assets", nameof(Resources), $"{providerType.Name}.asset")); + + //Update the list of providers. + _allProviders.Add(newProvider); + + providersProperty.InsertArrayElementAtIndex(providersProperty.arraySize); + + providersProperty.GetArrayElementAtIndex(providersProperty.arraySize - 1).objectReferenceValue = newProvider; + + serializedObject.ApplyModifiedProperties(); + } } - EditorGUI.BeginDisabledGroup(true); - - EditorGUILayout.ObjectField(provider, typeof(ConnectionProvider), false); - - EditorGUI.EndDisabledGroup(); + EditorGUILayout.EndVertical(); } + + EditorGUILayout.EndVertical(); } } } diff --git a/Packages/io.chainsafe.web3-unity/Editor/DefaultAssetValuePropertyDrawer.cs b/Packages/io.chainsafe.web3-unity/Editor/DefaultAssetValuePropertyDrawer.cs new file mode 100644 index 000000000..14261f422 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Editor/DefaultAssetValuePropertyDrawer.cs @@ -0,0 +1,28 @@ +using ChainSafe.Gaming; +using UnityEditor; +using UnityEngine; + +[CustomPropertyDrawer(typeof(DefaultAssetValueAttribute))] +public class DefaultAssetValuePropertyDrawer : PropertyDrawer +{ + private DefaultAssetValueAttribute _attribute; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.PropertyField(position, property, label, true); + + if (property.propertyType != SerializedPropertyType.ObjectReference || property.objectReferenceValue != null) + { + return; + } + + _attribute ??= (DefaultAssetValueAttribute)attribute; + + var asset = AssetDatabase.LoadAssetAtPath(_attribute.Path, fieldInfo.FieldType); + + if (asset != null) + { + property.objectReferenceValue = asset; + } + } +} diff --git a/Packages/io.chainsafe.web3-unity/Editor/DefaultAssetValuePropertyDrawer.cs.meta b/Packages/io.chainsafe.web3-unity/Editor/DefaultAssetValuePropertyDrawer.cs.meta new file mode 100644 index 000000000..ad3d86483 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Editor/DefaultAssetValuePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ecccce350df11fa48bfde1fac6483da5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Editor/ReadWriteProvider.cs b/Packages/io.chainsafe.web3-unity/Editor/ReadWriteProvider.cs deleted file mode 100644 index 7eb46d1a5..000000000 --- a/Packages/io.chainsafe.web3-unity/Editor/ReadWriteProvider.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.IO; -using System.Linq; -using ChainSafe.Gaming.UnityPackage.Connection; -using UnityEditor; -using UnityEngine; - -namespace ChainSafe.GamingSdk.Editor -{ - /// - /// Make connection providers read-write by moving it from packages into Assets/Resources. - /// - [InitializeOnLoad] - public class ReadWriteProvider - { - static ReadWriteProvider() - { - TryMovingConnectionProviders(); - } - - private static void TryMovingConnectionProviders() - { - var providers = Resources.LoadAll(string.Empty) - .Where(p => AssetDatabase.GetAssetPath(p).Contains("io.chainsafe.web3-unity")); - - foreach (var provider in providers) - { - string source = AssetDatabase.GetAssetPath(provider); - - string directory = Path.Combine(Application.dataPath, nameof(Resources)); - - string destination = Path.Combine(directory, Path.GetFileName(source)); - - if (!Directory.Exists(directory)) - { - Directory.CreateDirectory(directory); - } - - File.Move(source, destination); - } - } - } -} \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Editor/ReadWriteProvider.cs.meta b/Packages/io.chainsafe.web3-unity/Editor/ReadWriteProvider.cs.meta deleted file mode 100644 index 375538082..000000000 --- a/Packages/io.chainsafe.web3-unity/Editor/ReadWriteProvider.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 135f06edc29a460fab5cd314e9eb2de9 -timeCreated: 1723447911 \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Resources/MetamaskConnectionProvider.asset b/Packages/io.chainsafe.web3-unity/Runtime/Resources/MetamaskConnectionProvider.asset deleted file mode 100644 index 051c73007..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Resources/MetamaskConnectionProvider.asset +++ /dev/null @@ -1,16 +0,0 @@ -%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: 1b64d00084d2c544aa644a8a6010964d, type: 3} - m_Name: MetamaskConnectionProvider - m_EditorClassIdentifier: - k__BackingField: Metamask - k__BackingField: {fileID: 8599114313589093787, guid: 1200437cb83a29c4fb63faa44cf63f0d, type: 3} diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Resources/MetamaskConnectionProvider.asset.meta b/Packages/io.chainsafe.web3-unity/Runtime/Resources/MetamaskConnectionProvider.asset.meta deleted file mode 100644 index 1c2fc6272..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Resources/MetamaskConnectionProvider.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a15bdaf25319d6f44b48ff2159e4b7fb -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Resources/WalletConnectConnectionProvider.asset b/Packages/io.chainsafe.web3-unity/Runtime/Resources/WalletConnectConnectionProvider.asset deleted file mode 100644 index 6ccc016ab..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Resources/WalletConnectConnectionProvider.asset +++ /dev/null @@ -1,18 +0,0 @@ -%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: 582efc0fde77aab43a77ee4237ba305a, type: 3} - m_Name: WalletConnectConnectionProvider - m_EditorClassIdentifier: - k__BackingField: WalletConnect - k__BackingField: {fileID: 8599114313589093787, guid: 4591cfadb2bf9824da90ebf4005728a8, type: 3} - k__BackingField: 1 - walletConnectConfig: {fileID: 11400000, guid: fde7db0e37b4a884da1149e9f1999093, type: 2} diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Resources/WalletConnectConnectionProvider.asset.meta b/Packages/io.chainsafe.web3-unity/Runtime/Resources/WalletConnectConnectionProvider.asset.meta deleted file mode 100644 index cbee4d3c6..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Resources/WalletConnectConnectionProvider.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f891ba0f7fed9084982e95c96826fcb7 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/ConnectionProvider.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/ConnectionProvider.cs index 36d06576f..1977b7486 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/ConnectionProvider.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/ConnectionProvider.cs @@ -17,15 +17,10 @@ public abstract class ConnectionProvider : ScriptableObject, IWeb3BuilderService /// public abstract bool IsAvailable { get; } - /// - /// Name of connection provider. - /// - [field: SerializeField] public string Name { get; private set; } - /// /// Button to connect to the wallet. /// - [field: SerializeField] public Button ConnectButtonRow { get; private set; } + public abstract Button ConnectButtonRow { get; protected set; } /// /// Initialize Connection provider. diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/MetamaskConnectionProvider.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/MetamaskConnectionProvider.cs index 9de763bb0..0315a6997 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/MetamaskConnectionProvider.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/MetamaskConnectionProvider.cs @@ -5,15 +5,19 @@ #endif using ChainSafe.Gaming.Web3.Build; using UnityEngine; +using UnityEngine.UI; namespace ChainSafe.Gaming.UnityPackage.Connection { /// - /// Metamask connection provider used for connecting to a Metamask wallet. + /// Metamask's connection provider used for connecting to a Metamask wallet. /// [CreateAssetMenu(menuName = "ChainSafe/Connection Provider/Metamask", fileName = nameof(MetamaskConnectionProvider))] public class MetamaskConnectionProvider : ConnectionProvider { + [field: SerializeField, DefaultAssetValue("Packages/io.chainsafe.web3-unity/Runtime/Prefabs/MetamaskRow.prefab")] + public override Button ConnectButtonRow { get; protected set; } + public override bool IsAvailable => Application.platform == RuntimePlatform.WebGLPlayer && Application.isEditor == false; public override Task Initialize() diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/RestorableConnectionProvider.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/RestorableConnectionProvider.cs index 4e45e8022..5c87f5c9f 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/RestorableConnectionProvider.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/RestorableConnectionProvider.cs @@ -16,7 +16,7 @@ namespace ChainSafe.Gaming public abstract class RestorableConnectionProvider : ConnectionProvider { [field: SerializeField, Tooltip("Should this connection provider remember a previous session.")] - public bool RememberSession { get; private set; } + public bool RememberSession { get; private set; } = true; public override Web3Builder ConfigureServices(Web3Builder web3Builder) { diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/WalletConnectConnectionProvider.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/WalletConnectConnectionProvider.cs index 8b3ecebde..8d96ac006 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/WalletConnectConnectionProvider.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Connection/WalletConnectConnectionProvider.cs @@ -3,6 +3,7 @@ using ChainSafe.Gaming.Web3.Build; using ChainSafe.Gaming.Web3.Evm.Wallet; using UnityEngine; +using UnityEngine.UI; namespace ChainSafe.Gaming.UnityPackage.Connection { @@ -12,6 +13,9 @@ namespace ChainSafe.Gaming.UnityPackage.Connection [CreateAssetMenu(menuName = "ChainSafe/Connection Provider/Wallet Connect", fileName = nameof(WalletConnectConnectionProvider))] public class WalletConnectConnectionProvider : RestorableConnectionProvider { + [field: SerializeField, DefaultAssetValue("Packages/io.chainsafe.web3-unity/Runtime/Prefabs/WalletConnectRow.prefab")] + public override Button ConnectButtonRow { get; protected set; } + [SerializeField] private WalletConnectConfigSO walletConnectConfig; private bool _storedSessionAvailable; diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/DefaultAssetValueAttribute.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/DefaultAssetValueAttribute.cs new file mode 100644 index 000000000..4b3a17fc3 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/DefaultAssetValueAttribute.cs @@ -0,0 +1,16 @@ +using System; +using UnityEngine; + +namespace ChainSafe.Gaming +{ + [AttributeUsage(AttributeTargets.Field)] + public class DefaultAssetValueAttribute : PropertyAttribute + { + public string Path { get; private set; } + + public DefaultAssetValueAttribute(string path) + { + Path = path; + } + } +} diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/DefaultAssetValueAttribute.cs.meta b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/DefaultAssetValueAttribute.cs.meta new file mode 100644 index 000000000..fc8efd4b1 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/DefaultAssetValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff265dbbaffaf2d408f675a322d21996 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.6.0/Web3.Unity Samples/Scenes/SampleLogin - Connect Modal.unity b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.6.0/Web3.Unity Samples/Scenes/SampleLogin - Connect Modal.unity index 2dd0e7a9c..1d9b25cc3 100644 --- a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.6.0/Web3.Unity Samples/Scenes/SampleLogin - Connect Modal.unity +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.6.0/Web3.Unity Samples/Scenes/SampleLogin - Connect Modal.unity @@ -346,10 +346,10 @@ MonoBehaviour: m_EditorClassIdentifier: gelatoApiKey: 7MFQqyGS1Iui_e_MgmFW1BfbFeJ06g8nnL2oUTlIJug_ providers: - - {fileID: 11400000, guid: 835338196b5038d4b9351fadba9dac38, type: 2} - - {fileID: 11400000, guid: e5b50e2ca9fe0504daf70376bceb84ac, type: 2} - - {fileID: 11400000, guid: 0d7bd7ae4b3e79d489bbc54514343f5c, type: 2} - {fileID: 11400000, guid: e56cb66917f860e489d3ed4480b4681c, type: 2} + - {fileID: 11400000, guid: 0d7bd7ae4b3e79d489bbc54514343f5c, type: 2} + - {fileID: 11400000, guid: e5b50e2ca9fe0504daf70376bceb84ac, type: 2} + - {fileID: 11400000, guid: 835338196b5038d4b9351fadba9dac38, type: 2} --- !u!114 &1658652865 MonoBehaviour: m_ObjectHideFlags: 0