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