diff --git a/ChainSafe.Gaming.sln b/ChainSafe.Gaming.sln index 0f857f7d1..434f7db50 100644 --- a/ChainSafe.Gaming.sln +++ b/ChainSafe.Gaming.sln @@ -35,6 +35,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chainsafe.Gaming.Chainlink" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChainSafe.Gaming.Debugging", "src\ChainSafe.Gaming.Debugging\ChainSafe.Gaming.Debugging.csproj", "{88B2E2F4-96BC-44B1-AE4D-5FBA6B4C399F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChainSafe.Gaming.MetaMask", "src\ChainSafe.Gaming.MetaMask\ChainSafe.Gaming.MetaMask.csproj", "{0631D9F5-2942-4ECE-A0B5-7C3AF54E87AA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChainSafe.Gaming.MetaMask.Unity", "src\ChainSafe.Gaming.MetaMask.Unity\ChainSafe.Gaming.MetaMask.Unity.csproj", "{AF45F008-6ABC-4F37-82BF-4814B7F15B30}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -113,6 +117,18 @@ Global {88B2E2F4-96BC-44B1-AE4D-5FBA6B4C399F}.Release|Any CPU.Build.0 = Release|Any CPU {88B2E2F4-96BC-44B1-AE4D-5FBA6B4C399F}.Test|Any CPU.ActiveCfg = Debug|Any CPU {88B2E2F4-96BC-44B1-AE4D-5FBA6B4C399F}.Test|Any CPU.Build.0 = Debug|Any CPU + {0631D9F5-2942-4ECE-A0B5-7C3AF54E87AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0631D9F5-2942-4ECE-A0B5-7C3AF54E87AA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0631D9F5-2942-4ECE-A0B5-7C3AF54E87AA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0631D9F5-2942-4ECE-A0B5-7C3AF54E87AA}.Release|Any CPU.Build.0 = Release|Any CPU + {0631D9F5-2942-4ECE-A0B5-7C3AF54E87AA}.Test|Any CPU.ActiveCfg = Debug|Any CPU + {0631D9F5-2942-4ECE-A0B5-7C3AF54E87AA}.Test|Any CPU.Build.0 = Debug|Any CPU + {AF45F008-6ABC-4F37-82BF-4814B7F15B30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF45F008-6ABC-4F37-82BF-4814B7F15B30}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF45F008-6ABC-4F37-82BF-4814B7F15B30}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF45F008-6ABC-4F37-82BF-4814B7F15B30}.Release|Any CPU.Build.0 = Release|Any CPU + {AF45F008-6ABC-4F37-82BF-4814B7F15B30}.Test|Any CPU.ActiveCfg = Debug|Any CPU + {AF45F008-6ABC-4F37-82BF-4814B7F15B30}.Test|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Packages/io.chainsafe.web3-unity.lootboxes/Chainlink/Runtime/Libraries/ChainSafe.Gaming.Lootboxes.Chainlink.dll b/Packages/io.chainsafe.web3-unity.lootboxes/Chainlink/Runtime/Libraries/ChainSafe.Gaming.Lootboxes.Chainlink.dll index 09a5bc186..b27278b86 100644 Binary files a/Packages/io.chainsafe.web3-unity.lootboxes/Chainlink/Runtime/Libraries/ChainSafe.Gaming.Lootboxes.Chainlink.dll and b/Packages/io.chainsafe.web3-unity.lootboxes/Chainlink/Runtime/Libraries/ChainSafe.Gaming.Lootboxes.Chainlink.dll differ diff --git a/Packages/io.chainsafe.web3-unity.lootboxes/Chainlink/Runtime/Libraries/Chainsafe.Gaming.Chainlink.dll b/Packages/io.chainsafe.web3-unity.lootboxes/Chainlink/Runtime/Libraries/Chainsafe.Gaming.Chainlink.dll index c731294e5..5cb1d72a8 100644 Binary files a/Packages/io.chainsafe.web3-unity.lootboxes/Chainlink/Runtime/Libraries/Chainsafe.Gaming.Chainlink.dll and b/Packages/io.chainsafe.web3-unity.lootboxes/Chainlink/Runtime/Libraries/Chainsafe.Gaming.Chainlink.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplates/Web3GL-2020x/index.html b/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplates/Web3GL-2020x/index.html index 2cb4d1380..760dfd7b7 100644 --- a/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplates/Web3GL-2020x/index.html +++ b/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplates/Web3GL-2020x/index.html @@ -105,6 +105,7 @@ createUnityInstance(canvas, config, (progress) => { progressBarFull.style.width = 100 * progress + "%"; }).then((unityInstance) => { + nethereumUnityInstance = unityInstance; loadingBar.style.display = "none"; fullscreenButton.onclick = () => { unityInstance.SetFullscreen(1); diff --git a/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplates/Web3GL-MetaMask/index.html b/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplates/Web3GL-MetaMask/index.html index 086dd904f..14bbc74aa 100644 --- a/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplates/Web3GL-MetaMask/index.html +++ b/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplates/Web3GL-MetaMask/index.html @@ -103,6 +103,7 @@ createUnityInstance(canvas, config, (progress) => { progressBarFull.style.width = 100 * progress + "%"; }).then((unityInstance) => { + nethereumUnityInstance = unityInstance; loadingBar.style.display = "none"; fullscreenButton.onclick = () => { unityInstance.SetFullscreen(1); diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ADRaffy.ENSNormalize.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ADRaffy.ENSNormalize.dll index 7d931f5fc..ea385bb50 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ADRaffy.ENSNormalize.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ADRaffy.ENSNormalize.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/BouncyCastle.Crypto.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/BouncyCastle.Crypto.dll index 8cd4a9ed3..b811138f5 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/BouncyCastle.Crypto.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/BouncyCastle.Crypto.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Debugging.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Debugging.dll index 2fc75a3e0..800b6fdc7 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Debugging.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Debugging.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Gelato.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Gelato.dll index bf759d9b0..cc23e88c9 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Gelato.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Gelato.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessSigner.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessSigner.dll index 371262d25..6aa2e936c 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessSigner.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessSigner.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.dll index 10eca8792..9b56f318c 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll new file mode 100644 index 000000000..231cf1e69 Binary files /dev/null and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll.meta b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll.meta new file mode 100644 index 000000000..657df00c9 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 1043bc7b5bb84df1b06f3c4e156136b5 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 0 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: {} + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll new file mode 100644 index 000000000..6fede10bb Binary files /dev/null and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll.meta b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll.meta new file mode 100644 index 000000000..800014b93 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: a5549f3a1ff14f448ce488218a0501ea +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.ThirdParty.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.ThirdParty.dll index 81611229d..20cdcf08f 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.ThirdParty.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.ThirdParty.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.dll index 4cedc1c28..3f554926d 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.WalletConnect.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.WalletConnect.dll index 4c747b133..9523babb9 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.WalletConnect.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.WalletConnect.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.dll index 95799526b..2b8b37075 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.ABI.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.ABI.dll index bb584e658..3a9f9b665 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.ABI.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.ABI.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Contracts.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Contracts.dll index 62f85e8bb..32c690b61 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Contracts.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Contracts.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Hex.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Hex.dll index 54d08a968..04e08ac9d 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Hex.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Hex.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.JsonRpc.Client.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.JsonRpc.Client.dll index 036806d33..791846889 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.JsonRpc.Client.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.JsonRpc.Client.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Merkle.Patricia.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Merkle.Patricia.dll index 6a9e27e0d..5589fb33a 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Merkle.Patricia.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Merkle.Patricia.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Metamask.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Metamask.dll new file mode 100644 index 000000000..e06ce9346 Binary files /dev/null and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Metamask.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Metamask.dll.meta b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Metamask.dll.meta new file mode 100644 index 000000000..77e51b409 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Metamask.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: ede579b9369647949e93902a54a60c8e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Model.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Model.dll index 8df2a2ba6..6ea6a901a 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Model.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Model.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.RLP.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.RLP.dll index b9ed219bd..bbe3f0bd3 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.RLP.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.RLP.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.RPC.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.RPC.dll index a18eea05c..4de980939 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.RPC.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.RPC.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.Core.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.Core.dll new file mode 100644 index 000000000..3bf752e7a Binary files /dev/null and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.Core.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.Core.dll.meta b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.Core.dll.meta new file mode 100644 index 000000000..6b3e0732f --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.Core.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 6c36c7eda55342de962b52a582297810 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.dll new file mode 100644 index 000000000..541409a15 Binary files /dev/null and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.dll.meta b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.dll.meta new file mode 100644 index 000000000..3de674b01 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Siwe.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: ad27ad85593140fe8fa9131ba65ec626 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.UI.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.UI.dll new file mode 100644 index 000000000..3d7ff1368 Binary files /dev/null and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.UI.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.UI.dll.meta b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.UI.dll.meta new file mode 100644 index 000000000..c0aff2c9d --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.UI.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 4ea9ea6568fd4385849402a4f197dba9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.Metamask.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.Metamask.dll new file mode 100644 index 000000000..9e33c118c Binary files /dev/null and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.Metamask.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.Metamask.dll.meta b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.Metamask.dll.meta new file mode 100644 index 000000000..30fb77569 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.Metamask.dll.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 20892c90c032441ab4f34d5c357812f3 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 0 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: {} + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.dll new file mode 100644 index 000000000..b85684e3e Binary files /dev/null and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.dll.meta b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.dll.meta new file mode 100644 index 000000000..22ca5d7e7 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Unity.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 7967a6cb961d47ce8bdcf678d111c109 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Util.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Util.dll index 6fb6f10b9..838879b48 100755 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Util.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/Nethereum.Util.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask.meta b/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask.meta new file mode 100644 index 000000000..128d5daad --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0749cac7b43f72148a12b2295dedb1bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask/NethereumMetamask.jslib b/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask/NethereumMetamask.jslib new file mode 100644 index 000000000..dc4f1d872 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask/NethereumMetamask.jslib @@ -0,0 +1,168 @@ +mergeInto(LibraryManager.library, { + EnableEthereum: async function (gameObjectName, callback, fallback) { + const parsedObjectName = UTF8ToString(gameObjectName); + const parsedCallback = UTF8ToString(callback); + const parsedFallback = UTF8ToString(fallback); + + try { + + const accounts = await ethereum.request({ method: 'eth_requestAccounts' }); + ethereum.autoRefreshOnNetworkChange = false; + + var bufferSize = lengthBytesUTF8(accounts[0]) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(accounts[0], buffer, bufferSize); + nethereumUnityInstance.SendMessage(parsedObjectName, parsedCallback, accounts[0]); + return buffer; + } catch (error) { + nethereumUnityInstance.SendMessage(parsedObjectName, parsedFallback, error.message); + return null; + } + }, + EthereumInit: function(gameObjectName, callBackAccountChange, callBackChainChange){ + const parsedObjectName = UTF8ToString(gameObjectName); + const parsedCallbackAccountChange = UTF8ToString(callBackAccountChange); + const parsedCallbackChainChange = UTF8ToString(callBackChainChange); + // console.log("EthereumInit"); + + ethereum.on("accountsChanged", + function (accounts) { + //console.log(accounts[0]); + let account = ""; + if(accounts[0] !== undefined){ + account = accounts[0]; + } + nethereumUnityInstance.SendMessage(parsedObjectName, parsedCallbackAccountChange, account); + }); + ethereum.on("chainChanged", + function (chainId) { + // console.log(chainId); + nethereumUnityInstance.SendMessage(parsedObjectName, parsedCallbackChainChange, chainId.toString()); + }); + }, + GetChainId: async function(gameObjectName, callback, fallback) { + const parsedObjectName = UTF8ToString(gameObjectName); + const parsedCallback = UTF8ToString(callback); + const parsedFallback = UTF8ToString(fallback); + try { + + const chainId = await ethereum.request({ method: 'eth_chainId' }); + nethereumUnityInstance.SendMessage(parsedObjectName, parsedCallback, chainId.toString()); + + } catch (error) { + nethereumUnityInstance.SendMessage(parsedObjectName, parsedFallback, error.message); + return null; + } + }, + IsMetamaskAvailable: function () { + if (window.ethereum) return true; + return false; + }, + GetSelectedAddress: function () { + var returnValue = ethereum.selectedAddress; + if(returnValue !== null) { + var bufferSize = lengthBytesUTF8(returnValue) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(returnValue, buffer, bufferSize); + return buffer; + } + }, + Request: async function (message, gameObjectName, callback, fallback ) { + const parsedMessageStr = UTF8ToString(message); + const parsedObjectName = UTF8ToString(gameObjectName); + const parsedCallback = UTF8ToString(callback); + const parsedFallback = UTF8ToString(fallback); + let parsedMessage = JSON.parse(parsedMessageStr); + try { + //console.log(parsedMessage); + const response = await ethereum.request(parsedMessage); + let rpcResponse = { + jsonrpc: "2.0", + result: response, + id: parsedMessage.id, + error: null + } + //console.log(rpcResponse); + + var json = JSON.stringify(rpcResponse); + //console.log(json); + nethereumUnityInstance.SendMessage(parsedObjectName, parsedCallback, json); + return json; + } catch (e) { + let rpcResonseError = { + jsonrpc: "2.0", + id: parsedMessage.id, + error: { + message: e.message, + } + } + var json = JSON.stringify(rpcResonseError); + nethereumUnityInstance.SendMessage(parsedObjectName, parsedFallback, json); + return json; + } + }, + EthereumInitRpcClientCallback: function(callBackAccountChange, callBackChainChange) { + ethereum.on("accountsChanged", + function (accounts) { + let account = ""; + if(accounts[0] !== undefined){ + account = accounts[0]; + } + var len = lengthBytesUTF8(account) + 1; + var strPtr = _malloc(len); + stringToUTF8(account, strPtr, len); + Module.dynCall_vi(callBackAccountChange, strPtr); + }); + ethereum.on("chainChanged", + function (chainId) { + var len = lengthBytesUTF8(chainId.toString()) + 1; + var strPtr = _malloc(len); + stringToUTF8(chainId.toString(), strPtr, len); + Module.dynCall_vi(callBackChainChange, strPtr); + }); + }, + RequestRpcClientCallback: async function (callback, message) { + const parsedMessageStr = UTF8ToString(message); + const parsedCallback = UTF8ToString(callback); + + //console.log(parsedCallback); + let parsedMessage = JSON.parse(parsedMessageStr); + try { + + //console.log(parsedMessage); + const response = await ethereum.request(parsedMessage); + let rpcResponse = { + jsonrpc: "2.0", + result: response, + id: parsedMessage.id, + error: null + } + //console.log(rpcResponse); + + var json = JSON.stringify(rpcResponse); + //console.log(json); + + var len = lengthBytesUTF8(json) + 1; + var strPtr = _malloc(len); + stringToUTF8(json, strPtr, len); + Module.dynCall_vi(callback, strPtr); + + } catch (e) { + //console.log(e); + let rpcResonseError = { + jsonrpc: "2.0", + id: parsedMessage.id, + error: { + message: e.message, + } + } + var json = JSON.stringify(rpcResonseError); + //console.log(json); + var len = lengthBytesUTF8(json) + 1; + var strPtr = _malloc(len); + stringToUTF8(json, strPtr, len); + + Module.dynCall_vi(callback, strPtr); + } + } +}); \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask/NethereumMetamask.jslib.meta b/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask/NethereumMetamask.jslib.meta new file mode 100644 index 000000000..11eb02f69 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Plugins/MetaMask/NethereumMetamask.jslib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 7977b45b7b745cc40b0cc0502e44c17e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scenes/SampleLogin - MetaMask.unity b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scenes/SampleLogin - MetaMask.unity new file mode 100644 index 000000000..0d17aa009 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scenes/SampleLogin - MetaMask.unity @@ -0,0 +1,1714 @@ +%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 &210878633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 210878634} + - component: {fileID: 210878636} + - component: {fileID: 210878635} + m_Layer: 5 + m_Name: Error Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &210878634 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210878633} + m_LocalRotation: {x: -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: 751800059} + - {fileID: 1812470006} + m_Father: {fileID: 314965760} + 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: -8.4831} + m_SizeDelta: {x: 400, y: 167.1662} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &210878635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210878633} + 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: 0.912, b: 0.912, a: 0.9490196} + 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: 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 &210878636 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210878633} + m_CullTransparentMesh: 1 +--- !u!1 &314965759 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 314965760} + - component: {fileID: 314965761} + m_Layer: 5 + m_Name: Error + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &314965760 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314965759} + m_LocalRotation: {x: 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: 1042712191} + - {fileID: 210878634} + m_Father: {fileID: 2066044329} + m_RootOrder: 2 + 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 &314965761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314965759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c001d0d5433b4215b8abba94194881bd, type: 3} + m_Name: + m_EditorClassIdentifier: + MessageLabel: {fileID: 1028782728} +--- !u!1 &433476712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433476714} + - component: {fileID: 433476715} + m_Layer: 0 + m_Name: MetaMaskLogin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433476714 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433476712} + m_LocalRotation: {x: 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!114 &433476715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433476712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b547b7e8ac8d2f442bfefe0c9f59ed1d, type: 3} + m_Name: + m_EditorClassIdentifier: + k__BackingField: SampleMain + gelatoApiKey: 7MFQqyGS1Iui_e_MgmFW1BfbFeJ06g8nnL2oUTlIJug_ + errorPopup: {fileID: 314965761} + loginButton: {fileID: 2048731599} +--- !u!1 &740974330 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 740974331} + - component: {fileID: 740974332} + m_Layer: 5 + m_Name: Column - MetaMask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &740974331 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740974330} + m_LocalRotation: {x: -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: 956735924} + m_Father: {fileID: 1135875169} + 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.5, y: 0.5} +--- !u!114 &740974332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740974330} + 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: 300 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &751800058 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 751800059} + - component: {fileID: 751800061} + - component: {fileID: 751800060} + m_Layer: 5 + m_Name: Title - Error + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &751800059 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 751800058} + m_LocalRotation: {x: 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: 210878634} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &751800060 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 751800058} + 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.412, g: 0.043672003, b: 0.043672003, 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: Error +--- !u!222 &751800061 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 751800058} + m_CullTransparentMesh: 1 +--- !u!1 &772918783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 772918784} + - component: {fileID: 772918787} + - component: {fileID: 772918786} + - component: {fileID: 772918785} + m_Layer: 5 + m_Name: Button - Ok + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &772918784 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772918783} + m_LocalRotation: {x: 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: 1558416531} + m_Father: {fileID: 1812470006} + m_RootOrder: 1 + 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: 0, y: 50} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &772918785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772918783} + 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: 772918786} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 314965761} + m_TargetAssemblyTypeName: Scenes.ErrorPopup, Assembly-CSharp + m_MethodName: Close + 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 &772918786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772918783} + 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 &772918787 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772918783} + m_CullTransparentMesh: 1 +--- !u!1 &789601276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 789601277} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &789601277 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 789601276} + m_LocalRotation: {x: 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: 1362301615} + - {fileID: 1572088723} + m_Father: {fileID: 2066044329} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.725} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: -50, y: -50} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &893732502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 893732505} + - component: {fileID: 893732504} + - component: {fileID: 893732503} + 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 &893732503 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 893732502} + m_Enabled: 1 +--- !u!20 &893732504 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 893732502} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.101960786, g: 0.101960786, b: 0.10980392, 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: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &893732505 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 893732502} + 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 &956735923 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 956735924} + - component: {fileID: 956735926} + - component: {fileID: 956735925} + m_Layer: 5 + m_Name: Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &956735924 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956735923} + m_LocalRotation: {x: 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: 2048731596} + m_Father: {fileID: 740974331} + 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: 1} +--- !u!114 &956735925 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956735923} + 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!114 &956735926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956735923} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1028782727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1028782730} + - component: {fileID: 1028782729} + - component: {fileID: 1028782728} + m_Layer: 5 + m_Name: Error message + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1028782728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028782727} + 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.05, g: 0.05, b: 0.05, 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: 0 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1028782729 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028782727} + m_CullTransparentMesh: 1 +--- !u!224 &1028782730 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028782727} + m_LocalRotation: {x: -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: 1812470006} + 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!1 &1042712190 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1042712191} + - component: {fileID: 1042712194} + - component: {fileID: 1042712193} + - component: {fileID: 1042712192} + m_Layer: 5 + m_Name: Fade + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1042712191 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042712190} + m_LocalRotation: {x: 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: 314965760} + 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 &1042712192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042712190} + 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: 0 + 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: 1042712193} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 314965761} + m_TargetAssemblyTypeName: Scenes.ErrorPopup, Assembly-CSharp + m_MethodName: Close + 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 &1042712193 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042712190} + 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: 0.29803923} + 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 &1042712194 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042712190} + m_CullTransparentMesh: 1 +--- !u!1 &1135875168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1135875169} + - component: {fileID: 1135875171} + - component: {fileID: 1135875170} + m_Layer: 5 + m_Name: Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1135875169 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1135875168} + m_LocalRotation: {x: 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: 740974331} + m_Father: {fileID: 2066044329} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.725} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1135875170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1135875168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 +--- !u!114 &1135875171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1135875168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 25 + m_Right: 25 + m_Top: 25 + m_Bottom: 25 + m_ChildAlignment: 0 + m_Spacing: 50 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1290034538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1290034541} + - component: {fileID: 1290034540} + - component: {fileID: 1290034539} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1290034539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290034538} + 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 &1290034540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290034538} + 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 &1290034541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290034538} + m_LocalRotation: {x: 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: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1362301614 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1362301615} + - component: {fileID: 1362301617} + - component: {fileID: 1362301616} + m_Layer: 5 + m_Name: ChainSafe Logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1362301615 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362301614} + m_LocalRotation: {x: -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: 789601277} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.25, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1362301616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362301614} + 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: 21300000, guid: 804f4bf7fbf176544bd5efde4a0749ca, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1362301617 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362301614} + m_CullTransparentMesh: 1 +--- !u!1 &1558416530 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1558416531} + - component: {fileID: 1558416533} + - component: {fileID: 1558416532} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1558416531 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558416530} + m_LocalRotation: {x: -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: 772918784} + 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 &1558416532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558416530} + 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.05, g: 0.05, b: 0.05, 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: 19 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: OK +--- !u!222 &1558416533 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558416530} + m_CullTransparentMesh: 1 +--- !u!1 &1572088722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1572088723} + - component: {fileID: 1572088725} + - component: {fileID: 1572088724} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1572088723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572088722} + m_LocalRotation: {x: -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: 789601277} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.25, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -30, y: -30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1572088724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572088722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Login to continue + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294111986 + m_fontColor: {r: 0.95, g: 0.95, b: 0.95, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 40 + m_fontSizeBase: 48 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 16 + m_fontSizeMax: 40 + m_fontStyle: 1 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1572088725 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572088722} + m_CullTransparentMesh: 1 +--- !u!1 &1812470005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1812470006} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1812470006 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1812470005} + m_LocalRotation: {x: 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: 1028782730} + - {fileID: 772918784} + m_Father: {fileID: 210878634} + 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: -21} + m_SizeDelta: {x: -32, y: -58} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &2048731595 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 956735924} + m_Modifications: + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8775736491206355084, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_Name + value: Button - MetaMask + objectReference: {fileID: 0} + - target: {fileID: 8781309615174179339, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_text + value: Continue with MetaMask + objectReference: {fileID: 0} + - target: {fileID: 8781309615174179339, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_fontSize + value: 17.9 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} +--- !u!224 &2048731596 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + m_PrefabInstance: {fileID: 2048731595} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2048731597 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8775736491206355084, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + m_PrefabInstance: {fileID: 2048731595} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2048731598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2048731597} + 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 &2048731599 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7324590823460843055, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + m_PrefabInstance: {fileID: 2048731595} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2048731597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2066044325 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2066044329} + - component: {fileID: 2066044328} + - component: {fileID: 2066044327} + - component: {fileID: 2066044326} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2066044326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066044325} + 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 &2066044327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066044325} + 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: 1280, y: 720} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &2066044328 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066044325} + 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!224 &2066044329 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066044325} + 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: 789601277} + - {fileID: 1135875169} + - {fileID: 314965760} + m_Father: {fileID: 0} + 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, y: 0} diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scenes/SampleLogin - MetaMask.unity.meta b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scenes/SampleLogin - MetaMask.unity.meta new file mode 100644 index 000000000..6d95f8e96 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scenes/SampleLogin - MetaMask.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7e829b2033fc8554eb0048ce07704f77 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/ExistingWalletLogin.cs b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/ExistingWalletLogin.cs index 70937896a..7b74ea402 100644 --- a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/ExistingWalletLogin.cs +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/ExistingWalletLogin.cs @@ -231,7 +231,7 @@ private void BuildWalletConnectConfig() private IEnumerator FetchSupportedWallets() { - using (UnityWebRequest webRequest = UnityWebRequest.Get("https://registry.walletconnect.org/data/wallets.json")) + using (UnityWebRequest webRequest = UnityWebRequest.Get("https://registry.walletconnect.com/data/wallets.json")) { // Request and wait for the desired page. yield return webRequest.SendWebRequest(); diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/MetaMaskLogin.cs b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/MetaMaskLogin.cs new file mode 100644 index 000000000..4f2b084e7 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/MetaMaskLogin.cs @@ -0,0 +1,44 @@ +using System.Collections; +#if UNITY_WEBGL +using ChainSafe.Gaming.MetaMask; +using ChainSafe.Gaming.MetaMask.Unity; +#endif +using ChainSafe.Gaming.Web3.Build; +using Scenes; +using UnityEngine; +using UnityEngine.UI; + +/// +/// Login using MetaMask. +/// Only works for UnityWebGL build (not in editor). +/// +public class MetaMaskLogin : Login +{ + [SerializeField] private Button loginButton; + + protected override IEnumerator Initialize() + { + loginButton.onClick.AddListener(LoginClicked); + + yield return null; + } + + private async void LoginClicked() + { + await TryLogin(); + } + + protected override Web3Builder ConfigureWeb3Services(Web3Builder web3Builder) + { + return web3Builder.Configure(services => + { + // Currently Metamask browser connections can only run in WebGL builds. + // See point 5 in https://github.com/Nethereum/Unity3dSampleTemplate?tab=readme-ov-file#important-notes. +#if UNITY_WEBGL && !UNITY_EDITOR + services.UseMetaMask().UseMetaMaskSigner().UseMetaMaskTransactionExecutor(); +#else + Debug.LogError("Metamask browser connection, currently, only works on WebGL Builds (not in editor)."); +#endif + }); + } +} diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/MetaMaskLogin.cs.meta b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/MetaMaskLogin.cs.meta new file mode 100644 index 000000000..33f79fe3c --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/MetaMaskLogin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b547b7e8ac8d2f442bfefe0c9f59ed1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/libs/Nethereum-UnityAOT/Nethereum.Metamask.dll b/libs/Nethereum-UnityAOT/Nethereum.Metamask.dll new file mode 100644 index 000000000..e06ce9346 Binary files /dev/null and b/libs/Nethereum-UnityAOT/Nethereum.Metamask.dll differ diff --git a/libs/Nethereum-UnityAOT/Nethereum.Siwe.Core.dll b/libs/Nethereum-UnityAOT/Nethereum.Siwe.Core.dll new file mode 100644 index 000000000..3bf752e7a Binary files /dev/null and b/libs/Nethereum-UnityAOT/Nethereum.Siwe.Core.dll differ diff --git a/libs/Nethereum-UnityAOT/Nethereum.Siwe.dll b/libs/Nethereum-UnityAOT/Nethereum.Siwe.dll new file mode 100644 index 000000000..541409a15 Binary files /dev/null and b/libs/Nethereum-UnityAOT/Nethereum.Siwe.dll differ diff --git a/libs/Nethereum-UnityAOT/Nethereum.UI.dll b/libs/Nethereum-UnityAOT/Nethereum.UI.dll new file mode 100644 index 000000000..3d7ff1368 Binary files /dev/null and b/libs/Nethereum-UnityAOT/Nethereum.UI.dll differ diff --git a/libs/Nethereum-UnityAOT/Nethereum.Unity.Metamask.dll b/libs/Nethereum-UnityAOT/Nethereum.Unity.Metamask.dll new file mode 100644 index 000000000..9e33c118c Binary files /dev/null and b/libs/Nethereum-UnityAOT/Nethereum.Unity.Metamask.dll differ diff --git a/libs/Nethereum-UnityAOT/Nethereum.Unity.dll b/libs/Nethereum-UnityAOT/Nethereum.Unity.dll new file mode 100644 index 000000000..b85684e3e Binary files /dev/null and b/libs/Nethereum-UnityAOT/Nethereum.Unity.dll differ diff --git a/src/ChainSafe.Gaming.MetaMask.Unity/ChainSafe.Gaming.MetaMask.Unity.csproj b/src/ChainSafe.Gaming.MetaMask.Unity/ChainSafe.Gaming.MetaMask.Unity.csproj new file mode 100644 index 000000000..5b6542ee5 --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask.Unity/ChainSafe.Gaming.MetaMask.Unity.csproj @@ -0,0 +1,23 @@ + + + + netstandard2.1 + 9.0 + ChainSafe.Gaming.MetaMask.Unity + True + ../../global.ruleset + Debug;Release;Test + AnyCPU + + + + + + + + + + + + + diff --git a/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskController.cs b/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskController.cs new file mode 100644 index 000000000..57923913c --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskController.cs @@ -0,0 +1,200 @@ +using System.Collections; +using System.Threading.Tasks; +using ChainSafe.Gaming.Web3; +using ChainSafe.Gaming.Web3.Environment; +using Nethereum.Hex.HexTypes; +using Nethereum.JsonRpc.Client; +using Nethereum.Unity.Metamask; +using Nethereum.Unity.Rpc; +using UnityEngine; + +namespace ChainSafe.Gaming.MetaMask.Unity +{ + /// + /// Controller script for connecting to MetaMask and making awaitable JsonRPC requests. + /// + public class MetaMaskController : MonoBehaviour + { + private bool isInitialized; + + /// Use this instead of . + private ILogWriter logger; + + /// + /// Delegate for when MetaMask account is connected. + /// + public delegate void AccountConnected(string address); + + /// + /// Delegate for when MetaMask JsonRPC request gets a callback. + /// + /// Type for the response's result. + public delegate void ResponseCallback(T result); + + /// + /// Event invoked when MetaMask account is connected. + /// + public event AccountConnected OnAccountConnected; + + /// + /// Address of successfully connected account. + /// + public string ConnectedAddress { get; private set; } + + /// + /// Initialize script with references. + /// + /// Use to write logs. Use this instead of . + public void Initialize(ILogWriter logWriter) + { + logger = logWriter; + } + + /// + /// Awaitable method that Connects to MetaMask. + /// + /// Connected account address. + public Task Connect() + { + var taskCompletionSource = new TaskCompletionSource(); + + // Unsubscribe in case we're already subscribed from a previous login. + OnAccountConnected -= Connected; + + OnAccountConnected += Connected; + + // Callback for when we successfully connect. + void Connected(string address) + { + ConnectedAddress = address; + + if (!taskCompletionSource.TrySetResult(ConnectedAddress)) + { + taskCompletionSource.SetException(new Web3Exception("Error setting connected account address.")); + } + else + { + logger.Log($"MetaMask successfully connected to address {ConnectedAddress}"); + } + } + + // Connect to MetaMask. + if (MetamaskWebglInterop.IsMetamaskAvailable()) + { + MetamaskWebglInterop.EnableEthereum(gameObject.name, nameof(EthereumEnabled), nameof(DisplayError)); + } + else + { + logger.LogError("Metamask is not available, please install it first."); + + // Unsubscribe to event. + OnAccountConnected -= Connected; + + return null; + } + + return taskCompletionSource.Task; + } + + /// + /// Awaitable Request method for making JsonRPC requests using MetaMask. + /// + /// JsonPRC method name. + /// JsonRPC parameters. + /// Type for returned value on response. + /// Response result with type . + public Task Request(string method, params object[] parameters) + { + var taskCompletionSource = new TaskCompletionSource(); + + void ResponseCallback(T result) + { + if (!taskCompletionSource.TrySetResult(result)) + { + taskCompletionSource.SetException(new Web3Exception("Error setting response result.")); + } + } + + StartCoroutine(Request(new RpcRequest(Configuration.DefaultRequestId, method, parameters), ResponseCallback)); + + return taskCompletionSource.Task; + } + + private IEnumerator Request(RpcRequest data, ResponseCallback onResponse) + { + var rpcRequest = new UnityRpcRequest(new MetamaskWebglCoroutineRequestRpcClientFactory(ConnectedAddress)); + + yield return rpcRequest.SendRequest(data); + + if (rpcRequest.Exception != null) + { + logger.LogError($"MetaMask Exception while making {data.Method} Json RPC request {rpcRequest.Exception.Message}"); + + // Even if request fails we still need to callback so request task completion source result can be set. + onResponse?.Invoke(default); + + throw rpcRequest.Exception; + } + + onResponse?.Invoke(rpcRequest.Result); + } + + /// + /// Callback when MetaMask successfully connects to an account. + /// + /// Connected Address. + public void EthereumEnabled(string address) + { + if (!isInitialized) + { + // Subscribe to callbacks. + MetamaskWebglInterop.EthereumInit(gameObject.name, nameof(NewAccountSelected), nameof(ChainChanged)); + + // Get and log ChainId. + MetamaskWebglInterop.GetChainId(gameObject.name, nameof(ChainSelected), nameof(DisplayError)); + + isInitialized = true; + } + + InvokeAccountConnected(address); + } + + private void InvokeAccountConnected(string address) + { + OnAccountConnected?.Invoke(address); + } + + /// + /// Callback when a new account is selected by user. + /// + /// New selected account address. + public void NewAccountSelected(string address) + { + throw new Web3Exception($"{nameof(ChainSafe)} SDK doesn't support account switching during a single session."); + } + + /// + /// Callback when chain is changed on Network. + /// + /// New chain. + public void ChainChanged(string chainId) + { + throw new Web3Exception($"{nameof(ChainSafe)} SDK doesn't support chain switching during a single session."); + } + + /// + /// Callback for GetChain. + /// + /// New chain. + public void ChainSelected(string chainId) + { + logger.Log($"Selected Chain Id {new HexBigInteger(chainId).Value}."); + } + + // Callback for displaying an error if operation fails. + private void DisplayError(string message) + { + logger.LogError(message); + } + } +} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskProvider.cs b/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskProvider.cs new file mode 100644 index 000000000..cbe8bb215 --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskProvider.cs @@ -0,0 +1,71 @@ +using System.Threading.Tasks; +using ChainSafe.Gaming.Web3.Environment; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace ChainSafe.Gaming.MetaMask.Unity +{ + /// + /// Concrete implementation of . + /// + public class MetaMaskProvider : IMetaMaskProvider + { + private readonly ILogWriter logWriter; + + private readonly MetaMaskController metaMaskController; + + /// + /// Initializes a new instance of the class. + /// + /// Common Logger used for logging messages and errors. + public MetaMaskProvider(ILogWriter logWriter) + { + this.logWriter = logWriter; + + if (Application.isEditor || Application.platform != RuntimePlatform.WebGLPlayer) + { + this.logWriter.LogError("You need to build to WebGL platform to run Nethereum.Metamask.Unity"); + + return; + } + + // Initialize Unity controller. + metaMaskController = Object.FindObjectOfType(); + + if (metaMaskController == null) + { + GameObject controllerObj = new GameObject(nameof(MetaMaskController), typeof(MetaMaskController)); + + metaMaskController = controllerObj.GetComponent(); + } + + Object.DontDestroyOnLoad(metaMaskController.gameObject); + + metaMaskController.Initialize(this.logWriter); + } + + /// + /// Implementation of . + /// Called to connect to MetaMask. + /// + /// Connected account. + public async Task Connect() + { + logWriter.Log("Connecting from Metamask..."); + + return await metaMaskController.Connect(); + } + + /// + /// Make JsonRPC requests using MetaMask. + /// + /// JsonRPC method name. + /// JsonRPC request parameters. + /// Type of response result. + /// Response result. + public async Task Request(string method, params object[] parameters) + { + return await metaMaskController.Request(method, parameters); + } + } +} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskProviderExtensions.cs b/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskProviderExtensions.cs new file mode 100644 index 000000000..5d1575a42 --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask.Unity/MetaMaskProviderExtensions.cs @@ -0,0 +1,26 @@ +using ChainSafe.Gaming.Web3.Build; +using Microsoft.Extensions.DependencyInjection; + +namespace ChainSafe.Gaming.MetaMask.Unity +{ + /// + /// extension methods. + /// + public static class MetaMaskProviderExtensions + { + /// + /// Binds implementation of as to Web3 as a service. + /// + /// Service collection to bind implementations to. + /// The same service collection that was passed in. This enables fluent style. + public static IWeb3ServiceCollection UseMetaMask(this IWeb3ServiceCollection collection) + { + collection.AssertServiceNotBound(); + + // wallet + collection.AddSingleton(); + + return collection; + } + } +} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.MetaMask/ChainSafe.Gaming.MetaMask.csproj b/src/ChainSafe.Gaming.MetaMask/ChainSafe.Gaming.MetaMask.csproj new file mode 100644 index 000000000..d695df281 --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask/ChainSafe.Gaming.MetaMask.csproj @@ -0,0 +1,24 @@ + + + + netstandard2.1 + 9.0 + ChainSafe.Gaming.MetaMask + True + ../../global.ruleset + Debug;Release;Test + AnyCPU + + + + + + + + + + + + + + diff --git a/src/ChainSafe.Gaming.MetaMask/IMetaMaskProvider.cs b/src/ChainSafe.Gaming.MetaMask/IMetaMaskProvider.cs new file mode 100644 index 000000000..ae2979936 --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask/IMetaMaskProvider.cs @@ -0,0 +1,25 @@ +using System.Threading.Tasks; + +namespace ChainSafe.Gaming.MetaMask +{ + /// + /// Connect and disconnect to Metamask and make a Json RPC request. + /// + public interface IMetaMaskProvider + { + /// + /// Connects to Metamask. + /// + /// Connected address. + public Task Connect(); + + /// + /// Make JsonRPC request using Metamask. + /// + /// JsonRPC method name. + /// JsonRPC request parameters. + /// Type of response's result. + /// Response's result. + public Task Request(string method, params object[] parameters); + } +} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.MetaMask/MetaMaskExtensions.cs b/src/ChainSafe.Gaming.MetaMask/MetaMaskExtensions.cs new file mode 100644 index 000000000..5d4fbb25a --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask/MetaMaskExtensions.cs @@ -0,0 +1,44 @@ +using ChainSafe.Gaming.Evm.Signers; +using ChainSafe.Gaming.Web3.Build; +using ChainSafe.Gaming.Web3.Core; +using ChainSafe.Gaming.Web3.Core.Evm; +using Microsoft.Extensions.DependencyInjection; + +namespace ChainSafe.Gaming.MetaMask +{ + /// + /// and extension methods. + /// + public static class MetaMaskExtensions + { + /// + /// Binds implementation of as to Web3 as a service. + /// + /// Service collection to bind implementations to. + /// The same service collection that was passed in. This enables fluent style. + public static IWeb3ServiceCollection UseMetaMaskSigner(this IWeb3ServiceCollection collection) + { + collection.AssertServiceNotBound(); + + // wallet + collection.AddSingleton(); + + return collection; + } + + /// + /// Binds implementation of as to Web3 as a service. + /// + /// Service collection to bind implementations to. + /// The same service collection that was passed in. This enables fluent style. + public static IWeb3ServiceCollection UseMetaMaskTransactionExecutor(this IWeb3ServiceCollection collection) + { + collection.AssertServiceNotBound(); + + // wallet + collection.AddSingleton(); + + return collection; + } + } +} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.MetaMask/MetaMaskSigner.cs b/src/ChainSafe.Gaming.MetaMask/MetaMaskSigner.cs new file mode 100644 index 000000000..d7083fa31 --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask/MetaMaskSigner.cs @@ -0,0 +1,86 @@ +using System.Threading.Tasks; +using ChainSafe.Gaming.Evm.Signers; +using ChainSafe.Gaming.Web3.Core; +using ChainSafe.Gaming.Web3.Core.Evm; +using ChainSafe.Gaming.Web3.Environment; + +namespace ChainSafe.Gaming.MetaMask +{ + /// + /// Implementation of for Metamask. + /// + public class MetaMaskSigner : ISigner, ILifecycleParticipant + { + private readonly IMetaMaskProvider metaMaskProvider; + + /// + /// Initializes a new instance of the class. + /// + /// Metamask provider that connects to Metamask and makes JsonRPC requests. + /// Log Writer used for logging messages and errors. + public MetaMaskSigner(IMetaMaskProvider metaMaskProvider, ILogWriter logWriter) + { + this.metaMaskProvider = metaMaskProvider; + } + + /// + /// Signer's public key/address. + /// + private string Address { get; set; } + + /// + /// Implementation of . + /// Lifetime event method, called during initialization. + /// + /// async awaitable task. + public async ValueTask WillStartAsync() + { + Address = await metaMaskProvider.Connect(); + } + + /// + /// Implementation of . + /// Get public address of connected client. + /// + /// Wallet address of connected client. + public Task GetAddress() + { + return Task.FromResult(Address); + } + + /// + /// Implementation of . + /// Sign message using MetaMask. + /// This prompts user to sign a message on MetaMask. + /// + /// Message to sign. + /// Hash response of a successfully signed message. + public async Task SignMessage(string message) + { + return await metaMaskProvider.Request("personal_sign", message, Address); + } + + /// + /// Implementation of . + /// Sign Typed Data using MetaMask. + /// + /// A serializable domain separator. + /// Data to be signed. + /// Data type of data to be signed. + /// Hash response of a successfully signed typed data. + public async Task SignTypedData(SerializableDomain domain, TStructType message) + { + SerializableTypedData typedData = new SerializableTypedData(domain, message); + + // MetaMask doesn't work with regular eth_signTypedData method, has to be eth_signTypedData_v4. + return await metaMaskProvider.Request("eth_signTypedData_v4", typedData, Address); + } + + /// + /// Implementation of . + /// Lifetime event method, called during "Web3.TerminateAsync". + /// + /// async awaitable task. + public ValueTask WillStopAsync() => new ValueTask(Task.CompletedTask); + } +} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.MetaMask/MetaMaskTransactionExecutor.cs b/src/ChainSafe.Gaming.MetaMask/MetaMaskTransactionExecutor.cs new file mode 100644 index 000000000..6a6b313fc --- /dev/null +++ b/src/ChainSafe.Gaming.MetaMask/MetaMaskTransactionExecutor.cs @@ -0,0 +1,77 @@ +using System.Threading.Tasks; +using ChainSafe.Gaming.Evm.Signers; +using ChainSafe.Gaming.Evm.Transactions; +using ChainSafe.Gaming.Web3; +using ChainSafe.Gaming.Web3.Core.Evm; +using ChainSafe.Gaming.Web3.Environment; +using Nethereum.RPC.Eth.DTOs; + +namespace ChainSafe.Gaming.MetaMask +{ + /// + /// Implementation of for Metamask. + /// + public class MetaMaskTransactionExecutor : ITransactionExecutor + { + private readonly ILogWriter logWriter; + + private readonly IMetaMaskProvider metaMaskProvider; + + private readonly ISigner signer; + + /// + /// Initializes a new instance of the class. + /// + /// Log Writer used for logging messages and errors. + /// Metamask provider that connects to Metamask and makes JsonRPC requests. + /// Signer for fetching address. + public MetaMaskTransactionExecutor(ILogWriter logWriter, IMetaMaskProvider metaMaskProvider, ISigner signer) + { + this.logWriter = logWriter; + + this.metaMaskProvider = metaMaskProvider; + + this.signer = signer; + } + + /// + /// Implementation of . + /// Send a transaction using Metamask. + /// This prompts user to approve a transaction on Metamask. + /// + /// Transaction to send. + /// Hash response of a successfully executed transaction. + /// Throws Exception if executing transaction fails. + public async Task SendTransaction(TransactionRequest transaction) + { + if (string.IsNullOrEmpty(transaction.From)) + { + transaction.From = await signer.GetAddress(); + } + + TransactionInput transactionInput = new TransactionInput + { + From = transaction.From, + To = transaction.To, + Gas = transaction.GasLimit, + GasPrice = transaction.GasPrice, + Value = transaction.Value, + Data = transaction.Data ?? "0x", + Nonce = transaction.Nonce, + AccessList = transaction.AccessList, + }; + + string hash = await metaMaskProvider.Request("eth_sendTransaction", transactionInput); + + // TODO replace validation with regex + if (!hash.StartsWith("0x") || hash.Length != 66) + { + throw new Web3Exception($"incorrect txn response format {hash}"); + } + + logWriter.Log($"Transaction executed with hash {hash}"); + + return await metaMaskProvider.Request("eth_getTransactionByHash", hash); + } + } +} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.Unity/ChainSafe.Gaming.Unity.csproj b/src/ChainSafe.Gaming.Unity/ChainSafe.Gaming.Unity.csproj index a43993dc0..949a1f896 100644 --- a/src/ChainSafe.Gaming.Unity/ChainSafe.Gaming.Unity.csproj +++ b/src/ChainSafe.Gaming.Unity/ChainSafe.Gaming.Unity.csproj @@ -19,6 +19,7 @@ + diff --git a/src/ChainSafe.Gaming.Unity/link.xml b/src/ChainSafe.Gaming.Unity/link.xml index df34870ca..c576babc1 100644 --- a/src/ChainSafe.Gaming.Unity/link.xml +++ b/src/ChainSafe.Gaming.Unity/link.xml @@ -20,6 +20,8 @@ + + diff --git a/src/ChainSafe.Gaming.WalletConnect/ChainSafe.Gaming.WalletConnect.csproj b/src/ChainSafe.Gaming.WalletConnect/ChainSafe.Gaming.WalletConnect.csproj index beafd2164..547dd8615 100644 --- a/src/ChainSafe.Gaming.WalletConnect/ChainSafe.Gaming.WalletConnect.csproj +++ b/src/ChainSafe.Gaming.WalletConnect/ChainSafe.Gaming.WalletConnect.csproj @@ -6,13 +6,12 @@ ChainSafe.Gaming.WalletConnect True ../../global.ruleset - ChainSafe.Gaming.MetaMaskBrowserWallet + ChainSafe.Gaming.WalletConnect Debug;Release;Test AnyCPU - diff --git a/src/ChainSafe.Gaming.WalletConnect/Methods/EthSignTypedData.cs b/src/ChainSafe.Gaming.WalletConnect/Methods/EthSignTypedData.cs index dbd386636..e290fe4f8 100644 --- a/src/ChainSafe.Gaming.WalletConnect/Methods/EthSignTypedData.cs +++ b/src/ChainSafe.Gaming.WalletConnect/Methods/EthSignTypedData.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using ChainSafe.Gaming.WalletConnect.Models; using ChainSafe.Gaming.Web3.Core.Evm; using WalletConnectSharp.Common.Utils; using WalletConnectSharp.Network.Models; @@ -24,7 +23,7 @@ public EthSignTypedData(string address, SerializableDomain domain, TStruct messa : base(new object[] { address, - new TypedDataModel(domain, message), + new SerializableTypedData(domain, message), }) { } diff --git a/src/ChainSafe.Gaming.WalletConnect/WCLogWriter.cs b/src/ChainSafe.Gaming.WalletConnect/WCLogWriter.cs index c651c8a5a..684db0a57 100644 --- a/src/ChainSafe.Gaming.WalletConnect/WCLogWriter.cs +++ b/src/ChainSafe.Gaming.WalletConnect/WCLogWriter.cs @@ -1,5 +1,4 @@ using System; -using ChainSafe.Gaming.Evm.Unity; using ChainSafe.Gaming.Web3.Environment; using ILogger = WalletConnectSharp.Common.Logging.ILogger; diff --git a/src/ChainSafe.Gaming.WalletConnect/WalletConnectExtensions.cs b/src/ChainSafe.Gaming.WalletConnect/WalletConnectExtensions.cs new file mode 100644 index 000000000..fca3cf2bf --- /dev/null +++ b/src/ChainSafe.Gaming.WalletConnect/WalletConnectExtensions.cs @@ -0,0 +1,62 @@ +using ChainSafe.Gaming.Evm.Signers; +using ChainSafe.Gaming.Web3.Build; +using ChainSafe.Gaming.Web3.Core; +using ChainSafe.Gaming.Web3.Core.Evm; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; + +namespace ChainSafe.Gaming.WalletConnect +{ + /// + /// , and extension methods. + /// + public static class WalletConnectExtensions + { + /// + /// Binds implementation of as and to Web3 as a service. + /// + /// Service collection to bind implementations to. + /// Wallet Connect Configuration. + /// The same service collection that was passed in. This enables fluent style. + public static IWeb3ServiceCollection UseWalletConnect(this IWeb3ServiceCollection collection, WalletConnectConfig config) + { + collection.AssertServiceNotBound(); + + // wallet + collection.AddSingleton(); + + // configure provider + collection.Replace(ServiceDescriptor.Singleton(typeof(WalletConnectConfig), config)); + return collection; + } + + /// + /// Binds implementation of as to Web3 as a service. + /// + /// Service collection to bind implementations to. + /// The same service collection that was passed in. This enables fluent style. + public static IWeb3ServiceCollection UseWalletConnectSigner(this IWeb3ServiceCollection collection) + { + collection.AssertServiceNotBound(); + + // wallet + collection.AddSingleton(); + + return collection; + } + + /// + /// Binds implementation of as to Web3 as a service. + /// + /// Service collection to bind implementations to. + /// The same service collection that was passed in. This enables fluent style. + public static IWeb3ServiceCollection UseWalletConnectTransactionExecutor(this IWeb3ServiceCollection collection) + { + collection.AssertServiceNotBound(); + + collection.AddSingleton(); + + return collection; + } + } +} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.WalletConnect/WalletConnectProviderExtensions.cs b/src/ChainSafe.Gaming.WalletConnect/WalletConnectProviderExtensions.cs deleted file mode 100644 index d90499e52..000000000 --- a/src/ChainSafe.Gaming.WalletConnect/WalletConnectProviderExtensions.cs +++ /dev/null @@ -1,31 +0,0 @@ -using ChainSafe.Gaming.Web3.Build; -using ChainSafe.Gaming.Web3.Core; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; - -namespace ChainSafe.Gaming.WalletConnect -{ - /// - /// extension methods. - /// - public static class WalletConnectProviderExtensions - { - /// - /// Binds implementation of as and to Web3 as a service. - /// - /// Service collection to bind implementations to. - /// Wallet Connect Configuration. - /// The same service collection that was passed in. This enables fluent style. - public static IWeb3ServiceCollection UseWalletConnect(this IWeb3ServiceCollection collection, WalletConnectConfig config) - { - collection.AssertServiceNotBound(); - - // wallet - collection.AddSingleton(); - - // configure provider - collection.Replace(ServiceDescriptor.Singleton(typeof(WalletConnectConfig), config)); - return collection; - } - } -} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.WalletConnect/WalletConnectSignerExtensions.cs b/src/ChainSafe.Gaming.WalletConnect/WalletConnectSignerExtensions.cs deleted file mode 100644 index 806bd95e1..000000000 --- a/src/ChainSafe.Gaming.WalletConnect/WalletConnectSignerExtensions.cs +++ /dev/null @@ -1,27 +0,0 @@ -using ChainSafe.Gaming.Evm.Signers; -using ChainSafe.Gaming.Web3.Build; -using ChainSafe.Gaming.Web3.Core; - -namespace ChainSafe.Gaming.WalletConnect -{ - /// - /// extension methods. - /// - public static class WalletConnectSignerExtensions - { - /// - /// Binds implementation of as to Web3 as a service. - /// - /// Service collection to bind implementations to. - /// The same service collection that was passed in. This enables fluent style. - public static IWeb3ServiceCollection UseWalletConnectSigner(this IWeb3ServiceCollection collection) - { - collection.AssertServiceNotBound(); - - // wallet - collection.AddSingleton(); - - return collection; - } - } -} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.WalletConnect/WalletConnectTransactionExecutor.cs b/src/ChainSafe.Gaming.WalletConnect/WalletConnectTransactionExecutor.cs index 668100095..49b2bbef2 100644 --- a/src/ChainSafe.Gaming.WalletConnect/WalletConnectTransactionExecutor.cs +++ b/src/ChainSafe.Gaming.WalletConnect/WalletConnectTransactionExecutor.cs @@ -27,6 +27,7 @@ public class WalletConnectTransactionExecutor : ITransactionExecutor, ILifecycle /// /// Wallet Connect Provider that connects wallet and makes jsom RPC requests via Wallet Connect. /// Provider for getting transaction receipt. + /// Signer for fetching address. public WalletConnectTransactionExecutor(IWalletConnectCustomProvider walletConnectCustomProvider, IRpcProvider rpcProvider, ISigner signer) { this.walletConnectCustomProvider = walletConnectCustomProvider; diff --git a/src/ChainSafe.Gaming.WalletConnect/WalletConnectTransactionExecutorExtensions.cs b/src/ChainSafe.Gaming.WalletConnect/WalletConnectTransactionExecutorExtensions.cs deleted file mode 100644 index a07e10bf6..000000000 --- a/src/ChainSafe.Gaming.WalletConnect/WalletConnectTransactionExecutorExtensions.cs +++ /dev/null @@ -1,26 +0,0 @@ -using ChainSafe.Gaming.Web3.Build; -using ChainSafe.Gaming.Web3.Core; -using ChainSafe.Gaming.Web3.Core.Evm; - -namespace ChainSafe.Gaming.WalletConnect -{ - /// - /// extension methods. - /// - public static class WalletConnectTransactionExecutorExtensions - { - /// - /// Binds implementation of as to Web3 as a service. - /// - /// Service collection to bind implementations to. - /// The same service collection that was passed in. This enables fluent style. - public static IWeb3ServiceCollection UseWalletConnectTransactionExecutor(this IWeb3ServiceCollection collection) - { - collection.AssertServiceNotBound(); - - collection.AddSingleton(); - - return collection; - } - } -} \ No newline at end of file diff --git a/src/ChainSafe.Gaming.WalletConnect/Models/TypedDataModel.cs b/src/ChainSafe.Gaming/Web3/Core/Evm/Dto/SerializableTypedData.cs similarity index 74% rename from src/ChainSafe.Gaming.WalletConnect/Models/TypedDataModel.cs rename to src/ChainSafe.Gaming/Web3/Core/Evm/Dto/SerializableTypedData.cs index 7e1c95027..4f3db198b 100644 --- a/src/ChainSafe.Gaming.WalletConnect/Models/TypedDataModel.cs +++ b/src/ChainSafe.Gaming/Web3/Core/Evm/Dto/SerializableTypedData.cs @@ -5,22 +5,22 @@ using Nethereum.ABI.FunctionEncoding.Attributes; using Newtonsoft.Json; -namespace ChainSafe.Gaming.WalletConnect.Models +namespace ChainSafe.Gaming.Web3.Core.Evm { /// - /// Typed data model for signing typed data using Wallet Connect JsonRPC, see https://docs.walletconnect.com/advanced/rpc-reference/ethereum-rpc#eth_signtypeddata. + /// Typed data model for signing typed data using JsonRPC. /// /// Type of Data to be signed. [Serializable] [JsonObject(MemberSerialization.OptIn)] - public struct TypedDataModel + public struct SerializableTypedData { /// - /// Initializes a new instance of the struct. + /// Initializes a new instance of the struct. /// /// Domain for Typed Data that's serializable by json.net. /// Typed data to be signed. - public TypedDataModel(SerializableDomain domain, TStruct message) + public SerializableTypedData(SerializableDomain domain, TStruct message) { Types = MemberDescriptionFactory.GetTypesMemberDescription(typeof(SerializableDomain), typeof(TStruct)); @@ -37,13 +37,13 @@ public TypedDataModel(SerializableDomain domain, TStruct message) } /// - /// Member types for Wallet Connect used in json RPC params. + /// Member types used in json RPC params. /// [JsonProperty("types")] public Dictionary Types { get; private set; } /// - /// Primary type used for Wallet Connect in json RPC params. + /// Primary type used in json RPC params. /// [JsonProperty("primaryType")] public string PrimaryType { get; private set; } diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scenes/SampleLogin - MetaMask.unity b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scenes/SampleLogin - MetaMask.unity new file mode 100644 index 000000000..0d17aa009 --- /dev/null +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scenes/SampleLogin - MetaMask.unity @@ -0,0 +1,1714 @@ +%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 &210878633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 210878634} + - component: {fileID: 210878636} + - component: {fileID: 210878635} + m_Layer: 5 + m_Name: Error Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &210878634 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210878633} + m_LocalRotation: {x: -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: 751800059} + - {fileID: 1812470006} + m_Father: {fileID: 314965760} + 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: -8.4831} + m_SizeDelta: {x: 400, y: 167.1662} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &210878635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210878633} + 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: 0.912, b: 0.912, a: 0.9490196} + 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: 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 &210878636 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210878633} + m_CullTransparentMesh: 1 +--- !u!1 &314965759 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 314965760} + - component: {fileID: 314965761} + m_Layer: 5 + m_Name: Error + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &314965760 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314965759} + m_LocalRotation: {x: 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: 1042712191} + - {fileID: 210878634} + m_Father: {fileID: 2066044329} + m_RootOrder: 2 + 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 &314965761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314965759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c001d0d5433b4215b8abba94194881bd, type: 3} + m_Name: + m_EditorClassIdentifier: + MessageLabel: {fileID: 1028782728} +--- !u!1 &433476712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433476714} + - component: {fileID: 433476715} + m_Layer: 0 + m_Name: MetaMaskLogin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433476714 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433476712} + m_LocalRotation: {x: 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!114 &433476715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433476712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b547b7e8ac8d2f442bfefe0c9f59ed1d, type: 3} + m_Name: + m_EditorClassIdentifier: + k__BackingField: SampleMain + gelatoApiKey: 7MFQqyGS1Iui_e_MgmFW1BfbFeJ06g8nnL2oUTlIJug_ + errorPopup: {fileID: 314965761} + loginButton: {fileID: 2048731599} +--- !u!1 &740974330 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 740974331} + - component: {fileID: 740974332} + m_Layer: 5 + m_Name: Column - MetaMask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &740974331 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740974330} + m_LocalRotation: {x: -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: 956735924} + m_Father: {fileID: 1135875169} + 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.5, y: 0.5} +--- !u!114 &740974332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740974330} + 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: 300 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &751800058 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 751800059} + - component: {fileID: 751800061} + - component: {fileID: 751800060} + m_Layer: 5 + m_Name: Title - Error + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &751800059 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 751800058} + m_LocalRotation: {x: 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: 210878634} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &751800060 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 751800058} + 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.412, g: 0.043672003, b: 0.043672003, 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: Error +--- !u!222 &751800061 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 751800058} + m_CullTransparentMesh: 1 +--- !u!1 &772918783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 772918784} + - component: {fileID: 772918787} + - component: {fileID: 772918786} + - component: {fileID: 772918785} + m_Layer: 5 + m_Name: Button - Ok + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &772918784 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772918783} + m_LocalRotation: {x: 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: 1558416531} + m_Father: {fileID: 1812470006} + m_RootOrder: 1 + 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: 0, y: 50} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &772918785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772918783} + 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: 772918786} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 314965761} + m_TargetAssemblyTypeName: Scenes.ErrorPopup, Assembly-CSharp + m_MethodName: Close + 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 &772918786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772918783} + 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 &772918787 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772918783} + m_CullTransparentMesh: 1 +--- !u!1 &789601276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 789601277} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &789601277 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 789601276} + m_LocalRotation: {x: 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: 1362301615} + - {fileID: 1572088723} + m_Father: {fileID: 2066044329} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.725} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: -50, y: -50} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &893732502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 893732505} + - component: {fileID: 893732504} + - component: {fileID: 893732503} + 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 &893732503 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 893732502} + m_Enabled: 1 +--- !u!20 &893732504 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 893732502} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.101960786, g: 0.101960786, b: 0.10980392, 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: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &893732505 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 893732502} + 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 &956735923 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 956735924} + - component: {fileID: 956735926} + - component: {fileID: 956735925} + m_Layer: 5 + m_Name: Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &956735924 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956735923} + m_LocalRotation: {x: 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: 2048731596} + m_Father: {fileID: 740974331} + 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: 1} +--- !u!114 &956735925 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956735923} + 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!114 &956735926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956735923} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1028782727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1028782730} + - component: {fileID: 1028782729} + - component: {fileID: 1028782728} + m_Layer: 5 + m_Name: Error message + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1028782728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028782727} + 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.05, g: 0.05, b: 0.05, 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: 0 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1028782729 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028782727} + m_CullTransparentMesh: 1 +--- !u!224 &1028782730 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028782727} + m_LocalRotation: {x: -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: 1812470006} + 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!1 &1042712190 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1042712191} + - component: {fileID: 1042712194} + - component: {fileID: 1042712193} + - component: {fileID: 1042712192} + m_Layer: 5 + m_Name: Fade + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1042712191 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042712190} + m_LocalRotation: {x: 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: 314965760} + 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 &1042712192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042712190} + 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: 0 + 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: 1042712193} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 314965761} + m_TargetAssemblyTypeName: Scenes.ErrorPopup, Assembly-CSharp + m_MethodName: Close + 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 &1042712193 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042712190} + 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: 0.29803923} + 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 &1042712194 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042712190} + m_CullTransparentMesh: 1 +--- !u!1 &1135875168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1135875169} + - component: {fileID: 1135875171} + - component: {fileID: 1135875170} + m_Layer: 5 + m_Name: Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1135875169 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1135875168} + m_LocalRotation: {x: 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: 740974331} + m_Father: {fileID: 2066044329} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.725} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1135875170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1135875168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 +--- !u!114 &1135875171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1135875168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 25 + m_Right: 25 + m_Top: 25 + m_Bottom: 25 + m_ChildAlignment: 0 + m_Spacing: 50 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1290034538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1290034541} + - component: {fileID: 1290034540} + - component: {fileID: 1290034539} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1290034539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290034538} + 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 &1290034540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290034538} + 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 &1290034541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290034538} + m_LocalRotation: {x: 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: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1362301614 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1362301615} + - component: {fileID: 1362301617} + - component: {fileID: 1362301616} + m_Layer: 5 + m_Name: ChainSafe Logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1362301615 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362301614} + m_LocalRotation: {x: -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: 789601277} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.25, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1362301616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362301614} + 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: 21300000, guid: 804f4bf7fbf176544bd5efde4a0749ca, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1362301617 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362301614} + m_CullTransparentMesh: 1 +--- !u!1 &1558416530 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1558416531} + - component: {fileID: 1558416533} + - component: {fileID: 1558416532} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1558416531 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558416530} + m_LocalRotation: {x: -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: 772918784} + 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 &1558416532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558416530} + 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.05, g: 0.05, b: 0.05, 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: 19 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: OK +--- !u!222 &1558416533 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558416530} + m_CullTransparentMesh: 1 +--- !u!1 &1572088722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1572088723} + - component: {fileID: 1572088725} + - component: {fileID: 1572088724} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1572088723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572088722} + m_LocalRotation: {x: -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: 789601277} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.25, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -30, y: -30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1572088724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572088722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Login to continue + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294111986 + m_fontColor: {r: 0.95, g: 0.95, b: 0.95, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 40 + m_fontSizeBase: 48 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 16 + m_fontSizeMax: 40 + m_fontStyle: 1 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1572088725 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572088722} + m_CullTransparentMesh: 1 +--- !u!1 &1812470005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1812470006} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1812470006 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1812470005} + m_LocalRotation: {x: 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: 1028782730} + - {fileID: 772918784} + m_Father: {fileID: 210878634} + 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: -21} + m_SizeDelta: {x: -32, y: -58} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &2048731595 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 956735924} + m_Modifications: + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8775736491206355084, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_Name + value: Button - MetaMask + objectReference: {fileID: 0} + - target: {fileID: 8781309615174179339, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_text + value: Continue with MetaMask + objectReference: {fileID: 0} + - target: {fileID: 8781309615174179339, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + propertyPath: m_fontSize + value: 17.9 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} +--- !u!224 &2048731596 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4764608378852082086, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + m_PrefabInstance: {fileID: 2048731595} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2048731597 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8775736491206355084, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + m_PrefabInstance: {fileID: 2048731595} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2048731598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2048731597} + 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 &2048731599 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7324590823460843055, guid: 50ad8ea555027414b8ddfc03fc7d41ab, type: 3} + m_PrefabInstance: {fileID: 2048731595} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2048731597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2066044325 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2066044329} + - component: {fileID: 2066044328} + - component: {fileID: 2066044327} + - component: {fileID: 2066044326} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2066044326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066044325} + 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 &2066044327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066044325} + 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: 1280, y: 720} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &2066044328 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066044325} + 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!224 &2066044329 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066044325} + 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: 789601277} + - {fileID: 1135875169} + - {fileID: 314965760} + m_Father: {fileID: 0} + 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, y: 0} diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scenes/SampleLogin - MetaMask.unity.meta b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scenes/SampleLogin - MetaMask.unity.meta new file mode 100644 index 000000000..6d95f8e96 --- /dev/null +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scenes/SampleLogin - MetaMask.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7e829b2033fc8554eb0048ce07704f77 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/ExistingWalletLogin.cs b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/ExistingWalletLogin.cs index 70937896a..7b74ea402 100644 --- a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/ExistingWalletLogin.cs +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/ExistingWalletLogin.cs @@ -231,7 +231,7 @@ private void BuildWalletConnectConfig() private IEnumerator FetchSupportedWallets() { - using (UnityWebRequest webRequest = UnityWebRequest.Get("https://registry.walletconnect.org/data/wallets.json")) + using (UnityWebRequest webRequest = UnityWebRequest.Get("https://registry.walletconnect.com/data/wallets.json")) { // Request and wait for the desired page. yield return webRequest.SendWebRequest(); diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/MetaMaskLogin.cs b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/MetaMaskLogin.cs new file mode 100644 index 000000000..4f2b084e7 --- /dev/null +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/MetaMaskLogin.cs @@ -0,0 +1,44 @@ +using System.Collections; +#if UNITY_WEBGL +using ChainSafe.Gaming.MetaMask; +using ChainSafe.Gaming.MetaMask.Unity; +#endif +using ChainSafe.Gaming.Web3.Build; +using Scenes; +using UnityEngine; +using UnityEngine.UI; + +/// +/// Login using MetaMask. +/// Only works for UnityWebGL build (not in editor). +/// +public class MetaMaskLogin : Login +{ + [SerializeField] private Button loginButton; + + protected override IEnumerator Initialize() + { + loginButton.onClick.AddListener(LoginClicked); + + yield return null; + } + + private async void LoginClicked() + { + await TryLogin(); + } + + protected override Web3Builder ConfigureWeb3Services(Web3Builder web3Builder) + { + return web3Builder.Configure(services => + { + // Currently Metamask browser connections can only run in WebGL builds. + // See point 5 in https://github.com/Nethereum/Unity3dSampleTemplate?tab=readme-ov-file#important-notes. +#if UNITY_WEBGL && !UNITY_EDITOR + services.UseMetaMask().UseMetaMaskSigner().UseMetaMaskTransactionExecutor(); +#else + Debug.LogError("Metamask browser connection, currently, only works on WebGL Builds (not in editor)."); +#endif + }); + } +} diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/MetaMaskLogin.cs.meta b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/MetaMaskLogin.cs.meta new file mode 100644 index 000000000..33f79fe3c --- /dev/null +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/MetaMaskLogin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b547b7e8ac8d2f442bfefe0c9f59ed1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: