diff --git a/.gitignore b/.gitignore index 46bb4f5..c7fea2f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /[Oo]bj/ /[Bb]uild/ /[Bb]uilds/ +/[Ll]ogs/ /Assets/AssetStoreTools* # Visual Studio 2015 cache directory diff --git a/Assets/ExternalDependencyManager.meta b/Assets/ExternalDependencyManager.meta new file mode 100644 index 0000000..6e12d46 --- /dev/null +++ b/Assets/ExternalDependencyManager.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d95373514d1cb3d479ab43a4695b462a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor.meta b/Assets/ExternalDependencyManager/Editor.meta new file mode 100644 index 0000000..04d6eb8 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a757df4be66f2f0438411d0e6738915c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/CHANGELOG.md b/Assets/ExternalDependencyManager/Editor/CHANGELOG.md new file mode 100644 index 0000000..20b1613 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/CHANGELOG.md @@ -0,0 +1,1261 @@ +# Version 1.2.160 - Sep 30, 2020 +* Android Resolver - Fixed a regression that gradleResolver can be null until + Initialize() is called. +* Android Resolver - Fixed a regression that Android Resolver failed in Unity + 2019.3+ due to `gradleTemplate.properties` not enabled when + `mainTemplate.gradle` is not enabled at all. + +# Version 1.2.159 - Sep 11, 2020 +* Android Resolver - Fixed #322 where the Unity editor will lose its target SDK + setting between Unity restarts if `>28` is selected in 2019. This is due to + Unity AndroidSdkVersions enum does not contain values above 28. +* Android Resolver - Fixed #360 where building Android app with Untiy 2019.3+ + may fail due to Jetifier and AndroidX not enabled properly in generated + Gradle project. This fix requires the user to enable + `Custom Gradle Properties Template` found under + `Player Settings > Settings for Android > Publishing Settings`. + +# Version 1.2.158 - Sep 3, 2020 +* Version Handler: Fixed editor freeze when `-executeMethod` is used in + non-batch mode. +* Android Resolver: Normalized file paths when generating local Maven repo + since the path may contains a mix of forward and backward slash on Windows. +* Export Unity Package: Fixed generation of .unitypackage with tarfile on + Windows. + +# Version 1.2.157 - Aug 6, 2020 +* Android Resolver: Delay initialization until active build target is Android + and the editor is not in play mode. +* iOS Resolver: Delay initialization until active build target is iOS + and the editor is not in play mode. +* Export Unity Package: Workaround directory creation racy if multiple export + operations are spawned at the same time. + +# Version 1.2.156 - June 10, 2020 +* All: Described EDM4U analytics data usage in readme. +* Android Resolver: Fixed that the generated local repo assets contains + redundent labels which are causing Version Handler to failed while + uninstalling packages. +* Android Resolver: Fixed that the repo url injected into mainTemplate.gradle + is incorrect when Unity is configured to export gradle project. +* Android Resolver: Limited to only create local Maven repo when the source + repo contains ".srcaar" file. + +# Version 1.2.155 - May 14, 2020 +* All: Fixed compiler error when build with Unity 5.4 or below due to the + usage of Rect.zero. +* All: Ignore cases when checking command line arguments. + +# Version 1.2.154 - May 14, 2020 +* All: Make each MultiSelectWindow for different purposes to have its own + unique window. +* All: Replace all dialog with DialogWindow which is implemented from + EditorWindow. +* Package Manager Resolver: Clarify how manifest.json will be changed in Package + Manager Resolver window. + +# Version 1.2.153 - Apr 24, 2020 +* Android Resolver: Fixed an exception when repainting the Android resolution + window in Unity 2019.3.x. + +# Version 1.2.152 - Apr 17, 2020 +* Version Handler: Fixed exception when waiting for enabled editor DLLs to + load. +* Android Resolver: Fixed regression when using a Custom Gradle Template + on Windows. + +# Version 1.2.151 - Apr 16, 2020 +## Bug Fixes +* Version Handler: When waiting for newly enabled editor DLLs to load, ignore + all DLLs that do not have a file-system location. +* Android Resolver: Fixed resolution when using a Custom Gradle Template with + libraries stored in a local maven repository distributed with a plugin + installed with the Unity Package Manager. + +# Version 1.2.150 - Apr 9, 2020 +## Bug Fixes +* All: The new packaging script when run on MacOS was generating a + .unitypackage archive that could not be read by Unity on Windows. + This release simply repackages the plugin with tar/gzip to fix the problem. + +# Version 1.2.149 - Apr 8, 2020 +## Bug Fixes +* Package Manager Resolver: Fixed spurious error message when resuming + migration after installing a UPM package. + +# Version 1.2.148 - Apr 8, 2020 +## Bug Fixes +* Package Manager Resolver: Fixed an exception when resuming migration + after installing a UPM package. + +# Version 1.2.147 - Apr 8, 2020 +## Bug Fixes +* Version Handler: Fixed alias traversal bug which caused problems when + migrating from installed .unitypackage files to UPM packages. + +# Version 1.2.146 - Apr 8, 2020 +## Bug Fixes +* Version Handler: Fixed exception in manifest parsing when a manifest is + detected with no aliases. + +# Version 1.2.145 - Apr 2, 2020 +## New Features +* Package Manager Resolver: Added a method to migrate Version Handler + managed packages installed via `.unitypackage` to Unity Package Manager + packages. This is initially used to migrate the External Dependency Manager + to UPM. + +## Changes +* All: Verbose logging is now no longer automatically enabled in batch mode + across all components. Instead logging can be configured using each + component's verbose logging setting or by using the `-gvh_log_debug` command + line flag when starting Unity. +* Version Handler: Sped up version handler updates when the app domain isn't + reloaded. + +## Bug Fixes +* Version Handler: Fixed the display of the obsolete files clean up dialog + when the asset database refreshes. +* Version Handler: Improved reliability of callback from + the VersionHandler.UpdateCompleteMethods event when an asset database + refresh occurs. +* Version Handler: Fixed duplicate exportPath labels when 'Assets/' is the + root of paths assigned to files. +* Version Handler: Handle empty lines in manifest files. + +# Version 1.2.144 - Mar 23, 2020 +## Changed +* iOS Resolver: Removed the ability to configure the Xcode target a Cocoapod + is added to. + +## Bug Fixes +* iOS Resolver: Reverted support for adding Cocoapods to multiple targets as + it caused a regression (exception thrown during post-build step) in some + versions of Unity. + +# Version 1.2.143 - Mar 20, 2020 +## Bug Fixes +* Android Resolver: Fixed caching of resolution state which was causing + the resolver to always run when no dependencies had changed. + +# Version 1.2.142 - Mar 19, 2020 +## Changes +* Package Manager Resolver: Enabled auto-add by default. + +# Version 1.2.141 - Mar 19, 2020 +## Bug Fixes +* Fixed a bug when retrieving project settings. If a plugin was configured + to fetch project settings, if a setting was fetched (e.g "foo") and this + setting existed in the system settings but not the project settings the + system value would override the default value leading to unexpected + behavior. +* Fixed a warning when caching web request classes in Unity 5.6. + +# Version 1.2.140 - Mar 19, 2020 +## Bug Fixes +* Fixed measurement reporting in Unity 5.x. +* Version Handler: Fixed NullReferenceException when an asset doesn't have + an AssetImporter. + +# Version 1.2.139 - Mar 18, 2020 +## Changed +* Added documentation to the built plugin. + +# Version 1.2.138 - Mar 17, 2020 +## New Features +* Package Manager Resolver: Added the Package Manager Resolver + component that allows developers to easily boostrap Unity Package Manager + (UPM) registry addition using unitypackage plugins. +* Version Handler: Added a window that allows plugins to managed by the + Version Handler to be uninstalled. +* Version Handler: Added support for displaying installed plugins. +* Version Handler: Added support for moving files in plugins to their install + locations (if the plugin has been configured to support this). +* iOS Resolver: Added the ability to configure the Xcode target a Cocoapod is + added to. + +## Bug Fixes +* Fixed upgrade from version 1.2.137 and below after the plugin rename to + EDM4U broke the upgrade process. +* Android Resolver: Worked around PlayerSettings.Android.targetSdkVersion + returning empty names for some values in 2019.x. +* Version Handler: Fixed the display of the obsolete files clean up window. +* Version Handler: Fixed managed file check when assets are modified in the + project after plugin import. + +# Version 1.2.137 - Mar 6, 2020 +## Changed +* Renamed package to External Package Manager for Unity (EDM4U). + We changed this to reflect what this plugin is doing today which is far more + than the original scope which just consisted of importing jar files from the + Android SDK maven repository. + Scripts that used to pull `play-services-resolver*.unitypackage` will now have + to request `external-dependency-manager*.unitypackage` instead. + We'll still be shipping a `play-services-resolver*_manifest.txt` file to + handle upgrading from older versions of the plugin. + +## New Features +* All Components: Added reporting of usage so that we can remotely detect + errors and target improvements. +* Android Resolver: Added support for *Dependencies.xml files in Unity Package + Manager packages. +* iOS Resolver: Added support for *Dependencies.xml files in Unity Package + Manager packages. + +## Bug Fixes +* Version Handler: Disabled attempts to disable asset metadata modification + when assets are in a Unity Package Manager managed package. + +# Version 1.2.136 - Feb 19, 2019 +## Bug Fixes +* Android Resolver: Fixed OpenJDK path discovery in Unity 2019.3.1. + +# Version 1.2.135 - Dec 5, 2019 +## Bug Fixes +* All Components: Fixed stack overflow when loading project settings. + +# Version 1.2.134 - Dec 4, 2019 +## Bug Fixes +* All Components: Fixed an issue which caused project settings to be cleared + when running in batch mode. + +# Version 1.2.133 - Nov 18, 2019 +## Bug Fixes +* All Components: Failure to save project settings will now report an error + to the log rather than throwing an exception. + +# Version 1.2.132 - Nov 11, 2019 +## Bug Fixes +* Android Resolver: Worked around expansion of DIR_UNITYPROJECT on Windows + breaking Gradle builds when used as part of a file URI. +* Android Resolver: mainTemplate.gradle is only written if it needs to be + modified. + +# Version 1.2.131 - Oct 29, 2019 +## Bug Fixes +* Version Handler: Improved execution of events on the main thread in batch + mode. +* Version Handler: Improved log level configuration at startup. +* Version Handler: Improved performance of class lookup in deferred method + calls. +* Version Handler: Fixed rename to enable / disable for editor assets. +* iOS Resolver: Improved log level configuration at startup. +* Android Resolver: Improved local maven repo path reference in + mainTemplate.gradle using DIR_UNITYPROJECT. DIR_UNITYPROJECT by Unity + to point to the local filesystem path of the Unity project when Unity + generates the Gradle project. + +# Version 1.2.130 - Oct 23, 2019 +## New Features +* iOS Resolver: Added support for modifying the Podfile before `pod install` + is executed. + +## Bug Fixes +* Version Handler: Fixed invalid classname error when calling + `VersionHandler.UpdateVersionedAssets()`. + +# Version 1.2.129 - Oct 2, 2019 +## Bug Fixes +* iOS Resolver: Changed Cocoapod integration in Unity 2019.3+ to + only add Pods to the UnityFramework target. + +# Version 1.2.128 - Oct 1, 2019 +## Bug Fixes +* iOS Resolver: Fixed Cocoapod project integration mode with Unity + 2019.3+. + +# Version 1.2.127 - Sep 30, 2019 +## Changes +* Android Resolver: All Android Resolver settings File paths are now + serialized with POSIX directory separators. + +# Version 1.2.126 - Sep 27, 2019 +## Changes +* Android Resolver: File paths are now serialized with POSIX directory + separators. +## Bug Fixes +* Android Resolver: Fixed resolution when the parent directory of a Unity + project contains a Gradle project (i.e `settings.gradle` file). + +# Version 1.2.125 - Sep 23, 2019 +## Bug Fixes +* All components: Silenced a warning about not being able to set the console + encoding to UTF8. +* Android Resolver: Worked around broken AndroidSDKTools class in some + versions of Unity. +* iOS Resolver: Fixed iOS target SDK version check +* Version Handler: Changed clean up obsolete files window so that it doesn't + exceed the screen size. + +# Version 1.2.124 - Jul 28, 2019 +## Bug Fixes +* All components: Fixed regression with source control integration when using + Unity 2019.1+. + +# Version 1.2.123 - Jul 23, 2019 +## New Features +* All components: Source control integration for project settings. +## Changes +* Android Resolver: Removed AAR cache as it now makes little difference to + incremental resolution performance. +* Android Resolver: Improved embedded resource management so that embedded + resources should upgrade when the plugin is updated without restarting + the Unity editor. +## Bug Fixes +* Version Handler: Fixed InvokeMethod() and InvokeStaticMethod() when calling + methods that have interface typed arguments. + +# Version 1.2.122 - Jul 2, 2019 +## Bug Fixes +* iOS Resolver: Worked around Unity not loading the iOS Resolver DLL as it + referenced the Xcode extension in a public interface. The iOS Resolver + DLL still references the Xcode extension internally and just handles + missing type exceptions dynamically. + +# Version 1.2.121 - Jun 27, 2019 +## Bug Fixes +* Android Resolver: Fixed warning about missing Packages folder when loading + XML dependencies files in versions of Unity without the package manager. +* Android Resolver: Fixed resolution window progress bar exceeding 100%. +* Android Resolver: If AndroidX is detected in the set of resolved libraries, + the user will be prompted to enable the Jetifier. +* Android Resolver: Improved text splitting in text area windows. +* iOS Resolver: Added support for Unity's breaking changes to the Xcode API + in 2019.3.+. Cocoapods are now added to build targets, Unity-iPhone and + UnityFramework in Unity 2019.3+. + +# Version 1.2.120 - Jun 26, 2019 +## New Features +* Android Resolver: Added support for loading *Dependencies.xml files from + Unity Package Manager packages. +* Android Resolver: Resolution window is now closed if resolution runs as + a pre-build step. +* iOS Resolver: Added support for loading *Dependencies.xml files from + Unity Package Manager packages. +## Bug Fixes +* Android Resolver: Fixed generation of relative repo paths when using + mainTemplate.gradle resolver. +* Android Resolver: Fixed copy of .srcaar to .aar files in repos embedded in a + project when a project path has characters (e.g whitespace) that are escaped + during conversion to URIs. +* Android Resolver: Fixed auto-resolution always running if the Android SDK + is managed by Unity Hub. + +# Version 1.2.119 - Jun 19, 2019 +## Bug Fixes +* Android Resolver: Fixed error reported when using Jetifier integration + in Unity 2018+ if the target SDK is set to "highest installed". + +# Version 1.2.118 - Jun 18, 2019 +## New Features +* Android Resolver: Added initial + [Jetifier](https://developer.android.com/studio/command-line/jetifier) + integration which simplifies + [migration](ttps://developer.android.com/jetpack/androidx/migrate) + to Jetpack ([AndroidX](https://developer.android.com/jetpack/androidx)) + libraries in cases where all dependencies are managed by the Android + Resolver. + This can be enabled via the `Use Jetifier` option in the + `Assets > Play Services Resolver > Android Resolver > Settings` menu. + Caveats: + - If your project contains legacy Android Support Library .jar and .aar + files, these files will need to be removed and replaced with references to + artifacts on Maven via `*Dependencies.xml` files so that the Jetifier + can map them to Jetpack (AndroidX) libraries. + For example, remove the file `support-v4-27.0.2.jar` and replace it with + `` in a + `*Dependencies.xml` file. + - If your project contains .jar or .aar files that use the legacy Android + Support Libraries, these will need to be moved into a local Maven repo + [See this guide](https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html) + and then these files should be removed from your Unity project and instead + referenced via `*Dependencies.xml` files so that the Jetifier can + patch them to reference the Jetpack lirbaries. + +## Bug Fixes +* Android Resolver: Disabled version locking of com.android.support:multidex + does not use the same versioning scheme as other legacy Android support + libraries. +* Version Handler: Made Google.VersionHandler.dll's asset GUID stable across + releases. This faciliates error-free import into projects where + Google.VersionHandler.dll is moved from the default install location. + +# Version 1.2.117 - Jun 12, 2019 +## Bug Fixes +* Android Resolver: Fix copying of .srcaar to .aar files for + mainTemplate.gradle resolution. PluginImporter configuration was previously + not being applied to .aar files unless the Unity project was saved. + +# Version 1.2.116 - Jun 7, 2019 +## Bug Fixes +* Android Resolver: Fixed resolution of Android dependencies without version + specifiers. +* Android Resolver: Fixed Maven repo not found warning in Android Resolver. +* Android Resolver: Fixed Android Player directory not found exception in + Unity 2019.x when the Android Player isn't installed. + +# Version 1.2.115 - May 28, 2019 +## Bug Fixes +* Android Resolver: Fixed exception due to Unity 2019.3.0a4 removing + x86 from the set of supported ABIs. + +# Version 1.2.114 - May 27, 2019 +## New Features +* Android Resolver: Added support for ABI stripping when using + mainTemplate.gradle. This only works with AARs stored in repos + on the local filesystem. + +# Version 1.2.113 - May 24, 2019 +## New Features +* Android Resolver: If local repos are moved, the plugin will search the + project for matching directories in an attempt to correct the error. +* Version Handler: Files can be now targeted to multiple build targets + using multiple "gvh_" asset labels. +## Bug Fixes +* Android Resolver: "implementation" or "compile" are now added correctly + to mainTemplate.gradle in Unity versions prior to 2019. + +# Version 1.2.112 - May 22, 2019 +## New Features +* Android Resolver: Added option to disable addition of dependencies to + mainTemplate.gradle. + See `Assets > Play Services Resolver > Android Resolver > Settings`. +* Android Resolver: Made paths to local maven repositories in + mainTemplate.gradle relative to the Unity project when a project is not + being exported. +## Bug Fixes +* Android Resolver: Fixed builds with mainTemplate.gradle integration in + Unity 2019. +* Android Resolver: Changed dependency inclusion in mainTemplate.gradle to + use "implementation" or "compile" depending upon the version of Gradle + included with Unity. +* Android Resolver: Gracefully handled exceptions if the console encoding + can't be modified. +* Android Resolver: Now gracefully fails if the AndroidPlayer directory + can't be found. + +# Version 1.2.111 - May 9, 2019 +## Bug Fixes +* Version Handler: Fixed invocation of methods with named arguments. +* Version Handler: Fixed occasional hang when the editor is compiling + while activating plugins. + +# Version 1.2.110 - May 7, 2019 +## Bug Fixes +* Android Resolver: Fixed inclusion of some srcaar artifacts in builds with + Gradle builds when using mainTemplate.gradle. + +# Version 1.2.109 - May 6, 2019 +## New Features: +* Added links to documentation from menu. +* Android Resolver: Added option to auto-resolve Android libraries on build. +* Android Resolver: Added support for packaging specs of Android libraries. +* Android Resolver: Pop up a window when displaying Android dependencies. + +## Bug Fixes +* Android Resolver: Support for Unity 2019 Android SDK and JDK install locations +* Android Resolver: e-enable AAR explosion if internal builds are enabled. +* Android Resolver: Gracefully handle exceptions on file deletion. +* Android Resolver: Fixed Android Resolver log spam on load. +* Android Resolver: Fixed save of Android Resolver PromptBeforeAutoResolution + setting. +* Android Resolver: Fixed AAR processing failure when an AAR without + classes.jar is found. +* Android Resolver: Removed use of EditorUtility.DisplayProgressBar which + was occasionally left displayed when resolution had completed. +* Version Handler: Fixed asset rename to disable when a disabled file exists. + +# Version 1.2.108 - May 3, 2019 +## Bug Fixes: +* Version Handler: Fixed occasional hang on startup. + +# Version 1.2.107 - May 3, 2019 +## New Features: +* Version Handler: Added support for enabling / disabling assets that do not + support the PluginImporter, based upon build target selection. +* Android Resolver: Added support for the global specification of maven repos. +* iOS Resolver: Added support for the global specification of Cocoapod sources. + +# Version 1.2.106 - May 1, 2019 +## New Features +* iOS Resolver: Added support for development pods in Xcode project integration + mode. +* iOS Resolver: Added support for source pods with resources in Xcode project + integration mode. + +# Version 1.2.105 - Apr 30, 2019 +## Bug fixes +* Android Resolver: Fixed reference to Java tool path in logs. +* Android and iOS Resolvers: Changed command line execution to emit a warning + rather than throwing an exception and failing, when it is not possible to + change the console input and output encoding to UTF-8. +* Android Resolver: Added menu option and API to delete resolved libraries. +* Android Resolver: Added menu option and API to log the repos and libraries + currently included in the project. +* Android Resolver: If Plugins/Android/mainTemplate.gradle file is present and + Gradle is selected as the build type, resolution will simply patch the file + with Android dependencies specified by plugins in the project. + +# Version 1.2.104 - Apr 10, 2019 +## Bug Fixes +* Android Resolver: Changed Android ABI selection method from using whitelisted + Unity versions to type availability. This fixes an exception on resolution + in some versions of Unity 2017.4. + +# Version 1.2.103 - Apr 2, 2019 +## Bug Fixes +* Android Resolver: Whitelisted Unity 2017.4 and above with ARM64 support. +* Android Resolver: Fixed Java version check to work with Java SE 12 and above. + +# Version 1.2.102 - Feb 13, 2019 +## Bug Fixes +* Android Resolver: Fixed the text overflow on the Android Resolver + prompt before initial run to fit inside the buttons for + smaller screens. + +# Version 1.2.101 - Feb 12, 2019 +## New Features +* Android Resolver: Prompt the user before the resolver runs for the + first time and allow the user to elect to disable from the prompt. +* Android Resolver: Change popup warning when resolver is disabled + to be a console warning. + +# Version 1.2.100 - Jan 25, 2019 +## Bug Fixes +* Android Resolver: Fixed AAR processing sometimes failing on Windows + due to file permissions. + +# Version 1.2.99 - Jan 23, 2019 +## Bug Fixes +* Android Resolver: Improved performance of project property polling. +* Version Handler: Fixed callback of VersionHandler.UpdateCompleteMethods + when the update process is complete. + +# Version 1.2.98 - Jan 9, 2019 +## New Features +* iOS Resolver: Pod declaration properties can now be set via XML pod + references. For example, this can enable pods for a subset of build + configurations. +## Bug Fixes +* iOS Resolver: Fixed incremental builds after local pods support caused + regression in 1.2.96. + +# Version 1.2.97 - Dec 17, 2018 +## Bug Fixes +* Android Resolver: Reduced memory allocation for logic that monitors build + settings when auto-resolution is enabled. If auto-resolution is disabled, + almost all build settings are no longer polled for changes. + +# Version 1.2.96 - Dec 17, 2018 +## Bug Fixes +* Android Resolver: Fixed repacking of AARs to exclude .meta files. +* Android Resolver: Only perform auto-resolution on the first scene while + building. +* Android Resolver: Fixed parsing of version ranges that include whitespace. +* iOS Resolver: Added support for local development pods. +* Version Handler: Fixed Version Handler failing to rename some files. + +# Version 1.2.95 - Oct 23, 2018 +## Bug Fixes: +* Android Resolver: Fixed auto-resolution running in a loop in some scenarios. + +# Version 1.2.94 - Oct 22, 2018 +## Bug Fixes +* iOS Resolver: Added support for PODS_TARGET_SRCROOT in source Cocoapods. + +# Version 1.2.93 - Oct 22, 2018 +## Bug Fixes +* Android Resolver: Fixed removal of Android libraries on auto-resolution when + `*Dependencies.xml` files are deleted. + +# Version 1.2.92 - Oct 2, 2018 +## Bug Fixes +* Android Resolver: Worked around auto-resolution hang on Windows if + resolution starts before compilation is finished. + +# Version 1.2.91 - Sep 27, 2018 +## Bug Fixes +* Android Resolver: Fixed Android Resolution when the selected build target + isn't Android. +* Added C# assembly symbols the plugin to simplify debugging bug reports. + +# Version 1.2.90 - Sep 21, 2018 +## Bug Fixes +* Android Resolver: Fixed transitive dependency selection of version locked + packages. + +# Version 1.2.89 - Aug 31, 2018 +## Bug Fixes +* Fixed FileLoadException in ResolveUnityEditoriOSXcodeExtension an assembly + can't be loaded. + +# Version 1.2.88 - Aug 29, 2018 +## Changed +* Improved reporting of resolution attempts and conflicts found in the Android + Resolver. +## Bug Fixes +* iOS Resolver now correctly handles sample code in CocoaPods. Previously it + would add all sample code to the project when using project level + integration. +* Android Resolver now correctly handles Gradle conflict resolution when the + resolution results in a package that is compatible with all requested + dependencies. + +# Version 1.2.87 - Aug 23, 2018 +## Bug Fixes +* Fixed Android Resolver "Processing AARs" dialog getting stuck in Unity 5.6. + +# Version 1.2.86 - Aug 22, 2018 +## Bug Fixes +* Fixed Android Resolver exception in OnPostProcessScene() when the Android + platform isn't selected. + +# Version 1.2.85 - Aug 17, 2018 +## Changes +* Added support for synchronous resolution in the Android Resolver. + PlayServicesResolver.ResolveSync() now performs resolution synchronously. +* Auto-resolution in the Android Resolver now results in synchronous resolution + of Android dependencies before the Android application build starts via + UnityEditor.Callbacks.PostProcessSceneAttribute. + +# Version 1.2.84 - Aug 16, 2018 +## Bug Fixes +* Fixed Android Resolver crash when the AndroidResolverDependencies.xml + file can't be written. +* Reduced log spam when a conflicting Android library is pinned to a + specific version. + +# Version 1.2.83 - Aug 15, 2018 +## Bug Fixes +* Fixed Android Resolver failures due to an in-accessible AAR / JAR explode + cache file. If the cache can't be read / written the resolver now continues + with reduced performance following recompilation / DLL reloads. +* Fixed incorrect version number in plugin manifest on install. + This was a minor issue since the version handler rewrote the metadata + after installation. + +# Version 1.2.82 - Aug 14, 2018 +## Changed +* Added support for alphanumeric versions in the Android Resolver. + +## Bug Fixes +* Fixed Android Resolver selection of latest duplicated library. +* Fixed Android Resolver conflict resolution when version locked and non-version + locked dependencies are specified. +* Fixed Android Resolver conflict resolution when non-existent artifacts are + referenced. + +# Version 1.2.81 - Aug 9, 2018 +## Bug Fixes +* Fixed editor error that would occur when when + `PlayerSettings.Android.targetArchitectures` was set to + `AndroidArchitecture.All`. + +# Version 1.2.80 - Jul 24, 2018 +## Bug Fixes +* Fixed project level settings incorrectly falling back to system wide settings + when default property values were set. + +# Version 1.2.79 - Jul 23, 2018 +## Bug Fixes +* Fixed AndroidManifest.xml patching on Android Resolver load in Unity 2018.x. + +# Version 1.2.78 - Jul 19, 2018 +## Changed +* Added support for overriding conflicting dependencies. + +# Version 1.2.77 - Jul 19, 2018 +## Changed +* Android Resolver now supports Unity's 2018 ABI filter (i.e arm64-v8a). +* Reduced Android Resolver build option polling frequency. +* Disabled Android Resolver auto-resolution in batch mode. Users now need + to explicitly kick off resolution through the API. +* All Android Resolver and Version Handler dialogs are now disabled in batch + mode. +* Verbose logging for all plugins is now enabled by default in batch mode. +* Version Handler bootstrapper has been improved to no longer call + UpdateComplete multiple times. However, since Unity can still reload the + app domain after plugins have been enabled, users still need to store their + plugin state to persistent storage to handle reloads. + +## Bug Fixes +* Android Resolver no longer incorrectly adds MANIFEST.MF files to AARs. +* Android Resolver auto-resolution jobs are now unscheduled when an explicit + resolve job is started. + +# Version 1.2.76 - Jul 16, 2018 +## Bug Fixes +* Fixed variable replacement in AndroidManifest.xml files in the Android + Resolver. + Version 1.2.75 introduced a regression which caused all variable replacement + to replace the *entire* property value rather than the component of the + property that referenced a variable. For example, + given "applicationId = com.my.app", "${applicationId}.foo" would be + incorrectly expanded as "com.my.app" rather than "com.my.app.foo". This + resulted in numerous issues for Android builds where content provider + initialization would fail and services may not start. + +## Changed +* Gradle prebuild experimental feature has been removed from the Android + Resolver. The feature has been broken for some time and added around 8MB + to the plugin size. +* Added better support for execution of plugin components in batch mode. + In batch mode UnityEditor.update is sometimes never called - like when a + single method is executed - so the new job scheduler will execute all jobs + synchronously from the main thread. + +# Version 1.2.75 - Jun 20, 2018 +## New Features +* Android Resolver now monitors the Android SDK path when + auto-resolution is enabled and triggers resolution when the path is + modified. + +## Changed +* Android auto-resolution is now delayed by 3 seconds when the following build + settings are changed: + - Target ABI. + - Gradle build vs. internal build. + - Project export. +* Added a progress bar display when AARs are being processed during Android + resolution. + +## Bug Fixes +* Fixed incorrect Android package version selection when a mix of + version-locked and non-version-locked packages are specified. +* Fixed non-deterministic Android package version selection to select + the highest version of a specified package rather than the last + package specification passed to the Gradle resolution script. + +# Version 1.2.74 - Jun 19, 2018 +## New Features +* Added workaround for broken AndroidManifest.xml variable replacement in + Unity 2018.x. By default ${applicationId} variables will be replaced by + the bundle ID in the Plugins/Android/AndroidManifest.xml file. The + behavior can be disabled via the Android Resolver settings menu. + +# Version 1.2.73 - May 30, 2018 +## Bug Fixes +* Fixed spurious warning message about missing Android plugins directory on + Windows. + +# Version 1.2.72 - May 23, 2018 +## Bug Fixes +* Fixed spurious warning message about missing Android plugins directory. + +# Version 1.2.71 - May 10, 2018 +## Bug Fixes +* Fixed resolution of Android dependencies when the `Assets/Plugins/Android` + directory is named in a different case e.g `Assets/plugins/Android`. + +# Version 1.2.70 - May 7, 2018 +## Bug Fixes +* Fixed bitcode flag being ignored for iOS pods. + +# Version 1.2.69 - May 7, 2018 +## Bug Fixes +* Fixed escaping of local repository paths in Android Resolver. + +# Version 1.2.68 - May 3, 2018 +## Changes +* Added support for granular builds of Google Play Services. + +# Version 1.2.67 - May 1, 2018 +## Changes +* Improved support for iOS source-only pods in Unity 5.5 and below. + +# Version 1.2.66 - April 27, 2018 +## Bug Fixes +* Fixed Version Handler renaming of Linux libraries with hyphens in filenames. + Previously, libraries named Foo-1.2.3.so were not being renamed to + libFoo-1.2.3.so on Linux which could break native library loading on some + versions of Unity. + +# Version 1.2.65 - April 26, 2018 +## Bug Fixes +* Fix CocoaPods casing in logs and comments. + +# Version 1.2.64 - Mar 16, 2018 +## Bug Fixes +* Fixed bug in download_artifacts.gradle (used by Android Resolver) which + reported a failure if required artifacts already exist. + +# Version 1.2.63 - Mar 15, 2018 +## Bug Fixes +* Fixed iOS Resolver include search paths taking precedence over system headers + when using project level resolution. +* Fixed iOS Resolver includes relative to library root, when using project level + resolution. + +# Version 1.2.62 - Mar 12, 2018 +## Changes +* Improved error reporting when a file can't be moved to trash by the + Version Handler. +## Bug Fixes +* Fixed Android Resolver throwing NullReferenceException when the Android SDK + path isn't set. +* Fixed Version Handler renaming files with underscores if the + "Rename to Canonical Filenames" setting is enabled. + +# Version 1.2.61 - Jan 22, 2018 +## Bug Fixes +* Fixed Android Resolver reporting non-existent conflicting dependencies when + Gradle build system is enabled. + +# Version 1.2.60 - Jan 12, 2018 +## Changes +* Added support for Maven / Ivy version specifications for Android packages. +* Added support for Android SNAPSHOT packages. + +## Bug Fixes +* Fixed Openjdk version check. +* Fixed non-deterministic Android package resolution when two packages contain + an artifact with the same name. + +# Version 1.2.59 - Oct 19, 2017 +## Bug Fixes +* Fixed execution of Android Gradle resolution script when it's located + in a path with whitespace. + +# Version 1.2.58 - Oct 19, 2017 +## Changes +* Removed legacy resolution method from Android Resolver. + It is now only possible to use the Gradle or Gradle prebuild resolution + methods. + +# Version 1.2.57 - Oct 18, 2017 +## Bug Fixes +* Updated Gradle wrapper to 4.2.1 to fix issues using Gradle with the + latest Openjdk. +* Android Gradle resolution now also uses gradle.properties to pass + parameters to Gradle in an attempt to workaround problems with + command line argument parsing on Windows 10. + +# Version 1.2.56 - Oct 12, 2017 +## Bug Fixes +* Fixed Gradle artifact download with non-version locked artifacts. +* Changed iOS resolver to only load dependencies at build time. + +# Version 1.2.55 - Oct 4, 2017 +## Bug Fixes +* Force Android Resolution when the "Install Android Packages" setting changes. + +# Version 1.2.54 - Oct 4, 2017 +## Bug Fixes +* Fixed execution of command line tools on Windows when the path to the tool + contains a single quote (apostrophe). In this case we fallback to executing + the tool via the system shell. + +# Version 1.2.53 - Oct 2, 2017 +## New Features +* Changed Android Resolver "resolution complete" dialog so that it now displays + failures. +* Android Resolver now detects conflicting libraries that it does not manage + warning the user if they're newer than the managed libraries and prompting + the user to clean them up if they're older or at the same version. + +## Bug Fixes +* Improved Android Resolver auto-resolution speed. +* Fixed bug in the Gradle Android Resolver which would result in resolution + succeeding when some dependencies are not found. + +# Version 1.2.52 - Sep 25, 2017 +## New Features +* Changed Android Resolver's Gradle resolution to resolve conflicting + dependencies across Google Play services and Android Support library packages. + +# Version 1.2.51 - Sep 20, 2017 +## Changes +* Changed iOS Resolver to execute the CocoaPods "pod" command via the shell + by default. Some developers customize their shell environment to use + custom ssh certs to access internal git repositories that host pods so + executing "pod" via the shell will work for these scenarios. + The drawback of executing "pod" via the shell could potentially cause + users problems if they break their shell environment. Though users who + customize their shell environments will be able to resolve these issues. + +# Version 1.2.50 - Sep 18, 2017 +## New Features +* Added option to disable the Gradle daemon in the Android Resolver. + This daemon is now disabled by default as some users are getting into a state + where multiple daemon instances are being spawned when changing dependencies + which eventually results in Android resolution failing until all daemon + processes are manually killed. + +## Bug Fixes +* Android resolution is now always executed if the user declines the update + of their Android SDK. This ensure users can continue to use out of date + Android SDK packages if they desire. + +# Version 1.2.49 - Sep 18, 2017 +## Bug Fixes +* Removed modulemap parsing in iOS Resolver. + The framework *.modulemap did not need to be parsed by the iOS Resolver + when injecting Cocoapods into a Xcode project. Simply adding a modular + framework to a Xcode project results in Xcode's Clang parsing the associated + modulemap and injecting any compile and link flags into the build process. + +# Version 1.2.48 - Sep 12, 2017 +## New Features +* Changed settings to be per-project by default. + +## Bug Fixes +* Added Google maven repository to fix GradlePrebuild resolution with Google + components. +* Fixed Android Resolution failure with spaces in paths. + +# Version 1.2.47 - Aug 29, 2017 +## New Features +* Android and iOS dependencies can now be specified using *Dependencies.xml + files. This is now the preferred method for registering dependencies, + we may remove the API for dependency addition in future. +* Added "Reset to Defaults" button to each settings dialog to restore default + settings. +* Android Resolver now validates the configured JDK is new enough to build + recently released Android libraries. +## Bug Fixes +* Fixed a bug that caused dependencies with the "LATEST" version specification + to be ignored when using the Gradle mode of the Android Resolver. +* Fixed a race condition when running Android Resolution. +* Fixed Android Resolver logging if a PlayServicesSupport instance is created + with no logging enabled before the Android Resolver is initialized. +* Fixed iOS resolver dialog in Unity 4. +* Fixed iOS Cocoapod Xcode project integration in Unity 4. + +# Version 1.2.46 - Aug 22, 2017 +## Bug Fixes +* GradlePrebuild Android resolver on Windows now correctly locates dependent + data files. + +# Version 1.2.45 - Aug 22, 2017 +## Bug Fixes +* Improved Android package auto-resolution and fixed clean up of stale + dependencies when using Gradle dependency resolution. + +# Version 1.2.44 - Aug 21, 2017 +## Bug Fixes +* Enabled autoresolution for Gradle Prebuild. +* Made the command line dialog windows have selectable text. +* Fixed incorrect "Android Settings" dialog disabled groups. +* Updated PlayServicesResolver android platform detection to use the package + manager instead of the 'android' tool. +* UnityCompat reflection methods 'GetAndroidPlatform' and + 'GetAndroidBuildToolsVersion' are now Obsolete due to dependence on the + obsolete 'android' build tool. + +# Version 1.2.43 - Aug 18, 2017 +## Bug Fixes +* Fixed Gradle resolution in the Android Resolver when running + PlayServicesResolver.Resolve() in parallel or spawning multiple + resolutions before the previous resolve completed. + +# Version 1.2.42 - Aug 17, 2017 +## Bug Fixes +* Fixed Xcode project level settings not being applied by IOS Resolver when + Xcode project pod integration is enabled. + +# Version 1.2.41 - Aug 15, 2017 +## Bug Fixes +* IOS Resolver's Xcode workspace pod integration is now disabled when Unity + Cloud Build is detected. Unity Cloud Build does not follow the same build + process as the Unity editor and fails to open the generated xcworkspace at + this time. + +# Version 1.2.40 - Aug 15, 2017 +## Bug Fixes +* Moved Android Resolver Gradle Prebuild scripts into Google.JarResolver.dll. + They are now extracted from the DLL when required. +* AARs / JARs are now cleaned up when switching the Android resolution + strategy. + +# Version 1.2.39 - Aug 10, 2017 +## New Features +* Android Resolver now supports resolution with Gradle. This enables support + for non-local artifacts. +## Bug Fixes +* Android Resolver's Gradle Prebuild now uses Android build tools to determine + the Android platform tools version rather than relying upon internal Unity + APIs. +* Android Resolver's Gradle Prebuild now correctly strips binaries that are + not required for the target ABI. + +# Version 1.2.38 - Aug 7, 2017 +## Bug Fixes +* Fixed an issue in VersionHandler where disabled targets are ignored if + the "Any Platform" flag is set on a plugin DLL. + +# Version 1.2.37 - Aug 3, 2017 +## New Features +* Exposed GooglePlayServices.PlayServicesResolver.Resolve() so that it's + possible for a script to be notified when AAR / Jar resolution is complete. + This makes it easier to setup a project to build from the command line. + +# Version 1.2.36 - Aug 3, 2017 +## New Features +* VersionHandler.UpdateCompleteMethods allows a user to provide a list of + methods to be called when VersionHandlerImpl has completed an update. + This makes it easier to import a plugin and wait for VersionHandler to + execute prior executing a build. + +# Version 1.2.35 - Jul 28, 2017 +## New Features +* VersionHandler will now rename Linux libraries so they can target Unity + versions that require different file naming. Libraries need to be labelled + gvh_linuxlibname-${basename} in order to be considered for renaming. + e.g gvh\_linuxlibname-MyLib will be named MyLib.so in Unity 5.5 and below and + libMyLib.so in Unity 5.6 and above. + +# Version 1.2.34 - Jul 28, 2017 +## Bug Fixes +* Made VersionHandler bootstrap module more robust when calling static + methods before the implementation DLL is loaded. + +# Version 1.2.33 - Jul 27, 2017 +## New Features +* Added a bootstrap module for VersionHandler so the implementation + of the VersionHandler module can be versioned without resulting in + a compile error when imported at different versions across multiple + plugins. + +# Version 1.2.32 - Jul 20, 2017 +## New Features +* Added support for build target selection based upon .NET framework + version in the VersionHandler. + When applying either gvh\_dotnet-3.5 or gvh\_dotnet-4.5 labels to + assets, the VersionHandler will only enable the asset for the + specified set of build targets when the matching .NET framework version + is selected in Unity 2017's project settings. This allows assets + to be provided in a plugin that need to differ based upon .NET version. + +# Version 1.2.31 - Jul 5, 2017 +## Bug Fixes +* Force expansion of AARs with native components when using Unity 2017 + with the internal build system. In contrast to Unity 5.x, Unity 2017's + internal build system does not include native libraries included in AARs. + Forcing expansion of AARs with native components generates an + Ant / Eclipse project for each AAR which is correctly included by Unity + 2017's internal build system. + +# Version 1.2.30 - Jul 5, 2017 +## Bug Fixes +* Fixed Cocoapods being installed when the build target isn't iOS. +* Added support for malformed AARs with missing classes.jar. + +# Version 1.2.29 - Jun 16, 2017 +## New Features +* Added support for the Android sdkmanager tool. + +# Version 1.2.28 - Jun 8, 2017 +## Bug Fixes +* Fixed non-shell command line execution (regression from + Cocoapod installation patch). + +# Version 1.2.27 - Jun 7, 2017 +## Bug Fixes +* Added support for stdout / stderr redirection when executing + commands in shell mode. + This fixes CocoaPod tool installation when shell mode is + enabled. +* Fixed incremental builds when additional sources are specified + in the Podfile. + +# Version 1.2.26 - Jun 7, 2017 +## Bug Fixes +* Fixed a crash when importing Version Handler into Unity 4.7.x. + +# Version 1.2.25 - Jun 7, 2017 +## Bug Fixes +* Fixed an issue in the Jar Resolver which incorrectly notified + event handlers of bundle ID changes when the currently selected + (not active) build target changed in Unity 5.6 and above. + +# Version 1.2.24 - Jun 6, 2017 +## New Features +* Added option to control file renaming in Version Handler settings. + Disabling file renaming (default option) significantly increases + the speed of file version management operations with the downside + that any files that are referenced directly by canonical filename + rather than asset ID will no longer be valid. +* Improved logging in the Version Handler. +## Bug Fixes +* Fixed an issue in the Version Handler which caused it to not + re-enable plugins when re-importing a custom package with disabled + version managed files. + +# Version 1.2.23 - May 26, 2017 +## Bug Fixes +* Fixed a bug with gradle prebuild resolver on windows. + +# Version 1.2.22 - May 19, 2017 +## Bug Fixes +* Fixed a bug in the iOS resolver with incremental builds. +* Fixed misdetection of Cocoapods support with Unity beta 5.6. + +# Version 1.2.21 - May 8, 2017 +## Bug Fixes +* Fix for https://github.com/googlesamples/unity-jar-resolver/issues/48 + Android dependency version number parsing when "-alpha" (etc.) are + included in dependency (AAR / JAR) versions. + +# Version 1.2.20 - May 8, 2017 +## Bug Fixes +* Attempted to fix + https://github.com/googlesamples/unity-jar-resolver/issues/48 + where a NullReferenceException could occur if a target file does not + have a valid version string. + +# Version 1.2.19 - May 4, 2017 +## Bug Fixes +* Fixed Jar Resolver exploding and deleting AAR files it isn't managing. + +# Version 1.2.18 - May 4, 2017 +## New Features +* Added support for preserving Unity pods such as when GVR is enabled. + +# Version 1.2.17 - Apr 20, 2017 +## Bug Fixes +* Fixed auto-resolution when an Android application ID is modified. + +# Version 1.2.16 - Apr 17, 2017 +## Bug Fixes +* Fixed Unity version number parsing on machines with a locale that uses + "," for decimal points. +* Fixed null reference exception if JDK path isn't set. + +# Version 1.2.15 - Mar 17, 2017 +## New Features +* Added warning when the Jar Resolver's background resolution is disabled. +## Bug Fixes +* Fixed support of AARs with native libraries when using Gradle. +* Fixed extra repository paths when resolving dependencies. + +# Version 1.2.14 - Mar 7, 2017 +## New Features +* Added experimental Android resolution using Gradle. + This alternative resolver supports proguard stripping with Unity's + internal build system. +* Added Android support for single ABI builds when using AARs include + native libraries. +* Disabled Android resolution on changes to all .cs and .js files. + File patterns that are monitored for auto-resolution can be added + using PlayServicesResolver.AddAutoResolutionFilePatterns(). +* Added tracking of resolved AARs and JARs so they can be cleaned up + if they're no longer referenced by a project. +* Added persistence of AAR / JAR version replacement for each Unity + session. +* Added settings dialog to the iOS resolver. +* Integrated Cocoapod tool installation in the iOS resolver. +* Added option to run pod tool via the shell. +## Bug Fixes +* Fixed build of some source Cocoapods (e.g Protobuf). +* VersionHandler no longer prompts to delete obsolete manifests. +* iOS resolver handles Cocoapod installation when using Ruby < 2.2.2. +* Added workaround for package version selection when including + Google Play Services on Android. +* Fixed support for pods that reference static libraries. +* Fixed support for resource-only pods. + +# Version 1.2.12 - Feb 14, 2017 +## Bug Fixes +* Fixed re-explosion of AARs when the bundle ID is modified. + +# Version 1.2.11 - Jan 30, 2017 +## New Features +* Added support for Android Studio builds. +* Added support for native (C/C++) shared libraries in AARs. + +# Version 1.2.10 - Jan 11, 2017 +## Bug Fixes +* Fixed SDK manager path retrieval. +* Also, report stderr when it's not possible to run the "pod" tool. +* Handle exceptions thrown by Unity.Cecil on asset rename +* Fixed IOSResolver to handle PlayerSettings.iOS.targetOSVersionString + +# Version 1.2.9 - Dec 7, 2016 +## Bug Fixes +* Improved error reporting when "pod repo update" fails. +* Added detection of xml format xcode projects generated by old Cocoapods + installations. + +# Version 1.2.8 - Dec 6, 2016 +## Bug Fixes +* Increased speed of JarResolver resolution. +* Fixed JarResolver caches getting out of sync with requested dependencies + by removing the caches. +* Fixed JarResolver explode cache always being rewritten even when no + dependencies change. + +# Version 1.2.7 - Dec 2, 2016 +## Bug Fixes +* Fixed VersionHandler build errors with Unity 5.5, due to the constantly + changing BuildTarget enum. +* Added support for Unity configured JDK Path rather than requiring + JAVA_HOME to be set in the Jar Resolver. + +# Version 1.2.6 - Nov 15, 2016 +## Bug Fixes +* Fixed IOSResolver errors when iOS support is not installed. +* Added fallback to "pod" executable search which queries the Ruby Gems + package manager for the binary install location. + +# Version 1.2.5 - Nov 3, 2016 +## Bug Fixes +* Added crude support for source only Cocoapods to the IOSResolver. + +# Version 1.2.4 - Oct 27, 2016 +## Bug Fixes +* Automated resolution of out of date pod repositories. + +# Version 1.2.3 - Oct 25, 2016 +## Bug Fixes +* Fixed exception when reporting conflicting dependencies. + +# Version 1.2.2 - Oct 17, 2016 +## Bug Fixes +* Fixed issue working with Unity 5.5 +* Fixed issue with PlayServicesResolver corrupting other iOS dependencies. +* Updated build script to use Unity distributed tools for building. + +# Version 1.2.1 - Jul 25, 2016 +## Bug Fixes +* Removed 1.2 Resolver and hardcoded whitelist of AARs to expand. +* Improved error reporting when the "jar" executable can't be found. +* Removed the need to set JAVA_HOME if "jar" is in the user's path. +* Fixed spurious copying of partially matching AARs. +* Changed resolver to only copy / expand when source AARs change. +* Auto-resolution of dependencies is now performed when the Android + build target is selected. + +## New Features +* Expand AARs that contain manifests with variable expansion like + ${applicationId}. +* Added optional logging in the JarResolverLib module. +* Integration with the Android SDK manager for dependencies that + declare required Android SDK packages. + +# Version 1.2.0 - May 11 2016 +## Bug Fixes +* Handles resolving dependencies when the artifacts are split across 2 repos. +* #4 Misdetecting version for versions like 1.2-alpha. These are now string + compared if alphanumeric +* Removed resolver creation via reflection since it did not work all the time. + Now a resolver needs to be loaded externally (which is existing behavior). + +## New Features +* Expose PlayServicesResolver properties to allow for script access. +* Explodes firebase-common and firebase-measurement aar files to support + ${applicationId} substitution. + +# Version 1.1.1 - 25 Feb 2016 +## Bug Fixes +* #1 Spaces in project path not handled when exploding Aar file. +* #2 Script compilation error: TypeLoadException. + +# Version 1.1.0 - 5 Feb 2016 +## New Features +* Adds friendly alert when JAVA_HOME is not set on Windows platforms. +* Adds flag for disabling background resolution. +* Expands play-services-measurement and replaces ${applicationId} with the + bundle Id. + + ## Bug Fixes +* Fixes infinite loop of resolution triggered by resolution. diff --git a/Assets/ExternalDependencyManager/Editor/CHANGELOG.md.meta b/Assets/ExternalDependencyManager/Editor/CHANGELOG.md.meta new file mode 100644 index 0000000..f8bf237 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/CHANGELOG.md.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d67e36cf70144eeeb62948707545ecfd +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/CHANGELOG.md +timeCreated: 1584567712 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll b/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll new file mode 100644 index 0000000..26bbbe1 Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.mdb b/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.mdb new file mode 100644 index 0000000..f643e76 Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.mdb differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.mdb.meta b/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.mdb.meta new file mode 100644 index 0000000..1ece882 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.mdb.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 769e94325b7344cd8ebf3932bb73920c +labels: +- gvh +- gvh_rename_to_disable +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.mdb +- gvhp_targets-editor +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.meta b/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.meta new file mode 100644 index 0000000..e0faeb0 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 3b8ce84b1ecd4e48aca0e96a0ec22e4d +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll +- gvhp_targets-editor +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/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll b/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll new file mode 100644 index 0000000..7536885 Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.mdb b/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.mdb new file mode 100644 index 0000000..da3fffb Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.mdb differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.mdb.meta b/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.mdb.meta new file mode 100644 index 0000000..1344139 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.mdb.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1bfefa46d68749ef9a4a152b4d1c4059 +labels: +- gvh +- gvh_rename_to_disable +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.mdb +- gvhp_targets-editor +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.meta b/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.meta new file mode 100644 index 0000000..223d743 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 8867846e2a834bcfac92ec83f60e6fc9 +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll +- gvhp_targets-editor +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/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll b/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll new file mode 100644 index 0000000..bdcb2b6 Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.mdb b/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.mdb new file mode 100644 index 0000000..6206f07 Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.mdb differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.mdb.meta b/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.mdb.meta new file mode 100644 index 0000000..dc87641 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.mdb.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e2be4bcb74a14d1f985e804cae3cc56f +labels: +- gvh +- gvh_rename_to_disable +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.mdb +- gvhp_targets-editor +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.meta b/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.meta new file mode 100644 index 0000000..8a1b75f --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 8a496a95a58f4bd7a0389aade198ecdd +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll +- gvhp_targets-editor +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/ExternalDependencyManager/Editor/Google.VersionHandler.dll b/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll new file mode 100644 index 0000000..532642d Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb b/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb new file mode 100644 index 0000000..8eb1057 Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb.meta b/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb.meta new file mode 100644 index 0000000..11fbc19 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3aa17cd5f43042a1a7381759dc1258a7 +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb +timeCreated: 1538009133 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.meta b/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.meta new file mode 100644 index 0000000..241eaf3 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.meta @@ -0,0 +1,36 @@ +fileFormatVersion: 2 +guid: bb6999c8a5ce4ba99688ec579babe5b7 +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandler.dll +- gvhp_targets-editor +timeCreated: 1480838400 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + 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/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll b/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll new file mode 100644 index 0000000..87f8c16 Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.mdb b/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.mdb new file mode 100644 index 0000000..ec3f422 Binary files /dev/null and b/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.mdb differ diff --git a/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.mdb.meta b/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.mdb.meta new file mode 100644 index 0000000..c3463a0 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.mdb.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c9468fb6ca73426aa50edeafff06e546 +labels: +- gvh +- gvh_rename_to_disable +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.mdb +- gvhp_targets-editor +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.meta b/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.meta new file mode 100644 index 0000000..3a69ecb --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: e83c077c778146b29211c8dc53323f97 +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll +- gvhp_targets-editor +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/ExternalDependencyManager/Editor/GoogleRegistries.xml b/Assets/ExternalDependencyManager/Editor/GoogleRegistries.xml new file mode 100644 index 0000000..efd69e2 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/GoogleRegistries.xml @@ -0,0 +1,11 @@ + + + + + com.google + + + diff --git a/Assets/ExternalDependencyManager/Editor/GoogleRegistries.xml.meta b/Assets/ExternalDependencyManager/Editor/GoogleRegistries.xml.meta new file mode 100644 index 0000000..d4f612d --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/GoogleRegistries.xml.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 81e43a9734ee4e3d8d85776f1b564bd3 +labels: +- gumpr_registries +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/GoogleRegistries.xml +timeCreated: 1583806049 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/LICENSE b/Assets/ExternalDependencyManager/Editor/LICENSE new file mode 100644 index 0000000..6258cc4 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/LICENSE @@ -0,0 +1,245 @@ +Copyright (C) 2014 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. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + +==================================================================================================== +This package uses MiniJSON + +Copyright (c) 2013 Calvin Rien + +Based on the JSON parser by Patrick van Bergen +http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html + +Simplified it so that it doesn't throw exceptions +and can be used in Unity iPhone with maximum code stripping. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Assets/ExternalDependencyManager/Editor/LICENSE.meta b/Assets/ExternalDependencyManager/Editor/LICENSE.meta new file mode 100644 index 0000000..5868f9a --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/LICENSE.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 35a6726adf03479eb04b8c082346d551 +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/LICENSE +timeCreated: 1584567712 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/README.md b/Assets/ExternalDependencyManager/Editor/README.md new file mode 100644 index 0000000..37b64e4 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/README.md @@ -0,0 +1,768 @@ +External Dependency Manager for Unity +======== + +# Overview + +The External Dependency Manager for Unity (EDM4U) +(formerly Play Services Resolver / Jar Resolver) is intended to be used by any +Unity plugin that requires: + + * Android specific libraries (e.g + [AARs](https://developer.android.com/studio/projects/android-library.html)). + * iOS [CocoaPods](https://cocoapods.org/). + * Version management of transitive dependencies. + * Management of Package Manager (PM) Registries. + +Updated releases are available on +[GitHub](https://github.com/googlesamples/unity-jar-resolver) + +# Background + +Many Unity plugins have dependencies upon Android specific libraries, iOS +CocoaPods, and sometimes have transitive dependencies upon other Unity plugins. +This causes the following problems: + + * Integrating platform specific (e.g Android and iOS) libraries within a + Unity project can be complex and a burden on a Unity plugin maintainer. + * The process of resolving conflicting dependencies on platform specific + libraries is pushed to the developer attempting to use a Unity plugin. + The developer trying to use you plugin is very likely to give up when + faced with Android or iOS specific build errors. + * The process of resolving conflicting Unity plugins (due to shared Unity + plugin components) is pushed to the developer attempting to use your Unity + plugin. In an effort to resolve conflicts, the developer will very likely + attempt to resolve problems by deleting random files in your plugin, + report bugs when that doesn't work and finally give up. + +EDM provides solutions for each of these problems. + +## Android Dependency Management + +The *Android Resolver* component of this plugin will download and integrate +Android library dependencies and handle any conflicts between plugins that share +the same dependencies. + +Without the Android Resolver, typically Unity plugins bundle their AAR and +JAR dependencies, e.g. a Unity plugin `SomePlugin` that requires the Google +Play Games Android library would redistribute the library and its transitive +dependencies in the folder `SomePlugin/Android/`. When a user imports +`SomeOtherPlugin` that includes the same libraries (potentially at different +versions) in `SomeOtherPlugin/Android/`, the developer using `SomePlugin` and +`SomeOtherPlugin` will see an error when building for Android that can be hard +to interpret. + +Using the Android Resolver to manage Android library dependencies: + + * Solves Android library conflicts between plugins. + * Handles all of the various processing steps required to use Android + libraries (AARs, JARs) in Unity 4.x and above projects. Almost all + versions of Unity have - at best - partial support for AARs. + * (Experimental) Supports minification of included Java components without + exporting a project. + +## iOS Dependency Management + +The *iOS Resolver* component of this plugin integrates with +[CocoaPods](https://cocoapods.org/) to download and integrate iOS libraries +and frameworks into the Xcode project Unity generates when building for iOS. +Using CocoaPods allows multiple plugins to utilize shared components without +forcing developers to fix either duplicate or incompatible versions of +libraries included through multiple Unity plugins in their project. + +## Package Manager Registry Setup + +The [Package Manager](https://docs.unity3d.com/Manual/Packages.html) +(PM) makes use of [NPM](https://www.npmjs.com/) registry servers for package +hosting and provides ways to discover, install, upgrade and uninstall packages. +This makes it easier for developers to manage plugins within their projects. + +However, installing additional package registries requires a few manual steps +that can potentially be error prone. The *Package Manager Resolver* +component of this plugin integrates with +[PM](https://docs.unity3d.com/Manual/Packages.html) to provide a way to +auto-install PM package registries when a `.unitypackage` is installed which +allows plugin maintainers to ship a `.unitypackage` that can provide access +to their own PM registry server to make it easier for developers to +manage their plugins. + +## Unity Plugin Version Management + +Finally, the *Version Handler* component of this plugin simplifies the process +of managing transitive dependencies of Unity plugins and each plugin's upgrade +process. + +For example, without the Version Handler plugin, if: + + * Unity plugin `SomePlugin` includes `EDM4U` plugin at + version 1.1. + * Unity plugin `SomeOtherPlugin` includes `EDM4U` + plugin at version 1.2. + +The version of `EDM4U` included in the developer's project depends upon the +order the developer imports `SomePlugin` or `SomeOtherPlugin`. + +This results in: + + * `EDM4U` at version 1.2, if `SomePlugin` is imported then `SomeOtherPlugin` + is imported. + * `EDM4U` at version 1.1, if `SomeOtherPlugin` is imported then + `SomePlugin` is imported. + +The Version Handler solves the problem of managing transitive dependencies by: + + * Specifying a set of packaging requirements that enable a plugin at + different versions to be imported into a Unity project. + * Providing activation logic that selects the latest version of a plugin + within a project. + +When using the Version Handler to manage `EDM4U` included in `SomePlugin` and +`SomeOtherPlugin`, from the prior example, version 1.2 will always be the +version activated in a developer's Unity project. + +Plugin creators are encouraged to adopt this library to ease integration for +their customers. For more information about integrating EDM4U +into your own plugin, see the [Plugin Redistribution](#plugin-redistribution) +section of this document. + +# Analytics + +The External Dependency Manager for Unity plugin by default logs usage to Google +Analytics. The purpose of the logging is to quantitatively measure the usage of +functionality, to gather reports on integration failures and to inform future +improvements to the developer experience of the External Dependency Manager +plugin. Note that the analytics collected are limited to the scope of the EDM4U +plugin’s usage. + +For details of what is logged, please refer to the usage of +`EditorMeasurement.Report()` in the source code. + +# Requirements + +The *Android Resolver* and *iOS Resolver* components of the plugin only work +with Unity version 4.6.8 or higher. + +The *Version Handler* component only works with Unity 5.x or higher as it +depends upon the `PluginImporter` UnityEditor API. + +The *Package Manager Resolver* component only works with +Unity 2018.4 or above, when +[scoped registry](https://docs.unity3d.com/Manual/upm-scoped.html) +support was added to the Package Manager. + +# Getting Started + +Before you import EDM4U into your plugin project, you first +need to consider whether you intend to *redistribute* `EDM4U` +along with your own plugin. + +## Plugin Redistribution + +If you're a plugin maintainer, redistributing `EDM4U` inside your own plugin +will ease the integration process for your users, by resolving dependency +conflicts between your plugin and other plugins in a user's project. + +If you wish to redistribute `EDM4U` inside your plugin, +you **must** follow these steps when importing the +`external-dependency-manager-*.unitypackage`, and when exporting your own plugin +package: + + 1. Import the `external-dependency-manager-*.unitypackage` into your plugin + project by + [running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html), ensuring that + you add the `-gvh_disable` option. + 1. Export your plugin by [running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html), ensuring that + you: + - Include the contents of the `Assets/PlayServicesResolver` and + `Assets/ExternalDependencyManager` directory. + - Add the `-gvh_disable` option. + +You **must** specify the `-gvh_disable` option in order for the Version +Handler to work correctly! + +For example, the following command will import the +`external-dependency-manager-1.2.46.0.unitypackage` into the project +`MyPluginProject` and export the entire Assets folder to +`MyPlugin.unitypackage`: + +``` +Unity -gvh_disable \ + -batchmode \ + -importPackage external-dependency-manager-1.2.46.0.unitypackage \ + -projectPath MyPluginProject \ + -exportPackage Assets MyPlugin.unitypackage \ + -quit +``` + +### Background + +The *Version Handler* component relies upon deferring the load of editor DLLs +so that it can run first and determine the latest version of a plugin component +to activate. The build of `EDM4U` plugin has Unity asset metadata that is +configured so that the editor components are not initially enabled when it's +imported into a Unity project. To maintain this configuration when importing +the `external-dependency-manager.unitypackage` into a Unity plugin project, you +*must* specify the command line option `-gvh_disable` which will prevent the +Version Handler component from running and changing the Unity asset metadata. + +# Android Resolver Usage + +The Android Resolver copies specified dependencies from local or remote Maven +repositories into the Unity project when a user selects Android as the build +target in the Unity editor. + + 1. Add the `external-dependency-manager-*.unitypackage` to your plugin + project (assuming you are developing a plugin). If you are redistributing + EDM4U with your plugin, you **must** follow the + import steps in the [Getting Started](#getting-started) section! + + 2. Copy and rename the + [SampleDependencies.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/SampleDependencies.xml) + file into your plugin and add the dependencies your plugin requires. + + The XML file just needs to be under an `Editor` directory and match the + name `*Dependencies.xml`. For example, + `MyPlugin/Editor/MyPluginDependencies.xml`. + + 3. Follow the steps in the [Getting Started](#getting-started) + section when you are exporting your plugin package. + +For example, to add the Google Play Games library +(`com.google.android.gms:play-services-games` package) at version `9.8.0` to +the set of a plugin's Android dependencies: + +``` + + + + + extra-google-m2repository + + + + +``` + +The version specification (last component) supports: + + * Specific versions e.g `9.8.0` + * Partial matches e.g `9.8.+` would match 9.8.0, 9.8.1 etc. choosing the most + recent version. + * Latest version using `LATEST` or `+`. We do *not* recommend using this + unless you're 100% sure the library you depend upon will not break your + Unity plugin in future. + +The above example specifies the dependency as a component of the Android SDK +manager such that the Android SDK manager will be executed to install the +package if it's not found. If your Android dependency is located on Maven +central it's possible to specify the package simply using the `androidPackage` +element: + +``` + + + + + +``` + +## Auto-resolution + +By default the Android Resolver automatically monitors the dependencies you have +specified and the `Plugins/Android` folder of your Unity project. The +resolution process runs when the specified dependencies are not present in your +project. + +The *auto-resolution* process can be disabled via the +`Assets > External Dependency Manager > Android Resolver > Settings` menu. + +Manual resolution can be performed using the following menu options: + + * `Assets > External Dependency Manager > Android Resolver > Resolve` + * `Assets > External Dependency Manager > Android Resolver > Force Resolve` + +## Deleting libraries + +Resolved packages are tracked via asset labels by the Android Resolver. +They can easily be deleted using the +`Assets > External Dependency Manager > Android Resolver > Delete Resolved Libraries` +menu item. + +## Android Manifest Variable Processing + +Some AAR files (for example play-services-measurement) contain variables that +are processed by the Android Gradle plugin. Unfortunately, Unity does not +perform the same processing when using Unity's Internal Build System, so the +Android Resolver plugin handles known cases of this variable substitution +by exploding the AAR into a folder and replacing `${applicationId}` with the +`bundleID`. + +Disabling AAR explosion and therefore Android manifest processing can be done +via the `Assets > External Dependency Manager > Android Resolver > Settings` +menu. You may want to disable explosion of AARs if you're exporting a project +to be built with Gradle / Android Studio. + +## ABI Stripping + +Some AAR files contain native libraries (.so files) for each ABI supported +by Android. Unfortunately, when targeting a single ABI (e.g x86), Unity does +not strip native libraries for unused ABIs. To strip unused ABIs, the Android +Resolver plugin explodes an AAR into a folder and removes unused ABIs to +reduce the built APK size. Furthermore, if native libraries are not stripped +from an APK (e.g you have a mix of Unity's x86 library and some armeabi-v7a +libraries) Android may attempt to load the wrong library for the current +runtime ABI completely breaking your plugin when targeting some architectures. + +AAR explosion and therefore ABI stripping can be disabled via the +`Assets > External Dependency Manager > Android Resolver > Settings` menu. +You may want to disable explosion of AARs if you're exporting a project to be +built with Gradle / Android Studio. + +## Resolution Strategies + +By default the Android Resolver will use Gradle to download dependencies prior +to integrating them into a Unity project. This works with Unity's internal +build system and Gradle / Android Studio project export. + +It's possible to change the resolution strategy via the +`Assets > External Dependency Manager > Android Resolver > Settings` menu. + +### Download Artifacts with Gradle + +Using the default resolution strategy, the Android resolver executes the +following operations: + + - Remove the result of previous Android resolutions. + e.g Delete all files and directories labeled with "gpsr" under + `Plugins/Android` from the project. + - Collect the set of Android dependencies (libraries) specified by a + project's `*Dependencies.xml` files. + - Run `download_artifacts.gradle` with Gradle to resolve conflicts and, + if successful, download the set of resolved Android libraries (AARs, JARs). + - Process each AAR / JAR so that it can be used with the currently selected + Unity build system (e.g Internal vs. Gradle, Export vs. No Export). + This involves patching each reference to `applicationId` in the + AndroidManifest.xml with the project's bundle ID. This means resolution + must be run if the bundle ID is changed again. + - Move the processed AARs to `Plugins/Android` so they will be included when + Unity invokes the Android build. + +### Integrate into mainTemplate.gradle + +Unity 5.6 introduced support for customizing the `build.gradle` used to build +Unity projects with Gradle. When the *Patch mainTemplate.gradle* setting is +enabled, rather than downloading artifacts before the build, Android resolution +results in the execution of the following operations: + + - Remove the result of previous Android resolutions. + e.g Delete all files and directories labeled with "gpsr" under + `Plugins/Android` from the project and remove sections delimited with + `// Android Resolver * Start` and `// Android Resolver * End` lines. + - Collect the set of Android dependencies (libraries) specified by a + project's `*Dependencies.xml` files. + - Rename any `.srcaar` files in the build to `.aar` and exclude them from + being included directly by Unity in the Android build as + `mainTemplate.gradle` will be patched to include them instead from their + local maven repositories. + - Inject the required Gradle repositories into `mainTemplate.gradle` at the + line matching the pattern + `.*apply plugin: 'com\.android\.(application|library)'.*` or the section + starting at the line `// Android Resolver Repos Start`. + If you want to control the injection point in the file, the section + delimited by the lines `// Android Resolver Repos Start` and + `// Android Resolver Repos End` should be placed in the global scope + before the `dependencies` section. + - Inject the required Android dependencies (libraries) into + `mainTemplate.gradle` at the line matching the pattern `***DEPS***` or + the section starting at the line `// Android Resolver Dependencies Start`. + If you want to control the injection point in the file, the section + delimited by the lines `// Android Resolver Dependencies Start` and + `// Android Resolver Dependencies End` should be placed in the + `dependencies` section. + - Inject the packaging options logic, which excludes architecture specific + libraries based upon the selected build target, into `mainTemplate.gradle` + at the line matching the pattern `android +{` or the section starting at + the line `// Android Resolver Exclusions Start`. + If you want to control the injection point in the file, the section + delimited by the lines `// Android Resolver Exclusions Start` and + `// Android Resolver Exclusions End` should be placed in the global + scope before the `android` section. + +## Dependency Tracking + +The Android Resolver creates the +`ProjectSettings/AndroidResolverDependencies.xml` to quickly determine the set +of resolved dependencies in a project. This is used by the auto-resolution +process to only run the expensive resolution process when necessary. + +## Displaying Dependencies + +It's possible to display the set of dependencies the Android Resolver +would download and process in your project via the +`Assets > External Dependency Manager > Android Resolver > Display Libraries` +menu item. + +# iOS Resolver Usage + +The iOS resolver component of this plugin manages +[CocoaPods](https://cocoapods.org/). A CocoaPods `Podfile` is generated and +the `pod` tool is executed as a post build process step to add dependencies +to the Xcode project exported by Unity. + +Dependencies for iOS are added by referring to CocoaPods. + + 1. Add the `external-dependency-manager-*.unitypackage` to your plugin + project (assuming you are developing a plugin). If you are redistributing + EDM4U with your plugin, you **must** follow the + import steps in the [Getting Started](#getting-started) section! + + 2. Copy and rename the + [SampleDependencies.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/SampleDependencies.xml) + file into your plugin and add the dependencies your plugin requires. + + The XML file just needs to be under an `Editor` directory and match the + name `*Dependencies.xml`. For example, + `MyPlugin/Editor/MyPluginDependencies.xml`. + + 3. Follow the steps in the [Getting Started](#getting-started) + section when you are exporting your plugin package. + +For example, to add the AdMob pod, version 7.0 or greater with bitcode enabled: + +``` + + + + + +``` + +## Integration Strategies + +The `CocoaPods` are either: + * Downloaded and injected into the Xcode project file directly, rather than + creating a separate xcworkspace. We call this `Xcode project` integration. + * If the Unity version supports opening a xcworkspace file, the `pod` tool + is used as intended to generate a xcworkspace which references the + CocoaPods. We call this `Xcode workspace` integration. + +The resolution strategy can be changed via the +`Assets > External Dependency Manager > iOS Resolver > Settings` menu. + +### Appending text to generated Podfile +In order to modify the generated Podfile you can create a script like this: +``` +using System.IO; +public class PostProcessIOS : MonoBehaviour { +[PostProcessBuildAttribute(45)]//must be between 40 and 50 to ensure that it's not overriden by Podfile generation (40) and that it's added before "pod install" (50) +private static void PostProcessBuild_iOS(BuildTarget target, string buildPath) +{ + if (target == BuildTarget.iOS) + { + + using (StreamWriter sw = File.AppendText(buildPath + "/Podfile")) + { + //in this example I'm adding an app extension + sw.WriteLine("\ntarget 'NSExtension' do\n pod 'Firebase/Messaging', '6.6.0'\nend"); + } + } +} +``` + +# Package Manager Resolver Usage + +Adding registries to the +[Package Manager](https://docs.unity3d.com/Manual/Packages.html) +(PM) is a manual process. The Package Manager Resolver (PMR) component +of this plugin makes it easy for plugin maintainers to distribute new PM +registry servers and easy for plugin users to manage PM registry servers. + +## Adding Registries + + 1. Add the `external-dependency-manager-*.unitypackage` to your plugin + project (assuming you are developing a plugin). If you are redistributing + EDM4U with your plugin, you **must** follow the + import steps in the [Getting Started](#getting-started) section! + + 2. Copy and rename the + [SampleRegistries.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/sample/Assets/ExternalDependencyManager/Editor/SampleRegistries.xml) + file into your plugin and add the registries your plugin requires. + + The XML file just needs to be under an `Editor` directory and match the + name `*Registries.xml` or labeled with `gumpr_registries`. For example, + `MyPlugin/Editor/MyPluginRegistries.xml`. + + 3. Follow the steps in the [Getting Started](#getting-started) + section when you are exporting your plugin package. + +For example, to add a registry for plugins in the scope `com.coolstuff`: + +``` + + + + com.coolstuff + + + +``` + +When PMR is loaded it will prompt the developer to add the registry to their +project if it isn't already present in the `Packages/manifest.json` file. + +For more information, see Unity's documentation on +[scoped package registries](https://docs.unity3d.com/Manual/upm-scoped.html). + +## Managing Registries + +It's possible to add and remove registries that are specified via PMR +XML configuration files via the following menu options: + +* `Assets > External Dependency Manager > Package Manager Resolver > + Add Registries` will prompt the user with a window which allows them to + add registries discovered in the project to the Package Manager. +* `Assets > External Dependency Manager > Package Manager Resolver > + Remove Registries` will prompt the user with a window which allows them to + remove registries discovered in the project from the Package Manager. +* `Assets > External Dependency Manager > Package Manager Resolver > + Modify Registries` will prompt the user with a window which allows them to + add or remove registries discovered in the project. + +## Migration + +PMR can migrate Version Handler packages installed in the `Assets` folder +to PM packages. This requires the plugins to implement the following: + +* `.unitypackage` must include a Version Handler manifests that describes + the components of the plugin. If the plugin has no dependencies + the manifest would just include the files in the plugin. +* The PM package JSON provided by the registry must include a keyword + (in the `versions.VERSION.keyword` list) that maps the PM package + to a Version Handler package using the format + `vh-name:VERSION_HANDLER_MANIFEST_NAME` where `VERSION_HANDLER_MANIFEST_NAME` + is the name of the manifest defined in the `.unitypackage`. For + more information see the description of the `gvhp_manifestname` asset label + in the *Version Handler Usage* section. + +When using the `Assets > External Dependency Manager > +Package Manager Resolver > Migrate Packages` menu option, PMR then +will: + +* List all Version Handler manager packages in the project. +* Search all available packages in the PM registries and fetch keywords + associated with each package parsing the Version Handler manifest names + for each package. +* Map each installed Version Handler package to a PM package. +* Prompt the user to migrate the discovered packages. +* Perform package migration for all selected packages if the user clicks + the `Apply` button. + +## Configuration + +PMR can be configured via the `Assets > External Dependency Manager > +Package Manager Resolver > Settings` menu option: + +* `Add package registries` when enabled, when the plugin loads or registry + configuration files change, this will prompt the user to add registries + that are not present in the Package Manager. +* `Prompt to add package registries` will cause a developer to be prompted + with a window that will ask for confirmation before adding registries. + When this is disabled registries are added silently to the project. +* `Prompt to migrate packages` will cause a developer to be prompted + with a window that will ask for confirmation before migrating packages + installed in the `Assets` directory to PM packages. +* `Enable Analytics Reporting` when enabled, reports the use of the plugin + to the developers so they can make imrpovements. +* `Verbose logging` when enabled prints debug information to the console + which can be useful when filing bug reports. + +# Version Handler Usage + +The Version Handler component of this plugin manages: + +* Shared Unity plugin dependencies. +* Upgrading Unity plugins by cleaning up old files from previous versions. +* Uninstallation of plugins that are distributed with manifest files. +* Restoration of plugin assets to their original install locations if assets + are tagged with the `exportpath` label. + +Since the Version Handler needs to modify Unity asset metadata (`.meta` files), +to enable / disable components, rename and delete asset files it does not +work with Package Manager installed packages. It's still possible to +include EDM4U in Package Manager packages, the Version Handler component +simply won't do anything to PM plugins in this case. + +## Using Version Handler Managed Plugins + +If a plugin is imported at multiple different versions into a project, if +the Version Handler is enabled, it will automatically check all managed +assets to determine the set of assets that are out of date and assets that +should be removed. To disable automatic checking managed assets disable +the `Enable version management` option in the +`Assets > External Dependency Manager > Version Handler > Settings` menu. + +If version management is disabled, it's possible to check managed assets +manually using the +`Assets > External Dependency Manager > Version Handler > Update` menu option. + +### Listing Managed Plugins + +Plugins managed by the Version Handler, those that ship with manifest files, +can displayed using the `Assets > External Dependency Manager > +Version Handler > Display Managed Packages` menu option. The list of plugins +are written to the console window along with the set of files used by each +plugin. + +### Uninstalling Managed Plugins + +Plugins managed by the Version Handler, those that ship with manifest files, +can be removed using the `Assets > External Dependency Manager > +Version Handler > Uninstall Managed Packages` menu option. This operation +will display a window that allows a developer to select a set of plugins to +remove which will remove all files owned by each plugin excluding those that +are in use by other installed plugins. + +Files managed by the Version Handler, those labeled with the `gvh` asset label, +can be checked to see whether anything needs to be upgraded, disabled or +removed using the `Assets > External Dependency Manager > +Version Handler > Update` menu option. + +### Restore Install Paths + +Some developers move assets around in their project which can make it +harder for plugin maintainers to debug issues if this breaks Unity's +[special folders](https://docs.unity3d.com/Manual/SpecialFolders.html) rules. +If assets are labeled with their original install / export path +(see `gvhp_exportpath` below), Version Handler can restore assets to their +original locations when using the `Assets > External Dependency Manager > +Version Handler > Move Files To Install Locations` menu option. + +### Settings + +Some behavior of the Version Handler can be configured via the +`Assets > External Dependency Manager > Version Handler > Settings` menu +option. + +* `Enable version management` controls whether the plugin should automatically + check asset versions and apply changes. If this is disabled the process + should be run manually when installing or upgrading managed plugins using + `Assets > External Dependency Manager > Version Handler > Update`. +* `Rename to canonical filenames` is a legacy option that will rename files to + remove version numbers and other labels from filenames. +* `Prompt for obsolete file deletion` enables the display of a window when + obsolete files are deleted allowing the developer to select which files to + delete and those to keep. +* `Allow disabling files via renaming` controls whether obsolete or disabled + files should be disabled by renaming them to `myfilename_DISABLED`. + Renaming to disable files is required in some scenarios where Unity doesn't + support removing files from the build via the PluginImporter. +* `Enable Analytics Reporting` enables / disables usage reporting to plugin + developers to improve the product. +* `Verbose logging` enables _very_ noisy log output that is useful for + debugging while filing a bug report or building a new managed plugin. +* `Use project settings` saves settings for the plugin in the project rather + than system-wide. + +## Redistributing a Managed Plugin + +The Version Handler employs a couple of methods for managing version +selection, upgrade and removal of plugins. + +* Each plugin can ship with a manifest file that lists the files it includes. + This makes it possible for Version Handler to calculate the difference + in assets between the most recent release of a plugin and the previous + release installed in a project. If a files are removed the Version Handler + will prompt the user to clean up obsolete files. +* Plugins can ship using assets with unique names, unique GUIDs and version + number labels. Version numbers can be attached to assets using labels or + added to the filename (e.g `myfile.txt` would be `myfile_version-x.y.z.txt). + This allows the Version Handler to determine which set of files are the + same file at different versions, select the most recent version and prompt + the developer to clean up old versions. + +Unity plugins can be managed by the Version Handler using the following steps: + + 1. Add the `gvh` asset label to each asset (file) you want Version Handler + to manage. + 1. Add the `gvh_version-VERSION` label to each asset where `VERSION` is the + version of the plugin you're releasing (e.g 1.2.3). + 1. Add the `gvhp_exportpath-PATH` label to each asset where `PATH` is the + export path of the file when the `.unitypackage` is created. This is + used to track files if they're moved around in a project by developers. + 1. Optional: Add `gvh_targets-editor` label to each editor DLL in your + plugin and disable `editor` as a target platform for the DLL. + The Version Handler will enable the most recent version of this DLL when + the plugin is imported. + 1. Optional: If your plugin is included in other Unity plugins, you should + add the version number to each filename and change the GUID of each asset. + This allows multiple versions of your plugin to be imported into a Unity + project, with the Version Handler component activating only the most + recent version. + 1. Create a manifest text file named `MY_UNIQUE_PLUGIN_NAME_VERSION.txt` + that lists all the files in your plugin relative to the project root. + Then add the `gvh_manifest` label to the asset to indicate this file is + a plugin manifest. + 1. Optional: Add a `gvhp_manifestname-NAME` label to your manifest file + to provide a human readable name for your package. If this isn't provided + the name of the manifest file will be used as the package name. + NAME can match the pattern `[0-9]+[a-zA-Z -]' where a leading integer + will set the priority of the name where `0` is the highest priority + and preferably used as the display name. The lowest value (i.e highest + priority name) will be used as the display name and all other specified + names will be aliases of the display name. Aliases can refer to previous + names of the package allowing renaming across published versions. + 1. Redistribute EDM4U Unity plugin with your plugin. + See the [Plugin Redistribution](#plugin-redistribution) for the details. + +If you follow these steps: + + * When users import a newer version of your plugin, files referenced by the + older version's manifest are cleaned up. + * The latest version of the plugin will be selected when users import + multiple packages that include your plugin, assuming the steps in + [Plugin Redistribution](#plugin-redistribution) are followed. + +# Building from Source + +To build this plugin from source you need the following tools installed: + * Unity (with iOS and Android modules installed) + +You can build the plugin by running the following from your shell +(Linux / OSX): + +``` +./gradlew build +``` + +or Windows: + +``` +./gradlew.bat build +``` + +# Releasing + +Each time a new build of this plugin is checked into the source tree you +need to do the following: + + * Bump the plugin version variable `pluginVersion` in `build.gradle` + * Update `CHANGELOG.md` with the new version number and changes included in + the release. + * Build the release using `./gradlew release` which performs the following: + * Updates `external-dependency-manager-*.unitypackage` + * Copies the unpacked plugin to the `exploded` directory. + * Updates template metadata files in the `plugin` directory. + The GUIDs of all asset metadata is modified due to the version number + change. Each file within the plugin is versioned to allow multiple + versions of the plugin to be imported into a Unity project which allows + the most recent version to be activated by the Version Handler + component. + * Create release commit using `./gradlew gitCreateReleaseCommit` which + performs `git commit -a -m "description from CHANGELOG.md"` + * Once the release commit is merge, tag the release using + `./gradlew gitTagRelease` which performs the following: + * `git tag -a pluginVersion -m "version RELEASE"` to tag the release. + * Update tags on remote branch using `git push --tag REMOTE HEAD:master` diff --git a/Assets/ExternalDependencyManager/Editor/README.md.meta b/Assets/ExternalDependencyManager/Editor/README.md.meta new file mode 100644 index 0000000..ea11318 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/README.md.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 11eb52f780284fd69194951ac46cb538 +labels: +- gvh +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/README.md +timeCreated: 1584567712 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.160_manifest.txt b/Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.160_manifest.txt new file mode 100644 index 0000000..a2a5411 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.160_manifest.txt @@ -0,0 +1,14 @@ +Assets/ExternalDependencyManager/Editor/CHANGELOG.md +Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll +Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.160.dll.mdb +Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll +Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.160.dll.mdb +Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll +Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.160.dll.mdb +Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll +Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb +Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll +Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.160.dll.mdb +Assets/ExternalDependencyManager/Editor/GoogleRegistries.xml +Assets/ExternalDependencyManager/Editor/LICENSE +Assets/ExternalDependencyManager/Editor/README.md diff --git a/Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.160_manifest.txt.meta b/Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.160_manifest.txt.meta new file mode 100644 index 0000000..8c99086 --- /dev/null +++ b/Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.160_manifest.txt.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: f9844d3ea247439692f721d4fc3ee480 +labels: +- gvh +- gvh_manifest +- gvh_version-1.2.160 +- gvhp_exportpath-ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.160_manifest.txt +- gvhp_manifestname-0External Dependency Manager +- gvhp_manifestname-play-services-resolver +timeCreated: 1474401009 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift.meta b/Assets/Helpshift.meta new file mode 100644 index 0000000..eb1158f --- /dev/null +++ b/Assets/Helpshift.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6fbf682c57be548c6a708b97f2d8b426 +folderAsset: yes +timeCreated: 1621857880 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Editor.meta b/Assets/Helpshift/Editor.meta new file mode 100644 index 0000000..c24c4a7 --- /dev/null +++ b/Assets/Helpshift/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 594315fd1d6f14d81bdb2af4fb373b0f +folderAsset: yes +timeCreated: 1621857880 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Editor/HelpshiftDependencies.xml b/Assets/Helpshift/Editor/HelpshiftDependencies.xml new file mode 100644 index 0000000..bd27cc7 --- /dev/null +++ b/Assets/Helpshift/Editor/HelpshiftDependencies.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/Assets/Helpshift/Editor/HelpshiftDependencies.xml.meta b/Assets/Helpshift/Editor/HelpshiftDependencies.xml.meta new file mode 100644 index 0000000..8b9b942 --- /dev/null +++ b/Assets/Helpshift/Editor/HelpshiftDependencies.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb5f9142f8c1e499a9c2b80b8a8870da +timeCreated: 1621935842 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Editor/HelpshiftPostProcess.cs b/Assets/Helpshift/Editor/HelpshiftPostProcess.cs new file mode 100644 index 0000000..ff4b01e --- /dev/null +++ b/Assets/Helpshift/Editor/HelpshiftPostProcess.cs @@ -0,0 +1,98 @@ +#if UNITY_IOS +using UnityEngine; +using UnityEditor; +using UnityEditor.Callbacks; +using System.IO; +using HsUnityEditor.iOS.Xcode; +using HsUnityEditor.iOS.Xcode.Extensions; +public class HelpshiftPostProcess : MonoBehaviour +{ + // Set PostProcess priority to a high number to ensure that the this is started last. + [PostProcessBuild(900)] + public static void OnPostprocessBuild(BuildTarget target, string path) + { + // Don't do anything if build target is not iOS + if (target != BuildTarget.iOS) + { + return; + } + + // Create a PBXProject object for the generated Xcode project + PBXProject project = new PBXProject(); + string pbxProjectPath = PBXProject.GetPBXProjectPath(path); + project.ReadFromFile(pbxProjectPath); + + // GUID of main app target. This is the target whose build settings we will be modifying. + string unityAppTargetGuid = project.TargetGuidByName("Unity-iPhone"); + // GUID of UnityFramework target. This target is only present in Unity 2019.3 and above. + // We need to add our app controller mm file to this target, if present. Else we add + // it to app target. + string unityFrameworkTargetGuid = project.TargetGuidByName("UnityFramework"); + + // Add HelpshiftX-Unity.h header file to project, if not already added. + string unityHeaderProjectPath = "Libraries/Helpshift/Plugins/iOS/HelpshiftX-Unity.h"; + string unityHeaderGuid = project.FindFileGuidByProjectPath(unityHeaderProjectPath); + if (unityHeaderGuid == null) + { + string unityHeaderDiskPath = Application.dataPath + "/Helpshift/Plugins/iOS/HelpshiftX-Unity.h"; + project.AddFile(unityHeaderDiskPath, unityHeaderProjectPath, PBXSourceTree.Absolute); + } + + // Add HsUnityAppController.mm file to project, if not already added. + string unityAppControllerProjectPath = "Libraries/Helpshift/Plugins/iOS/HsUnityAppController.mm"; + string unityAppControllerGuid = project.FindFileGuidByProjectPath(unityHeaderProjectPath); + if (unityAppControllerGuid == null) + { + string unityAppControllerDiskPath = Application.dataPath + "/Helpshift/Plugins/iOS/HsUnityAppController.mm"; + unityAppControllerGuid = project.AddFile(unityAppControllerDiskPath, unityAppControllerProjectPath, PBXSourceTree.Absolute); + project.AddFileToBuild(unityFrameworkTargetGuid ?? unityAppTargetGuid, unityAppControllerGuid); + } + + // Add HelpshiftX.framework to project, if not already added. + string frameworkProjectPath = "Frameworks/Helpshift/Plugins/iOS/HelpshiftX.framework"; + string frameworkGuid = project.FindFileGuidByProjectPath(frameworkProjectPath); + if (frameworkGuid == null) + { + string frameworkDiskPath = Application.dataPath + "/Helpshift/Plugins/iOS/HelpshiftX.framework"; + frameworkGuid = project.AddFile(frameworkDiskPath, frameworkProjectPath, PBXSourceTree.Absolute); + project.AddFileToBuild(unityFrameworkTargetGuid ?? unityAppTargetGuid, frameworkGuid); + // If framework is added to project via this script, we also need to set the Framework Search Path to path of framework on disk. + project.AddBuildProperty(unityFrameworkTargetGuid ?? unityAppTargetGuid, "FRAMEWORK_SEARCH_PATHS", frameworkDiskPath.Replace("/HelpshiftX.framework", "")); + } + + // Embed HelpshiftX.framework into main app target + PBXProjectExtensions.AddFileToEmbedFrameworks(project, unityAppTargetGuid, frameworkGuid); + + // Add script phase to strip simulator slices from HelpshiftX.framework in app target, if not already added + if (!project.isShellScriptAdded(unityAppTargetGuid, "HS Strip Simulator Slices")) + { + project.AddShellScriptBuildPhase(unityAppTargetGuid, + "HS Strip Simulator Slices", + "/bin/sh", + "bash \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/HelpshiftX.framework/strip_frameworks.sh\""); + } + + // Add @executable_path/Frameworks to Runpath Search Paths for app target, if not already added + if (!project.IsBuildPropertyAdded(unityAppTargetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks")) + { + project.AddBuildProperty(unityAppTargetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks"); + } + + // Set Validate Workspace to YES. If you are setting this to NO elsewhere in your build pipeline, + // comment this line out. + project.SetBuildProperty(unityAppTargetGuid, "VALIDATE_WORKSPACE", "YES"); + + // Add UserNotifications.framework system framework + project.AddFrameworkToProject(unityFrameworkTargetGuid ?? unityAppTargetGuid, "UserNotifications.framework", false); + + // Save modified Xcode project + project.WriteToFile(pbxProjectPath); + + // Enable remote notifications + string preprocessorPath = path + "/Classes/Preprocessor.h"; + string text = File.ReadAllText(preprocessorPath); + text = text.Replace("UNITY_USES_REMOTE_NOTIFICATIONS 0", "UNITY_USES_REMOTE_NOTIFICATIONS 1"); + File.WriteAllText(preprocessorPath, text); + } +} +#endif diff --git a/Assets/Helpshift/Editor/HelpshiftPostProcess.cs.meta b/Assets/Helpshift/Editor/HelpshiftPostProcess.cs.meta new file mode 100644 index 0000000..19641ed --- /dev/null +++ b/Assets/Helpshift/Editor/HelpshiftPostProcess.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9b3cd08777704440fa02b5ef629decd3 +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Editor/HsUnityEditor.iOS.Xcode.dll b/Assets/Helpshift/Editor/HsUnityEditor.iOS.Xcode.dll new file mode 100644 index 0000000..ae5b4cc Binary files /dev/null and b/Assets/Helpshift/Editor/HsUnityEditor.iOS.Xcode.dll differ diff --git a/Assets/Helpshift/Editor/HsUnityEditor.iOS.Xcode.dll.meta b/Assets/Helpshift/Editor/HsUnityEditor.iOS.Xcode.dll.meta new file mode 100644 index 0000000..c2b1939 --- /dev/null +++ b/Assets/Helpshift/Editor/HsUnityEditor.iOS.Xcode.dll.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: 27f97bec042734e1d886c71641b48673 +timeCreated: 1621935749 +licenseType: Free +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Example.meta b/Assets/Helpshift/Example.meta new file mode 100644 index 0000000..3acc417 --- /dev/null +++ b/Assets/Helpshift/Example.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 66db1497db93e4c048ecdfab562d2767 +folderAsset: yes +timeCreated: 1622524193 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Example/HSEventsListener.cs b/Assets/Helpshift/Example/HSEventsListener.cs new file mode 100644 index 0000000..0d8fa99 --- /dev/null +++ b/Assets/Helpshift/Example/HSEventsListener.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using Helpshift; +using UnityEngine; + +namespace HelpshiftExample +{ + public class HSEventsListener: IHelpshiftEventsListener + { + + public void AuthenticationFailedForUser(HelpshiftAuthenticationFailureReason reason) + { + Debug.Log("Helpshift - Authentication Failed for reason " + reason.ToString()); + } + + public void HandleHelpshiftEvent(string eventName, Dictionary eventData) + { + string eventDataString = ""; + if (eventData != null) + { + foreach (KeyValuePair kvp in eventData) + { + eventDataString += kvp.Key + ":" + kvp.Value.ToString(); + } + } + Debug.Log("Helpshift - event_" + eventName + " " + eventDataString); + } + } +} diff --git a/Assets/Helpshift/Example/HSEventsListener.cs.meta b/Assets/Helpshift/Example/HSEventsListener.cs.meta new file mode 100644 index 0000000..ffca2b4 --- /dev/null +++ b/Assets/Helpshift/Example/HSEventsListener.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 50979a1615b254ec693a5ec7f0991626 +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Example/HelpshiftExample.unity b/Assets/Helpshift/Example/HelpshiftExample.unity new file mode 100644 index 0000000..9dab2ef --- /dev/null +++ b/Assets/Helpshift/Example/HelpshiftExample.unity @@ -0,0 +1,2813 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 7d6d5dae01ebcdd4f8afbab575ab0070, + type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &236467508 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 236467509} + - component: {fileID: 236467512} + - component: {fileID: 236467511} + - component: {fileID: 236467510} + m_Layer: 5 + m_Name: showSingleFAQ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &236467509 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 236467508} + 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: + - {fileID: 1324562181} + - {fileID: 1125773462} + m_Father: {fileID: 1596309543} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: 180} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &236467510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 236467508} + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 236467511} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1639867756} + m_TargetAssemblyTypeName: + m_MethodName: ShowSingleFAQ + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &236467511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 236467508} + 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.21788493, g: 0.46727726, b: 0.9558824, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &236467512 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 236467508} + m_CullTransparentMesh: 0 +--- !u!1 &282237584 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 282237585} + - component: {fileID: 282237587} + - component: {fileID: 282237586} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &282237585 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282237584} + 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: 604588012} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &282237586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282237584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Logout +--- !u!222 &282237587 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282237584} + m_CullTransparentMesh: 0 +--- !u!1 &335952723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 335952724} + - component: {fileID: 335952727} + - component: {fileID: 335952726} + - component: {fileID: 335952725} + m_Layer: 5 + m_Name: request unread count + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &335952724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335952723} + 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: + - {fileID: 1488823073} + m_Father: {fileID: 1596309543} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: -50} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &335952725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335952723} + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 335952726} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1639867756} + m_TargetAssemblyTypeName: + m_MethodName: RequestUnreadCount + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &335952726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335952723} + 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.9558824, g: 0.21788493, b: 0.41638094, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &335952727 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335952723} + m_CullTransparentMesh: 0 +--- !u!1 &400624367 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 400624368} + - component: {fileID: 400624371} + - component: {fileID: 400624370} + - component: {fileID: 400624369} + m_Layer: 5 + m_Name: login + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &400624368 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400624367} + 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: + - {fileID: 1079559926} + m_Father: {fileID: 1596309543} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: -170} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &400624369 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400624367} + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 400624370} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1639867756} + m_TargetAssemblyTypeName: + m_MethodName: Login + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &400624370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400624367} + 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.21788493, g: 0.9558824, b: 0.89480686, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &400624371 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400624367} + m_CullTransparentMesh: 0 +--- !u!1 &464179977 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 464179978} + - component: {fileID: 464179980} + - component: {fileID: 464179979} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &464179978 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464179977} + 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: 1125773462} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &464179979 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464179977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: FAQ id +--- !u!222 &464179980 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464179977} + m_CullTransparentMesh: 0 +--- !u!1 &562788409 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 562788413} + - component: {fileID: 562788412} + - component: {fileID: 562788411} + - component: {fileID: 562788410} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &562788410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 562788409} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &562788411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 562788409} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &562788412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 562788409} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &562788413 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 562788409} + 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: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &572909642 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 572909643} + - component: {fileID: 572909646} + - component: {fileID: 572909645} + - component: {fileID: 572909644} + m_Layer: 5 + m_Name: showFAQSection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &572909643 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572909642} + 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: + - {fileID: 1790335907} + - {fileID: 741585075} + m_Father: {fileID: 1596309543} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: 70} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &572909644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572909642} + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 572909645} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1639867756} + m_TargetAssemblyTypeName: + m_MethodName: ShowFAQSection + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &572909645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572909642} + 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.94570315, g: 0.21788493, b: 0.9558824, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &572909646 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572909642} + m_CullTransparentMesh: 0 +--- !u!1 &575344167 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 575344168} + - component: {fileID: 575344170} + - component: {fileID: 575344169} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &575344168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575344167} + 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: 873159018} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &575344169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575344167} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Custom API +--- !u!222 &575344170 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575344167} + m_CullTransparentMesh: 0 +--- !u!1 &604588011 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 604588012} + - component: {fileID: 604588015} + - component: {fileID: 604588014} + - component: {fileID: 604588013} + m_Layer: 5 + m_Name: logout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &604588012 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604588011} + 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: + - {fileID: 282237585} + m_Father: {fileID: 1596309543} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: -290} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &604588013 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604588011} + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 604588014} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1639867756} + m_TargetAssemblyTypeName: + m_MethodName: Logout + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &604588014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604588011} + 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.18771628, g: 0.8518434, b: 0.9117647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &604588015 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604588011} + m_CullTransparentMesh: 0 +--- !u!1 &605853697 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 605853702} + - component: {fileID: 605853701} + - component: {fileID: 605853700} + - component: {fileID: 605853698} + m_Layer: 0 + m_Name: Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &605853698 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 605853697} + m_Enabled: 1 +--- !u!124 &605853700 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 605853697} + m_Enabled: 1 +--- !u!20 &605853701 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 605853697} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &605853702 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 605853697} + 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: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &661817994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 661817995} + - component: {fileID: 661817997} + - component: {fileID: 661817996} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &661817995 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661817994} + 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: 1758952915} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &661817996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661817994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Contact Us +--- !u!222 &661817997 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661817994} + m_CullTransparentMesh: 0 +--- !u!1 &716001486 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 716001487} + - component: {fileID: 716001489} + - component: {fileID: 716001488} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &716001487 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 716001486} + 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: 1125773462} + 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.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &716001488 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 716001486} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &716001489 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 716001486} + m_CullTransparentMesh: 0 +--- !u!1 &741585074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 741585075} + - component: {fileID: 741585078} + - component: {fileID: 741585077} + - component: {fileID: 741585076} + m_Layer: 5 + m_Name: sectionid + m_TagString: sectionid + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &741585075 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 741585074} + 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: + - {fileID: 854019309} + - {fileID: 1102134620} + m_Father: {fileID: 572909643} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 300, y: 0} + m_SizeDelta: {x: 160, y: 90} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &741585076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 741585074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 741585077} + m_TextComponent: {fileID: 1102134621} + m_Placeholder: {fileID: 854019310} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &741585077 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 741585074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &741585078 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 741585074} + m_CullTransparentMesh: 0 +--- !u!1 &854019308 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 854019309} + - component: {fileID: 854019311} + - component: {fileID: 854019310} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &854019309 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854019308} + 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: 741585075} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &854019310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854019308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Section id +--- !u!222 &854019311 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854019308} + m_CullTransparentMesh: 0 +--- !u!1 &873159017 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 873159018} + - component: {fileID: 873159021} + - component: {fileID: 873159020} + - component: {fileID: 873159019} + m_Layer: 5 + m_Name: customize + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &873159018 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873159017} + 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: + - {fileID: 575344168} + m_Father: {fileID: 1596309543} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: -400} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &873159019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873159017} + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 873159020} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1639867756} + m_TargetAssemblyTypeName: + m_MethodName: CustomizedApi + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &873159020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873159017} + 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.9117647, g: 0.4723423, b: 0.18771634, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &873159021 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873159017} + m_CullTransparentMesh: 0 +--- !u!1 &1079559925 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1079559926} + - component: {fileID: 1079559928} + - component: {fileID: 1079559927} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1079559926 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079559925} + 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: 400624368} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1079559927 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079559925} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Login +--- !u!222 &1079559928 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079559925} + m_CullTransparentMesh: 0 +--- !u!1 &1102134619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1102134620} + - component: {fileID: 1102134622} + - component: {fileID: 1102134621} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1102134620 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1102134619} + 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: 741585075} + 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.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1102134621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1102134619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1102134622 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1102134619} + m_CullTransparentMesh: 0 +--- !u!1 &1125773461 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1125773462} + - component: {fileID: 1125773465} + - component: {fileID: 1125773464} + - component: {fileID: 1125773463} + - component: {fileID: 1125773466} + m_Layer: 5 + m_Name: faqid + m_TagString: faqidd + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1125773462 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1125773461} + 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: + - {fileID: 464179978} + - {fileID: 716001487} + m_Father: {fileID: 236467509} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 300, y: 0} + m_SizeDelta: {x: 160, y: 90} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1125773463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1125773461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1125773464} + m_TextComponent: {fileID: 716001488} + m_Placeholder: {fileID: 464179979} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1125773464 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1125773461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1125773465 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1125773461} + m_CullTransparentMesh: 0 +--- !u!114 &1125773466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1125773461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81784de33e4ea4e1bbe453ffdd17e3b4, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1130859877 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1130859878} + - component: {fileID: 1130859880} + - component: {fileID: 1130859879} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1130859878 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1130859877} + 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: 1341542597} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1130859879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1130859877} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: show FAQs +--- !u!222 &1130859880 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1130859877} + m_CullTransparentMesh: 0 +--- !u!1 &1324562180 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1324562181} + - component: {fileID: 1324562183} + - component: {fileID: 1324562182} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1324562181 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324562180} + 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: 236467509} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1324562182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324562180} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'show single FAQ ' +--- !u!222 &1324562183 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324562180} + m_CullTransparentMesh: 0 +--- !u!1 &1341542596 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1341542597} + - component: {fileID: 1341542600} + - component: {fileID: 1341542599} + - component: {fileID: 1341542598} + m_Layer: 5 + m_Name: showFAQs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1341542597 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341542596} + 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: + - {fileID: 1130859878} + m_Father: {fileID: 1596309543} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: 290} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1341542598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341542596} + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1341542599} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1639867756} + m_TargetAssemblyTypeName: + m_MethodName: ShowFAQs + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &1341542599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341542596} + 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.9558824, g: 0.9355238, b: 0.21788493, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1341542600 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341542596} + m_CullTransparentMesh: 0 +--- !u!1 &1488823072 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1488823073} + - component: {fileID: 1488823075} + - component: {fileID: 1488823074} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1488823073 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1488823072} + 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: 335952724} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1488823074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1488823072} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Request unread count +--- !u!222 &1488823075 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1488823072} + m_CullTransparentMesh: 0 +--- !u!1 &1596309542 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1596309543} + - component: {fileID: 1596309546} + - component: {fileID: 1596309545} + - component: {fileID: 1596309544} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1596309543 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596309542} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1758952915} + - {fileID: 1341542597} + - {fileID: 236467509} + - {fileID: 572909643} + - {fileID: 335952724} + - {fileID: 400624368} + - {fileID: 604588012} + - {fileID: 873159018} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1596309544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596309542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1596309545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596309542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1596309546 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596309542} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1639867753 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1639867755} + - component: {fileID: 1639867754} + - component: {fileID: 1639867756} + m_Layer: 0 + m_Name: background_image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1639867754 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639867753} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 941b1a85b4a964b62b9393bfcbce8e47, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 0 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1639867755 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639867753} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 10} + m_LocalScale: {x: 0.4, y: 0.8, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1639867756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639867753} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81784de33e4ea4e1bbe453ffdd17e3b4, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1758952914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1758952915} + - component: {fileID: 1758952918} + - component: {fileID: 1758952917} + - component: {fileID: 1758952916} + m_Layer: 5 + m_Name: contact_us + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1758952915 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758952914} + 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: + - {fileID: 661817995} + m_Father: {fileID: 1596309543} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: 400} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1758952916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758952914} + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1758952917} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1639867756} + m_TargetAssemblyTypeName: + m_MethodName: ShowConversation + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &1758952917 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758952914} + 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.2616782, g: 0.8897059, b: 0.2660094, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1758952918 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758952914} + m_CullTransparentMesh: 0 +--- !u!1 &1790335906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1790335907} + - component: {fileID: 1790335909} + - component: {fileID: 1790335908} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1790335907 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1790335906} + 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: 572909643} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1790335908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1790335906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: show FAQ section +--- !u!222 &1790335909 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1790335906} + m_CullTransparentMesh: 0 diff --git a/Assets/Helpshift/Example/HelpshiftExample.unity.meta b/Assets/Helpshift/Example/HelpshiftExample.unity.meta new file mode 100644 index 0000000..aafee26 --- /dev/null +++ b/Assets/Helpshift/Example/HelpshiftExample.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0dc9f99bd0944cd39015e6a745f5641 +timeCreated: 1621935744 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Example/HelpshiftExampleScript.cs b/Assets/Helpshift/Example/HelpshiftExampleScript.cs new file mode 100644 index 0000000..d06b2f0 --- /dev/null +++ b/Assets/Helpshift/Example/HelpshiftExampleScript.cs @@ -0,0 +1,186 @@ +using UnityEngine; +using UnityEngine.UI; +using System; +using System.Collections.Generic; +#if UNITY_IOS || UNITY_ANDROID +using Helpshift; +#endif + +namespace HelpshiftExample +{ + public class HelpshiftExampleScript : MonoBehaviour + { +#if UNITY_IOS || UNITY_ANDROID + + private HelpshiftSdk _helpshiftX; + + void Awake() + { + _helpshiftX = HelpshiftSdk.GetInstance(); + string domainName = ".helpshift.com"; + string platformId; +#if UNITY_ANDROID + platformId = ""; +#elif UNITY_IOS + platformId = ""; +#endif + _helpshiftX.Install(platformId, domainName, GetInstallConfig()); + Debug.Log("Unity - Awake called"); + _helpshiftX.SetHelpshiftEventsListener(new HSEventsListener()); + } + + public void ShowConversation() + { +#if UNITY_ANDROID || UNITY_IOS + _helpshiftX.ShowConversation(GetConversationConfig()); + Debug.Log("Helpshift - ShowConversation called"); +#endif + } + + public void ShowFAQs() + { +#if UNITY_ANDROID || UNITY_IOS + _helpshiftX.ShowFAQs(GetConversationConfig()); + Debug.Log("Helpshift - ShowFAQs called"); +#endif + } + + public void ShowFAQSection() + { +#if UNITY_ANDROID || UNITY_IOS + GameObject inputFieldGo = GameObject.FindGameObjectWithTag("sectionid"); + InputField inputFieldCo = inputFieldGo.GetComponent(); + try + { + Convert.ToInt16(inputFieldCo.text); + _helpshiftX.ShowFAQSection(inputFieldCo.text, GetConversationConfig()); + Debug.Log("Helpshift - ShowFAQSection called"); + } + catch (FormatException e) + { + Debug.Log("Input string is not a sequence of digits : " + e); + } +#endif + } + + public void ShowSingleFAQ() + { +#if UNITY_ANDROID || UNITY_IOS + GameObject inputFieldGo = GameObject.FindGameObjectWithTag("faqidd"); + InputField inputFieldCo = inputFieldGo.GetComponent(); + try + { + Convert.ToInt16(inputFieldCo.text); + _helpshiftX.ShowSingleFAQ(inputFieldCo.text, GetConversationConfig()); + Debug.Log("Helpshift - ShowSingleFAQ called"); + } + catch (FormatException e) + { + Debug.Log("Input string is not a sequence of digits : " + e); + } +#endif + } + + + public void RequestUnreadCount() + { +#if UNITY_ANDROID || UNITY_IOS + _helpshiftX.RequestUnreadMessageCount(true); + Debug.Log("Helpshift - RequestUnreadCount called"); +#endif + } + + + public void Login() + { +#if UNITY_ANDROID || UNITY_IOS + _helpshiftX.Login(GetUserDetails()); + Debug.Log("Helpshift - Login called"); +#endif + + } + + public void Logout() + { +#if UNITY_ANDROID || UNITY_IOS + _helpshiftX.Logout(); + Debug.Log("Helpshift - Logout called"); +#endif + } + + public void CustomizedApi() + { +#if UNITY_ANDROID || UNITY_IOS + // Call any custom api you want from here. + //_helpshiftX.ClearAnonymousUserOnLogin(); + //_helpshiftX.SetSDKLanguage("Fr"); + Debug.Log("Helpshift - CustomizedApi called"); +#endif + } + + private Dictionary GetUserDetails() + { + Dictionary userDetails = new Dictionary + { + { "userId", "" }, + { "userEmail", "" }, + { "userName", "" } + }; + // uncomment and pass the valid token here to check the user authentication feature + // userDetails.Add("userAuthToken", ""); + return userDetails; + } + + private Dictionary GetConversationConfig() + { + Dictionary config = new Dictionary + { + { "tags", new String[] { "foo", "bar" } }, + { "customIssueFields", GetCifs() } + }; + return config; + } + + + public static Dictionary GetCifs() + { + Dictionary joiningDate = new Dictionary(); + joiningDate.Add("type", "dt"); + joiningDate.Add("value", "1505927361535"); + + Dictionary stockLevel = new Dictionary(); + stockLevel.Add("type", "n"); + stockLevel.Add("value", "1505"); + + Dictionary employeeName = new Dictionary(); + employeeName.Add("type", "sl"); + employeeName.Add("value", "Bugs helpshift"); + + Dictionary isPro = new Dictionary(); + isPro.Add("type", "b"); + isPro.Add("value", "true"); + + Dictionary cifDictionary = new Dictionary(); + cifDictionary.Add("joining_date", joiningDate); + cifDictionary.Add("stock_level", stockLevel); + cifDictionary.Add("employee_name", employeeName); + cifDictionary.Add("is_pro", isPro); + return cifDictionary; + } + + private Dictionary GetInstallConfig() + { + + Dictionary installDictionary = new Dictionary(); + installDictionary.Add(HelpshiftSdk.ENABLE_LOGGING, true); +#if UNITY_ANDROID + //installDictionary.Add(HelpshiftSdk.NOTIFICATION_SOUND_ID, R.raw.custom_notification); + //installDictionary.Add(HelpshiftSdk.NOTIFICATION_ICON, R.drawable.hs__conversation_image); + //installDictionary.Add(HelpshiftSdk.NOTIFICATION_CHANNEL_ID, SampleAppConstants.CHANNEL_ID); + //installDictionary.Add(HelpshiftSdk.NOTIFICATION_LARGE_ICON, R.drawable.airplane); +#endif + return installDictionary; + } +#endif + } +} \ No newline at end of file diff --git a/Assets/Helpshift/Example/HelpshiftExampleScript.cs.meta b/Assets/Helpshift/Example/HelpshiftExampleScript.cs.meta new file mode 100644 index 0000000..95d17d9 --- /dev/null +++ b/Assets/Helpshift/Example/HelpshiftExampleScript.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8ea6d33e29ffe46b785d61fa2e5fc5d7 +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Example/HelpshiftExampleSettings.lighting b/Assets/Helpshift/Example/HelpshiftExampleSettings.lighting new file mode 100644 index 0000000..ae75211 --- /dev/null +++ b/Assets/Helpshift/Example/HelpshiftExampleSettings.lighting @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HelpshiftExampleSettings + serializedVersion: 3 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 50 + m_Padding: 2 + m_TextureCompression: 0 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 1 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 diff --git a/Assets/Helpshift/Example/HelpshiftExampleSettings.lighting.meta b/Assets/Helpshift/Example/HelpshiftExampleSettings.lighting.meta new file mode 100644 index 0000000..ce7ac26 --- /dev/null +++ b/Assets/Helpshift/Example/HelpshiftExampleSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d6d5dae01ebcdd4f8afbab575ab0070 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Example/Textures.meta b/Assets/Helpshift/Example/Textures.meta new file mode 100644 index 0000000..9e72755 --- /dev/null +++ b/Assets/Helpshift/Example/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8781a05e8d23c42fd9252c6fb9069a06 +folderAsset: yes +timeCreated: 1621931314 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Example/Textures/background.png b/Assets/Helpshift/Example/Textures/background.png new file mode 100644 index 0000000..1f64ba3 Binary files /dev/null and b/Assets/Helpshift/Example/Textures/background.png differ diff --git a/Assets/Helpshift/Example/Textures/background.png.meta b/Assets/Helpshift/Example/Textures/background.png.meta new file mode 100644 index 0000000..c7ae7fe --- /dev/null +++ b/Assets/Helpshift/Example/Textures/background.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: d3b69cb5e0d714bfe97d5aadab8ac566 +timeCreated: 1621935752 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/NOTICE_IOS.txt b/Assets/Helpshift/NOTICE_IOS.txt new file mode 100644 index 0000000..1211636 --- /dev/null +++ b/Assets/Helpshift/NOTICE_IOS.txt @@ -0,0 +1,51 @@ + +Reachability: +Copyright (c) 2011-2013, Tony Million. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +CWStatusBarNotification: +Copyright (c) 2015 Cezary Wojcik . +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/Assets/Helpshift/NOTICE_IOS.txt.meta b/Assets/Helpshift/NOTICE_IOS.txt.meta new file mode 100644 index 0000000..57dcb74 --- /dev/null +++ b/Assets/Helpshift/NOTICE_IOS.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4316bfdbbef6a4b2e8b25618c03501f3 +timeCreated: 1621857891 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins.meta b/Assets/Helpshift/Plugins.meta new file mode 100644 index 0000000..bdacd5d --- /dev/null +++ b/Assets/Helpshift/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c4d910ea1aa4c4c5bb7a871e74e427a6 +folderAsset: yes +timeCreated: 1621857880 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/Android.meta b/Assets/Helpshift/Plugins/Android.meta new file mode 100644 index 0000000..970a245 --- /dev/null +++ b/Assets/Helpshift/Plugins/Android.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b444904a8fed1456e9b5cd1d1ee5df49 +folderAsset: yes +timeCreated: 1621857880 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/Android/HelpshiftAndroidEventsListener.cs b/Assets/Helpshift/Plugins/Android/HelpshiftAndroidEventsListener.cs new file mode 100644 index 0000000..abb6b84 --- /dev/null +++ b/Assets/Helpshift/Plugins/Android/HelpshiftAndroidEventsListener.cs @@ -0,0 +1,49 @@ +#if UNITY_ANDROID +using System; +using System.Collections.Generic; +using UnityEngine; +using HSMiniJSON; + +namespace Helpshift +{ + /// + /// Internal event listener to delegate the events + /// + public class HelpshiftAndroidEventsListener : AndroidJavaProxy + { + private IHelpshiftEventsListener externalHelpshiftEventsListener; + + public HelpshiftAndroidEventsListener(IHelpshiftEventsListener externalEventsListener) : + base("com.helpshift.unityproxy.HelpshiftEventDelegate") + { + this.externalHelpshiftEventsListener = externalEventsListener; + } + + void onEventOccurred(string eventName, string eventDataJson) + { + Dictionary eventData = new Dictionary(); + if (!String.IsNullOrEmpty(eventDataJson)) + { + eventData = (Dictionary)Json.Deserialize(eventDataJson); + } + externalHelpshiftEventsListener.HandleHelpshiftEvent(eventName, eventData); + } + + void onUserAuthenticationFailure(int reason) + { + HelpshiftAuthenticationFailureReason reasonValue = HelpshiftAuthenticationFailureReason.UNKNOWN; + + if (reason == 0) + { + reasonValue = HelpshiftAuthenticationFailureReason.AUTH_TOKEN_NOT_PROVIDED; + } + else if (reason == 1) + { + reasonValue = HelpshiftAuthenticationFailureReason.INVALID_AUTH_TOKEN; + } + + externalHelpshiftEventsListener.AuthenticationFailedForUser(reasonValue); + } + } +} +#endif diff --git a/Assets/Helpshift/Plugins/Android/HelpshiftAndroidEventsListener.cs.meta b/Assets/Helpshift/Plugins/Android/HelpshiftAndroidEventsListener.cs.meta new file mode 100644 index 0000000..7eca7d9 --- /dev/null +++ b/Assets/Helpshift/Plugins/Android/HelpshiftAndroidEventsListener.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 05af362ad0e34430a8a654954ef72f8d +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/Android/Helpshiftandroid.cs b/Assets/Helpshift/Plugins/Android/Helpshiftandroid.cs new file mode 100644 index 0000000..a31e186 --- /dev/null +++ b/Assets/Helpshift/Plugins/Android/Helpshiftandroid.cs @@ -0,0 +1,133 @@ +/* +* Copyright 2020, Helpshift, Inc. +* All rights reserved +*/ + +#if UNITY_ANDROID +using UnityEngine; +using System; +using System.Collections.Generic; +using HSMiniJSON; + +namespace Helpshift +{ + public class HelpshiftXAndroid + { + + private AndroidJavaClass jc; + private AndroidJavaObject currentActivity, application; + private AndroidJavaClass hsUnityApiClass; + + public HelpshiftXAndroid() + { + this.jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + this.currentActivity = jc.GetStatic("currentActivity"); + this.application = currentActivity.Call("getApplication"); + this.hsUnityApiClass = new AndroidJavaClass("com.helpshift.unityproxy.HelpshiftUnityAPI"); + } + + public void Install(string platformId, string domain, Dictionary configMap) + { + string jsonSerializedConfig = SerializeMap(configMap); + hsUnityApiClass.CallStatic("install", new object[] { this.application, platformId, domain, jsonSerializedConfig }); + + HelpshiftInternalLogger.d("Install called : Domain : " + domain + "Platform ID : " + platformId + ", Config : " + jsonSerializedConfig); + } + + public void RegisterPushToken(string deviceToken) + { + HelpshiftInternalLogger.d("Register device token :" + deviceToken); + hsUnityApiClass.CallStatic("registerPushToken", new object[] { deviceToken }); + } + + public void Login(Dictionary userData) + { + + if (userData == null) + { + userData = new Dictionary(); + } + HelpshiftInternalLogger.d("Login called : " + userData.ToString()); + hsUnityApiClass.CallStatic("login", new object[] { Json.Serialize(userData) }); + } + + public void ClearAnonymousUserOnLogin() + { + HelpshiftInternalLogger.d("ClearAnonymouseUserOnLogin api called"); + hsUnityApiClass.CallStatic("clearAnonymousUserOnLogin"); + } + + public void Logout() + { + HelpshiftInternalLogger.d("logout api called"); + hsUnityApiClass.CallStatic("logout"); + } + + private string SerializeMap(Dictionary configMap) + { + if (configMap != null) + { + return Json.Serialize(configMap); + } + return ""; + } + + public void ShowConversation(Dictionary configMap) + { + string config = SerializeMap(configMap); + HelpshiftInternalLogger.d("show conversation api called with config" + config); + hsUnityApiClass.CallStatic("showConversationUnity", new object[] { this.currentActivity, config }); + } + + public void ShowFAQs(Dictionary configMap) + { + string config = SerializeMap(configMap); + HelpshiftInternalLogger.d("show FAQs api called with config" + configMap); + hsUnityApiClass.CallStatic("showFAQsUnity", new object[] { this.currentActivity, config }); + } + + public void ShowSingleFAQ(string faqId, Dictionary configMap) + { + string config = SerializeMap(configMap); + HelpshiftInternalLogger.d("show single FAQ api called with config" + config); + hsUnityApiClass.CallStatic("showSingleFAQUnity", new object[] { this.currentActivity, faqId, config }); + } + + public void ShowFAQSection(string sectionId, Dictionary configMap) + { + string config = SerializeMap(configMap); + HelpshiftInternalLogger.d("show section api called with config" + config); + hsUnityApiClass.CallStatic("showFAQSectionUnity", new object[] { this.currentActivity, sectionId, config }); + } + + public void RequestUnreadMessageCount(Boolean shouldFetchFromServer) + { + HelpshiftInternalLogger.d("request unread message count api called : shouldFetchFromServer" + shouldFetchFromServer); + hsUnityApiClass.CallStatic("requestUnreadMessageCountUnity", new object[] { shouldFetchFromServer }); + } + + public void HandlePushNotification(Dictionary pushNotificationData) + { + string pushData = SerializeMap(pushNotificationData); + HelpshiftInternalLogger.d("Handle push notification : data :" + pushData); + hsUnityApiClass.CallStatic("handlePush", new object[] { pushData }); + } + + + public void SetHelpshiftEventsListener(IHelpshiftEventsListener eventsListener) + { + HelpshiftInternalLogger.d("Event listener is set"); + HelpshiftAndroidEventsListener internalEventListener = new HelpshiftAndroidEventsListener(eventsListener); + hsUnityApiClass.CallStatic("setHelpshiftEventsListener", new object[] { internalEventListener }); + } + + + public void SetSDKLanguage(string locale) + { + HelpshiftInternalLogger.d("setLanguage api called for language " + locale); + hsUnityApiClass.CallStatic("setLanguage", new object[] { locale }); + } + } + +} +#endif diff --git a/Assets/Helpshift/Plugins/Android/Helpshiftandroid.cs.meta b/Assets/Helpshift/Plugins/Android/Helpshiftandroid.cs.meta new file mode 100644 index 0000000..180e54d --- /dev/null +++ b/Assets/Helpshift/Plugins/Android/Helpshiftandroid.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 14a9cca4be81948ad8f1fe413aaf3554 +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/HSMiniJSON.cs b/Assets/Helpshift/Plugins/HSMiniJSON.cs new file mode 100644 index 0000000..a4ff3da --- /dev/null +++ b/Assets/Helpshift/Plugins/HSMiniJSON.cs @@ -0,0 +1,633 @@ +/* + * Copyright (c) 2013 Calvin Rien + * + * Based on the JSON parser by Patrick van Bergen + * http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html + * + * Simplified it so that it doesn't throw exceptions + * and can be used in Unity iPhone with maximum code stripping. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace HSMiniJSON +{ + // Example usage: + // + // using UnityEngine; + // using System.Collections; + // using System.Collections.Generic; + // using MiniJSON; + // + // public class MiniJSONTest : MonoBehaviour { + // void Start () { + // var jsonString = "{ \"array\": [1.44,2,3], " + + // "\"object\": {\"key1\":\"value1\", \"key2\":256}, " + + // "\"string\": \"The quick brown fox \\\"jumps\\\" over the lazy dog \", " + + // "\"unicode\": \"\\u3041 Men\u00fa sesi\u00f3n\", " + + // "\"int\": 65536, " + + // "\"float\": 3.1415926, " + + // "\"bool\": true, " + + // "\"null\": null }"; + // + // var dict = Json.Deserialize(jsonString) as Dictionary; + // + // Debug.Log("deserialized: " + dict.GetType()); + // Debug.Log("dict['array'][0]: " + ((List) dict["array"])[0]); + // Debug.Log("dict['string']: " + (string) dict["string"]); + // Debug.Log("dict['float']: " + (double) dict["float"]); // floats come out as doubles + // Debug.Log("dict['int']: " + (long) dict["int"]); // ints come out as longs + // Debug.Log("dict['unicode']: " + (string) dict["unicode"]); + // + // var str = Json.Serialize(dict); + // + // Debug.Log("serialized: " + str); + // } + // } + + /// + /// This class encodes and decodes JSON strings. + /// Spec. details, see http://www.json.org/ + /// + /// JSON uses Arrays and Objects. These correspond here to the datatypes IList and IDictionary. + /// All numbers are parsed to doubles. + /// + public static class Json + { + /// + /// Parses the string json into a value + /// + /// A JSON string. + /// An List<object>, a Dictionary<string, object>, a double, an integer,a string, null, true, or false + public static object Deserialize(string json) + { + // save the string for debug information + if (json == null) + { + return null; + } + + return Parser.Parse(json); + } + + sealed class Parser : IDisposable + { + const string WORD_BREAK = "{}[],:\""; + + public static bool IsWordBreak(char c) + { + return Char.IsWhiteSpace(c) || WORD_BREAK.IndexOf(c) != -1; + } + + enum TOKEN + { + NONE, + CURLY_OPEN, + CURLY_CLOSE, + SQUARED_OPEN, + SQUARED_CLOSE, + COLON, + COMMA, + STRING, + NUMBER, + TRUE, + FALSE, + NULL + } + ; + + StringReader json; + + Parser(string jsonString) + { + json = new StringReader(jsonString); + } + + public static object Parse(string jsonString) + { + using (var instance = new Parser(jsonString)) + { + return instance.ParseValue(); + } + } + + public void Dispose() + { + json.Dispose(); + json = null; + } + + Dictionary ParseObject() + { + Dictionary table = new Dictionary(); + + // ditch opening brace + json.Read(); + + // { + while (true) + { + switch (NextToken) + { + case TOKEN.NONE: + return null; + case TOKEN.COMMA: + continue; + case TOKEN.CURLY_CLOSE: + return table; + default: + // name + string name = ParseString(); + if (name == null) + { + return null; + } + + // : + if (NextToken != TOKEN.COLON) + { + return null; + } + // ditch the colon + json.Read(); + + // value + table[name] = ParseValue(); + break; + } + } + } + + List ParseArray() + { + List array = new List(); + + // ditch opening bracket + json.Read(); + + // [ + var parsing = true; + while (parsing) + { + TOKEN nextToken = NextToken; + + switch (nextToken) + { + case TOKEN.NONE: + return null; + case TOKEN.COMMA: + continue; + case TOKEN.SQUARED_CLOSE: + parsing = false; + break; + default: + object value = ParseByToken(nextToken); + + array.Add(value); + break; + } + } + + return array; + } + + object ParseValue() + { + TOKEN nextToken = NextToken; + return ParseByToken(nextToken); + } + + object ParseByToken(TOKEN token) + { + switch (token) + { + case TOKEN.STRING: + return ParseString(); + case TOKEN.NUMBER: + return ParseNumber(); + case TOKEN.CURLY_OPEN: + return ParseObject(); + case TOKEN.SQUARED_OPEN: + return ParseArray(); + case TOKEN.TRUE: + return true; + case TOKEN.FALSE: + return false; + case TOKEN.NULL: + return null; + default: + return null; + } + } + + string ParseString() + { + StringBuilder s = new StringBuilder(); + char c; + + // ditch opening quote + json.Read(); + + bool parsing = true; + while (parsing) + { + + if (json.Peek() == -1) + { + parsing = false; + break; + } + + c = NextChar; + switch (c) + { + case '"': + parsing = false; + break; + case '\\': + if (json.Peek() == -1) + { + parsing = false; + break; + } + + c = NextChar; + switch (c) + { + case '"': + case '\\': + case '/': + s.Append(c); + break; + case 'b': + s.Append('\b'); + break; + case 'f': + s.Append('\f'); + break; + case 'n': + s.Append('\n'); + break; + case 'r': + s.Append('\r'); + break; + case 't': + s.Append('\t'); + break; + case 'u': + var hex = new char[4]; + + for (int i = 0; i < 4; i++) + { + hex[i] = NextChar; + } + + s.Append((char)Convert.ToInt32(new string(hex), 16)); + break; + } + break; + default: + s.Append(c); + break; + } + } + + return s.ToString(); + } + + object ParseNumber() + { + string number = NextWord; + + if (number.IndexOf('.') == -1) + { + long parsedInt; + Int64.TryParse(number, out parsedInt); + return parsedInt; + } + + double parsedDouble; + Double.TryParse(number, out parsedDouble); + return parsedDouble; + } + + void EatWhitespace() + { + while (Char.IsWhiteSpace(PeekChar)) + { + json.Read(); + + if (json.Peek() == -1) + { + break; + } + } + } + + char PeekChar + { + get + { + return Convert.ToChar(json.Peek()); + } + } + + char NextChar + { + get + { + return Convert.ToChar(json.Read()); + } + } + + string NextWord + { + get + { + StringBuilder word = new StringBuilder(); + + while (!IsWordBreak(PeekChar)) + { + word.Append(NextChar); + + if (json.Peek() == -1) + { + break; + } + } + + return word.ToString(); + } + } + + TOKEN NextToken + { + get + { + EatWhitespace(); + + if (json.Peek() == -1) + { + return TOKEN.NONE; + } + + switch (PeekChar) + { + case '{': + return TOKEN.CURLY_OPEN; + case '}': + json.Read(); + return TOKEN.CURLY_CLOSE; + case '[': + return TOKEN.SQUARED_OPEN; + case ']': + json.Read(); + return TOKEN.SQUARED_CLOSE; + case ',': + json.Read(); + return TOKEN.COMMA; + case '"': + return TOKEN.STRING; + case ':': + return TOKEN.COLON; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '-': + return TOKEN.NUMBER; + } + + switch (NextWord) + { + case "false": + return TOKEN.FALSE; + case "true": + return TOKEN.TRUE; + case "null": + return TOKEN.NULL; + } + + return TOKEN.NONE; + } + } + } + + /// + /// Converts a IDictionary / IList object or a simple type (string, int, etc.) into a JSON string + /// + /// A Dictionary<string, object> / List<object> + /// A JSON encoded string, or null if object 'json' is not serializable + public static string Serialize(object obj) + { + return Serializer.Serialize(obj); + } + + sealed class Serializer + { + StringBuilder builder; + + Serializer() + { + builder = new StringBuilder(); + } + + public static string Serialize(object obj) + { + var instance = new Serializer(); + + instance.SerializeValue(obj); + + return instance.builder.ToString(); + } + + void SerializeValue(object value) + { + IList asList; + IDictionary asDict; + string asStr; + + if (value == null) + { + builder.Append("null"); + } + else if ((asStr = value as string) != null) + { + SerializeString(asStr); + } + else if (value is bool) + { + builder.Append((bool)value ? "true" : "false"); + } + else if ((asList = value as IList) != null) + { + SerializeArray(asList); + } + else if ((asDict = value as IDictionary) != null) + { + SerializeObject(asDict); + } + else if (value is char) + { + SerializeString(new string((char)value, 1)); + } + else + { + SerializeOther(value); + } + } + + void SerializeObject(IDictionary obj) + { + bool first = true; + + builder.Append('{'); + + foreach (object e in obj.Keys) + { + if (!first) + { + builder.Append(','); + } + + SerializeString(e.ToString()); + builder.Append(':'); + + SerializeValue(obj[e]); + + first = false; + } + + builder.Append('}'); + } + + void SerializeArray(IList anArray) + { + builder.Append('['); + + bool first = true; + + foreach (object obj in anArray) + { + if (!first) + { + builder.Append(','); + } + + SerializeValue(obj); + + first = false; + } + + builder.Append(']'); + } + + void SerializeString(string str) + { + builder.Append('\"'); + + char[] charArray = str.ToCharArray(); + foreach (var c in charArray) + { + switch (c) + { + case '"': + builder.Append("\\\""); + break; + case '\\': + builder.Append("\\\\"); + break; + case '\b': + builder.Append("\\b"); + break; + case '\f': + builder.Append("\\f"); + break; + case '\n': + builder.Append("\\n"); + break; + case '\r': + builder.Append("\\r"); + break; + case '\t': + builder.Append("\\t"); + break; + default: + int codepoint = Convert.ToInt32(c); + if ((codepoint >= 32) && (codepoint <= 126)) + { + builder.Append(c); + } + else + { + builder.Append("\\u"); + builder.Append(codepoint.ToString("x4")); + } + break; + } + } + + builder.Append('\"'); + } + + void SerializeOther(object value) + { + // NOTE: decimals lose precision during serialization. + // They always have, I'm just letting you know. + // Previously floats and doubles lost precision too. + if (value is float) + { + builder.Append(((float)value).ToString("R")); + } + else if (value is int + || value is uint + || value is long + || value is sbyte + || value is byte + || value is short + || value is ushort + || value is ulong) + { + builder.Append(value); + } + else if (value is double + || value is decimal) + { + builder.Append(Convert.ToDouble(value).ToString("R")); + } + else + { + SerializeString(value.ToString()); + } + } + } + } +} diff --git a/Assets/Helpshift/Plugins/HSMiniJSON.cs.meta b/Assets/Helpshift/Plugins/HSMiniJSON.cs.meta new file mode 100644 index 0000000..f59e8a1 --- /dev/null +++ b/Assets/Helpshift/Plugins/HSMiniJSON.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e0056bb2fc85443afbe467581d841cf4 +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/Helpshift.cs b/Assets/Helpshift/Plugins/Helpshift.cs new file mode 100644 index 0000000..9441fbc --- /dev/null +++ b/Assets/Helpshift/Plugins/Helpshift.cs @@ -0,0 +1,263 @@ +using HSMiniJSON; +using UnityEngine; +using System; +using System.Collections.Generic; + +namespace Helpshift +{ + public class HelpshiftSdk + { + + private const string PLUGIN_VERSION= "10.0.0"; + /// + /// Various enums which are used in the Helpshift APIs + /// + + public const string ENABLE_LOGGING = "enableLogging"; + public const string ENABLE_INAPP_NOTIFICATION = "enableInAppNotification"; + +#if UNITY_IOS + public const string INAPP_NOTIFICATION_APPEARANCE = "inAppNotificationAppearance"; + public const string INAPP_NOTIFICATION_BANNER_BACKGROUND_COLOR = "bannerBackgroundColor"; + public const string INAPP_NOTIFICATION_BANNER_TEXT_COLOR = "textColor"; +#endif + +#if UNITY_ANDROID + public const string SCREEN_ORIENTATION = "screenOrientation"; + public const string NOTIFICATION_SOUND_ID = "notificationSoundId"; + public const string NOTIFICATION_CHANNEL_ID = "notificationChannelId"; + public const string NOTIFICATION_ICON = "notificationIcon"; + public const string NOTIFICATION_LARGE_ICON = "notificationLargeIcon"; +#endif + +#if UNITY_IOS || UNITY_ANDROID + private static HelpshiftSdk instance = null; +#endif + +#if UNITY_IOS + private static HelpshiftXiOS nativeSdk = null; +#elif UNITY_ANDROID + private static HelpshiftXAndroid nativeSdk = null; +#endif + private HelpshiftSdk() + { + } + + + /// + /// Main function which should be used to get the HelpshiftSdk instance. + /// + /// Singleton HelpshiftSdk instance + public static HelpshiftSdk GetInstance() + { +#if UNITY_IOS || UNITY_ANDROID + if (instance == null) + { + instance = new HelpshiftSdk(); +#if UNITY_IOS + nativeSdk = new HelpshiftXiOS(); +#elif UNITY_ANDROID + nativeSdk = new HelpshiftXAndroid(); +#endif + } + return instance; +#else + return null; +#endif + } + + /// + /// Install the HelpshiftSdk with specified apiKey, domainName, appId and config. + /// When initializing Helpshift you must pass these three tokens. You initialize Helpshift by adding the API call + /// ideally in the Start method of your game script. + /// + /// This is your domain name without any http:// or forward slashes + /// This is the unique ID assigned to your app + /// This is the optional dictionary which contains additional configuration options for the HelpshiftSDK + public void Install(string platformId, string domainName, Dictionary config = null) + { + if (config == null) + { + config = new Dictionary(); + } +#if UNITY_IOS || UNITY_ANDROID + config.Add("sdkType", "unityx"); + config.Add("pluginVersion", PLUGIN_VERSION); + config.Add("runtimeVersion", Application.unityVersion); + nativeSdk.Install(platformId, domainName, config); +#endif + } + + /// + /// Login a user with a given identifier or email in HelpshiftUser + /// This API introduces support for multiple login in Helpshift SDK. The user is uniquely identified via identifier and email combination. + /// If any Support session is active, then any login attempt is ignored. + /// + /// HelpshiftUser model for the user to be logged in + public void Login(Dictionary userData) + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.Login(userData); +#endif + } + + /// + /// Clears the anonymous user. + /// + public void ClearAnonymousUserOnLogin() + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.ClearAnonymousUserOnLogin(); +#endif + } + + /// + /// Logout the current user + /// + public void Logout() + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.Logout(); +#endif + } + + /// + /// Registers the device token with Helpshift. + /// + /// Device token. + public void RegisterPushToken(string token) + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.RegisterPushToken(token); +#endif + } + + /// + /// Shows the helpshift conversation screen. + /// + /// the optional dictionary which will contain the arguments passed to the + /// Helpshift session (that will start with this method call). + public void ShowConversation(Dictionary configMap = null) + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.ShowConversation(configMap); +#endif + } + + /// + /// Show FAQs screen + /// + /// the optional dictionary which will contain the arguments passed to the + /// Helpshift session (that will start with this method call) + public void ShowFAQs(Dictionary configMap = null) + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.ShowFAQs(configMap); +#endif + } + + + /// + /// Shows Single FAQ screen for the passed faqid + /// + /// FAQ Id + /// The optional dictionary which will contain the arguments passed to the + /// Helpshift session (that will start with this method call) + public void ShowSingleFAQ(string faqId, Dictionary configMap = null) + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.ShowSingleFAQ(faqId, configMap); +#endif + } + + + /// + /// Shows FAQ section screen for the passed section id + /// + /// Section Id + /// The optional dictionary which will contain the arguments passed to the + /// Helpshift session (that will start with this method call) + public void ShowFAQSection(string sectionId, Dictionary configMap = null) + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.ShowFAQSection(sectionId, configMap); +#endif + } + + + /// + /// Fetches the unread messages count from local or remote based on shouldFetchFromServer flag. + /// The result of unread count will be passed over the IHelpshiftEventsListener#HandleHelpshiftEvent method + /// + /// Should fetch unread message count from server. + public void RequestUnreadMessageCount(Boolean shouldFetchFromServer) + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.RequestUnreadMessageCount(shouldFetchFromServer); +#endif + } + + + /// + /// Handles the push notification data that is received in the notification packet + /// + /// Push notification data. For iOS this should be the dictionary which is received from APNS. + /// The structure of the dictionary should be : {"origin" : "helpshift", "aps" : {}} + /// For Android pass in the Dictionary which is received from GCM as is. + public void HandlePushNotification(Dictionary pushNotificationData) + { +#if UNITY_IOS || UNITY_ANDROID + // Remove null values from dictonary as null is converted to "null" string in json. + List keysToRemove = new List(); + foreach (KeyValuePair keyValuePair in pushNotificationData) + { + if (keyValuePair.Value == null) + { + keysToRemove.Add(keyValuePair.Key); + } + } + + foreach (string key in keysToRemove) + { + pushNotificationData.Remove(key); + } + + nativeSdk.HandlePushNotification(pushNotificationData); +#endif + } + + + /// + /// Sets the SDK language to the given locale + /// + /// Language locale. + public void SetSDKLanguage(string locale) + { +#if UNITY_ANDROID || UNITY_IOS + nativeSdk.SetSDKLanguage(locale); +#endif + } + + + public void SetHelpshiftEventsListener(IHelpshiftEventsListener eventsListener) + { +#if UNITY_IOS || UNITY_ANDROID + nativeSdk.SetHelpshiftEventsListener(eventsListener); +#endif + } + + // iOS Specific APIs + +#if UNITY_IOS + /// + /// Pauses the in-app notifications + /// + /// bool representing whether to pause / resume the in app notifications + public void PauseDisplayOfInAppNotification(bool pauseInAppNotifications) + { + nativeSdk.PauseDisplayOfInAppNotification(pauseInAppNotifications); + } +#endif + } + +} diff --git a/Assets/Helpshift/Plugins/Helpshift.cs.meta b/Assets/Helpshift/Plugins/Helpshift.cs.meta new file mode 100644 index 0000000..6a4a20a --- /dev/null +++ b/Assets/Helpshift/Plugins/Helpshift.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5bf193c4eea394595a7807c240033cfc +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/HelpshiftAuthenticationFailureReason.cs b/Assets/Helpshift/Plugins/HelpshiftAuthenticationFailureReason.cs new file mode 100644 index 0000000..4c6ae7e --- /dev/null +++ b/Assets/Helpshift/Plugins/HelpshiftAuthenticationFailureReason.cs @@ -0,0 +1,13 @@ +using System; +namespace Helpshift +{ + /// + /// The reasons for the failure in authenticating the user + /// + public enum HelpshiftAuthenticationFailureReason + { + AUTH_TOKEN_NOT_PROVIDED = 0, + INVALID_AUTH_TOKEN, + UNKNOWN + } +} \ No newline at end of file diff --git a/Assets/Helpshift/Plugins/HelpshiftAuthenticationFailureReason.cs.meta b/Assets/Helpshift/Plugins/HelpshiftAuthenticationFailureReason.cs.meta new file mode 100644 index 0000000..4cd39d8 --- /dev/null +++ b/Assets/Helpshift/Plugins/HelpshiftAuthenticationFailureReason.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d522af616a5ed41acbaa4bc64e6de13a +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/HelpshiftEvent.cs b/Assets/Helpshift/Plugins/HelpshiftEvent.cs new file mode 100644 index 0000000..f98b5f4 --- /dev/null +++ b/Assets/Helpshift/Plugins/HelpshiftEvent.cs @@ -0,0 +1,48 @@ +using System; + +namespace Helpshift +{ + /// + /// Constants class for event names and their data keys + /// + public class HelpshiftEvent + { + public const string WIDGET_TOGGLE = "widgetToggle"; + public const string DATA_SDK_VISIBLE = "visible"; + + public const string CONVERSATION_START = "conversationStart"; + public const string DATA_MESSAGE = "message"; + + public const string MESSAGE_ADD = "messageAdd"; + public const string DATA_MESSAGE_TYPE = "type"; + public const string DATA_MESSAGE_BODY = "body"; + public const string DATA_MESSAGE_TYPE_ATTACHMENT = "attachment"; + public const string DATA_MESSAGE_TYPE_TEXT = "text"; + + public const string CSAT_SUBMIT = "csatSubmit"; + public const string DATA_CSAT_RATING = "rating"; + public const string DATA_ADDITIONAL_FEEDBACK = "additionalFeedback"; + + public const string CONVERSATION_STATUS = "conversationStatus"; + public const string DATA_LATEST_ISSUE_ID = "latestIssueId"; + public const string DATA_LATEST_ISSUE_PUBLISH_ID = "latestIssuePublishId"; + public const string DATA_IS_ISSUE_OPEN = "open"; + + public const string CONVERSATION_END = "conversationEnd"; + + public const string CONVERSATION_REJECTED = "conversationRejected"; + + public const string CONVERSATION_RESOLVED = "conversationResolved"; + + public const string CONVERSATION_REOPENED = "conversationReopened"; + + + public const string SDK_SESSION_STARTED = "helpshiftSessionStarted"; + + public const string SDK_SESSION_ENDED = "helpshiftSessionEnded"; + + public const string RECEIVED_UNREAD_MESSAGE_COUNT = "receivedUnreadMessageCount"; + public const string DATA_MESSAGE_COUNT = "count"; + public const string DATA_MESSAGE_COUNT_FROM_CACHE = "fromCache"; + } +} diff --git a/Assets/Helpshift/Plugins/HelpshiftEvent.cs.meta b/Assets/Helpshift/Plugins/HelpshiftEvent.cs.meta new file mode 100644 index 0000000..a24301c --- /dev/null +++ b/Assets/Helpshift/Plugins/HelpshiftEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8069a3f369d7b4cf4b4ca85419f3b61e +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/HelpshiftInternalLogger.cs b/Assets/Helpshift/Plugins/HelpshiftInternalLogger.cs new file mode 100644 index 0000000..2cc01bd --- /dev/null +++ b/Assets/Helpshift/Plugins/HelpshiftInternalLogger.cs @@ -0,0 +1,53 @@ +using UnityEngine; +namespace Helpshift +{ + + /// + /// Internal logger class to print the logs in the Android Studio / Xcode log console. + /// As the unity Logs gets printed in the file and not on console + /// + public class HelpshiftInternalLogger + { + + private static readonly string TAG = "HelpshiftUnityPlugin"; + +#if UNITY_ANDROID + private static AndroidJavaClass hsInternalLogger = new AndroidJavaClass("com.helpshift.log.HSLogger"); +#endif + /* + * Debug level logging + */ + public static void d(string message) + { +#if UNITY_ANDROID + hsInternalLogger.CallStatic("d", new object[] { TAG, message }); +#elif UNITY_IOS + HelpshiftiOSLog.d(TAG, message); +#endif + } + + /* + * Error level logging + */ + public static void e(string message) + { +#if UNITY_ANDROID + hsInternalLogger.CallStatic("e", new object[] { TAG, message }); +#elif UNITY_IOS + HelpshiftiOSLog.e(TAG, message); +#endif + } + + /* + * Warn level logging + */ + public static void w(string message) + { +#if UNITY_ANDROID + hsInternalLogger.CallStatic("w", new object[] { TAG, message }); +#elif UNITY_IOS + HelpshiftiOSLog.w(TAG, message); +#endif + } + } +} diff --git a/Assets/Helpshift/Plugins/HelpshiftInternalLogger.cs.meta b/Assets/Helpshift/Plugins/HelpshiftInternalLogger.cs.meta new file mode 100644 index 0000000..6ec8c0c --- /dev/null +++ b/Assets/Helpshift/Plugins/HelpshiftInternalLogger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c71525174a05e4b0dafdb27a39a833ee +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/IHelpshiftEventsListener.cs b/Assets/Helpshift/Plugins/IHelpshiftEventsListener.cs new file mode 100644 index 0000000..6ad336a --- /dev/null +++ b/Assets/Helpshift/Plugins/IHelpshiftEventsListener.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; + +namespace Helpshift +{ + /// + /// The interface that needs to be implemented for listening to Helpshift Events + /// + public interface IHelpshiftEventsListener + { + + void HandleHelpshiftEvent(string eventName, Dictionary eventData); + void AuthenticationFailedForUser(HelpshiftAuthenticationFailureReason reason); + } +} \ No newline at end of file diff --git a/Assets/Helpshift/Plugins/IHelpshiftEventsListener.cs.meta b/Assets/Helpshift/Plugins/IHelpshiftEventsListener.cs.meta new file mode 100644 index 0000000..415b607 --- /dev/null +++ b/Assets/Helpshift/Plugins/IHelpshiftEventsListener.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af230c3a52e1248c7aa1e62fb2b29c6f +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS.meta b/Assets/Helpshift/Plugins/iOS.meta new file mode 100644 index 0000000..5de2746 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fb2657cbc77e74af18764ab8d8e7ad41 +folderAsset: yes +timeCreated: 1621857880 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX-Unity.h b/Assets/Helpshift/Plugins/iOS/HelpshiftX-Unity.h new file mode 100644 index 0000000..295c4f7 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX-Unity.h @@ -0,0 +1,33 @@ +// +// HelpshiftX-Unity.h +// Created for HelpshiftX in 2020 +// Copyright © 2020 Helpshift. All rights reserved. +// + +#import +#import + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Makes an install call by using the credentials stored in the cache if any. + */ +void hsInstallFromCache(); + +/** Register the deviceToken to enable push notifications + * To enable push notifications in the Helpshift iOS SDK, set the Push Notifications’ deviceToken using this method. + * @param deviceTokenData The data representing the deviceToken received from the push notification servers. + */ +void HsRegisterDeviceTokenData(NSData *deviceTokenData); + +/** Register the deviceToken to enable push notifications + * To enable push notifications in the Helpshift iOS SDK, set the Push Notifications’ deviceToken using this method. + * @param deviceToken The string representing the deviceToken received from the push notification servers. + */ +void HsRegisterDeviceToken(const char *deviceToken); + +#ifdef __cplusplus +} +#endif diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX-Unity.h.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX-Unity.h.meta new file mode 100644 index 0000000..6fa247d --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX-Unity.h.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: da3dd2bfff9c646dd9ec82c57f3b4bd6 +timeCreated: 1621935842 +licenseType: Free +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework.meta new file mode 100644 index 0000000..dc794c0 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: b690d5787d8f944669f3475d6b763c97 +folderAsset: yes +timeCreated: 1621938099 +licenseType: Free +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Assets.car b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Assets.car new file mode 100644 index 0000000..2a0b799 Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Assets.car differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Assets.car.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Assets.car.meta new file mode 100644 index 0000000..263a4ed --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Assets.car.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 872558f48e4de4fe0aab997d01c62ba4 +timeCreated: 1623219843 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers.meta new file mode 100644 index 0000000..e3eca08 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 89b7c2e9ad70946e7b1bfd4c423fe9eb +folderAsset: yes +timeCreated: 1621938100 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/Helpshift.h b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/Helpshift.h new file mode 100644 index 0000000..7b9f78b --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/Helpshift.h @@ -0,0 +1,144 @@ +// +// Helpshift.h +// HelpshiftX +// +// Copyright © 2019 Helpshift. All rights reserved. +// + +#import +#import +#import "HelpshiftDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +/// Key to be used for providing username in the [Helpshift loginUser:] method +static NSString *_Nonnull const HelpshiftUserName = @"userName"; + +/// Key to be used for providing user identifier in the loginUser: method +static NSString *_Nonnull const HelpshiftUserIdentifier = @"userId"; + +/// Key to be used for providing user email in the loginUser: method +static NSString *_Nonnull const HelpshiftUserEmail = @"userEmail"; + +/// Key to be used for providing user's authentication token in the loginUser: method +static NSString *_Nonnull const HelpshiftUserAuthToken = @"userAuthToken"; + +/// Classes which provides access to all Helpshift APIs +@interface Helpshift : NSObject + +/// The delegate to be set to in order to receive events from Helpshift +@property (nonatomic, weak) id delegate; + +/** Returns an instance of Helpshift + * + * When using Helpshift, use below method to get the singleton instance of this class. + * You can set the delegate using `Helpshift.sharedInstance.delegate = yourDelegate;` + * + */ ++ (Helpshift *) sharedInstance; + +/** Initialize helpshift support + * + * When initializing Helpshift you must pass these two tokens. You initialize Helpshift by adding the following lines in the implementation file for your AppDelegate, ideally at the top of `application:didFinishLaunchingWithOptions`. This method can throw the `InstallException` asynchronously if the install keys are not in the correct format. + * @param platformId This is your platform id API Key + * @param domain This is your domain name + * @param config This is the config dictionary represents the configuration parameters for the installation + */ ++ (void) installWithPlatformId:(NSString *)platformId + domain:(NSString *)domain + config:(nullable NSDictionary *)config; + +/** + * This method pauses/restarts the display in-app notification. + * + * @param shouldPauseInAppNotification the boolean value to pause/restart inapp nofitications + */ ++ (void) pauseDisplayOfInAppNotification:(BOOL)shouldPauseInAppNotification; + +/** + * Logs in a given user. This method accepts an `NSDictionary` whose keys are one of `HelpshiftUserName`, `HelpshiftUserIdentifier`, `HelpshiftUserEmail`, `HelpshiftUserAuthToken` + * These are string constants defined in `Helpshift.h` file. + * + * @param userDetails The `NSDictionary` representing the user details + */ ++ (void) loginUser:(NSDictionary *)userDetails; + +/** + * Logs out the previously logged in user + */ ++ (void) logout; + +/** + * Call this API if you need to clear the anonymous user data on login + */ ++ (void) clearAnonymousUserOnLogin; + +/** + * Shows the helpshift support conversation screen. + * + * @param viewController The `UIViewController` on which the conversation screen is to be shown + * @param config An `NSDictionary` which represents the configuration that needs to be set to the conversation + */ ++ (void) showConversationWith:(UIViewController *)viewController config:(nullable NSDictionary *)config; + +/** + * Show the helpshift help center screen. + * + * @param viewController The `UIViewController` on which the help center screen is to be shown + * @param config An `NSDictionary` which represents the configuration that needs to be set to the help center + */ ++ (void) showFAQsWith:(UIViewController *)viewController config:(nullable NSDictionary *)config; + +/** + * Show the helpshift help center screen with FAQs from a particular section + * + * @param faqSectionPublishID Publish ID of FAQ section which is shown in the FAQ page on the admin side + * (__yourcompanyname__.helpshift.com/admin/faq/). + * @param viewController The `UIViewController` on which the help center screen is to be shown + * @param config An `NSDictionary` which represents the configuration that needs to be set to the help center + */ ++ (void) showFAQSection:(NSString *)faqSectionPublishID with:(UIViewController *)viewController config:(nullable NSDictionary *)config; + +/** + * Show the helpshift help center screen with a single FAQ + * + * @param faqPublishID Publish ID of FAQ which is shown when you expand a single FAQ on admin side + * (__yourcompanyname__.helpshift.com/admin/faq/) + * @param viewController The `UIViewController` on which the help center screen is to be shown + * @param config An `NSDictionary` which represents the configuration that needs to be set to the help center + */ ++ (void) showSingleFAQ:(NSString *)faqPublishID with:(UIViewController *)viewController config:(nullable NSDictionary *)config; + +/** Change the SDK language. By default, the device's prefered language is used. + * The call will fail in the following cases : + * 1. If a Helpshift session is already active at the time of invocation + * 2. Language code is incorrect + * @param languageCode the string representing the language code. For example, use 'fr' for French. Passing `nil` will unset any language set by previous invocation of this API. + */ ++ (void) setLanguage:(nullable NSString *)languageCode; + +/** Register the deviceToken to enable push notifications + * To enable push notifications in the Helpshift iOS SDK, set the Push Notifications’ deviceToken using this method inside your `application:didRegisterForRemoteNotificationsWithDeviceToken` in the AppDelegate. + * @param deviceToken The deviceToken received from the push notification servers. + */ ++ (void) registerDeviceToken:(NSData *)deviceToken; + +/** + * Pass along the userInfo dictionary (received with a `UNNotification`) for the Helpshift SDK to handle + * @param userInfo dictionary contained in the `UNNotification` object received in AppDelegate. + * @param viewController The `UIViewController` on which you want the Helpshift SDK stack to be shown + * @param isAppLaunch A `BOOL` indicating whether the app was lanuched from a killed state. This parameter should ideally only be true in case when called from app's didFinishLaunchingWithOptions AppDelegate. + * @return BOOL value indicating whether Helpshift SDK handled this notification. + */ ++ (BOOL) handleNotificationWithUserInfoDictionary:(NSDictionary *)userInfo isAppLaunch:(BOOL)isAppLaunch withController:(UIViewController *)viewController; + +/** + * Fetches the unread messages count from local or remote based on `shouldFetchFromServer` flag. + * Invokes the `[HelpshiftDelegate handleHelpshiftEvent:withData:]` with appropriate data as response. + * + * @param shouldFetchFromServer Should fetch unread message count from server. + */ ++ (void) requestUnreadMessageCount:(BOOL)shouldFetchFromServer; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/Helpshift.h.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/Helpshift.h.meta new file mode 100644 index 0000000..d3137cb --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/Helpshift.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3ffdc7390af74ac1b79a40c39a266cb +timeCreated: 1623219845 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftDelegate.h b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftDelegate.h new file mode 100644 index 0000000..b9e4dd9 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftDelegate.h @@ -0,0 +1,86 @@ +// +// HelpshiftDelegate.h +// HelpshiftX +// +// Copyright © 2019 Helpshift. All rights reserved. +// + +#ifndef HelpshiftDelegate_h +#define HelpshiftDelegate_h + +#pragma mark Helpshift Events Names and respective data keys + +static NSString *_Nonnull const HelpshiftEventNameWidgetToggle = @"widgetToggle"; +static NSString *_Nonnull const HelpshiftEventDataVisible = @"visible"; + +static NSString *_Nonnull const HelpshiftEventNameConversationStart = @"conversationStart"; +static NSString *_Nonnull const HelpshiftEventDataMessage = @"message"; + +static NSString *_Nonnull const HelpshiftEventNameConversationStatus = @"conversationStatus"; +static NSString *_Nonnull const HelpshiftEventDataLatestIssueId = @"latestIssueId"; +static NSString *_Nonnull const HelpshiftEventDataLatestIssuePublishId = @"latestIssuePublishId"; +static NSString *_Nonnull const HelpshiftEventDataIsIssueOpen = @"open"; + +static NSString *_Nonnull const HelpshiftEventNameMessageAdd = @"messageAdd"; +static NSString *_Nonnull const HelpshiftEventDataMessageType = @"type"; +static NSString *_Nonnull const HelpshiftEventDataMessageTypeText = @"text"; +static NSString *_Nonnull const HelpshiftEventDataMessageTypeAttachment = @"attachment"; +static NSString *_Nonnull const HelpshiftEventDataMessageBody = @"body"; + +static NSString *_Nonnull const HelpshiftEventNameCSATSubmit = @"csatSubmit"; +static NSString *_Nonnull const HelpshiftEventDataRating = @"rating"; +static NSString *_Nonnull const HelpshiftEventDataAdditionalFeedback = @"additionalFeedback"; + +static NSString *_Nonnull const HelpshiftEventNameConversationEnd = @"conversationEnd"; + +static NSString *_Nonnull const HelpshiftEventNameConversationRejected = @"conversationRejected"; + +static NSString *_Nonnull const HelpshiftEventNameConversationResolved = @"conversationResolved"; + +static NSString *_Nonnull const HelpshiftEventNameConversationReopened = @"conversationReopened"; + +static NSString *_Nonnull const HelpshiftEventNameReceivedUnreadMessageCount = @"receivedUnreadMessageCount"; +static NSString *_Nonnull const HelpshiftEventDataUnreadMessageCount = @"count"; +static NSString *_Nonnull const HelpshiftEventDataUnreadMessageCountIsFromCache = @"fromCache"; + +static NSString *_Nonnull const HelpshiftEventNameSessionStarted = @"helpshiftSessionStarted"; + +static NSString *_Nonnull const HelpshiftEventNameSessionEnded = @"helpshiftSessionEnded"; + +#pragma mark Authentication Failure Reasons + +/** + * Possible reasons for authentication failure received in [HelpshiftDelegate authenticationFailedForUserWithReason:] method + */ +typedef NS_ENUM (NSUInteger, HelpshiftAuthenticationFailureReason) +{ + /// Authentication failed as the auth token was not provided + HelpshiftAuthenticationFailureReasonAuthTokenNotProvided = 0, + + /// Authentication failed as invalid auth token was provided + HelpshiftAuthenticationFailureReasonInvalidAuthToken, +}; + +/// Delegate protocol to be implemented for receiving Helpshift events +@protocol HelpshiftDelegate + +/** + * Delegate method that gets called when Helpshift sends events. For possible events, + * refer : https://developers.helpshift.com/sdkx_ios/delegates/ + * + * @param eventName The name of the event + * @param data The data received from the event if any. + */ +- (void) handleHelpshiftEvent:(nonnull NSString *)eventName withData:(nullable NSDictionary *)data; + +/** + * Delegate method that gets called when the user authentication fails. + * Whenever you receive this call, You should be calling the [Helpshift loginUser:] API with valid authToken. + * + * @param reason The reason for authentication failure + * + */ +- (void) authenticationFailedForUserWithReason:(HelpshiftAuthenticationFailureReason)reason; +@end + +#endif /* HelpshiftWebchatDelegate_h */ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftDelegate.h.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftDelegate.h.meta new file mode 100644 index 0000000..da7ef04 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftDelegate.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72f19984036804d04906c8b9c1a7f808 +timeCreated: 1623219845 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftX.h b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftX.h new file mode 100644 index 0000000..08b9603 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftX.h @@ -0,0 +1,19 @@ +// +// HelpshiftX.h +// HelpshiftX +// +// Copyright © 2019 Helpshift. All rights reserved. +// + +#import + +// ! Project version number for HelpshiftX. +FOUNDATION_EXPORT double HelpshiftXVersionNumber; + +// ! Project version string for HelpshiftX. +FOUNDATION_EXPORT const unsigned char HelpshiftXVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "Helpshift.h" + diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftX.h.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftX.h.meta new file mode 100644 index 0000000..40a2b9d --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Headers/HelpshiftX.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a01d939f453c4e02a1dc42718764412 +timeCreated: 1623219844 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib.meta new file mode 100644 index 0000000..a70577c --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c95fbfa478f314138afbba25958401e4 +folderAsset: yes +timeCreated: 1621938101 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/objects-11.0+.nib b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/objects-11.0+.nib new file mode 100644 index 0000000..4b8579a Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/objects-11.0+.nib differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/objects-11.0+.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/objects-11.0+.nib.meta new file mode 100644 index 0000000..b44beb9 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/objects-11.0+.nib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98ad58e21357e44c18830109a97016b9 +timeCreated: 1623219845 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/runtime.nib b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/runtime.nib new file mode 100644 index 0000000..318357f Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/runtime.nib differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/runtime.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/runtime.nib.meta new file mode 100644 index 0000000..703cc5a --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftChatViewController.nib/runtime.nib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc194186ac1e1401aa510a82be9febc9 +timeCreated: 1623219846 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib.meta new file mode 100644 index 0000000..0aebcfc --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4b7ef22f2980d4b71931fc20695ae973 +folderAsset: yes +timeCreated: 1621938099 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/objects-11.0+.nib b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/objects-11.0+.nib new file mode 100644 index 0000000..7fa244a Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/objects-11.0+.nib differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/objects-11.0+.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/objects-11.0+.nib.meta new file mode 100644 index 0000000..bba547e --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/objects-11.0+.nib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4d8d5d784aac44d039c4bf05c1f22984 +timeCreated: 1623219845 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/runtime.nib b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/runtime.nib new file mode 100644 index 0000000..9f2e4ec Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/runtime.nib differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/runtime.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/runtime.nib.meta new file mode 100644 index 0000000..ec28c04 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftFAQsViewController.nib/runtime.nib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b66cbd6e8bee141519123d2c993208fd +timeCreated: 1623219845 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftX b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftX new file mode 100644 index 0000000..71ba87b Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftX differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftX.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftX.meta new file mode 100644 index 0000000..f511332 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HelpshiftX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ce2f72bf0c284879b98b48a759c8346 +timeCreated: 1623219842 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib.meta new file mode 100644 index 0000000..b1ecf5e --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c4a4eb735925644a7b2033adb2fb5e9b +folderAsset: yes +timeCreated: 1621938101 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/objects-11.0+.nib b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/objects-11.0+.nib new file mode 100644 index 0000000..06ff2e9 Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/objects-11.0+.nib differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/objects-11.0+.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/objects-11.0+.nib.meta new file mode 100644 index 0000000..6c2f5b1 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/objects-11.0+.nib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9aa0530f98d7f492e83e6336accf4c39 +timeCreated: 1623219845 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/runtime.nib b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/runtime.nib new file mode 100644 index 0000000..7fb16a5 Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/runtime.nib differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/runtime.nib.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/runtime.nib.meta new file mode 100644 index 0000000..92bf0dd --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/HsLoadingView.nib/runtime.nib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1cd2ea3a105474efc88341d954b4cb92 +timeCreated: 1623219845 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Info.plist b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Info.plist new file mode 100644 index 0000000..2e83d69 Binary files /dev/null and b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Info.plist differ diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Info.plist.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Info.plist.meta new file mode 100644 index 0000000..d46e3be --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Info.plist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34bac70fba12d43709a5629a49ebd891 +timeCreated: 1623219843 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules.meta new file mode 100644 index 0000000..18e0420 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 007f69aec21e44715aeb01b832b27810 +folderAsset: yes +timeCreated: 1621938099 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules/module.modulemap b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules/module.modulemap new file mode 100644 index 0000000..a445d4f --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module HelpshiftX { + umbrella header "HelpshiftX.h" + + export * + module * { export * } +} diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules/module.modulemap.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules/module.modulemap.meta new file mode 100644 index 0000000..95cdf20 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/Modules/module.modulemap.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed3912f88911b4ac081b3c71bcc71d48 +timeCreated: 1623219846 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-console-override.txt b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-console-override.txt new file mode 100644 index 0000000..2a9c6cf --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-console-override.txt @@ -0,0 +1,47 @@ + (function () { + const originalLog = console.log; + const originalWarn = console.warn; + const originalError = console.error; + const originalDebug = console.debug; + + function log(type, args) { + const loggedStr = Object.values(args).map((argValue) => { + if (typeof argValue === "undefined") { + return "undefined" + } else if (typeof argValue === "object") { + return JSON.stringify(argValue) + } else { + return argValue.toString() + } + }).join(", ").substring(0, 6000); + originalLog(loggedStr) + window.webkit.messageHandlers[type].postMessage(loggedStr); + } + + + console.log = function() { + log("log", arguments); + originalLog.apply(null, arguments); + } + + console.warn = function() { + log("warn", arguments); + originalWarn.apply(null, arguments); + } + + console.error = function() { + log("error", arguments); + originalError.apply(null, arguments); + } + + console.debug = function() { + log("debug", arguments); + originalDebug.apply(null, arguments); + } + + window.addEventListener("error", function (e) { + log("exception", [ + `${e.message} at ${e.filename}:${e.lineno}:${e.colno}`, + ]); + }); + })(); diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-console-override.txt.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-console-override.txt.meta new file mode 100644 index 0000000..1799c5b --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-console-override.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2e258d870d3f4fe78f6f3944319e4e4 +timeCreated: 1623219849 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-helpcenter.html b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-helpcenter.html new file mode 100644 index 0000000..32d7d65 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-helpcenter.html @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-helpcenter.html.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-helpcenter.html.meta new file mode 100644 index 0000000..b2cba79 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-helpcenter.html.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a2aef81948cc94a12a0a6c6fda6ff26b +timeCreated: 1623219849 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-webchat.html b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-webchat.html new file mode 100644 index 0000000..c9a5c1a --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-webchat.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-webchat.html.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-webchat.html.meta new file mode 100644 index 0000000..00a4117 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/helpshift-webchat.html.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a87c044964cba42bcaf2bbbf749cc402 +timeCreated: 1623219849 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/strip_frameworks.sh b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/strip_frameworks.sh new file mode 100644 index 0000000..f97e045 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/strip_frameworks.sh @@ -0,0 +1,72 @@ +################################################################################ +# +# Copyright 2015 Realm 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. +# +################################################################################ + +# This script strips all non-valid architectures from dynamic libraries in +# the application's `Frameworks` directory. +# +# The following environment variables are required: +# +# BUILT_PRODUCTS_DIR +# FRAMEWORKS_FOLDER_PATH +# VALID_ARCHS +# EXPANDED_CODE_SIGN_IDENTITY + + +# Signs a framework with the provided identity +code_sign() { + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" +} + +# Set working directory to product’s embedded frameworks +cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +if [ "$ACTION" = "install" ]; then + echo "Copy .bcsymbolmap files to .xcarchive" + find . -name '*.bcsymbolmap' -type f -exec mv {} "${CONFIGURATION_BUILD_DIR}" \; +else + # Delete *.bcsymbolmap files from framework bundle unless archiving + find . -name '*.bcsymbolmap' -type f -exec rm -rf "{}" +\; +fi + +echo "Stripping frameworks" + +for file in $(find . -type f); do + # Skip non-dynamic libraries + if ! [[ "$(file "$file")" == *"dynamically linked shared library"* ]]; then + continue + fi + # Get architectures for current file + archs="$(lipo -info "${file}" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$file" "$file" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" != "" ]]; then + echo "Stripped $file of architectures:$stripped" + if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then + code_sign "${file}" + fi + fi +done \ No newline at end of file diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/strip_frameworks.sh.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/strip_frameworks.sh.meta new file mode 100644 index 0000000..df8f353 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftX.framework/strip_frameworks.sh.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ae438d030a9ab4c6e82bccbb887dc912 +timeCreated: 1623219844 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftXiOS.cs b/Assets/Helpshift/Plugins/iOS/HelpshiftXiOS.cs new file mode 100644 index 0000000..8b5380b --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftXiOS.cs @@ -0,0 +1,224 @@ + +/* + * Copyright 2020, Helpshift, Inc. + * All rights reserved + */ + +#if UNITY_IPHONE + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using HSMiniJSON; + +namespace Helpshift +{ + /// + /// This class contains all the iOS APIs corresponding to the public APIs + /// + public class HelpshiftXiOS + { + // Runtime linked C methods. These methods should be named exactlly as they are declared in the native code. + + [DllImport("__Internal")] + private static extern void HsInstallForPlatformIdWithConfig(string platformId, string domainName, string jsonOptionsDict); + + [DllImport("__Internal")] + private static extern void HsShowConversationWithConfig(string jsonConfigDictionary); + + [DllImport("__Internal")] + private static extern void HsSetLanguage(string languageCode); + + [DllImport("__Internal")] + private static extern void HsLogin(string jsonUserDetailsDict); + + [DllImport("__Internal")] + private static extern void HsLogout(); + + [DllImport("__Internal")] + private static extern void HsClearAnonymousUserOnLogin(); + + [DllImport("__Internal")] + private static extern void HsRegisterDeviceToken(string deviceToken); + + [DllImport("__Internal")] + private static extern void HsPauseDisplayOfInAppNotification(bool pauseInApp); + + [DllImport("__Internal")] + private static extern void HsHandleNotificationWithUserInfoDictionary(string jsonNotificationDataDict, bool isAppLaunch); + + [DllImport("__Internal")] + private static extern void HsShowFaqsWithConfig(string configDictionaryString); + + [DllImport("__Internal")] + private static extern void HsShowFaqSectionWithConfig(string faqSectionPublishID, string configDictionaryString); + + [DllImport("__Internal")] + private static extern void HsShowSingleFaqWithConfig(string faqPublishID, string configDictionaryString); + + [DllImport("__Internal")] + private static extern void HsRequestUnreadMessageCount(bool shouldFetchFromServer); + + [DllImport("__Internal")] + private static extern void HsLog(string log); + + public HelpshiftXiOS() + { + + } + + // Public APIs + + public void Install(string platformId, string domainName, Dictionary installConfig) + { + HelpshiftInternalLogger.d("Install called : Domain : " + domainName + "Platform ID : " + platformId + ", Config : " + SerializeDictionary(installConfig)); + HsInstallForPlatformIdWithConfig(platformId, domainName, SerializeDictionary(installConfig)); + } + + public void ShowConversation(Dictionary config) + { + HelpshiftInternalLogger.d("show conversation api called with config" + SerializeDictionary(config)); + HsShowConversationWithConfig(SerializeDictionary(config)); + } + + public void ShowFAQs(Dictionary configMap) + { + HelpshiftInternalLogger.d("show FAQs api called with config" + SerializeDictionary(configMap)); + HsShowFaqsWithConfig(SerializeDictionary(configMap)); + } + + public void ShowSingleFAQ(string faqId, Dictionary configMap) + { + HelpshiftInternalLogger.d("show single FAQ api called with faqId" + faqId + " config" + SerializeDictionary(configMap)); + HsShowSingleFaqWithConfig(faqId, SerializeDictionary(configMap)); + } + + public void ShowFAQSection(string sectionId, Dictionary configMap) + { + HelpshiftInternalLogger.d("show FAQ section api called with sectionId" + sectionId+ " config" + SerializeDictionary(configMap)); + HsShowFaqSectionWithConfig(sectionId, SerializeDictionary(configMap)); + } + + public void RequestUnreadMessageCount(Boolean shouldFetchFromServer) + { + HelpshiftInternalLogger.d("request unread message count api called with remote fetch : " + shouldFetchFromServer); + HsRequestUnreadMessageCount(shouldFetchFromServer); + } + + public void SetSDKLanguage(string languageCode) + { + HelpshiftInternalLogger.d("setLanguage api called for language " + languageCode); + HsSetLanguage(languageCode); + } + + public void Login(Dictionary userDetails) + { + if(userDetails == null) + { + HelpshiftInternalLogger.e("userDetails are null in Login API!"); + userDetails = new Dictionary(); + } + HelpshiftInternalLogger.d("Login called : " + userDetails); + HsLogin(Json.Serialize(userDetails)); + } + + public void Logout() + { + HelpshiftInternalLogger.d("logout api called"); + HsLogout(); + } + + public void ClearAnonymousUserOnLogin() + { + HelpshiftInternalLogger.d("ClearAnonymouseUserOnLogin api called"); + HsClearAnonymousUserOnLogin(); + } + + public void RegisterPushToken(string deviceToken) + { + HelpshiftInternalLogger.d("Register device token :" + deviceToken); + HsRegisterDeviceToken(deviceToken); + } + + public void PauseDisplayOfInAppNotification(bool pauseInAppNotifications) + { + HelpshiftInternalLogger.d("Pause in-app notification called with shouldPause :" + pauseInAppNotifications); + HsPauseDisplayOfInAppNotification(pauseInAppNotifications); + } + + public void HandlePushNotification(Dictionary notificationDataDict) + { + HelpshiftInternalLogger.d("Handle push notification data :" + SerializeDictionary(notificationDataDict)); + HsHandleNotificationWithUserInfoDictionary(SerializeDictionary(notificationDataDict), false); + } + + public void SetHelpshiftEventsListener(IHelpshiftEventsListener listener) + { + HelpshiftInternalLogger.d("Event listener is set"); + HelpshiftXiOSDelegate.SetExternalDelegate(listener); + } + + + // Private Helpers + + private string SerializeDictionary(Dictionary configMap) + { + if (configMap == null) + { + configMap = new Dictionary(); + } + return Json.Serialize(configMap); + } + } + + /// + /// Class for adding logs for iOS. These logs are just printed to the console using NSLog() + /// + public class HelpshiftiOSLog + { + + [DllImport("__Internal")] + private static extern void HsLog(string log); + + private HelpshiftiOSLog() + { + } + + // Disabling naming convention warnings as we want to keep the methods + // small cased to match with android. + +#pragma warning disable IDE1006 // Naming Styles + public static int v(String tag, String log) + { + HsLog("HelpshiftLog:Verbose::" + tag + "::" + log); + return 0; + } + + public static int d(String tag, String log) + { + HsLog("HelpshiftLog:Debug::" + tag + "::" + log); + return 0; + } + + public static int i(String tag, String log) + { + HsLog("HelpshiftLog:Info::" + tag + "::" + log); + return 0; + } + + public static int w(String tag, String log) + { + HsLog("HelpshiftLog:Warn::" + tag + "::" + log); + return 0; + } + + public static int e(String tag, String log) + { + HsLog("HelpshiftLog:Error::" + tag + "::" + log); + return 0; + } +#pragma warning restore IDE1006 // Naming Styles + } +} + +#endif \ No newline at end of file diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftXiOS.cs.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftXiOS.cs.meta new file mode 100644 index 0000000..4be0089 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftXiOS.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8222bd17fc3cb4b8c9eabb4009fab393 +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftXiOSDelegate.cs b/Assets/Helpshift/Plugins/iOS/HelpshiftXiOSDelegate.cs new file mode 100644 index 0000000..00a48b3 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftXiOSDelegate.cs @@ -0,0 +1,134 @@ +/* + * Copyright 2020, Helpshift, Inc. + * All rights reserved + */ + +#if UNITY_IOS +using System.Runtime.InteropServices; +using System.Collections.Generic; +using HSMiniJSON; + +namespace Helpshift +{ + /// + /// Contains the event names that can be received from HelpshiftDelegate + /// + static class HelpshiftEventConstants + { + public const string HandleHelpshiftEvent = "handleHelpshiftEvent"; + public const string AuthenticationFailed = "authenticationFailedForUserWithReason"; + } + + public class HelpshiftXiOSDelegate + { + /// + /// The signature of the delegate that is invoked when we receive message on unity side from native + /// + /// The name of the method that was invoked + /// The JSON representation of the parameters of the method + private delegate void UnitySupportMessageCallback(string methodName, string parametersJson); + + /// + /// Runtimed linked C method to register callback with the declared signature + /// + /// The callback object + [DllImport("__Internal")] + private static extern void HsRegisterHelpshiftDelegateCallback(UnitySupportMessageCallback callback); + + /// + /// The shared instance of this class. + /// + private static HelpshiftXiOSDelegate sharedDelegate; + + /// + /// The external delegate object that has been passed by the developer + /// + internal IHelpshiftEventsListener externalDelegate; + + private HelpshiftXiOSDelegate() { } + + + public static HelpshiftXiOSDelegate GetInstance() + { + if (sharedDelegate == null) + { + sharedDelegate = new HelpshiftXiOSDelegate(); + } + + return sharedDelegate; + } + + /// + /// Call this method to set the external delegate to listen to Helpshift Events + /// + /// + public static void SetExternalDelegate(IHelpshiftEventsListener helpshiftEventListener) + { + GetInstance().externalDelegate = helpshiftEventListener; + RegisterHelpshiftDelegateCallback(); + } + + // Private Helpers + + private static void RegisterHelpshiftDelegateCallback() + { + HsRegisterHelpshiftDelegateCallback(UnityHelpshiftDelegateCallbackImpl); + } + + [MonoPInvokeCallback(typeof(UnitySupportMessageCallback))] + private static void UnityHelpshiftDelegateCallbackImpl(string methodName, string parametersJson) + { + IHelpshiftEventsListener externalDelegate = GetInstance().externalDelegate; + + if (externalDelegate == null) + { + return; + } + + if (methodName == HelpshiftEventConstants.HandleHelpshiftEvent) + { + Dictionary eventJson = (Dictionary)Json.Deserialize(parametersJson); + string eventName = ""; + if(eventJson.ContainsKey("eventName")) + { + eventName = (string)eventJson["eventName"]; + } + + object eventData = null; + if(eventJson.ContainsKey("eventData")) + { + eventData = eventJson["eventData"]; + } + + Dictionary eventDataJson = null; + if(eventData != null) + { + eventDataJson = (Dictionary)eventData; + } + + externalDelegate.HandleHelpshiftEvent(eventName, eventDataJson); + } + else if (methodName == HelpshiftEventConstants.AuthenticationFailed) + { + Dictionary failureReasonJson = (Dictionary)Json.Deserialize(parametersJson); + object failureReasonObject = failureReasonJson["reason"]; + int failureReason = System.Convert.ToInt32(failureReasonObject); + + HelpshiftAuthenticationFailureReason authFailureReason = HelpshiftAuthenticationFailureReason.UNKNOWN; + + if(failureReason == 0) // Auth token not provided + { + authFailureReason = HelpshiftAuthenticationFailureReason.AUTH_TOKEN_NOT_PROVIDED; + } + else if (failureReason == 1) // Invalid auth token + { + authFailureReason = HelpshiftAuthenticationFailureReason.INVALID_AUTH_TOKEN; + } + + + externalDelegate.AuthenticationFailedForUser(authFailureReason); + } + } + } +} +#endif diff --git a/Assets/Helpshift/Plugins/iOS/HelpshiftXiOSDelegate.cs.meta b/Assets/Helpshift/Plugins/iOS/HelpshiftXiOSDelegate.cs.meta new file mode 100644 index 0000000..007c02f --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HelpshiftXiOSDelegate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 70c26f395a2e848fc8fd9a23a1703a17 +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/HsUnityAppController.mm b/Assets/Helpshift/Plugins/iOS/HsUnityAppController.mm new file mode 100644 index 0000000..9319d47 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HsUnityAppController.mm @@ -0,0 +1,111 @@ +// +// HsUnityAppController.m +// + +#import +#import +#import +#import "HelpshiftX-Unity.h" +#import "UnityAppController.h" +#import "AppDelegateListener.h" + +@interface HsUnityAppController: NSObject + +@end + +@implementation HsUnityAppController + +static HsUnityAppController *shared = [[HsUnityAppController alloc] init]; + +- (instancetype) init { + self = [super init]; + if(self) { + UnityRegisterAppDelegateListener(self); + } + return self; +} + +- (void) didFinishLaunching:(NSNotification *)notification { + + // Uncomment the following code block to register for push notifications using UNUserNotification framework. + + /* + UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; + center.delegate = self; + [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) + completionHandler:^(BOOL granted, NSError *_Nullable error) { + if(error) { + NSLog(@"Error while requesting Notification permissions."); + } + }]; + [[UIApplication sharedApplication] registerForRemoteNotifications]; + */ + + /* Uncomment the following code block to register for push notification using UILocalNotification framework. + * Please make sure that you are registering only from one framwork, Either from UNUserNotification or from UILocalNotification framework. + */ + + /* + UIUserNotificationType notificationType = UIUserNotificationTypeBadge | UIUserNotificationTypeAlert; + UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:notificationType categories:nil]; + [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; + [[UIApplication sharedApplication] registerForRemoteNotifications]; + */ + + if(notification.userInfo[UIApplicationLaunchOptionsRemoteNotificationKey]) { + NSDictionary *payload = notification.userInfo[UIApplicationLaunchOptionsRemoteNotificationKey]; + if ([[payload objectForKey:@"origin"] isEqualToString:@"helpshift"]) { + hsInstallFromCache(); + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [Helpshift handleNotificationWithUserInfoDictionary:payload + isAppLaunch:YES + withController:UIApplication.sharedApplication.keyWindow.rootViewController]; + }); + } + } +} + +- (void) didRegisterForRemoteNotificationsWithDeviceToken:(NSNotification *)notification { + NSData *deviceToken = (NSData *) notification.userInfo; + hsInstallFromCache(); + HsRegisterDeviceTokenData(deviceToken); +} + +- (void) didReceiveRemoteNotification:(NSNotification *)notification { + hsInstallFromCache(); + [Helpshift handleNotificationWithUserInfoDictionary:notification.userInfo + isAppLaunch:false + withController:UIApplication.sharedApplication.keyWindow.rootViewController]; +} + +/* UNUserNotification delegates implementation starts here. + * If your app already implements these delegates than copy this code snippet to your implementation and remove this implementation. + */ +- (void) userNotificationCenter:(UNUserNotificationCenter *)center + willPresentNotification:(UNNotification *)notification + withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler { + if([notification.request.content.userInfo[@"origin"] isEqualToString:@"helpshift"]) { + hsInstallFromCache(); + [Helpshift handleNotificationWithUserInfoDictionary:notification.request.content.userInfo + isAppLaunch:false + withController:UIApplication.sharedApplication.keyWindow.rootViewController]; + } + completionHandler(UNNotificationPresentationOptionNone); +} + +- (void) userNotificationCenter:(UNUserNotificationCenter *)center + didReceiveNotificationResponse:(UNNotificationResponse *)response + withCompletionHandler:(void (^)(void))completionHandler { + UNNotification *notification = response.notification; + if([notification.request.content.userInfo[@"origin"] isEqualToString:@"helpshift"]) { + hsInstallFromCache(); + [Helpshift handleNotificationWithUserInfoDictionary:notification.request.content.userInfo + isAppLaunch:false + withController:UIApplication.sharedApplication.keyWindow.rootViewController]; + } + completionHandler(); +} + +// UNUserNotification delegates implemenation ends here. + +@end diff --git a/Assets/Helpshift/Plugins/iOS/HsUnityAppController.mm.meta b/Assets/Helpshift/Plugins/iOS/HsUnityAppController.mm.meta new file mode 100644 index 0000000..649fe62 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/HsUnityAppController.mm.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: f43f838d89559414c82b3e7aab18d070 +timeCreated: 1621935842 +licenseType: Free +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + iOS: + enabled: 1 + settings: {} + tvOS: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Helpshift/Plugins/iOS/MonoPInvokeCallbackAttribute.cs b/Assets/Helpshift/Plugins/iOS/MonoPInvokeCallbackAttribute.cs new file mode 100644 index 0000000..25c84e1 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/MonoPInvokeCallbackAttribute.cs @@ -0,0 +1,19 @@ +/* + * Copyright 2020, Helpshift, Inc. + * All rights reserved + */ + +#if UNITY_IOS +using System; + +[System.AttributeUsage(System.AttributeTargets.Method)] +public sealed class MonoPInvokeCallbackAttribute : System.Attribute +{ + private Type type; + public MonoPInvokeCallbackAttribute(Type t) + { + type = t; + } +} + +#endif \ No newline at end of file diff --git a/Assets/Helpshift/Plugins/iOS/MonoPInvokeCallbackAttribute.cs.meta b/Assets/Helpshift/Plugins/iOS/MonoPInvokeCallbackAttribute.cs.meta new file mode 100644 index 0000000..d38a9b5 --- /dev/null +++ b/Assets/Helpshift/Plugins/iOS/MonoPInvokeCallbackAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f8332eee315e54aeea063dd5206a91ea +timeCreated: 1621935750 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images.meta b/Assets/Images.meta new file mode 100644 index 0000000..e1d7d2b --- /dev/null +++ b/Assets/Images.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce80ad799c9824784937ff59c89dc125 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/button.png b/Assets/Images/button.png new file mode 100644 index 0000000..ee8d3cf Binary files /dev/null and b/Assets/Images/button.png differ diff --git a/Assets/Images/button.png.meta b/Assets/Images/button.png.meta new file mode 100644 index 0000000..a64b103 --- /dev/null +++ b/Assets/Images/button.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: b78bbe947b7a74cc8994180b20d3899a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/Helpshift.aar b/Assets/Plugins/Android/Helpshift.aar new file mode 100644 index 0000000..8d572a6 Binary files /dev/null and b/Assets/Plugins/Android/Helpshift.aar differ diff --git a/Assets/Plugins/Android/Helpshift.aar.meta b/Assets/Plugins/Android/Helpshift.aar.meta new file mode 100644 index 0000000..83ef074 --- /dev/null +++ b/Assets/Plugins/Android/Helpshift.aar.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 2f11c9bece6b44e6294901d3d7c0fe68 +timeCreated: 1621857891 +licenseType: Free +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Android: + enabled: 1 + settings: {} + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/android.arch.core.common-1.1.1.jar b/Assets/Plugins/Android/android.arch.core.common-1.1.1.jar new file mode 100644 index 0000000..27924dd Binary files /dev/null and b/Assets/Plugins/Android/android.arch.core.common-1.1.1.jar differ diff --git a/Assets/Plugins/Android/android.arch.core.common-1.1.1.jar.meta b/Assets/Plugins/Android/android.arch.core.common-1.1.1.jar.meta new file mode 100644 index 0000000..403d7cc --- /dev/null +++ b/Assets/Plugins/Android/android.arch.core.common-1.1.1.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: ee5948895a169e744bdfb64e7b67d762 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/android.arch.core.runtime-1.1.1.aar b/Assets/Plugins/Android/android.arch.core.runtime-1.1.1.aar new file mode 100644 index 0000000..46f541b Binary files /dev/null and b/Assets/Plugins/Android/android.arch.core.runtime-1.1.1.aar differ diff --git a/Assets/Plugins/Android/android.arch.core.runtime-1.1.1.aar.meta b/Assets/Plugins/Android/android.arch.core.runtime-1.1.1.aar.meta new file mode 100644 index 0000000..84db341 --- /dev/null +++ b/Assets/Plugins/Android/android.arch.core.runtime-1.1.1.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 10b49f0fd9609404e9adb9a09cfeb584 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/android.arch.lifecycle.common-1.1.1.jar b/Assets/Plugins/Android/android.arch.lifecycle.common-1.1.1.jar new file mode 100644 index 0000000..a19a2a5 Binary files /dev/null and b/Assets/Plugins/Android/android.arch.lifecycle.common-1.1.1.jar differ diff --git a/Assets/Plugins/Android/android.arch.lifecycle.common-1.1.1.jar.meta b/Assets/Plugins/Android/android.arch.lifecycle.common-1.1.1.jar.meta new file mode 100644 index 0000000..5adac83 --- /dev/null +++ b/Assets/Plugins/Android/android.arch.lifecycle.common-1.1.1.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: bfd84a2bfae8bb04cb4cc04ac804b9df +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/android.arch.lifecycle.livedata-1.1.1.aar b/Assets/Plugins/Android/android.arch.lifecycle.livedata-1.1.1.aar new file mode 100644 index 0000000..6e6baa4 Binary files /dev/null and b/Assets/Plugins/Android/android.arch.lifecycle.livedata-1.1.1.aar differ diff --git a/Assets/Plugins/Android/android.arch.lifecycle.livedata-1.1.1.aar.meta b/Assets/Plugins/Android/android.arch.lifecycle.livedata-1.1.1.aar.meta new file mode 100644 index 0000000..fce0e96 --- /dev/null +++ b/Assets/Plugins/Android/android.arch.lifecycle.livedata-1.1.1.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: cd32f30a932a05540a4cace98f5090ad +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/android.arch.lifecycle.livedata-core-1.1.1.aar b/Assets/Plugins/Android/android.arch.lifecycle.livedata-core-1.1.1.aar new file mode 100644 index 0000000..ffe4db8 Binary files /dev/null and b/Assets/Plugins/Android/android.arch.lifecycle.livedata-core-1.1.1.aar differ diff --git a/Assets/Plugins/Android/android.arch.lifecycle.livedata-core-1.1.1.aar.meta b/Assets/Plugins/Android/android.arch.lifecycle.livedata-core-1.1.1.aar.meta new file mode 100644 index 0000000..35591b2 --- /dev/null +++ b/Assets/Plugins/Android/android.arch.lifecycle.livedata-core-1.1.1.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: f5f78da2f02959f459123f3867a55b36 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/android.arch.lifecycle.runtime-1.1.1.aar b/Assets/Plugins/Android/android.arch.lifecycle.runtime-1.1.1.aar new file mode 100644 index 0000000..f9f6926 Binary files /dev/null and b/Assets/Plugins/Android/android.arch.lifecycle.runtime-1.1.1.aar differ diff --git a/Assets/Plugins/Android/android.arch.lifecycle.runtime-1.1.1.aar.meta b/Assets/Plugins/Android/android.arch.lifecycle.runtime-1.1.1.aar.meta new file mode 100644 index 0000000..f71bf95 --- /dev/null +++ b/Assets/Plugins/Android/android.arch.lifecycle.runtime-1.1.1.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: bf445756feef4394693de6eba7560eba +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/android.arch.lifecycle.viewmodel-1.1.1.aar b/Assets/Plugins/Android/android.arch.lifecycle.viewmodel-1.1.1.aar new file mode 100644 index 0000000..55b9b36 Binary files /dev/null and b/Assets/Plugins/Android/android.arch.lifecycle.viewmodel-1.1.1.aar differ diff --git a/Assets/Plugins/Android/android.arch.lifecycle.viewmodel-1.1.1.aar.meta b/Assets/Plugins/Android/android.arch.lifecycle.viewmodel-1.1.1.aar.meta new file mode 100644 index 0000000..ad73eca --- /dev/null +++ b/Assets/Plugins/Android/android.arch.lifecycle.viewmodel-1.1.1.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 5eb83537e4b585d4da5f5f9598818c47 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.animated-vector-drawable-28.0.0.aar b/Assets/Plugins/Android/com.android.support.animated-vector-drawable-28.0.0.aar new file mode 100644 index 0000000..626cc42 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.animated-vector-drawable-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.animated-vector-drawable-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.animated-vector-drawable-28.0.0.aar.meta new file mode 100644 index 0000000..0d45585 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.animated-vector-drawable-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: da9f7510ecc135249a27f421f69b1708 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.appcompat-v7-28.0.0.aar b/Assets/Plugins/Android/com.android.support.appcompat-v7-28.0.0.aar new file mode 100644 index 0000000..92609a1 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.appcompat-v7-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.appcompat-v7-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.appcompat-v7-28.0.0.aar.meta new file mode 100644 index 0000000..3c7dedd --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.appcompat-v7-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 01497829bee49024f9f92d7a90f56161 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.asynclayoutinflater-28.0.0.aar b/Assets/Plugins/Android/com.android.support.asynclayoutinflater-28.0.0.aar new file mode 100644 index 0000000..156f2c8 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.asynclayoutinflater-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.asynclayoutinflater-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.asynclayoutinflater-28.0.0.aar.meta new file mode 100644 index 0000000..5c16399 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.asynclayoutinflater-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: e188f091d6252e543a767e44b2f629fa +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.collections-28.0.0.jar b/Assets/Plugins/Android/com.android.support.collections-28.0.0.jar new file mode 100644 index 0000000..b12b287 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.collections-28.0.0.jar differ diff --git a/Assets/Plugins/Android/com.android.support.collections-28.0.0.jar.meta b/Assets/Plugins/Android/com.android.support.collections-28.0.0.jar.meta new file mode 100644 index 0000000..228e00e --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.collections-28.0.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: c26a5a1eaaaa54a4cb84f90ec9f2834f +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.coordinatorlayout-28.0.0.aar b/Assets/Plugins/Android/com.android.support.coordinatorlayout-28.0.0.aar new file mode 100644 index 0000000..cdc00d4 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.coordinatorlayout-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.coordinatorlayout-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.coordinatorlayout-28.0.0.aar.meta new file mode 100644 index 0000000..cffd97a --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.coordinatorlayout-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 2be098885792b154690aef8d6822f096 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.cursoradapter-28.0.0.aar b/Assets/Plugins/Android/com.android.support.cursoradapter-28.0.0.aar new file mode 100644 index 0000000..e655a82 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.cursoradapter-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.cursoradapter-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.cursoradapter-28.0.0.aar.meta new file mode 100644 index 0000000..85c9616 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.cursoradapter-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 40012373714af574a9f73f1a6632616e +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.customview-28.0.0.aar b/Assets/Plugins/Android/com.android.support.customview-28.0.0.aar new file mode 100644 index 0000000..45a9b0a Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.customview-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.customview-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.customview-28.0.0.aar.meta new file mode 100644 index 0000000..9db1584 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.customview-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 94022afa1663a2e4c8cf5655c32afcf4 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.documentfile-28.0.0.aar b/Assets/Plugins/Android/com.android.support.documentfile-28.0.0.aar new file mode 100644 index 0000000..c4d36df Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.documentfile-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.documentfile-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.documentfile-28.0.0.aar.meta new file mode 100644 index 0000000..35df4f4 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.documentfile-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: f28288ddb8270184aa3494c36f5babaa +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.drawerlayout-28.0.0.aar b/Assets/Plugins/Android/com.android.support.drawerlayout-28.0.0.aar new file mode 100644 index 0000000..8e328aa Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.drawerlayout-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.drawerlayout-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.drawerlayout-28.0.0.aar.meta new file mode 100644 index 0000000..c94fc0e --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.drawerlayout-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 1441e11b56a036541b07c984b4cc51db +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.interpolator-28.0.0.aar b/Assets/Plugins/Android/com.android.support.interpolator-28.0.0.aar new file mode 100644 index 0000000..84bc87d Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.interpolator-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.interpolator-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.interpolator-28.0.0.aar.meta new file mode 100644 index 0000000..5f70367 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.interpolator-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 3c85284657d7d17488a59ce258f6d30f +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.loader-28.0.0.aar b/Assets/Plugins/Android/com.android.support.loader-28.0.0.aar new file mode 100644 index 0000000..337df61 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.loader-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.loader-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.loader-28.0.0.aar.meta new file mode 100644 index 0000000..065294a --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.loader-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 51d4312a7fd36de42970213faa7ee5ae +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.localbroadcastmanager-28.0.0.aar b/Assets/Plugins/Android/com.android.support.localbroadcastmanager-28.0.0.aar new file mode 100644 index 0000000..8ba407e Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.localbroadcastmanager-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.localbroadcastmanager-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.localbroadcastmanager-28.0.0.aar.meta new file mode 100644 index 0000000..51c88e6 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.localbroadcastmanager-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 06e7db8cb92cc944888231cb52c051ca +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.print-28.0.0.aar b/Assets/Plugins/Android/com.android.support.print-28.0.0.aar new file mode 100644 index 0000000..2cd90bc Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.print-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.print-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.print-28.0.0.aar.meta new file mode 100644 index 0000000..420bae0 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.print-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 778d8fdf641b42d41b92d193daed2f7a +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.slidingpanelayout-28.0.0.aar b/Assets/Plugins/Android/com.android.support.slidingpanelayout-28.0.0.aar new file mode 100644 index 0000000..f03bcc3 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.slidingpanelayout-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.slidingpanelayout-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.slidingpanelayout-28.0.0.aar.meta new file mode 100644 index 0000000..ea4084b --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.slidingpanelayout-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: db5121b91f0acc343a38afda7d1287fe +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.support-annotations-28.0.0.jar b/Assets/Plugins/Android/com.android.support.support-annotations-28.0.0.jar new file mode 100644 index 0000000..c063f2b Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.support-annotations-28.0.0.jar differ diff --git a/Assets/Plugins/Android/com.android.support.support-annotations-28.0.0.jar.meta b/Assets/Plugins/Android/com.android.support.support-annotations-28.0.0.jar.meta new file mode 100644 index 0000000..5c6a74e --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.support-annotations-28.0.0.jar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 7edd5edfe700a7d4999a7cc077d21ba8 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.support-compat-28.0.0.aar b/Assets/Plugins/Android/com.android.support.support-compat-28.0.0.aar new file mode 100644 index 0000000..173a7e0 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.support-compat-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.support-compat-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.support-compat-28.0.0.aar.meta new file mode 100644 index 0000000..30e5dde --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.support-compat-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: fe29a05059b2d3346a07927cc69412fb +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.support-core-ui-28.0.0.aar b/Assets/Plugins/Android/com.android.support.support-core-ui-28.0.0.aar new file mode 100644 index 0000000..efaa360 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.support-core-ui-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.support-core-ui-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.support-core-ui-28.0.0.aar.meta new file mode 100644 index 0000000..5b7cb9b --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.support-core-ui-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 8911431d160a4ca40a0e8eff854ea218 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.support-core-utils-28.0.0.aar b/Assets/Plugins/Android/com.android.support.support-core-utils-28.0.0.aar new file mode 100644 index 0000000..204c39e Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.support-core-utils-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.support-core-utils-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.support-core-utils-28.0.0.aar.meta new file mode 100644 index 0000000..fa7df7c --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.support-core-utils-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: a28d69536f79abb4caffc0ae5cb2d2b9 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.support-fragment-28.0.0.aar b/Assets/Plugins/Android/com.android.support.support-fragment-28.0.0.aar new file mode 100644 index 0000000..2e04391 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.support-fragment-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.support-fragment-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.support-fragment-28.0.0.aar.meta new file mode 100644 index 0000000..4b5497d --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.support-fragment-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 1ae8a7f160175144d88df26ba714141a +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.support-vector-drawable-28.0.0.aar b/Assets/Plugins/Android/com.android.support.support-vector-drawable-28.0.0.aar new file mode 100644 index 0000000..89576d0 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.support-vector-drawable-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.support-vector-drawable-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.support-vector-drawable-28.0.0.aar.meta new file mode 100644 index 0000000..8e399de --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.support-vector-drawable-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: bc718e947493fc74eab0a42721585e3d +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.swiperefreshlayout-28.0.0.aar b/Assets/Plugins/Android/com.android.support.swiperefreshlayout-28.0.0.aar new file mode 100644 index 0000000..59ab65d Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.swiperefreshlayout-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.swiperefreshlayout-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.swiperefreshlayout-28.0.0.aar.meta new file mode 100644 index 0000000..b80898d --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.swiperefreshlayout-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: a3e1d3f79740ffa45a666eb9c02cb8f3 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.versionedparcelable-28.0.0.aar b/Assets/Plugins/Android/com.android.support.versionedparcelable-28.0.0.aar new file mode 100644 index 0000000..21a7c11 Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.versionedparcelable-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.versionedparcelable-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.versionedparcelable-28.0.0.aar.meta new file mode 100644 index 0000000..2c38ceb --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.versionedparcelable-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 31f2135135aca9540957d9ad02d8e3ab +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/com.android.support.viewpager-28.0.0.aar b/Assets/Plugins/Android/com.android.support.viewpager-28.0.0.aar new file mode 100644 index 0000000..095022b Binary files /dev/null and b/Assets/Plugins/Android/com.android.support.viewpager-28.0.0.aar differ diff --git a/Assets/Plugins/Android/com.android.support.viewpager-28.0.0.aar.meta b/Assets/Plugins/Android/com.android.support.viewpager-28.0.0.aar.meta new file mode 100644 index 0000000..76e69b0 --- /dev/null +++ b/Assets/Plugins/Android/com.android.support.viewpager-28.0.0.aar.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: b8bace809fd21e4468b478b45b13fa4d +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-resources.aar b/Assets/Plugins/Android/helpshift-plugin-resources.aar new file mode 100644 index 0000000..e7c1e66 Binary files /dev/null and b/Assets/Plugins/Android/helpshift-plugin-resources.aar differ diff --git a/Assets/Plugins/Android/helpshift-plugin-resources.aar.meta b/Assets/Plugins/Android/helpshift-plugin-resources.aar.meta new file mode 100644 index 0000000..4cd64b1 --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-resources.aar.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 62dd35bbc3cc5438eac6ed881fc28bdf +timeCreated: 1624263758 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Android: + enabled: 1 + settings: {} + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper.meta b/Assets/Plugins/Android/helpshift-plugin-wrapper.meta new file mode 100644 index 0000000..4d88d62 --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: 0e04556121d054c04b055acbf9ede1bf +folderAsset: yes +timeCreated: 1543404288 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Android: + enabled: 1 + settings: {} + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/AndroidManifest.xml b/Assets/Plugins/Android/helpshift-plugin-wrapper/AndroidManifest.xml new file mode 100644 index 0000000..4a1ca52 --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/AndroidManifest.xml.meta b/Assets/Plugins/Android/helpshift-plugin-wrapper/AndroidManifest.xml.meta new file mode 100644 index 0000000..e0697eb --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/AndroidManifest.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6222b20ed8dd846ccb3b3ef255cea7e6 +timeCreated: 1542710596 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/NOTICE.txt b/Assets/Plugins/Android/helpshift-plugin-wrapper/NOTICE.txt new file mode 100644 index 0000000..dd6c2ca --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/NOTICE.txt @@ -0,0 +1,364 @@ +Android Design Support Library: +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Compat Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Compatibility Library v4: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Compatibility Library v7: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Annotations Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Media Compatibility Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Core Utils Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Core UI Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Fragments Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Vector Drawables Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Animated Vector Drawables Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android RecyclerView Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Transition Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android CardView Support Library: + +Copyright (C) 2011 The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Android Volley: + +From Android Volley library, following files are modified and used : +1. PoolingByteArrayOutputStream.java +2. ByteArrayPool.java +3. HttpStatus.java +4. HurlStack.java +5. Response.java +6. BasicNetwork.java +7. ExecutorDelivery.java +8. ResponseDelivery.java +9. JsonObjectResponseParser.java +10. JsonArrayResponseParser.java +11. NetworkResponse.java +12. HttpHeaderParser.java +13. Network.java + +Copyright (c) 2012, The Android Open Source Project + +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. +-------------------------------------------------------------------------------- + +Apache Commons Codec: + +From Apache Commons Codec source code, following files are modified and used : +1. DoubleMetaphone.java +2. Encoder.java +3. EncoderException.java +4. StringEncoder.java + +Copyright 2001-2004 The Apache Software Foundation. + +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. +-------------------------------------------------------------------------------- + +CircleImageView: + +From CircleImageView library, following file is modified and used : +1. CircleImageView.java + +Copyright 2014 - 2017 Henning Dodenhof + +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. +-------------------------------------------------------------------------------- + +AdjustableImageView: + +From AdjustableImageView library, following file is modified and used : +1. AdjustableImageView.java + +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. +-------------------------------------------------------------------------------- + +RoundedImageView: + +From RoundedImageView library, following file is modified and used : +1. RoundedImageView.java + +Copyright (C) 2017 Vincent Mi + +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. +-------------------------------------------------------------------------------- + +nv-websockets-client + +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. +-------------------------------------------------------------------------------- \ No newline at end of file diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/NOTICE.txt.meta b/Assets/Plugins/Android/helpshift-plugin-wrapper/NOTICE.txt.meta new file mode 100644 index 0000000..2c2d5dc --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/NOTICE.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b8dee3dbd4b04539974c19fe1843a8a +timeCreated: 1542710596 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/build.xml b/Assets/Plugins/Android/helpshift-plugin-wrapper/build.xml new file mode 100644 index 0000000..a488ee7 --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/build.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/build.xml.meta b/Assets/Plugins/Android/helpshift-plugin-wrapper/build.xml.meta new file mode 100644 index 0000000..dec0a93 --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/build.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e421f6df5084f47fabe34082dd445636 +timeCreated: 1542710597 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/project.properties b/Assets/Plugins/Android/helpshift-plugin-wrapper/project.properties new file mode 100644 index 0000000..d4f96ed --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/project.properties @@ -0,0 +1,3 @@ +target=android-26 +android.library=true +android.library.reference.1=../design-26.0.2/ diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/project.properties.meta b/Assets/Plugins/Android/helpshift-plugin-wrapper/project.properties.meta new file mode 100644 index 0000000..45dccb3 --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/project.properties.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2ba6eb87f5e0347279280fd740e10c8e +timeCreated: 1542710567 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/res.meta b/Assets/Plugins/Android/helpshift-plugin-wrapper/res.meta new file mode 100644 index 0000000..c3cfd4b --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/res.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a2e8f2932c3234e0e9b4cd8e7dddb1f9 +folderAsset: yes +timeCreated: 1539839841 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml.meta b/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml.meta new file mode 100644 index 0000000..628165e --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bfbd1ec12cb8e46188ff2c6a3cfd2442 +folderAsset: yes +timeCreated: 1539839848 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml/hs__provider_paths.xml b/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml/hs__provider_paths.xml new file mode 100644 index 0000000..3ba5cb4 --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml/hs__provider_paths.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml/hs__provider_paths.xml.meta b/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml/hs__provider_paths.xml.meta new file mode 100644 index 0000000..6936758 --- /dev/null +++ b/Assets/Plugins/Android/helpshift-plugin-wrapper/res/xml/hs__provider_paths.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e2552d217f1a4ad9a7347f8abd8affd +timeCreated: 1542710581 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AsteraX.jslib b/Assets/Plugins/AsteraX.jslib new file mode 100644 index 0000000..403cbec --- /dev/null +++ b/Assets/Plugins/AsteraX.jslib @@ -0,0 +1,39 @@ +mergeInto(LibraryManager.library, { + + EnableHelpshift: function (guid) { + console.log("guid: " + Pointer_stringify(guid)); + + var PLATFORM_ID = "gamingdemo_platform_20190415170138422-dfe89ece2efffd9", + DOMAIN = "gamingdemo", + LANGUAGE = "en"; + + window.helpshiftConfig = { + platformId: PLATFORM_ID, + domain: DOMAIN, + language: LANGUAGE, + userId: Pointer_stringify(guid), + userEmail: "Backtrace@Backtrace.io", + userName: "John Doe" + }; + + !function(t,e){if("function"!=typeof window.Helpshift){var n=function(){n.q.push(arguments)};n.q=[],window.Helpshift=n;var i,a=t.getElementsByTagName("script")[0];if(t.getElementById(e))return;i=t.createElement("script"),i.async=!0,i.id=e,i.src="https://webchat.helpshift.com/webChat.js";var o=function(){window.Helpshift("init")};window.attachEvent?i.attachEvent("onload",o):i.addEventListener("load",o,!1),a.parentNode.insertBefore(i,a)}else window.Helpshift("update")}(document,"hs-chat"); + + Helpshift("setCustomIssueFields", { + // Key of the Custom Issue Field + "segment": { + // Type of Custom Issue Field + type: "dropdown", + // Value to set for Custom Issue Field + value: "vip" + }, + // Key of the Custom Issue Field + "device_id": { + // Type of Custom Issue Field + type: "singleline", + // Value to set for Custom Issue Field + value: Pointer_stringify(guid) + } + }); + } + +}); \ No newline at end of file diff --git a/Assets/Plugins/AsteraX.jslib.meta b/Assets/Plugins/AsteraX.jslib.meta new file mode 100644 index 0000000..0ee8d78 --- /dev/null +++ b/Assets/Plugins/AsteraX.jslib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 827cf5364c07c41b3afad991ae05fbe3 +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: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100644 index 0000000..83a6d9f --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8fd535fb8007a44ea9d492d21729c5c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BillingMode.json b/Assets/Resources/BillingMode.json new file mode 100644 index 0000000..6f4bfb7 --- /dev/null +++ b/Assets/Resources/BillingMode.json @@ -0,0 +1 @@ +{"androidStore":"GooglePlay"} \ No newline at end of file diff --git a/Assets/Resources/BillingMode.json.meta b/Assets/Resources/BillingMode.json.meta new file mode 100644 index 0000000..5037e3a --- /dev/null +++ b/Assets/Resources/BillingMode.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b94f93655a671df468be302b23a9f085 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textures & Materials/New Material.mat b/Assets/Textures & Materials/New Material.mat new file mode 100644 index 0000000..14521d6 --- /dev/null +++ b/Assets/Textures & Materials/New Material.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Material + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: b78bbe947b7a74cc8994180b20d3899a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Textures & Materials/New Material.mat.meta b/Assets/Textures & Materials/New Material.mat.meta new file mode 100644 index 0000000..29bb716 --- /dev/null +++ b/Assets/Textures & Materials/New Material.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b4376ff910d64527bdb5e46d2f7fe28 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Scenes/_Scene_0.unity b/Assets/_Scenes/_Scene_0.unity index 8613f8f..d8e5236 100644 --- a/Assets/_Scenes/_Scene_0.unity +++ b/Assets/_Scenes/_Scene_0.unity @@ -1043,6 +1043,11 @@ PrefabInstance: propertyPath: bullets value: 5 objectReference: {fileID: 0} + - target: {fileID: 3148766061316803528, guid: 2c350f2ea6d36435b8b50bf6e3c429cb, + type: 3} + propertyPath: button_tex + value: + objectReference: {fileID: 2800000, guid: b78bbe947b7a74cc8994180b20d3899a, type: 3} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2c350f2ea6d36435b8b50bf6e3c429cb, type: 3} --- !u!1 &2144739410 diff --git a/Assets/__Scripts/AsteraX.cs b/Assets/__Scripts/AsteraX.cs index 24fefa3..665e004 100644 --- a/Assets/__Scripts/AsteraX.cs +++ b/Assets/__Scripts/AsteraX.cs @@ -7,25 +7,22 @@ using System.Net; using System; using Backtrace.Unity.Model.Breadcrumbs; -using Backtrace.Unity.Model.Metrics; +using Backtrace.Unity.Model; +using Helpshift; [RequireComponent(typeof(BacktraceClient))] public class AsteraX : MonoBehaviour { + static public AsteraX instance; static public BacktraceClient backtraceClient; + static public HelpshiftSdk help; + static public Boolean Hanging = false; + static private int incrementingNumber = 0; //static public BreadcrumbsWriter bcw; - static public IBacktraceMetrics metrics - { - get - { - return backtraceClient.Metrics; - } - } - static private int _score; static public int score { @@ -37,8 +34,8 @@ static public int score { _score = value; -#if ((UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR) - if (score == 100) +#if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL)) + if (score % 50 == 0) { ConnectToSlowBackend(); } @@ -57,10 +54,10 @@ static public int score if (score % 100 == 0) { - metrics.AddSummedEvent("levels_played", new Dictionary() { - {"application.version", AsteraX.backtraceClient["application.version"]}, - {"score", "" + score} - }); + // metrics.AddSummedEvent("levels_played", new Dictionary() { + // {"application.version", AsteraX.backtraceClient["application.version"]}, + // {"score", "" + score} + // }); backtraceClient.Breadcrumbs.Info("Level Completed in Asterax!", new Dictionary() { {"application.version", AsteraX.backtraceClient["application.version"]}, @@ -78,7 +75,8 @@ static public int score void Awake() { - AsteraX.backtraceClient = GetComponent(); + instance = this; + AsteraX.backtraceClient = GetComponent(); AsteraX.backtraceClient.Refresh(); AsteraX.backtraceClient["backtrace-unity-commit-sha"] = "7e10fc53f681c25f5e3774729fdfe6efa98859a8"; @@ -110,11 +108,44 @@ void Awake() return model; }; Debug.Log(Application.persistentDataPath); + + help = HelpshiftSdk.GetInstance(); + var configMap = new Dictionary(); + help.Install("gamingdemo_platform_20190415170138400-f90498405ad7bd2", "gamingdemo.helpshift.com", configMap); + } + +#if (UNITY_WEBGL) + static private void ConnectToSlowBackend() + { + AsteraX.Hanging = true; + Debug.Log("ConnectToSlowBackend - in"); + + Time.timeScale = 0; + instance.StartCoroutine(instance.DoWork()); + + Dictionary attrs = new Dictionary(); + attrs.Add("_mod_fingerprint", "f02cb19781bc5736c09c855916491c2f2aceea0482c1e65a5319773cb48dd512"); + BacktraceReport report = new BacktraceReport(message: "ANRException: Blocked thread detected", attributes: attrs); + + backtraceClient.Send(report); + + Debug.Log("Content length: " + 0); + + Debug.Log("ConnectToSlowBackend - out"); + //AsteraX.Hanging = false; + } + + IEnumerator DoWork() + { + yield return new WaitForSecondsRealtime(5); + Time.timeScale = 1; } +#endif -#if ((UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR) +#if ((UNITY_ANDROID || UNITY_IOS)) static private void ConnectToSlowBackend() { + AsteraX.Hanging = true; Debug.Log("ConnectToSlowBackend - in"); WebClient client = new WebClient(); Stream stream = client.OpenRead("https://deelay.me/10000/https://picsum.photos/200/300"); @@ -123,6 +154,7 @@ static private void ConnectToSlowBackend() Debug.Log("Content length: " + content.Length); Debug.Log("ConnectToSlowBackend - out"); + //AsteraX.Hanging = false; } #endif @@ -143,8 +175,8 @@ static public void GetGyroscopeDevice() // throws error! int x = 0; - int y = 100 / x; + //int y = 100 / x; // iOS allows you to divide by zero, cool huh? But crash anyways pls - throw new System.DivideByZeroException("Attempted to divide by zero"); + //throw new System.DivideByZeroException("Attempted to divide by zero"); } } diff --git a/Assets/__Scripts/Asteroid.cs b/Assets/__Scripts/Asteroid.cs index e40f06f..a71b918 100644 --- a/Assets/__Scripts/Asteroid.cs +++ b/Assets/__Scripts/Asteroid.cs @@ -94,7 +94,7 @@ public void OnCollisionEnter(Collision coll) }); // this crashes the entire game - Utils.ForceCrash(ForcedCrashCategory.AccessViolation); + //tils.ForceCrash(ForcedCrashCategory.AccessViolation); } } else if (otherGO.tag == "Asteroid") @@ -117,7 +117,7 @@ void AsteroidHitByBullet(GameObject otherGO) } catch (System.NullReferenceException nre) { - AsteraX.GetBacktraceClient().Send(nre); + //AsteraX.GetBacktraceClient().Send(nre); } } } diff --git a/Assets/__Scripts/AsteroidSpawner.cs b/Assets/__Scripts/AsteroidSpawner.cs index a884abe..0c6ca18 100644 --- a/Assets/__Scripts/AsteroidSpawner.cs +++ b/Assets/__Scripts/AsteroidSpawner.cs @@ -33,9 +33,9 @@ void FixedUpdate() { if (GameObject.FindGameObjectsWithTag("Asteroid").Length > (numberOfAsteroids/2)) { - var t = new Texture2D(1024, 1024, TextureFormat.ARGB32, true); - t.Apply(); - this.textures.Add(t); + //var t = new Texture2D(1024, 1024, TextureFormat.ARGB32, true); + //t.Apply(); + //this.textures.Add(t); //Debug.Log("Update, we have " + this.textures.Count + " textures in here!"); } } diff --git a/Assets/__Scripts/PlayerShip.cs b/Assets/__Scripts/PlayerShip.cs index 1b38c0d..9d10462 100644 --- a/Assets/__Scripts/PlayerShip.cs +++ b/Assets/__Scripts/PlayerShip.cs @@ -1,6 +1,9 @@ using System; using UnityEngine; using UnityEngine.InputSystem; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using Helpshift; [RequireComponent(typeof(Rigidbody))] public class PlayerShip : MonoBehaviour @@ -8,6 +11,10 @@ public class PlayerShip : MonoBehaviour [Header("Set in Inspector")] public float shipSpeed = 10f; + // Define a texture and GUIContent + private GUIContent button_tex_con; + + // This is a somewhat protected private singleton for PlayerShip static private PlayerShip _S; static public PlayerShip S @@ -31,7 +38,15 @@ private set public int health = 100; + public Texture button_tex; + public int bullets; + +#if (UNITY_WEBGL) + [DllImport("__Internal")] + private static extern void EnableHelpshift(string guid); +#endif + void Start() { S = this; @@ -59,6 +74,10 @@ void Start() { Debug.Log("No Gyro."); } + + // Define a GUIContent which uses the texture + this.button_tex_con = new GUIContent(button_tex); + this.button_tex_con.text = " Looks like you experienced a problem.\nClick here to report!"; } public void OnFire() @@ -66,6 +85,67 @@ public void OnFire() Fire(); } +#if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL)) + void OnGUI() { + + if (AsteraX.Hanging) + { + GUILayout.BeginArea(new Rect(0, 0, Screen.width, Screen.height)); + + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + + GUILayout.BeginVertical(); + // Starting a conversation with your customers + if (GUILayout.Button(button_tex_con)) + { +#if ((UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR) + Dictionary userDetails = new Dictionary + { + { "userId", "BestPlayerEver" }, + { "userEmail", "rcoleman@helpshift.com" }, + { "userName", "Ronnie Coleman" } + }; + AsteraX.help.Login(userDetails); + + var configMap = new Dictionary(); + Dictionary backtraceid = new Dictionary(); + backtraceid.Add("type", "singleline"); + backtraceid.Add("value", AsteraX.backtraceClient["guid"]); + Dictionary playerlevel = new Dictionary(); + playerlevel.Add("type", "number"); + playerlevel.Add("value", "35"); + Dictionary playerspend = new Dictionary(); + playerspend.Add("type", "number"); + playerspend.Add("value", "1750"); + Dictionary playerid = new Dictionary(); + playerid.Add("type", "singleline"); + playerid.Add("value", "BestPlayerEver"); + Dictionary playersegment = new Dictionary(); + playersegment.Add("type", "multiline"); + playersegment.Add("value", "vip"); + + Dictionary cifDictionary = new Dictionary(); + cifDictionary.Add("device_id", backtraceid); + cifDictionary.Add("level", playerlevel); + cifDictionary.Add("lifetime_spend", playerspend); + cifDictionary.Add("player_id", playerid); + cifDictionary.Add("segment", playersegment); + + configMap.Add("customIssueFields", cifDictionary); + AsteraX.help.ShowConversation(configMap); +#elif (UNITY_WEBGL) + PlayerShip.EnableHelpshift(AsteraX.backtraceClient["guid"]); +#endif + } + + GUILayout.EndVertical(); + GUILayout.EndHorizontal(); + GUILayout.EndArea(); + } + } +#endif + public void OnMove(InputValue value) { Vector2 vel = value.Get(); @@ -99,7 +179,7 @@ void Fire() if (this.bullets < 3) { - System.IO.File.ReadAllBytes("Path to not existing file"); + //System.IO.File.ReadAllBytes("Path to not existing file"); } } diff --git a/Logs/ApiUpdaterCheck.txt b/Logs/ApiUpdaterCheck.txt deleted file mode 100644 index cdbe1c8..0000000 --- a/Logs/ApiUpdaterCheck.txt +++ /dev/null @@ -1,460 +0,0 @@ -[api-updater (non-obsolete-error-filter)] 1/15/2021 4:42:46 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 100.245ms -moved types parse time: 49ms -candidates parse time : 1ms -C# parse time : 264ms -candidates check time : 39ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 1/27/2021 10:42:37 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 108.034ms -moved types parse time: 48ms -candidates parse time : 1ms -C# parse time : 257ms -candidates check time : 26ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 1/27/2021 10:42:38 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 44.701ms -moved types parse time: 43ms -candidates parse time : 1ms -C# parse time : 209ms -candidates check time : 32ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 1/27/2021 10:43:31 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 47.653ms -moved types parse time: 45ms -candidates parse time : 0ms -C# parse time : 208ms -candidates check time : 31ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 1/27/2021 10:43:32 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 50.212ms -moved types parse time: 50ms -candidates parse time : 1ms -C# parse time : 219ms -candidates check time : 28ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 1/27/2021 10:46:19 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 102.323ms -moved types parse time: 46ms -candidates parse time : 1ms -C# parse time : 250ms -candidates check time : 28ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 1/27/2021 10:46:19 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 48.451ms -moved types parse time: 50ms -candidates parse time : 1ms -C# parse time : 238ms -candidates check time : 30ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 2/9/2021 4:08:38 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 374.253ms -moved types parse time: 57ms -candidates parse time : 1ms -C# parse time : 250ms -candidates check time : 46ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 2/9/2021 4:13:29 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 113.356ms -moved types parse time: 52ms -candidates parse time : 1ms -C# parse time : 238ms -candidates check time : 45ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 2/9/2021 4:21:31 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 105.266ms -moved types parse time: 49ms -candidates parse time : 1ms -C# parse time : 230ms -candidates check time : 41ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 2/11/2021 12:26:07 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 370.857ms -moved types parse time: 49ms -candidates parse time : 1ms -C# parse time : 254ms -candidates check time : 43ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 3/8/2021 5:20:21 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 667.371ms -moved types parse time: 119ms -candidates parse time : 2ms -C# parse time : 533ms -candidates check time : 106ms -console write time : 1ms - -[api-updater (non-obsolete-error-filter)] 3/8/2021 5:53:34 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 148.159ms -moved types parse time: 87ms -candidates parse time : 2ms -C# parse time : 371ms -candidates check time : 51ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 3/8/2021 5:54:54 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 38.169ms -moved types parse time: 44ms -candidates parse time : 1ms -C# parse time : 182ms -candidates check time : 28ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 3/26/2021 8:22:55 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 374.995ms -moved types parse time: 48ms -candidates parse time : 1ms -C# parse time : 250ms -candidates check time : 37ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 1:25:11 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 390.991ms -moved types parse time: 54ms -candidates parse time : 1ms -C# parse time : 329ms -candidates check time : 52ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 1:25:50 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 47.784ms -moved types parse time: 51ms -candidates parse time : 1ms -C# parse time : 227ms -candidates check time : 63ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 1:26:46 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 58.851ms -moved types parse time: 84ms -candidates parse time : 1ms -C# parse time : 387ms -candidates check time : 70ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 1:32:27 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 42.461ms -moved types parse time: 51ms -candidates parse time : 1ms -C# parse time : 230ms -candidates check time : 41ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 1:48:41 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 45.739ms -moved types parse time: 53ms -candidates parse time : 1ms -C# parse time : 246ms -candidates check time : 45ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 1:53:53 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 48.341ms -moved types parse time: 52ms -candidates parse time : 1ms -C# parse time : 293ms -candidates check time : 55ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 1:55:16 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 45.547ms -moved types parse time: 56ms -candidates parse time : 2ms -C# parse time : 332ms -candidates check time : 63ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 2:10:29 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 112.582ms -moved types parse time: 60ms -candidates parse time : 1ms -C# parse time : 300ms -candidates check time : 49ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/3/2021 3:50:52 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 121.978ms -moved types parse time: 64ms -candidates parse time : 1ms -C# parse time : 315ms -candidates check time : 53ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 12:23:51 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 391.9ms -moved types parse time: 52ms -candidates parse time : 1ms -C# parse time : 277ms -candidates check time : 47ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 12:23:52 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 46.679ms -moved types parse time: 48ms -candidates parse time : 1ms -C# parse time : 229ms -candidates check time : 50ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 12:24:55 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 105.385ms -moved types parse time: 49ms -candidates parse time : 1ms -C# parse time : 258ms -candidates check time : 43ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 12:24:56 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 47.759ms -moved types parse time: 47ms -candidates parse time : 1ms -C# parse time : 216ms -candidates check time : 42ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 5:12:23 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 118.603ms -moved types parse time: 53ms -candidates parse time : 1ms -C# parse time : 258ms -candidates check time : 42ms -console write time : 1ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 6:44:11 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 115.894ms -moved types parse time: 47ms -candidates parse time : 0ms -C# parse time : 262ms -candidates check time : 58ms -console write time : 1ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 7:13:43 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 115.174ms -moved types parse time: 50ms -candidates parse time : 1ms -C# parse time : 270ms -candidates check time : 40ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 7:14:04 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 49.513ms -moved types parse time: 45ms -candidates parse time : 1ms -C# parse time : 212ms -candidates check time : 36ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 7:14:17 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 50.09ms -moved types parse time: 57ms -candidates parse time : 3ms -C# parse time : 227ms -candidates check time : 38ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 7:14:29 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 57.979ms -moved types parse time: 48ms -candidates parse time : 1ms -C# parse time : 211ms -candidates check time : 51ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 7:14:36 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 48.857ms -moved types parse time: 47ms -candidates parse time : 1ms -C# parse time : 234ms -candidates check time : 38ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 7:14:52 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 52.788ms -moved types parse time: 46ms -candidates parse time : 1ms -C# parse time : 207ms -candidates check time : 45ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/11/2021 7:15:07 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 48.357ms -moved types parse time: 47ms -candidates parse time : 1ms -C# parse time : 224ms -candidates check time : 39ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/19/2021 12:00:46 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 398.75ms -moved types parse time: 57ms -candidates parse time : 1ms -C# parse time : 274ms -candidates check time : 55ms -console write time : 1ms - -[api-updater (non-obsolete-error-filter)] 5/19/2021 12:01:19 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 103.064ms -moved types parse time: 48ms -candidates parse time : 1ms -C# parse time : 254ms -candidates check time : 49ms -console write time : 1ms - -[api-updater (non-obsolete-error-filter)] 5/19/2021 5:47:23 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 250.381ms -moved types parse time: 57ms -candidates parse time : 1ms -C# parse time : 272ms -candidates check time : 49ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/19/2021 5:47:42 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 45.479ms -moved types parse time: 45ms -candidates parse time : 1ms -C# parse time : 222ms -candidates check time : 64ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/19/2021 9:26:24 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 459.507ms -moved types parse time: 51ms -candidates parse time : 1ms -C# parse time : 277ms -candidates check time : 56ms -console write time : 1ms - -[api-updater (non-obsolete-error-filter)] 5/21/2021 10:38:16 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 405.721ms -moved types parse time: 57ms -candidates parse time : 1ms -C# parse time : 303ms -candidates check time : 64ms -console write time : 1ms - -[api-updater (non-obsolete-error-filter)] 5/21/2021 10:58:37 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 407.819ms -moved types parse time: 54ms -candidates parse time : 1ms -C# parse time : 285ms -candidates check time : 46ms -console write time : 0ms - -[api-updater (non-obsolete-error-filter)] 5/28/2021 10:47:29 AM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 90.867ms -moved types parse time: 48ms -candidates parse time : 1ms -C# parse time : 256ms -candidates check time : 42ms -console write time : 1ms - -[api-updater (non-obsolete-error-filter)] 5/28/2021 3:44:00 PM : Starting /Applications/2020.2.1f1/Unity.app/Contents/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe -[api-updater (non-obsolete-error-filter)] ----------------------------------- -jit/startup time : 70.1ms -moved types parse time: 48ms -candidates parse time : 1ms -C# parse time : 260ms -candidates check time : 48ms -console write time : 0ms - diff --git a/Logs/Packages-Update.log b/Logs/Packages-Update.log deleted file mode 100644 index e5aac54..0000000 --- a/Logs/Packages-Update.log +++ /dev/null @@ -1,91 +0,0 @@ - -=== Mon Mar 16 15:29:18 2020 - -Packages were changed. -Update Mode: updateDependencies - -The following packages were added: - com.unity.analytics@3.2.3 - com.unity.purchasing@2.0.3 - com.unity.ads@2.0.8 - com.unity.textmeshpro@1.4.1 - com.unity.package-manager-ui@2.0.8 - com.unity.collab-proxy@1.2.15 - com.unity.modules.ai@1.0.0 - com.unity.modules.animation@1.0.0 - com.unity.modules.assetbundle@1.0.0 - com.unity.modules.audio@1.0.0 - com.unity.modules.cloth@1.0.0 - com.unity.modules.director@1.0.0 - com.unity.modules.imageconversion@1.0.0 - com.unity.modules.imgui@1.0.0 - com.unity.modules.jsonserialize@1.0.0 - com.unity.modules.particlesystem@1.0.0 - com.unity.modules.physics@1.0.0 - com.unity.modules.physics2d@1.0.0 - com.unity.modules.screencapture@1.0.0 - com.unity.modules.terrain@1.0.0 - com.unity.modules.terrainphysics@1.0.0 - com.unity.modules.tilemap@1.0.0 - com.unity.modules.ui@1.0.0 - com.unity.modules.uielements@1.0.0 - com.unity.modules.umbra@1.0.0 - com.unity.modules.unityanalytics@1.0.0 - com.unity.modules.unitywebrequest@1.0.0 - com.unity.modules.unitywebrequestassetbundle@1.0.0 - com.unity.modules.unitywebrequestaudio@1.0.0 - com.unity.modules.unitywebrequesttexture@1.0.0 - com.unity.modules.unitywebrequestwww@1.0.0 - com.unity.modules.vehicles@1.0.0 - com.unity.modules.video@1.0.0 - com.unity.modules.vr@1.0.0 - com.unity.modules.wind@1.0.0 - com.unity.modules.xr@1.0.0 - -=== Tue Aug 18 11:43:28 2020 - -Packages were changed. -Update Mode: updateDependencies - -The following packages were added: - com.unity.2d.sprite@1.0.0 - com.unity.2d.tilemap@1.0.0 - com.unity.ide.rider@1.1.4 - com.unity.ide.vscode@1.2.1 - com.unity.modules.androidjni@1.0.0 - com.unity.multiplayer-hlapi@1.0.6 - com.unity.test-framework@1.1.16 - com.unity.timeline@1.2.6 - com.unity.ugui@1.0.0 - com.unity.xr.legacyinputhelpers@2.1.4 -The following packages were updated: - com.unity.ads from version 2.0.8 to 3.4.7 - com.unity.analytics from version 3.2.3 to 3.3.5 - com.unity.collab-proxy from version 1.2.15 to 1.2.16 - com.unity.purchasing from version 2.0.3 to 2.0.6 - com.unity.textmeshpro from version 1.4.1 to 2.0.1 -The following packages were removed: - com.unity.package-manager-ui@2.0.8 - -<<<<<<< HEAD -=== Fri Jan 15 16:42:19 2021 -======= -=== Wed Jan 13 17:06:13 2021 ->>>>>>> e5bd6cc54d19c8cdf2d91666e48a98c2b3859289 - -Packages were changed. -Update Mode: updateDependencies - -The following packages were added: - com.unity.ide.visualstudio@2.0.5 -The following packages were updated: - com.unity.ads from version 3.4.7 to 3.5.2 - com.unity.analytics from version 3.3.5 to 3.5.3 - com.unity.collab-proxy from version 1.2.16 to 1.3.9 - com.unity.ide.rider from version 1.1.4 to 2.0.7 - com.unity.ide.vscode from version 1.2.1 to 1.2.3 - com.unity.inputsystem from version 1.0.0 to 1.0.1 - com.unity.purchasing from version 2.0.6 to 2.1.1 - com.unity.test-framework from version 1.1.16 to 1.1.19 - com.unity.textmeshpro from version 2.0.1 to 3.0.1 - com.unity.xr.legacyinputhelpers from version 2.1.4 to 2.1.6 diff --git a/Packages/manifest.json b/Packages/manifest.json index 307ed5c..bced66b 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -2,18 +2,18 @@ "dependencies": { "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", - "com.unity.ads": "3.5.2", + "com.unity.ads": "3.7.1", "com.unity.analytics": "3.5.3", "com.unity.ide.rider": "2.0.7", - "com.unity.ide.visualstudio": "2.0.5", + "com.unity.ide.visualstudio": "2.0.9", "com.unity.ide.vscode": "1.2.3", - "com.unity.inputsystem": "1.0.1", + "com.unity.inputsystem": "1.0.2", "com.unity.multiplayer-hlapi": "1.0.6", - "com.unity.purchasing": "2.1.1", - "com.unity.test-framework": "1.1.19", - "com.unity.timeline": "1.2.6", + "com.unity.purchasing": "3.2.2", + "com.unity.test-framework": "1.1.26", + "com.unity.timeline": "1.4.8", "com.unity.ugui": "1.0.0", - "com.unity.xr.legacyinputhelpers": "2.1.6", + "com.unity.xr.legacyinputhelpers": "2.1.7", "io.backtrace.unity": "https://github.com/backtrace-labs/backtrace-unity.git#7e10fc53f681c25f5e3774729fdfe6efa98859a8", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", @@ -55,6 +55,13 @@ "com.openupm", "io.backtrace.unity" ] + }, + { + "name": "Game Package Registry by Google", + "url": "https://unityregistry-pa.googleapis.com", + "scopes": [ + "com.google" + ] } ] -} +} \ No newline at end of file diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 7a154f2..4aa1e13 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -13,7 +13,7 @@ "dependencies": {} }, "com.unity.ads": { - "version": "3.5.2", + "version": "3.7.1", "depth": 0, "source": "registry", "dependencies": { @@ -31,7 +31,7 @@ "url": "https://packages.unity.com" }, "com.unity.ext.nunit": { - "version": "1.0.5", + "version": "1.0.6", "depth": 1, "source": "registry", "dependencies": {}, @@ -47,10 +47,12 @@ "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { - "version": "2.0.5", + "version": "2.0.9", "depth": 0, "source": "registry", - "dependencies": {}, + "dependencies": { + "com.unity.test-framework": "1.1.9" + }, "url": "https://packages.unity.com" }, "com.unity.ide.vscode": { @@ -61,7 +63,7 @@ "url": "https://packages.unity.com" }, "com.unity.inputsystem": { - "version": "1.0.1", + "version": "1.0.2", "depth": 0, "source": "registry", "dependencies": {}, @@ -77,30 +79,39 @@ "url": "https://packages.unity.com" }, "com.unity.purchasing": { - "version": "2.1.1", + "version": "3.2.2", "depth": 0, "source": "registry", "dependencies": { - "com.unity.ugui": "1.0.0" + "com.unity.ugui": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.androidjni": "1.0.0" }, "url": "https://packages.unity.com" }, "com.unity.test-framework": { - "version": "1.1.19", + "version": "1.1.26", "depth": 0, "source": "registry", "dependencies": { - "com.unity.ext.nunit": "1.0.5", + "com.unity.ext.nunit": "1.0.6", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.com" }, "com.unity.timeline": { - "version": "1.2.6", + "version": "1.4.8", "depth": 0, "source": "registry", - "dependencies": {}, + "dependencies": { + "com.unity.modules.director": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0" + }, "url": "https://packages.unity.com" }, "com.unity.ugui": { @@ -113,18 +124,21 @@ } }, "com.unity.xr.legacyinputhelpers": { - "version": "2.1.6", + "version": "2.1.7", "depth": 0, "source": "registry", - "dependencies": {}, + "dependencies": { + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.xr": "1.0.0" + }, "url": "https://packages.unity.com" }, "io.backtrace.unity": { - "version": "https://github.com/backtrace-labs/backtrace-unity.git#bf1815c7427c70c473674ea83597cb067658f458", + "version": "https://github.com/backtrace-labs/backtrace-unity.git#7e10fc53f681c25f5e3774729fdfe6efa98859a8", "depth": 0, "source": "git", "dependencies": {}, - "hash": "bf1815c7427c70c473674ea83597cb067658f458" + "hash": "7e10fc53f681c25f5e3774729fdfe6efa98859a8" }, "nuget.mono-cecil": { "version": "0.1.6-preview", diff --git a/ProjectSettings/AndroidResolverDependencies.xml b/ProjectSettings/AndroidResolverDependencies.xml new file mode 100644 index 0000000..55f6dac --- /dev/null +++ b/ProjectSettings/AndroidResolverDependencies.xml @@ -0,0 +1,51 @@ + + + com.android.support:appcompat-v7:28.0.0 + + + Assets/Plugins/Android/android.arch.core.common-1.1.1.jar + Assets/Plugins/Android/android.arch.core.runtime-1.1.1.aar + Assets/Plugins/Android/android.arch.lifecycle.common-1.1.1.jar + Assets/Plugins/Android/android.arch.lifecycle.livedata-1.1.1.aar + Assets/Plugins/Android/android.arch.lifecycle.livedata-core-1.1.1.aar + Assets/Plugins/Android/android.arch.lifecycle.runtime-1.1.1.aar + Assets/Plugins/Android/android.arch.lifecycle.viewmodel-1.1.1.aar + Assets/Plugins/Android/com.android.support.animated-vector-drawable-28.0.0.aar + Assets/Plugins/Android/com.android.support.appcompat-v7-28.0.0.aar + Assets/Plugins/Android/com.android.support.asynclayoutinflater-28.0.0.aar + Assets/Plugins/Android/com.android.support.collections-28.0.0.jar + Assets/Plugins/Android/com.android.support.coordinatorlayout-28.0.0.aar + Assets/Plugins/Android/com.android.support.cursoradapter-28.0.0.aar + Assets/Plugins/Android/com.android.support.customview-28.0.0.aar + Assets/Plugins/Android/com.android.support.documentfile-28.0.0.aar + Assets/Plugins/Android/com.android.support.drawerlayout-28.0.0.aar + Assets/Plugins/Android/com.android.support.interpolator-28.0.0.aar + Assets/Plugins/Android/com.android.support.loader-28.0.0.aar + Assets/Plugins/Android/com.android.support.localbroadcastmanager-28.0.0.aar + Assets/Plugins/Android/com.android.support.print-28.0.0.aar + Assets/Plugins/Android/com.android.support.slidingpanelayout-28.0.0.aar + Assets/Plugins/Android/com.android.support.support-annotations-28.0.0.jar + Assets/Plugins/Android/com.android.support.support-compat-28.0.0.aar + Assets/Plugins/Android/com.android.support.support-core-ui-28.0.0.aar + Assets/Plugins/Android/com.android.support.support-core-utils-28.0.0.aar + Assets/Plugins/Android/com.android.support.support-fragment-28.0.0.aar + Assets/Plugins/Android/com.android.support.support-vector-drawable-28.0.0.aar + Assets/Plugins/Android/com.android.support.swiperefreshlayout-28.0.0.aar + Assets/Plugins/Android/com.android.support.versionedparcelable-28.0.0.aar + Assets/Plugins/Android/com.android.support.viewpager-28.0.0.aar + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProjectSettings/GvhProjectSettings.xml b/ProjectSettings/GvhProjectSettings.xml new file mode 100644 index 0000000..ac7de95 --- /dev/null +++ b/ProjectSettings/GvhProjectSettings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset index fe0d96a..2ed4a79 100644 --- a/ProjectSettings/PackageManagerSettings.asset +++ b/ProjectSettings/PackageManagerSettings.asset @@ -32,6 +32,13 @@ MonoBehaviour: - io.backtrace.unity m_IsDefault: 0 m_Capabilities: 0 + - m_Id: scoped:Game Package Registry by Google + m_Name: Game Package Registry by Google + m_Url: https://unityregistry-pa.googleapis.com + m_Scopes: + - com.google + m_IsDefault: 0 + m_Capabilities: 0 m_UserSelectedRegistryName: m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: @@ -51,4 +58,4 @@ MonoBehaviour: m_Scopes: - com.openupm - io.backtrace.unity - m_SelectedScopeIndex: 1 + m_SelectedScopeIndex: 0 diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 837bea7..09254a3 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -158,6 +158,16 @@ PlayerSettings: - {fileID: 0} - {fileID: 0} - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 @@ -177,13 +187,13 @@ PlayerSettings: applicationIdentifier: Android: io.backtrace.asterax Standalone: io.backtrace.asterax - iPhone: io.backtrace.asterax + iPhone: io.backtrace.asterax2 buildNumber: Standalone: 0 - iPhone: 1 + iPhone: 9 tvOS: 0 overrideDefaultApplicationIdentifier: 1 - AndroidBundleVersionCode: 1 + AndroidBundleVersionCode: 6 AndroidMinSdkVersion: 19 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 @@ -246,7 +256,7 @@ PlayerSettings: metalAPIValidation: 1 iOSRenderExtraFrameOnPause: 0 iosCopyPluginsCodeInsteadOfSymlink: 0 - appleDeveloperTeamID: ZNMJ8N3LU6 + appleDeveloperTeamID: LZGFT5UUA9 iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: iOSManualSigningProvisioningProfileType: 0 @@ -266,7 +276,7 @@ PlayerSettings: useCustomBaseGradleTemplate: 0 useCustomGradlePropertiesTemplate: 0 useCustomProguardFile: 0 - AndroidTargetArchitectures: 3 + AndroidTargetArchitectures: 1 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: '{inproject}: keystore.keystore' @@ -790,7 +800,7 @@ PlayerSettings: platformArchitecture: iPhone: 1 scriptingBackend: - Android: 1 + Android: 0 Standalone: 0 il2cppCompilerConfiguration: {} managedStrippingLevel: {} @@ -808,8 +818,8 @@ PlayerSettings: WebGL: 6 m_RenderingPath: 1 m_MobileRenderingPath: 1 - metroPackageName: "AsteraX \u2013 Jeremy Bond" - metroPackageVersion: + metroPackageName: AsteraXJeremyBond + metroPackageVersion: 1.0.0.0 metroCertificatePath: metroCertificatePassword: metroCertificateSubject: @@ -817,7 +827,7 @@ PlayerSettings: metroCertificateNotAfter: 0000000000000000 metroApplicationDescription: "AsteraX \u2013 Jeremy Bond" wsaImages: {} - metroTileShortName: + metroTileShortName: AsteraX metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index a328ffd..95c2fc9 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2020.2.1f1 -m_EditorVersionWithRevision: 2020.2.1f1 (270dd8c3da1c) +m_EditorVersion: 2020.3.13f1 +m_EditorVersionWithRevision: 2020.3.13f1 (71691879b7f5) diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset index 29a4fcf..7105734 100644 --- a/ProjectSettings/UnityConnectSettings.asset +++ b/ProjectSettings/UnityConnectSettings.asset @@ -9,6 +9,7 @@ UnityConnectSettings: m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_DashboardUrl: https://dashboard.unity3d.com m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com diff --git a/ProjectSettings/VersionControlSettings.asset b/ProjectSettings/VersionControlSettings.asset index 63f412e..dca2881 100644 Binary files a/ProjectSettings/VersionControlSettings.asset and b/ProjectSettings/VersionControlSettings.asset differ diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index d2ce6fb..9ac555c 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -5,6 +5,12 @@ EditorUserSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_ConfigSettings: + RecentlyUsedScenePath-0: + value: 224247031146467308021c31182a59045932002b21382a356201183ff2f33c31e4f313f1e6372f303c4cfa320d2a18 + flags: 0 + RecentlyUsedScenePath-1: + value: 22424703114646643e0d092c1530102f25141d242917767e38271427fb + flags: 0 vcSharedLogLevel: value: 0d5e400f0650 flags: 0