diff --git a/Assets/GoogleSignIn.meta b/Assets/GoogleSignIn.meta new file mode 100644 index 0000000..b61c943 --- /dev/null +++ b/Assets/GoogleSignIn.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a089c79cc334748a5a29c5f219b7cfd4 +folderAsset: yes +timeCreated: 1490807626 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor.meta b/Assets/GoogleSignIn/Editor.meta new file mode 100644 index 0000000..d55e3f7 --- /dev/null +++ b/Assets/GoogleSignIn/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a7e77ece57ef34772969fad4915b1a4c +folderAsset: yes +timeCreated: 1490978071 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml new file mode 100644 index 0000000..625d2e5 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml @@ -0,0 +1,19 @@ + + + + + + + extra-google-m2repository + + + + + + + + + + diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta new file mode 100644 index 0000000..6493d60 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 938014c9994164100b26d82840a88fbb +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml new file mode 100644 index 0000000..1ef9034 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml @@ -0,0 +1,11 @@ + + + + + + + Assets/GoogleSignIn/Editor/m2repository + + + + diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta new file mode 100644 index 0000000..578e49d --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e8689106c65f445c19cec6044d615c19 +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt new file mode 100644 index 0000000..a0e2454 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt @@ -0,0 +1,33 @@ +Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll +Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll +Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll +Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll +Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm +Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h +Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h +Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm +Assets/Parse/LICENSE +Assets/Parse/Plugins/Unity.Compat.dll +Assets/Parse/Plugins/Unity.Tasks.dll +Assets/SignInSample/MainScene.unity +Assets/SignInSample/SigninSampleScript.cs +Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs +Assets/GoogleSignIn/Impl/SignInHelperObject.cs +Assets/GoogleSignIn/Impl/NativeFuture.cs +Assets/GoogleSignIn/Impl/BaseObject.cs +Assets/GoogleSignIn/GoogleSignIn.cs +Assets/GoogleSignIn/GoogleSignInConfiguration.cs +Assets/GoogleSignIn/Future.cs +Assets/GoogleSignIn/GoogleSignInUser.cs +Assets/GoogleSignIn/GoogleSignInStatusCode.cs +Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml +Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 diff --git a/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta new file mode 100644 index 0000000..eb7a5d6 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a67d5f0cfc09749e6b1ce13e8b8e6e1d +labels: +- gvh +- gvh_manifest +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository.meta b/Assets/GoogleSignIn/Editor/m2repository.meta new file mode 100644 index 0000000..26cfc22 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: eefc3dc8b56e545998952bd59ab36247 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com.meta b/Assets/GoogleSignIn/Editor/m2repository/com.meta new file mode 100644 index 0000000..9372f2b --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ade49ef91c70440a0baeac322ecaa2d7 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google.meta new file mode 100644 index 0000000..a1cf31a --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 707de6ade212a46b1ab4bf4d42325176 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta new file mode 100644 index 0000000..4a56a31 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 34b86fc2e934d482ea5f9d1f5354b0f9 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta new file mode 100644 index 0000000..1132fbf --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e3becceb8680148d59e5bb93e5eb5a24 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta new file mode 100644 index 0000000..27236f5 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 001a15402063b4df983ba8bc4ddb269f +folderAsset: yes +timeCreated: 1537405253 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom new file mode 100644 index 0000000..ce320d0 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + com.google.signin + google-signin-support + 1.0.4 + srcaar + diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 new file mode 100644 index 0000000..a6bc0c5 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 @@ -0,0 +1 @@ +7cd48eaf454469c04dae63043d467d69 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta new file mode 100644 index 0000000..8209b09 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 907bf7a19cd7848cabf1f641f61343ee +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta new file mode 100644 index 0000000..9461274 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a3f74b3d329a24e81a6c6f9f1d2f46f1 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 new file mode 100644 index 0000000..8721bf3 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 @@ -0,0 +1 @@ +f30d09407a5b0e439bfc0e54e33f3a34f7c7d35c \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta new file mode 100644 index 0000000..df944c4 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e1a3ff77f802d43818521ff3db2bf944 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar new file mode 100644 index 0000000..1ebd5a1 Binary files /dev/null and b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar differ diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 new file mode 100644 index 0000000..f7df30c --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 @@ -0,0 +1 @@ +040097cf545e84135c0e4d783e3b1143 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta new file mode 100644 index 0000000..ee2f55d --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 79f9d122dd99b483282294f3b1f1bd36 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta new file mode 100644 index 0000000..4ae20ba --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6eab7a3cbdbf34cffaf951dc9210a32c +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 new file mode 100644 index 0000000..db669bf --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 @@ -0,0 +1 @@ +632874f93336b4f05e15f55b63656dace924fa72 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta new file mode 100644 index 0000000..124743a --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d508eb0e16bb14c8a962b343e755ef01 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml new file mode 100644 index 0000000..c3049af --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml @@ -0,0 +1,12 @@ + + + com.google.signin + google-signin-support + + 1.0.4 + + 1.0.4 + + 20180920010048 + + diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 new file mode 100644 index 0000000..77f39ed --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 @@ -0,0 +1 @@ +e243363a85b4f7bd1170918ba674061b \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta new file mode 100644 index 0000000..49e3156 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c020582c1a85d47c7934908f00a0bd37 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta new file mode 100644 index 0000000..1236df6 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f3911d467587242978192a8723c68395 +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 new file mode 100644 index 0000000..e1c0999 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +43ebede449c3782df517a7156c18c28cde4fd4f4 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta new file mode 100644 index 0000000..63dc4be --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 16b8065a143bb4277af08381a56157dd +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Future.cs b/Assets/GoogleSignIn/Future.cs new file mode 100644 index 0000000..df46942 --- /dev/null +++ b/Assets/GoogleSignIn/Future.cs @@ -0,0 +1,84 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Google { + using System.Collections; + using System.Threading.Tasks; + using UnityEngine; + + /// + /// Interface for implementations of the Future API. + /// + internal interface FutureAPIImpl { + bool Pending { get; } + GoogleSignInStatusCode Status { get; } + T Result { get; } + } + + /// + /// Future return value. + /// + /// This class provides a promise of a result from a method call. + /// The typical usage is to check the Pending property until it is false. + /// At this time either the Status or Result will be available for use. + /// Result is only set if the operation was successful. + /// As a convience, a coroutine to complete a Task is provided. + /// + public class Future { + + private FutureAPIImpl apiImpl; + + internal Future(FutureAPIImpl impl) { + apiImpl = impl; + } + + /// + /// Gets a value indicating whether this + /// is pending. + /// + /// true if pending; otherwise, false. + public bool Pending { get { return apiImpl.Pending; } } + + /// + /// Gets the status. + /// + /// The status is set when Pending == false. + GoogleSignInStatusCode Status { get { return apiImpl.Status; } } + + /// + /// Gets the result. + /// + /// The result is set when Pending == false and there is no error. + /// + T Result { get { return apiImpl.Result; } } + + /// + /// Waits for result then completes the TaskCompleationSource. + /// + /// The for result. + /// Tcs. + internal IEnumerator WaitForResult(TaskCompletionSource tcs) { + yield return new WaitUntil(() => !Pending); + if (Status == GoogleSignInStatusCode.Canceled) { + tcs.SetCanceled(); + } else if (Status == GoogleSignInStatusCode.Success || + Status == GoogleSignInStatusCode.SuccessCached) { + tcs.SetResult(Result); + } else { + tcs.SetException(new GoogleSignIn.SignInException(Status)); + } + } + } +} \ No newline at end of file diff --git a/Assets/GoogleSignIn/Future.cs.meta b/Assets/GoogleSignIn/Future.cs.meta new file mode 100644 index 0000000..75a7f22 --- /dev/null +++ b/Assets/GoogleSignIn/Future.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ad3b09fb652fb4ff0a68d1966f13160e +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignIn.cs b/Assets/GoogleSignIn/GoogleSignIn.cs new file mode 100644 index 0000000..c59ced7 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignIn.cs @@ -0,0 +1,202 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System; + using System.Runtime.Serialization; + using System.Threading.Tasks; + using Google.Impl; + using UnityEngine; + + /// + /// Google sign in API. + /// + /// This class implements the GoogleSignInAPI for Unity. + /// Typical usage is to set the Configuration options as needed, then + /// get the DefaultInstance and call signIn or signInSilently. See + /// the + /// Google Sign-In API documentation for more details. + /// + /// + /// private static readonly GoogleSignInConfiguration configuration = + /// new GoogleSignInConfiguration { + /// WebClientId = "", + /// RequestIdToken = true + /// }; + /// + /// public void OnSignIn() { + /// GoogleSignIn.Configuration = configuration; + /// GoogleSignIn.Configuration.UseGameSignIn = false; + /// GoogleSignIn.Configuration.RequestIdToken = true; + /// GoogleSignIn.DefaultInstance.SignIn().ContinueWith( + /// OnAuthenticationFinished); + /// } + /// + /// + /// + public class GoogleSignIn { + +#if !UNITY_ANDROID && !UNITY_IOS + static GoogleSignIn() { + Debug.LogError("This platform is not supported"); + } +#endif + + private static GoogleSignIn theInstance = null; + private static GoogleSignInConfiguration theConfiguration = null; + private ISignInImpl impl; + + /// The configuration settings for Google Sign-in. + /// The configuration should be set before calling the sign-in + /// methods. Once the configuration is set it cannot be changed. + /// + public static GoogleSignInConfiguration Configuration { + set { + // Can set the configuration until the singleton is created. + if (theInstance == null || theConfiguration == value || theConfiguration == null) { + theConfiguration = value; + } else { + throw new SignInException(GoogleSignInStatusCode.DeveloperError, + "DefaultInstance already created. " + + " Cannot change configuration after creation."); + } + } + + get { + return theConfiguration; + } + } + + /// + /// Singleton instance of this class. + /// + /// The instance. + public static GoogleSignIn DefaultInstance { + get { + if (theInstance == null) { +#if UNITY_ANDROID || UNITY_IOS + theInstance = new GoogleSignIn(new GoogleSignInImpl(Configuration)); +#else + theInstance = new GoogleSignIn(null); + throw new SignInException( + GoogleSignInStatusCode.DeveloperError, + "This platform is not supported by GoogleSignIn"); +#endif + } + return theInstance; + } + } + + internal GoogleSignIn(GoogleSignInImpl impl) { + this.impl = impl; + } + + public void EnableDebugLogging(bool flag) { + impl.EnableDebugLogging(flag); + } + + /// Starts the authentication process. + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Task SignIn() { + var tcs = new TaskCompletionSource(); + SignInHelperObject.Instance.StartCoroutine( + impl.SignIn().WaitForResult(tcs)); + return tcs.Task; + } + + /// Starts the silent authentication process. + /// + /// The authenication process is started and will attempt to sign in without + /// displaying any UI. If this cannot be done, the developer should call + /// SignIn(). + /// + public Task SignInSilently() { + var tcs = new TaskCompletionSource(); + SignInHelperObject.Instance.StartCoroutine( + impl.SignInSilently().WaitForResult(tcs)); + return tcs.Task; + } + + /// + /// Signs out the User. + /// + /// Future sign-in attempts will require the user to select the + /// account to use when signing in. + /// + public void SignOut() { + theConfiguration = null; + impl.SignOut(); + } + + /// + /// Disconnect this instance. + /// + /// When the user is disconnected, it revokes all access that may + /// have been granted to this application. This includes any server side + /// access tokens derived from server auth codes. As a result, future + /// sign-in attempts will require the user to re-consent to the requested + /// scopes. + /// + public void Disconnect() { + impl.Disconnect(); + } + + /// + /// Sign in exception. This is a checked exception for handling specific + /// errors during the sign-in process. + /// + [Serializable] + public class SignInException : Exception { + internal SignInException(GoogleSignInStatusCode status) { + Status = status; + } + + public SignInException(GoogleSignInStatusCode status, string message) : + base(message) { + Status = status; + } + + public SignInException(GoogleSignInStatusCode status, string message, + Exception innerException) : base(message, innerException) { + Status = status; + } + + protected SignInException(GoogleSignInStatusCode status, + SerializationInfo info, + StreamingContext context) : + base(info, context) { + Status = status; + } + + public GoogleSignInStatusCode Status { + get; + internal set; + } + } + } + + internal interface ISignInImpl { + Future SignIn(); + Future SignInSilently(); + void EnableDebugLogging(bool flag); + void SignOut(); + void Disconnect(); + } +} // namespace Google diff --git a/Assets/GoogleSignIn/GoogleSignIn.cs.meta b/Assets/GoogleSignIn/GoogleSignIn.cs.meta new file mode 100644 index 0000000..31609ff --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignIn.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 138b984208e394be797ce8905a44fd54 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInConfiguration.cs b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs new file mode 100644 index 0000000..d914c68 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs @@ -0,0 +1,63 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System.Collections.Generic; + + /// + /// Configuration properties for Google Sign-In. + /// + public class GoogleSignInConfiguration { + /// Set to true to use games signin, false for default signin. + /// + /// Note: The Games configuration is not supported on non-Android + /// platforms. + /// If games configuration is used, you must also add the + /// play-services-games libraries and dependencies. + /// See the README for more details. + /// + public bool UseGameSignIn = false; + /// Web client id associated with this app. + /// Required for requesting auth code or id token. + public string WebClientId = null; + /// Set to true for getting an auth code when authenticating. + /// + public bool RequestAuthCode = false; + /// Set to true to request to reset the refresh token. + /// Causes re-consent. + /// + public bool ForceTokenRefresh = false; + /// Request email address, requires consent. + public bool RequestEmail = false; + /// Request id token, requires consent. + public bool RequestIdToken = false; + /// Request profile information, requires consent. + public bool RequestProfile = false; + /// Hides popup UIs from games services. + /// Used with games signin to show or hide the connecting popup UI + /// and to associate an invisible view for other popups. This is + /// recommended for VR applications. This has no effect if UseGameSignIn is + /// false. + /// + public bool HidePopups = false; + /// Account name to use when authenticating, + /// null indicates use default. + public string AccountName = null; + /// Additional scopes to request, requires consent. + public IEnumerable AdditionalScopes = null; + } +} + diff --git a/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta new file mode 100644 index 0000000..943644c --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 0c3999c0f68f04ae08f04fb3bf2a2050 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInStatusCode.cs b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs new file mode 100644 index 0000000..0719f2c --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs @@ -0,0 +1,72 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + + /// + /// Status code for the SignIn operations. + /// + /// All successful status codes are less than or equal to 0. + /// + public enum GoogleSignInStatusCode { + /// The operation was successful, but used the device's cache. + /// + SuccessCached = -1, + + /// The operation was successful. + Success = 0, + + /// The client attempted to call a method from an API that + /// failed to connect. + ApiNotConnected = 1, + + /// The result was canceled either due to client disconnect + /// or cancel(). + Canceled = 2, + + /// A blocking call was interrupted while waiting and did not + /// run to completion. + Interrupted = 3, + + /// The client attempted to connect to the service with an + /// invalid account name specified. + InvalidAccount = 4, + + /// Timed out while awaiting the result. + Timeout = 5, + + /// The application is misconfigured. + /// This error is not recoverable. + /// + /// The developer should look at the logs after this to determine + /// more actionable information. + /// + DeveloperError = 6, + + /// An internal error occurred. Retrying should resolve the + /// problem. + InternalError = 7, + + /// A network error occurred. Retrying should resolve the problem. + /// + NetworkError = 8, + + /// The operation failed with no more detailed information. + /// + Error = 9, + } +} // namespace GoogleSignIn + diff --git a/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta new file mode 100644 index 0000000..238e45f --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 077933fcaedac412d9762bf3e0a3be68 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInUser.cs b/Assets/GoogleSignIn/GoogleSignInUser.cs new file mode 100644 index 0000000..a3ea8b3 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInUser.cs @@ -0,0 +1,76 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System; + + /// Information for the authenticated user. + public class GoogleSignInUser { + + /// Server AuthCode to be exchanged for an auth token. + /// null if not requested, or if there was an error. + public string AuthCode { + get; + internal set; + } + + /// Email address. + /// null if not requested, or if there was an error. + public string Email { + get; + internal set; + } + + /// Id token. + /// null if not requested, or if there was an error. + public string IdToken { + get; + internal set; + } + + /// Display Name. + public string DisplayName { + get; + internal set; + } + + /// Given Name. + public string GivenName { + get; + internal set; + } + + /// Family Name. + public string FamilyName { + get; + internal set; + } + + /// Profile photo + /// Can be null if the profile is not requested, + /// or none set. + public Uri ImageUrl { + get; + internal set; + } + + /// User ID + public string UserId { + get; + internal set; + } + } +} diff --git a/Assets/GoogleSignIn/GoogleSignInUser.cs.meta b/Assets/GoogleSignIn/GoogleSignInUser.cs.meta new file mode 100644 index 0000000..587c686 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInUser.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: c56b92217d0144af5907627d1235e0a5 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl.meta b/Assets/GoogleSignIn/Impl.meta new file mode 100644 index 0000000..de5f17f --- /dev/null +++ b/Assets/GoogleSignIn/Impl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2fbe4f3ec9db4415e849f9bb89e63a92 +folderAsset: yes +timeCreated: 1502761839 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/BaseObject.cs b/Assets/GoogleSignIn/Impl/BaseObject.cs new file mode 100644 index 0000000..44d6501 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/BaseObject.cs @@ -0,0 +1,70 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Runtime.InteropServices; + using System.Text; + using UnityEngine; + + /// + /// Base object manages the pointer to a native object which provides the + /// implementation of a C# object. + /// + internal abstract class BaseObject : IDisposable { + // handle to native object. + private HandleRef selfHandleRef; + private static HandleRef nullSelf = new HandleRef(); + + public BaseObject(IntPtr intPtr) { + selfHandleRef = new HandleRef(this, intPtr); + } + + protected HandleRef SelfPtr() { + if (selfHandleRef.Equals(nullSelf)) { + throw new InvalidOperationException( + "Attempted to use object after it was cleaned up"); + } + return selfHandleRef; + } + + public virtual void Dispose() { + selfHandleRef = nullSelf; + } + + internal delegate UIntPtr OutStringMethod([In, Out] byte[] out_bytes, + UIntPtr out_size); + + internal static String OutParamsToString(OutStringMethod outStringMethod) { + UIntPtr requiredSize = outStringMethod(null, UIntPtr.Zero); + if (requiredSize.Equals(UIntPtr.Zero)) { + return null; + } + + string str = null; + try { + byte[] array = new byte[requiredSize.ToUInt32()]; + outStringMethod(array, requiredSize); + str = Encoding.UTF8.GetString(array, 0, + (int)requiredSize.ToUInt32() - 1); + } catch (Exception e) { + Debug.LogError("Exception creating string from char array: " + e); + str = string.Empty; + } + return str; + } + } +} diff --git a/Assets/GoogleSignIn/Impl/BaseObject.cs.meta b/Assets/GoogleSignIn/Impl/BaseObject.cs.meta new file mode 100644 index 0000000..0e24225 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/BaseObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: fe250cda690a44cb08f8f7d26c9723b4 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs new file mode 100644 index 0000000..78c8081 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs @@ -0,0 +1,187 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Collections.Generic; + using System.Runtime.InteropServices; + + internal class GoogleSignInImpl : BaseObject, ISignInImpl { + +#if UNITY_ANDROID + private const string DllName = "native-googlesignin"; +#else + private const string DllName = "__Internal"; +#endif + + internal GoogleSignInImpl(GoogleSignInConfiguration configuration) + : base(GoogleSignIn_Create(GetPlayerActivity())) { + + if (configuration != null) { + List scopes = new List(); + if (configuration.AdditionalScopes != null) { + scopes.AddRange(configuration.AdditionalScopes); + } + GoogleSignIn_Configure(SelfPtr(), configuration.UseGameSignIn, + configuration.WebClientId, + configuration.RequestAuthCode, + configuration.ForceTokenRefresh, + configuration.RequestEmail, + configuration.RequestIdToken, + configuration.HidePopups, + scopes.ToArray(), + scopes.Count, + configuration.AccountName); + } + } + + /// Enables/Disables verbose logging to help troubleshooting + public void EnableDebugLogging(bool flag) { + GoogleSignIn_EnableDebugLogging(SelfPtr(), flag); + } + + /// + /// Starts the authentication process. + /// + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Future SignIn() { + IntPtr nativeFuture = GoogleSignIn_SignIn(SelfPtr()); + return new Future(new NativeFuture(nativeFuture)); + } + + /// + /// Starts the authentication process. + /// + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Future SignInSilently() { + IntPtr nativeFuture = GoogleSignIn_SignInSilently(SelfPtr()); + return new Future(new NativeFuture(nativeFuture)); + } + + /// + /// Signs out the User. + /// + public void SignOut() { + GoogleSignIn_Signout(SelfPtr()); + } + + /// + /// Disconnects the user from the application and revokes all consent. + /// + public void Disconnect() { + GoogleSignIn_Disconnect(SelfPtr()); + } + + /// + /// Creates an instance of the native Google Sign-In implementation. + /// + /// + /// For Android this must be the JNI raw object for the parentActivity. + /// For iOS it is ignored. + /// + /// The pointer to the instance. + /// Data used in creating the instance. + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_Create(IntPtr data); + + [DllImport(DllName)] + static extern void GoogleSignIn_EnableDebugLogging(HandleRef self, bool flag); + + [DllImport(DllName)] + static extern bool GoogleSignIn_Configure(HandleRef self, + bool useGameSignIn, string webClientId, + bool requestAuthCode, bool forceTokenRefresh, bool requestEmail, + bool requestIdToken, bool hidePopups, string[] additionalScopes, + int scopeCount, string accountName); + + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_SignIn(HandleRef self); + + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_SignInSilently(HandleRef self); + + [DllImport(DllName)] + static extern void GoogleSignIn_Signout(HandleRef self); + + [DllImport(DllName)] + static extern void GoogleSignIn_Disconnect(HandleRef self); + + [DllImport(DllName)] + internal static extern void GoogleSignIn_DisposeFuture(HandleRef self); + + [DllImport(DllName)] + internal static extern bool GoogleSignIn_Pending(HandleRef self); + + [DllImport(DllName)] + internal static extern IntPtr GoogleSignIn_Result(HandleRef self); + + [DllImport(DllName)] + internal static extern int GoogleSignIn_Status(HandleRef self); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetServerAuthCode( + HandleRef self, [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetDisplayName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetEmail(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetFamilyName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetGivenName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetIdToken(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetImageUrl(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetUserId(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + // Gets the Unity player activity. + // For iOS, this returns Zero. + private static IntPtr GetPlayerActivity() { +#if UNITY_ANDROID + UnityEngine.AndroidJavaClass jc = new UnityEngine.AndroidJavaClass( + "com.unity3d.player.UnityPlayer"); + return jc.GetStatic("currentActivity") + .GetRawObject(); +#else + return IntPtr.Zero; +#endif + } + } +} diff --git a/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta new file mode 100644 index 0000000..46c1d56 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 9ae1f008f9f994b9c96c1a14067d7b48 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/NativeFuture.cs b/Assets/GoogleSignIn/Impl/NativeFuture.cs new file mode 100644 index 0000000..6d460f2 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/NativeFuture.cs @@ -0,0 +1,102 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Runtime.InteropServices; + + /// + /// Native future is an interal class that implements the FutureAPIImpl + /// by calling native methods which are implemented in the native code. + /// + internal class NativeFuture : BaseObject, FutureAPIImpl { + + internal NativeFuture(IntPtr ptr) : base(ptr) { + } + + public override void Dispose() { + GoogleSignInImpl.GoogleSignIn_DisposeFuture(SelfPtr()); + base.Dispose(); + } + + public bool Pending { + get { + return GoogleSignInImpl.GoogleSignIn_Pending(SelfPtr()); + } + } + + public GoogleSignInUser Result { + get { + IntPtr ptr = GoogleSignInImpl.GoogleSignIn_Result(SelfPtr()); + if (ptr != IntPtr.Zero) { + GoogleSignInUser user = new GoogleSignInUser(); + HandleRef userPtr = new HandleRef(user, ptr); + + user.DisplayName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetDisplayName(userPtr, + out_string, + out_size)); + user.Email = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetEmail(userPtr, out_string, + out_size)); + + user.FamilyName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetFamilyName(userPtr, out_string, + out_size)); + + user.GivenName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetGivenName(userPtr, out_string, + out_size)); + + user.IdToken = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetIdToken(userPtr, out_string, + out_size)); + + user.AuthCode = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetServerAuthCode(userPtr, out_string, + out_size)); + + string url = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetImageUrl(userPtr, out_string, + out_size)); + if (url.Length > 0) { + user.ImageUrl = new System.Uri(url); + } + + user.UserId = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetUserId(userPtr, out_string, + out_size)); + return user; + } else { + return null; + } + } + } + + /// + /// Gets the status. + /// + /// The platform specific implementation maps the platform specific + /// code to one defined in GoogleSignStatusCode. + /// The status. + public GoogleSignInStatusCode Status { + get { + return (GoogleSignInStatusCode)GoogleSignInImpl.GoogleSignIn_Status( + SelfPtr()); + } + } + } +} diff --git a/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta b/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta new file mode 100644 index 0000000..0cb0bd1 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 5f1aae79b1ca4432d9d8ec382c54bf46 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/SignInHelperObject.cs b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs new file mode 100644 index 0000000..6fbf3fe --- /dev/null +++ b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs @@ -0,0 +1,42 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Google.Impl { + using UnityEngine; + + ///Helper object to connect the Sign-in API to the Unity Game Scene. + /// + ///This class is added to the scene so that the Google Sign-in API + /// can start coroutines. + /// + public class SignInHelperObject : MonoBehaviour { + + private static SignInHelperObject instance; + + internal static SignInHelperObject Instance { + get { + if (Application.isPlaying) { + // add an invisible game object to the scene + GameObject obj = new GameObject("GoogleSignInHelperObject"); + DontDestroyOnLoad(obj); + instance = obj.AddComponent(); + } else { + instance = new SignInHelperObject(); + } + return instance; + } + } + } +} diff --git a/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta new file mode 100644 index 0000000..2dd5652 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ad98e5b48888e44eb81dd5884d3a1754 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayServicesResolver.meta b/Assets/PlayServicesResolver.meta new file mode 100644 index 0000000..0a89788 --- /dev/null +++ b/Assets/PlayServicesResolver.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 333d24e71d12446ba5c77815e64b0ca8 +folderAsset: yes +timeCreated: 1448926447 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayServicesResolver/Editor.meta b/Assets/PlayServicesResolver/Editor.meta new file mode 100644 index 0000000..457843c --- /dev/null +++ b/Assets/PlayServicesResolver/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e105e00cdce8456482d26b1fcd1ca47d +folderAsset: yes +timeCreated: 1448926516 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll b/Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll new file mode 100644 index 0000000..15745c4 Binary files /dev/null and b/Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll differ diff --git a/Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll.meta b/Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll.meta new file mode 100644 index 0000000..3923f5f --- /dev/null +++ b/Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: fdc56cdbdca243b288646b7e19b761fa +labels: +- gvh +- gvh_targets-editor +- gvh_version-1.2.89.0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll b/Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll new file mode 100644 index 0000000..364b743 Binary files /dev/null and b/Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll differ diff --git a/Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll.meta b/Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll.meta new file mode 100644 index 0000000..daa2222 --- /dev/null +++ b/Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: 8655c1cd7e594c9f821d0bb41d32da26 +labels: +- gvh +- gvh_targets-editor +- gvh_version-1.2.89.0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll b/Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll new file mode 100644 index 0000000..98ce8c4 Binary files /dev/null and b/Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll differ diff --git a/Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll.meta b/Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll.meta new file mode 100644 index 0000000..0cf6996 --- /dev/null +++ b/Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: 9d654a5d600b4aa9a3a6aa6593a081b5 +labels: +- gvh +- gvh_targets-editor +- gvh_version-1.2.89.0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll b/Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll new file mode 100644 index 0000000..287d79a Binary files /dev/null and b/Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll differ diff --git a/Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll.meta b/Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll.meta new file mode 100644 index 0000000..20c9e79 --- /dev/null +++ b/Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: f4b50512886d48a3bed0c231ab6b8c56 +labels: +- gvh +- gvh_targets-editor +- gvh_version-1.2.89.0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayServicesResolver/Editor/play-services-resolver_v1.2.89.0.txt b/Assets/PlayServicesResolver/Editor/play-services-resolver_v1.2.89.0.txt new file mode 100644 index 0000000..16efcf1 --- /dev/null +++ b/Assets/PlayServicesResolver/Editor/play-services-resolver_v1.2.89.0.txt @@ -0,0 +1,4 @@ +Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll +Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll +Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll +Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll diff --git a/Assets/PlayServicesResolver/Editor/play-services-resolver_v1.2.89.0.txt.meta b/Assets/PlayServicesResolver/Editor/play-services-resolver_v1.2.89.0.txt.meta new file mode 100644 index 0000000..7cf8e1c --- /dev/null +++ b/Assets/PlayServicesResolver/Editor/play-services-resolver_v1.2.89.0.txt.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d20710ab72d42e88abaab55cc7c066a +labels: +- gvh +- gvh_manifest +- gvh_version-1.2.89.0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta new file mode 100644 index 0000000..e21f9a0 --- /dev/null +++ b/Assets/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 11bf9545a722341b6ba971705a514a4b +folderAsset: yes +timeCreated: 1490826122 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android.meta b/Assets/Plugins/Android.meta new file mode 100644 index 0000000..d7fc0dd --- /dev/null +++ b/Assets/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bef9d49f86fa0b34aafe37663b652dfb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS.meta b/Assets/Plugins/iOS.meta new file mode 100644 index 0000000..d41477d --- /dev/null +++ b/Assets/Plugins/iOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 367a2849a95b040e2ab7533314f868f4 +folderAsset: yes +timeCreated: 1490995881 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/GoogleSignIn.meta b/Assets/Plugins/iOS/GoogleSignIn.meta new file mode 100644 index 0000000..c4ea38d --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 07c86a3f84f494e589218ed67d10255a +folderAsset: yes +timeCreated: 1490995894 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h new file mode 100644 index 0000000..5e77bc1 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h @@ -0,0 +1,20 @@ +/** + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#import +@interface GoogleSignInHandler + : NSObject + +@end diff --git a/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h.meta b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h.meta new file mode 100644 index 0000000..e115ee3 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h.meta @@ -0,0 +1,35 @@ +fileFormatVersion: 2 +guid: 62c129704e1ec48179ba285e1af154b8 +labels: +- gvh +- gvh_version-1.0.4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm new file mode 100644 index 0000000..9b82a37 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm @@ -0,0 +1,345 @@ +/** + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#import "GoogleSignIn.h" +#import +#import +#import +#import + +#import + +// These values are in the Unity plugin code. The iOS specific +// codes are mapped to these. +static const int kStatusCodeSuccessCached = -1; +static const int kStatusCodeSuccess = 0; +static const int kStatusCodeApiNotConnected = 1; +static const int kStatusCodeCanceled = 2; +static const int kStatusCodeInterrupted = 3; +static const int kStatusCodeInvalidAccount = 4; +static const int kStatusCodeTimeout = 5; +static const int kStatusCodeDeveloperError = 6; +static const int kStatusCodeInternalError = 7; +static const int kStatusCodeNetworkError = 8; +static const int kStatusCodeError = 9; + +/** + * Helper method to pause the Unity player. This is done when showing any UI. + */ +void UnpauseUnityPlayer() { + dispatch_async(dispatch_get_main_queue(), ^{ + if (UnityIsPaused() > 0) { + UnityPause(0); + } + }); +} + +// result for pending operation. Access to this should be protected using the +// resultLock. +struct SignInResult { + int result_code; + bool finished; +}; + +std::unique_ptr currentResult_; + +NSRecursiveLock *resultLock = [NSRecursiveLock alloc]; + +@implementation GoogleSignInHandler + +/** + * Overload the presenting of the UI so we can pause the Unity player. + */ +- (void)signIn:(GIDSignIn *)signIn + presentViewController:(UIViewController *)viewController { + UnityPause(true); + [UnityGetGLViewController() presentViewController:viewController + animated:YES + completion:nil]; +} + +/** + * Overload the dismissing so we can resume the Unity player. + */ +- (void)signIn:(GIDSignIn *)signIn + dismissViewController:(UIViewController *)viewController { + UnityPause(false); + [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:nil]; +} + +/** + * The sign-in flow has finished and was successful if |error| is |nil|. + * Map the errors from the iOS SDK back to the Android values for consistency's + * sake in the Unity layer. + */ +- (void)signIn:(GIDSignIn *)signIn + didSignInForUser:(GIDGoogleUser *)user + withError:(NSError *)_error { + if (_error == nil) { + if (currentResult_) { + currentResult_->result_code = kStatusCodeSuccess; + currentResult_->finished = true; + } else { + NSLog(@"No currentResult to set status on!"); + } + NSLog(@"didSignInForUser: SUCCESS"); + } else { + NSLog(@"didSignInForUser: %@", _error.localizedDescription); + if (currentResult_) { + switch (_error.code) { + case kGIDSignInErrorCodeUnknown: + currentResult_->result_code = kStatusCodeError; + break; + case kGIDSignInErrorCodeKeychain: + currentResult_->result_code = kStatusCodeInternalError; + break; + case kGIDSignInErrorCodeNoSignInHandlersInstalled: + currentResult_->result_code = kStatusCodeDeveloperError; + break; + case kGIDSignInErrorCodeHasNoAuthInKeychain: + currentResult_->result_code = kStatusCodeError; + break; + case kGIDSignInErrorCodeCanceled: + currentResult_->result_code = kStatusCodeCanceled; + break; + default: + NSLog(@"Unmapped error code: %ld, returning Error", + static_cast(_error.code)); + currentResult_->result_code = kStatusCodeError; + } + + currentResult_->finished = true; + UnpauseUnityPlayer(); + } else { + NSLog(@"No currentResult to set status on!"); + } + } +} + +// Finished disconnecting |user| from the app successfully if |error| is |nil|. +- (void)signIn:(GIDSignIn *)signIn + didDisconnectWithUser:(GIDGoogleUser *)user + withError:(NSError *)_error { + if (_error == nil) { + NSLog(@"didDisconnectWithUser: SUCCESS"); + } else { + NSLog(@"didDisconnectWithUser: %@", _error); + } +} + +@end + +/** + * These are the external "C" methods that are imported by the Unity C# code. + * The parameters are intended to be primative, easy to marshall. + */ +extern "C" { +/** + * This method does nothing in the iOS implementation. It is here + * to make the API uniform between Android and iOS. + */ +void *GoogleSignIn_Create(void *data) { return NULL; } + +void GoogleSignIn_EnableDebugLogging(void *unused, bool flag) { + if (flag) { + NSLog(@"GoogleSignIn: No optional logging available on iOS"); + } +} + +/** + * Configures the GIDSignIn instance. The first parameter is unused in iOS. + * It is here to make the API between Android and iOS uniform. + */ +bool GoogleSignIn_Configure(void *unused, bool useGameSignIn, + const char *webClientId, bool requestAuthCode, + bool forceTokenRefresh, bool requestEmail, + bool requestIdToken, bool hidePopups, + const char **additionalScopes, int scopeCount, + const char *accountName) { + if (webClientId) { + [GIDSignIn sharedInstance].serverClientID = + [NSString stringWithUTF8String:webClientId]; + } + + [GIDSignIn sharedInstance].shouldFetchBasicProfile = true; + + int scopeSize = scopeCount; + + if (scopeSize) { + NSMutableArray *tmpary = + [[NSMutableArray alloc] initWithCapacity:scopeSize]; + for (int i = 0; i < scopeCount; i++) { + [tmpary addObject:[NSString stringWithUTF8String:additionalScopes[i]]]; + } + + [GIDSignIn sharedInstance].scopes = tmpary; + } + + if (accountName) { + [GIDSignIn sharedInstance].loginHint = + [NSString stringWithUTF8String:accountName]; + } + + return !useGameSignIn; +} + +/** + Starts the sign-in process. Returns and error result if error, null otherwise. + */ +static SignInResult *startSignIn() { + bool busy = false; + [resultLock lock]; + if (!currentResult_ || currentResult_->finished) { + currentResult_.reset(new SignInResult()); + currentResult_->result_code = 0; + currentResult_->finished = false; + } else { + busy = true; + } + [resultLock unlock]; + + if (busy) { + NSLog(@"ERROR: There is already a pending sign-in operation."); + // Returned to the caller, should be deleted by calling + // GoogleSignIn_DisposeFuture(). + return new SignInResult{.result_code = kStatusCodeDeveloperError, + .finished = true}; + } + return nullptr; +} + +/** + * Sign-In. The return value is a pointer to the currentResult object. + */ +void *GoogleSignIn_SignIn() { + SignInResult *result = startSignIn(); + if (!result) { + [[GIDSignIn sharedInstance] signIn]; + result = currentResult_.get(); + } + return result; +} + +/** + * Attempt a silent sign-in. Return value is the pointer to the currentResult + * object. + */ +void *GoogleSignIn_SignInSilently() { + SignInResult *result = startSignIn(); + if (!result) { + [[GIDSignIn sharedInstance] signInSilently]; + result = currentResult_.get(); + } + return result; +} + +void GoogleSignIn_Signout() { + GIDSignIn *signIn = [GIDSignIn sharedInstance]; + [signIn signOut]; +} + +void GoogleSignIn_Disconnect() { + GIDSignIn *signIn = [GIDSignIn sharedInstance]; + [signIn disconnect]; +} + +bool GoogleSignIn_Pending(SignInResult *result) { + volatile bool ret; + [resultLock lock]; + ret = !result->finished; + [resultLock unlock]; + return ret; +} + +GIDGoogleUser *GoogleSignIn_Result(SignInResult *result) { + if (result && result->finished) { + GIDGoogleUser *guser = [GIDSignIn sharedInstance].currentUser; + return guser; + } + return nullptr; +} + +int GoogleSignIn_Status(SignInResult *result) { + if (result) { + return result->result_code; + } + return kStatusCodeDeveloperError; +} + +void GoogleSignIn_DisposeFuture(SignInResult *result) { + if (result == currentResult_.get()) { + currentResult_.reset(nullptr); + } else { + delete result; + } +} + +/** + * Private helper function to copy NSString to char*. If the destination is + * non-null, the contents of src are copied up to len bytes (using strncpy). The + * then len is returned. Otherwise returns length of the string to copy + 1. + */ +static size_t CopyNSString(NSString *src, char *dest, size_t len) { + if (dest && src && len) { + const char *string = [src UTF8String]; + strncpy(dest, string, len); + return len; + } + return src ? src.length + 1 : 0; +} + +size_t GoogleSignIn_GetServerAuthCode(GIDGoogleUser *guser, char *buf, + size_t len) { + NSString *val = [guser serverAuthCode]; + return CopyNSString(val, buf, len); +} + +size_t GoogleSignIn_GetDisplayName(GIDGoogleUser *guser, char *buf, + size_t len) { + NSString *val = [guser.profile name]; + return CopyNSString(val, buf, len); +} + +size_t GoogleSignIn_GetEmail(GIDGoogleUser *guser, char *buf, size_t len) { + NSString *val = [guser.profile email]; + return CopyNSString(val, buf, len); +} + +size_t GoogleSignIn_GetFamilyName(GIDGoogleUser *guser, char *buf, size_t len) { + NSString *val = [guser.profile familyName]; + return CopyNSString(val, buf, len); +} + +size_t GoogleSignIn_GetGivenName(GIDGoogleUser *guser, char *buf, size_t len) { + NSString *val = [guser.profile givenName]; + return CopyNSString(val, buf, len); +} + +size_t GoogleSignIn_GetIdToken(GIDGoogleUser *guser, char *buf, size_t len) { + NSString *val = [guser.authentication idToken]; + return CopyNSString(val, buf, len); +} + +size_t GoogleSignIn_GetImageUrl(GIDGoogleUser *guser, char *buf, size_t len) { + NSURL *url = [guser.profile imageURLWithDimension:128]; + NSString *val = url ? [url absoluteString] : nullptr; + return CopyNSString(val, buf, len); +} + +size_t GoogleSignIn_GetUserId(GIDGoogleUser *guser, char *buf, size_t len) { + NSString *val = [guser userID]; + return CopyNSString(val, buf, len); +} +} // extern "C" diff --git a/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm.meta b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm.meta new file mode 100644 index 0000000..9862391 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm.meta @@ -0,0 +1,35 @@ +fileFormatVersion: 2 +guid: 521784ee6b2184e0e947a8fd1508afbc +labels: +- gvh +- gvh_version-1.0.4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h new file mode 100644 index 0000000..97fdef8 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h @@ -0,0 +1,37 @@ +/** + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#import "GoogleSignIn.h" +#import + +// Controller to handle Google SignIn. The AppController methods are swizzled +// into the UnityAppController in order to avoid breaking other code that needs +// to handle these messages also. +@interface UnityAppController (GoogleSignInAppController) +// These are the implementations for GSI. The signatures match the +// AppController methods. +- (BOOL)application:(UIApplication *)application + didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; + +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + options:(NSDictionary *)options; + +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation; + +@end diff --git a/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h.meta b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h.meta new file mode 100644 index 0000000..1005ed8 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h.meta @@ -0,0 +1,35 @@ +fileFormatVersion: 2 +guid: ce40e3e7b37a54617a4683dfc0479c71 +labels: +- gvh +- gvh_version-1.0.4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm new file mode 100644 index 0000000..3363148 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm @@ -0,0 +1,124 @@ +/** + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "GoogleSignInAppController.h" +#import + +// Handles Google SignIn UI and events. +GoogleSignInHandler *gsiHandler; + +/* + * Create a category to customize the application. When this is loaded the + * method for the existing application and GoogleSignIn are swizzled into the + * other's class selector. Then we call our "own" msthod which is actually the + * original application's implementation. See more info at: + * https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html + */ + +@implementation UnityAppController (GoogleSignInController) + +/* + Called when the category is loaded. This is where the methods are swizzled + out. + */ ++ (void)load { + Method original; + Method swizzled; + + original = class_getInstanceMethod( + self, @selector(application:didFinishLaunchingWithOptions:)); + swizzled = class_getInstanceMethod( + self, + @selector(GoogleSignInAppController:didFinishLaunchingWithOptions:)); + method_exchangeImplementations(original, swizzled); + + original = class_getInstanceMethod( + self, @selector(application:openURL:sourceApplication:annotation:)); + swizzled = class_getInstanceMethod( + self, @selector + (GoogleSignInAppController:openURL:sourceApplication:annotation:)); + method_exchangeImplementations(original, swizzled); + + original = + class_getInstanceMethod(self, @selector(application:openURL:options:)); + swizzled = class_getInstanceMethod( + self, @selector(GoogleSignInAppController:openURL:options:)); + method_exchangeImplementations(original, swizzled); +} + +- (BOOL)GoogleSignInAppController:(UIApplication *)application + didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + + // IMPORTANT: IF you are not supplying a GoogleService-Info.plist in your + // project that contains the client id, you need to set the client id here. + + NSString *path = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" + ofType:@"plist"]; + NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path]; + NSString *clientId = [dict objectForKey:@"CLIENT_ID"]; + + gsiHandler = [GoogleSignInHandler alloc]; + + // Setup the Sign-In instance. + GIDSignIn *signIn = [GIDSignIn sharedInstance]; + signIn.clientID = clientId; + signIn.uiDelegate = gsiHandler; + signIn.delegate = gsiHandler; + + // looks like it's just calling itself, but the implementations were swapped + // so we're actually calling the original once we're done + return [self GoogleSignInAppController:application + didFinishLaunchingWithOptions:launchOptions]; +} + +/** + * Handle the auth URL + */ +- (BOOL)GoogleSignInAppController:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation { + BOOL handled = [self GoogleSignInAppController:application + openURL:url + sourceApplication:sourceApplication + annotation:annotation]; + + return [[GIDSignIn sharedInstance] handleURL:url + sourceApplication:sourceApplication + annotation:annotation] || + handled; +} + +/** + * Handle the auth URL. + */ +- (BOOL)GoogleSignInAppController:(UIApplication *)app + openURL:(NSURL *)url + options:(NSDictionary *)options { + + BOOL handled = + [self GoogleSignInAppController:app openURL:url options:options]; + + return [[GIDSignIn sharedInstance] + handleURL:url + sourceApplication: + options[UIApplicationOpenURLOptionsSourceApplicationKey] + annotation: + options[UIApplicationOpenURLOptionsAnnotationKey]] || + handled; +} + +@end diff --git a/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm.meta b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm.meta new file mode 100644 index 0000000..676c710 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm.meta @@ -0,0 +1,35 @@ +fileFormatVersion: 2 +guid: 50b2e1c9319e4446e9dbd9b183790472 +labels: +- gvh +- gvh_version-1.0.4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Login.unity b/Assets/Scenes/Login.unity index 3ac4bd8..1190920 100644 --- a/Assets/Scenes/Login.unity +++ b/Assets/Scenes/Login.unity @@ -1093,7 +1093,7 @@ GameObject: - component: {fileID: 405806873} - component: {fileID: 405806872} m_Layer: 5 - m_Name: GoogleLogin (2) + m_Name: guestLogin m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1118,7 +1118,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: -276.6, y: -194.72} - m_SizeDelta: {x: 110.515, y: 110.9932} + m_SizeDelta: {x: 105.95, y: 110.9932} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &405806872 MonoBehaviour: @@ -1717,7 +1717,7 @@ GameObject: - component: {fileID: 665364049} - component: {fileID: 665364050} m_Layer: 0 - m_Name: Menu + m_Name: Login m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1746,13 +1746,13 @@ MonoBehaviour: m_GameObject: {fileID: 665364048} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a507081d00d64e14693b0a4025bbf7a6, type: 3} + m_Script: {fileID: 11500000, guid: c24071a71036c7f41b150275160859dd, type: 3} m_Name: m_EditorClassIdentifier: - MainMenuPanel: {fileID: 1498716666} - SettingsPanel: {fileID: 0} - transitionTime: 0.6 - transitionEffect: 26 + helpBtn: {fileID: 1625975698} + googleLoginBtn: {fileID: 0} + guestLoginBtn: {fileID: 0} + statusTxt: {fileID: 508363373} --- !u!1 &769394020 GameObject: m_ObjectHideFlags: 0 @@ -2600,7 +2600,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 1337463900} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -3336,6 +3336,7 @@ RectTransform: m_LocalScale: {x: 0, y: 0, z: 0} m_Children: - {fileID: 801880202} + - {fileID: 1651693092} - {fileID: 930103305} - {fileID: 2037751866} - {fileID: 2082929642} @@ -4197,8 +4198,9 @@ GameObject: - component: {fileID: 1625975697} - component: {fileID: 1625975696} - component: {fileID: 1625975695} + - component: {fileID: 1625975698} m_Layer: 5 - m_Name: GoogleLogin (3) + m_Name: btnHelp m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -4277,6 +4279,125 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1625975693} m_CullTransparentMesh: 1 +--- !u!114 &1625975698 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625975693} + 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: 1625975696} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1651693091 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1651693092} + - component: {fileID: 1651693094} + - component: {fileID: 1651693093} + m_Layer: 5 + m_Name: BG (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1651693092 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1651693091} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1337463900} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1651693093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1651693091} + 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.8352941} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1651693094 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1651693091} + m_CullTransparentMesh: 1 --- !u!1 &1688121852 GameObject: m_ObjectHideFlags: 0 @@ -4640,7 +4761,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 1337463900} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 1, y: 0.5} @@ -4853,7 +4974,7 @@ RectTransform: m_Children: - {fileID: 112647383} m_Father: {fileID: 1337463900} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 0.5, y: 0} diff --git a/Assets/Scripts/Login.cs b/Assets/Scripts/Login.cs new file mode 100644 index 0000000..a2dfa13 --- /dev/null +++ b/Assets/Scripts/Login.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class Login : MonoBehaviour +{ + public Button helpBtn; + public Button googleLoginBtn; + public Button guestLoginBtn; + public Text statusTxt; + + void Awake(){ + helpBtn.onClick.AddListener(OnHelp); + } + + + // Update is called once per frame + void Update() + { + + } + + + + void OnHelp(){ + MessageBox.ShowMessage("This game saves your progress in cloud, in order to preserve the data. We need you to login with either Google or Guest login.", "Why Login?"); + } +} diff --git a/Assets/Scripts/Login.cs.meta b/Assets/Scripts/Login.cs.meta new file mode 100644 index 0000000..ca65f8f --- /dev/null +++ b/Assets/Scripts/Login.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c24071a71036c7f41b150275160859dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/Materials/UI_BLUR.mat b/Assets/Sprites/Materials/UI_BLUR.mat index 54cb907..5f7e580 100644 --- a/Assets/Sprites/Materials/UI_BLUR.mat +++ b/Assets/Sprites/Materials/UI_BLUR.mat @@ -68,14 +68,14 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _Radius: 35 - - _Size: 4.3 + - _Size: 4.6 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - _UVSec: 0 - _ZWrite: 1 m_Colors: - - _AdditiveColor: {r: 0, g: 0, b: 0, a: 1} + - _AdditiveColor: {r: 0, g: 0.043106545, b: 0.047169805, a: 1} - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _MultiplyColor: {r: 0.6603774, g: 0.6603774, b: 0.6603774, a: 1} diff --git a/ProjectSettings/AndroidResolverDependencies.xml b/ProjectSettings/AndroidResolverDependencies.xml new file mode 100644 index 0000000..0464eb7 --- /dev/null +++ b/ProjectSettings/AndroidResolverDependencies.xml @@ -0,0 +1,7 @@ + + + com.google.android.gms:play-services-auth:16+ + com.google.signin:google-signin-support:1.0.4 + + + \ No newline at end of file