diff --git a/Assets/Appodeal.meta b/Assets/Appodeal.meta
new file mode 100644
index 0000000..4554e6e
--- /dev/null
+++ b/Assets/Appodeal.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 1c3413686ff4e435f9aafc02bd1bf65e
+folderAsset: yes
+timeCreated: 1530702704
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Api.meta b/Assets/Appodeal/Api.meta
new file mode 100644
index 0000000..957135b
--- /dev/null
+++ b/Assets/Appodeal/Api.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 1c56ccdd8b8194e30b1fd0a6b41fc1a5
+folderAsset: yes
+timeCreated: 1530702704
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ExternalDependencyManager/Editor/1.2.175.meta b/Assets/Appodeal/Api/Appodeal.meta
similarity index 77%
rename from Assets/ExternalDependencyManager/Editor/1.2.175.meta
rename to Assets/Appodeal/Api/Appodeal.meta
index bfaa5a9..a113fd4 100644
--- a/Assets/ExternalDependencyManager/Editor/1.2.175.meta
+++ b/Assets/Appodeal/Api/Appodeal.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 28fc461b677833c4e8f53404ac6b02e5
+guid: 28d5a1f972ada459da5a7b9b2138fa02
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Appodeal/Api/Appodeal/Appodeal.cs b/Assets/Appodeal/Api/Appodeal/Appodeal.cs
new file mode 100644
index 0000000..4c41c8f
--- /dev/null
+++ b/Assets/Appodeal/Api/Appodeal/Appodeal.cs
@@ -0,0 +1,1305 @@
+using System;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using UnityEngine;
+using AppodealAds.Unity.Common;
+using ConsentManager;
+
+namespace AppodealAds.Unity.Api
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "UnusedType.Global")]
+ public class AppodealNetworks
+ {
+ public const string A4G = "a4g";
+ public const string ADCOLONY = "adcolony";
+ public const string ADMOB = "admob";
+ public const string APPLOVIN = "applovin";
+ public const string APPODEAL = "appodeal";
+ public const string BIDMACHINE = "bidmachine";
+ public const string META = "facebook";
+ public const string IRONSOURCE = "ironsource";
+ public const string MRAID = "mraid";
+ public const string MY_TARGET = "my_target";
+ public const string NAST = "nast";
+ public const string NOTSY = "notsy";
+ public const string UNITY_ADS = "unity_ads";
+ public const string VAST = "vast";
+ public const string VUNGLE = "vungle";
+ public const string YANDEX = "yandex";
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMethodReturnValue.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "InvalidXmlDocComment")]
+ public static class Appodeal
+ {
+ #region AdTypes
+
+ public const int NONE = 0;
+ public const int INTERSTITIAL = 3;
+ public const int BANNER = 4;
+ public const int BANNER_BOTTOM = 8;
+ public const int BANNER_TOP = 16;
+ public const int BANNER_VIEW = 64;
+ public const int MREC = 512;
+ public const int REWARDED_VIDEO = 128;
+ public const int BANNER_LEFT = 1024;
+ public const int BANNER_RIGHT = 2048;
+
+ public const int BANNER_HORIZONTAL_SMART = -1;
+ public const int BANNER_HORIZONTAL_CENTER = -2;
+ public const int BANNER_HORIZONTAL_RIGHT = -3;
+ public const int BANNER_HORIZONTAL_LEFT = -4;
+
+ #endregion
+
+ ///
+ /// The version for the Appodeal Unity SDK, which includes specific versions of the Appodeal Android and iOS SDKs.
+ ///
+ public const string APPODEAL_PLUGIN_VERSION = "3.1.3";
+
+ public enum LogLevel
+ {
+ None,
+ Debug,
+ Verbose
+ }
+
+ public enum GdprUserConsent
+ {
+ Unknown,
+ Personalized,
+ NonPersonalized
+ }
+
+ public enum CcpaUserConsent
+ {
+ Unknown,
+ OptIn,
+ OptOut
+ }
+
+ public enum PlayStorePurchaseType
+ {
+ Subs,
+ InApp
+ }
+
+ public enum AppStorePurchaseType
+ {
+ Consumable,
+ NonConsumable,
+ AutoRenewableSubscription,
+ NonRenewingSubscription
+ }
+
+ private static IAppodealAdsClient client;
+
+ private static IAppodealAdsClient getInstance()
+ {
+ return client ?? (client = AppodealAdsClientFactory.GetAppodealAdsClient());
+ }
+
+ ///
+ ///
+ /// Initializes the relevant (Android or iOS) Appodeal SDK.
+ /// See for resulting triggered event.
+ ///
+ /// To initialize only interstitials use:Appodeal.initialize(appKey, Appodeal.INTERSTITIAL, this);
+ /// To initialize only banners use:Appodeal.initialize(appKey, Appodeal.BANNER, this);
+ /// To initialize only rewarded video use:Appodeal.initialize(appKey, Appodeal.REWARDED_VIDEO, this);
+ /// To initialize only 300*250 banners use:Appodeal.initialize(appKey, Appodeal.MREC, this);
+ /// To initialize multiple ad types use the operator:Appodeal.Initialize(appKey, Appodeal.INTERSTITIAL | Appodeal.BANNER, this);
+ ///
+ /// See for more details.
+ /// appodeal app key that was assigned to your app when it was created.
+ /// type of advertisement you want to initialize.
+ /// class which implements AppodealStack.Mediation.Common.IAppodealInitializeListener interface.
+ public static void initialize(string appKey, int adTypes, IAppodealInitializationListener listener = null)
+ {
+ getInstance().initialize(appKey, adTypes, listener);
+ }
+
+ ///
+ /// Check if ad type is initialized
+ /// See for resulting triggered event.
+ /// adType type of advertising.
+ ///
+ public static bool isInitialized(int adType)
+ {
+ return getInstance().isInitialized(adType);
+ }
+
+ ///
+ /// Update consent value for ad networks in Appodeal SDK
+ /// See for resulting triggered event.
+ /// Consent user has given consent to the processing of personal data relating to him or her. https://www.eugdpr.org/.
+ ///
+ public static void updateConsent(Consent consent)
+ {
+ getInstance().updateConsent(consent);
+ }
+
+ ///
+ /// Updates consent value (GDPR regulation) used by ad networks and services of Appodeal SDK.
+ /// See for more details.
+ ///
+ /// Calling this method before SDK initialization will result in disabling Consent Manager window showing. However, Consent Manager still will be synchronized using the consent object passed in this method.
+ /// user's consent on processing of their personal data. https://www.eugdpr.org
+ public static void updateGdprConsent(GdprUserConsent consent)
+ {
+ getInstance().updateGdprConsent(consent);
+ }
+
+ ///
+ /// Updates consent value (CCPA regulation) used by ad networks and services of Appodeal SDK.
+ /// See for more details.
+ ///
+ /// Calling this method before SDK initialization will result in disabling Consent Manager window showing. However, Consent Manager still will be synchronized using the consent object passed in this method.
+ /// user's consent on processing of their personal data. https://oag.ca.gov/privacy/ccpa
+ public static void updateCcpaConsent(CcpaUserConsent consent)
+ {
+ getInstance().updateCcpaConsent(consent);
+ }
+
+ ///
+ /// Check if auto cache enabled for this ad type
+ /// See for resulting triggered event.
+ /// adType type of advertising.
+ ///
+ public static bool isAutoCacheEnabled(int adType)
+ {
+ return getInstance().isAutoCacheEnabled(adType);
+ }
+
+ ///
+ /// Set Interstitial ads callbacks
+ /// See for resulting triggered event.
+ /// callbacks implementation of Appodeal/Common/Appodeal/IInterstitialAdListener.
+ ///
+ public static void setInterstitialCallbacks(IInterstitialAdListener listener)
+ {
+ getInstance().setInterstitialCallbacks(listener);
+ }
+
+ ///
+ /// Set Interstitial ads callbacks
+ /// See for resulting triggered event.
+ /// callbacks implementation of Appodeal/Common/Appodeal/IRewardedVideoAdListener.
+ ///
+ public static void setRewardedVideoCallbacks(IRewardedVideoAdListener listener)
+ {
+ getInstance().setRewardedVideoCallbacks(listener);
+ }
+
+ ///
+ /// Set Interstitial ads callbacks
+ /// See for resulting triggered event.
+ /// callbacks implementation of Appodeal/Common/Appodeal/IBannerAdListener.
+ ///
+ public static void setBannerCallbacks(IBannerAdListener listener)
+ {
+ getInstance().setBannerCallbacks(listener);
+ }
+
+ ///
+ /// Set Interstitial ads callbacks
+ /// See for resulting triggered event.
+ /// callbacks implementation of Appodeal/Common/Appodeal/IMrecAdListener.
+ ///
+ public static void setMrecCallbacks(IMrecAdListener listener)
+ {
+ getInstance().setMrecCallbacks(listener);
+ }
+
+ ///
+ ///
+ /// Sets Ad Revenue callback.
+ ///
+ /// Read before implementing callbacks.
+ ///
+ /// See for more details.
+ /// class which implements AppodealAds.Unity.Common.IAdRevenueListener interface.
+ public static void setAdRevenueCallback(IAdRevenueListener listener)
+ {
+ getInstance().setAdRevenueCallback(listener);
+ }
+
+ ///
+ /// Start caching ads.
+ /// See for resulting triggered event.
+ /// adType type of advertising.
+ ///
+ public static void cache(int adTypes)
+ {
+ getInstance().cache(adTypes);
+ }
+
+ ///
+ /// Show advertising.
+ /// See for resulting triggered event.
+ /// adType type of advertising.
+ ///
+ public static bool show(int adTypes)
+ {
+ return getInstance().show(adTypes);
+ }
+
+ ///
+ /// Show advertising.
+ /// See for resulting triggered event.
+ /// adType type of advertising.
+ /// type of advertising you want to show.
+ ///
+ public static bool show(int adTypes, string placement)
+ {
+ return getInstance().show(adTypes, placement);
+ }
+
+ ///
+ /// Show banner view.
+ /// See for resulting triggered event.
+ /// y position for banner view.
+ /// x position for banner view.
+ /// type of advertising you want to show.
+ ///
+ public static bool showBannerView(int YAxis, int XGravity, string placement)
+ {
+ return getInstance().showBannerView(YAxis, XGravity, placement);
+ }
+
+ ///
+ /// Show mrec view.
+ /// See for resulting triggered event.
+ /// y position for mrec view.
+ /// x position for mrec view.
+ /// type of advertising you want to show.
+ ///
+ public static bool showMrecView(int YAxis, int XGravity, string placement)
+ {
+ return getInstance().showMrecView(YAxis, XGravity, placement);
+ }
+
+ ///
+ /// Hide advertising.
+ /// See for resulting triggered event.
+ /// adType type of advertising Appodeal.BANNER
+ ///
+ public static void hide(int adTypes)
+ {
+ getInstance().hide(adTypes);
+ }
+
+ ///
+ /// Hide Banner View.
+ /// See for resulting triggered event.
+ ///
+ public static void hideBannerView()
+ {
+ getInstance().hideBannerView();
+ }
+
+ ///
+ /// Hide Mrec view.
+ /// See for resulting triggered event.
+ ///
+ public static void hideMrecView()
+ {
+ getInstance().hideMrecView();
+ }
+
+ ///
+ /// Start or stop auto caching new ads when current ads was shown..
+ /// See for resulting triggered event.
+ /// adType type of advertising
+ /// true to use auto cache, false to not.
+ ///
+ public static void setAutoCache(int adTypes, bool autoCache)
+ {
+ getInstance().setAutoCache(adTypes, autoCache);
+ }
+
+ ///
+ /// Triggering onLoaded callback when precache loaded.
+ /// See for resulting triggered event.
+ /// adType type of advertising
+ /// true - onLoaded will trigger when precache or normal ad were loaded.
+ /// false - onLoaded will trigger only when normal ad was loaded (default).
+ ///
+ public static void setTriggerOnLoadedOnPrecache(int adTypes, bool onLoadedTriggerBoth)
+ {
+ getInstance().setTriggerOnLoadedOnPrecache(adTypes, onLoadedTriggerBoth);
+ }
+
+ ///
+ /// Checking if ad is loaded. Return true if ads currently loaded and can be shown.
+ /// See for resulting triggered event.
+ /// adType type of advertising
+ ///
+ public static bool isLoaded(int adTypes)
+ {
+ return getInstance().isLoaded(adTypes);
+ }
+
+ ///
+ /// Checking if loaded ad is precache. Return true if currently loaded ads is precache.
+ /// See for resulting triggered event.
+ /// adType type of advertising. Currently supported only for interstitials.
+ ///
+ public static bool isPrecache(int adTypes)
+ {
+ return getInstance().isPrecache(adTypes);
+ }
+
+ ///
+ /// Enabling or disabling smart banners (Enabled by default).
+ /// See for resulting triggered event.
+ /// enabled enabling or disabling loading smart banners.
+ ///
+ public static void setSmartBanners(bool enabled)
+ {
+ getInstance().setSmartBanners(enabled);
+ }
+
+ ///
+ ///
+ /// Checks whether or not smart banners feature is enabled. (It is by default).
+ ///
+ /// It is usually used along with the method.
+ ///
+ /// See for more details.
+ /// True if smart banners are enabled, otherwise - false.
+ public static bool isSmartBannersEnabled()
+ {
+ return getInstance().isSmartBannersEnabled();
+ }
+
+ ///
+ /// Enabling or disabling 728*90 banners (Disabled by default).
+ /// See for resulting triggered event.
+ /// enabled enabling or disabling loading 728*90 banners.
+ ///
+ public static void setTabletBanners(bool enabled)
+ {
+ getInstance().setTabletBanners(enabled);
+ }
+
+ ///
+ /// Enabling animation of banners (Enabled by default).
+ /// See for resulting triggered event.
+ /// animate enabling or disabling animations.
+ ///
+ public static void setBannerAnimation(bool enabled)
+ {
+ getInstance().setBannerAnimation(enabled);
+ }
+
+ ///
+ /// Setting banners inverse rotation (by default: left = -90, right = 90).
+ /// See for resulting triggered event.
+ /// leftBannerRotation rotation for Appodeal.BANNER_LEFT.
+ /// leftBannerRotation rotation for Appodeal.BANNER_RIGHT.
+ ///
+ public static void setBannerRotation(int leftBannerRotation, int rightBannerRotation)
+ {
+ getInstance().setBannerRotation(leftBannerRotation, rightBannerRotation);
+ }
+
+ ///
+ /// Tracks in-app purchase information and sends info to our servers for analytics.
+ /// See for resulting triggered event.
+ /// amount of purchase.
+ /// currency of purchase.
+ ///
+ public static void trackInAppPurchase(double amount, string currency)
+ {
+ getInstance().trackInAppPurchase(amount, currency);
+ }
+
+ ///
+ ///
+ /// Gets a list of available ad networks for certain ad type.
+ ///
+ /// Usage example:Appodeal.getNetworks(Appodeal.INTERSTITIAL);
+ ///
+ /// type of advertisement.
+ /// List of available ad networks for the specified ad type.
+ public static List getNetworks(int adType)
+ {
+ return getInstance().getNetworks(adType);
+ }
+
+ ///
+ /// Disabling specified network for all ad types.
+ /// See for resulting triggered event.
+ /// network name.
+ ///
+ public static void disableNetwork(string network)
+ {
+ getInstance().disableNetwork(network);
+ }
+
+ ///
+ /// Disabling specified network for specified ad types.
+ /// See for resulting triggered event.
+ /// network name.
+ ///
+ public static void disableNetwork(string network, int adType)
+ {
+ getInstance().disableNetwork(network, adType);
+ }
+
+ ///
+ /// Disabling location tracking (for iOS platform only).
+ /// See for resulting triggered event.
+ ///
+ public static void disableLocationPermissionCheck()
+ {
+ getInstance().disableLocationPermissionCheck();
+ }
+
+ ///
+ /// Set user id.
+ /// See for resulting triggered event.
+ /// user id.
+ ///
+ public static void setUserId(string id)
+ {
+ getInstance().setUserId(id);
+ }
+
+ /// Gets user id.
+ /// See for more details.
+ /// User id as string.
+ public static string getUserId()
+ {
+ return getInstance().getUserId();
+ }
+
+ /// Gets active segment id.
+ /// See for more details.
+ /// Segment id as long.
+ public static long getSegmentId()
+ {
+ return getInstance().getSegmentId();
+ }
+
+ ///
+ /// Set test mode.
+ /// See for resulting triggered event.
+ ///
+ public static void setTesting(bool test)
+ {
+ getInstance().setTesting(test);
+ }
+
+ ///
+ /// Set log level. All logs will be written with tag "Appodeal".
+ /// See for resulting triggered event.
+ /// logLevel log level .
+ ///
+ public static void setLogLevel(LogLevel log)
+ {
+ getInstance().setLogLevel(log);
+ }
+
+ ///
+ /// Set custom segment filter.
+ /// See for resulting triggered event.
+ /// name name of the filter.
+ /// value filter value.
+ ///
+ public static void setCustomFilter(string name, bool value)
+ {
+ getInstance().setCustomFilter(name, value);
+ }
+
+ ///
+ /// Set custom segment filter.
+ /// See for resulting triggered event.
+ /// name name of the filter.
+ /// value filter value.
+ ///
+ public static void setCustomFilter(string name, int value)
+ {
+ getInstance().setCustomFilter(name, value);
+ }
+
+ ///
+ /// Set custom segment filter.
+ /// See for resulting triggered event.
+ /// name name of the filter.
+ /// value filter value.
+ ///
+ public static void setCustomFilter(string name, double value)
+ {
+ getInstance().setCustomFilter(name, value);
+ }
+
+ ///
+ /// Set custom segment filter.
+ /// See for resulting triggered event.
+ /// name name of the filter.
+ /// value filter value.
+ ///
+ public static void setCustomFilter(string name, string value)
+ {
+ getInstance().setCustomFilter(name, value);
+ }
+
+ ///
+ ///
+ /// Resets custom filter value by the provided key.
+ ///
+ /// See for more details.
+ ///
+ /// Use it to remove a filter, that was previously set via one of the methods.
+ /// name of the filter.
+ public static void resetCustomFilter(string name)
+ {
+ getInstance().resetCustomFilter(name);
+ }
+
+ ///
+ /// Check if ad with specific ad type can be shown with placement.
+ /// See for resulting triggered event.
+ /// type of advertising.
+ ///
+ public static bool canShow(int adTypes)
+ {
+ return getInstance().canShow(adTypes);
+ }
+
+ ///
+ /// Check if ad with specific ad type can be shown with placement.
+ /// See for resulting triggered event.
+ /// type of advertising.
+ /// placement name.
+ ///
+ public static bool canShow(int adTypes, string placement)
+ {
+ return getInstance().canShow(adTypes, placement);
+ }
+
+ ///
+ /// Get reward parameters.
+ /// See for resulting triggered event.
+ ///
+ public static KeyValuePair getRewardParameters()
+ {
+ return new KeyValuePair(getInstance().getRewardCurrency(), getInstance().getRewardAmount());
+ }
+
+ ///
+ /// Get reward parameters for placement.
+ /// See for resulting triggered event.
+ /// placement name.
+ ///
+ public static KeyValuePair getRewardParameters(string placement)
+ {
+ return new KeyValuePair(getInstance().getRewardCurrency(placement),
+ getInstance().getRewardAmount(placement));
+ }
+
+ ///
+ /// Mute video if calls muted on device (supports only for Android platform).
+ /// See for resulting triggered event.
+ /// true - mute videos if call volume is 0.
+ ///
+ public static void muteVideosIfCallsMuted(bool value)
+ {
+ getInstance().muteVideosIfCallsMuted(value);
+ }
+
+ ///
+ /// Start test screen to test integration.
+ /// See for resulting triggered event.
+ ///
+ public static void showTestScreen()
+ {
+ getInstance().showTestScreen();
+ }
+
+ ///
+ /// Disables data collection for kids apps.
+ /// See for resulting triggered event.
+ /// value true to disable data collection for kids apps.
+ ///
+ public static void setChildDirectedTreatment(bool value)
+ {
+ getInstance().setChildDirectedTreatment(value);
+ }
+
+ ///
+ /// Destroy cached ad.
+ /// See for resulting triggered event.
+ /// adTypes ad types you want to destroy.
+ ///
+ public static void destroy(int adTypes)
+ {
+ getInstance().destroy(adTypes);
+ }
+
+ ///
+ /// Add extra data to Appodeal.
+ /// See for resulting triggered event.
+ /// associated with value.
+ /// value which will be saved in extra data by key.
+ ///
+ public static void setExtraData(string key, bool value)
+ {
+ getInstance().setExtraData(key, value);
+ }
+
+ ///
+ /// Add extra data to Appodeal.
+ /// See for resulting triggered event.
+ /// associated with value.
+ /// value which will be saved in extra data by key.
+ ///
+ public static void setExtraData(string key, int value)
+ {
+ getInstance().setExtraData(key, value);
+ }
+
+ ///
+ /// Add extra data to Appodeal.
+ /// See for resulting triggered event.
+ /// associated with value.
+ /// value which will be saved in extra data by key.
+ ///
+ public static void setExtraData(string key, double value)
+ {
+ getInstance().setExtraData(key, value);
+ }
+
+ ///
+ /// Add extra data to Appodeal.
+ /// See for resulting triggered event.
+ /// associated with value.
+ /// value which will be saved in extra data by key.
+ ///
+ public static void setExtraData(string key, string value)
+ {
+ getInstance().setExtraData(key, value);
+ }
+
+ ///
+ ///
+ /// Resets extra data value by the provided key.
+ ///
+ /// See for more details.
+ ///
+ /// Use it to remove an extra data, that was previously set via one of the methods.
+ /// unique identifier.
+ public static void resetExtraData(string key)
+ {
+ getInstance().resetExtraData(key);
+ }
+
+ ///
+ /// Get native SDK version
+ /// See for resulting triggered event.
+ ///
+ public static string getNativeSDKVersion()
+ {
+ return getInstance().getVersion();
+ }
+
+ ///
+ /// Get Unity plugin version
+ /// See for resulting triggered event.
+ ///
+ public static string getPluginVersion()
+ {
+ return APPODEAL_PLUGIN_VERSION;
+ }
+
+ ///
+ /// Get predicted ecpm for certain ad type.
+ /// See for resulting triggered event.
+ /// adType type of advertising.
+ ///
+ public static double getPredictedEcpm(int adType)
+ {
+ return getInstance().getPredictedEcpm(adType);
+ }
+
+ ///
+ /// Gets predicted eCPM for certain ad type and placement.
+ ///
+ /// type of advertisement.
+ /// name of Appodeal placement from dashboard.
+ public static double getPredictedEcpmForPlacement(int adType, string placement)
+ {
+ return getInstance().getPredictedEcpmForPlacement(adType, placement);
+ }
+
+ ///
+ /// Get Unity version
+ /// See for resulting triggered event.
+ ///
+ public static string getUnityVersion()
+ {
+ var unityVersion = Application.unityVersion;
+ if (!string.IsNullOrEmpty(unityVersion)) return unityVersion;
+ var appId =
+ typeof(Application).GetProperty("identifier", BindingFlags.Public | BindingFlags.Static);
+ unityVersion = appId != null ? "5.6+" : "5.5-";
+
+ return unityVersion;
+ }
+
+ ///
+ /// Set use safe area.
+ /// See for resulting triggered event.
+ ///
+ public static void setUseSafeArea(bool value)
+ {
+ getInstance().setUseSafeArea(value);
+ }
+
+ ///
+ /// Sends event data to all connected analytic services such as Firebase, Adjust, AppsFlyer and Facebook.
+ /// See for more details.
+ ///
+ ///
+ /// Event parameter values must be one of the following types: , , or
+ /// If event has no params, call the shorten version of this method by passing only name of the event.
+ ///
+ /// name of the event.
+ /// parameters of the event if any.
+ public static void logEvent(string eventName, Dictionary eventParams = null)
+ {
+ getInstance().logEvent(eventName, eventParams);
+ }
+
+ ///
+ ///
+ /// Validates In-App purchase. (Supported only for platform)
+ ///
+ /// See for more details.
+ ///
+ /// If the purchase is valid, this method will also call method under the hood.
+ /// object of type PlayStoreInAppPurchase, containing all data about the purchase.
+ /// class which implements AppodealAds.Unity.Common.IInAppPurchaseValidationListener interface.
+ public static void validatePlayStoreInAppPurchase(IPlayStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener = null)
+ {
+ getInstance().validatePlayStoreInAppPurchase(purchase, listener);
+ }
+
+ ///
+ ///
+ /// Validates In-App purchase. (Supported only for platform)
+ ///
+ /// See for more details.
+ ///
+ /// If the purchase is valid, this method will also call method under the hood.
+ /// object of type AppStoreInAppPurchase, containing all data about the purchase.
+ /// class which implements AppodealAds.Unity.Common.IInAppPurchaseValidationListener interface.
+ public static void validateAppStoreInAppPurchase(IAppStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener = null)
+ {
+ getInstance().validateAppStoreInAppPurchase(purchase, listener);
+ }
+
+ #region Deprecated methods
+
+ [Obsolete("Will be changed in a future release.", false)]
+ public static void setSharedAdsInstanceAcrossActivities(bool sharedAdsInstanceAcrossActivities)
+ {
+ getInstance().setSharedAdsInstanceAcrossActivities(sharedAdsInstanceAcrossActivities);
+ }
+
+ #endregion
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public static class ExtraData
+ {
+ public const string APPSFLYER_ID = "appsflyer_id";
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
+ public class UserSettings
+ {
+ public const string USER_AGE = "appodeal_user_age";
+ public const string USER_GENDER = "appodeal_user_gender";
+
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public enum Gender
+ {
+ OTHER,
+ MALE,
+ FEMALE
+ }
+ }
+
+ ///
+ /// AppStoreInAppPurchase Unity API for developers, including documentation.
+ /// See for more details.
+ ///
+ [SuppressMessage("ReSharper", "UnusedType.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class AppStoreInAppPurchase : IAppStoreInAppPurchase
+ {
+ ///
+ /// Provides access to a native object that implements IAppStoreInAppPurchase interface.
+ ///
+ public IAppStoreInAppPurchase NativeInAppPurchase { get; }
+
+ ///
+ /// Public constructor of the class.
+ ///
+ /// class which implements AppodealStack.Monetization.Common.IAppStoreInAppPurchase interface.
+ public AppStoreInAppPurchase(IAppStoreInAppPurchase purchase)
+ {
+ NativeInAppPurchase = purchase.NativeInAppPurchase;
+ }
+
+ ///
+ /// Gets the purchase type.
+ /// See for more details.
+ ///
+ /// Type of the purchase as AppStorePurchaseType object.
+ public Appodeal.AppStorePurchaseType getPurchaseType()
+ {
+ return NativeInAppPurchase.getPurchaseType();
+ }
+
+ ///
+ /// Gets an id of the purchased product.
+ /// See for more details.
+ ///
+ /// Product Id as string.
+ public string getProductId()
+ {
+ return NativeInAppPurchase.getProductId();
+ }
+
+ ///
+ /// Gets the transaction id of the purchase.
+ /// See for more details.
+ ///
+ /// Id of the transaction as string.
+ public string getTransactionId()
+ {
+ return NativeInAppPurchase.getTransactionId();
+ }
+
+ ///
+ /// Gets the price of the purchase.
+ /// See for more details.
+ ///
+ /// Price as string.
+ public string getPrice()
+ {
+ return NativeInAppPurchase.getPrice();
+ }
+
+ ///
+ /// Gets the currency of the purchase.
+ /// See for more details.
+ ///
+ /// Currency as string.
+ public string getCurrency()
+ {
+ return NativeInAppPurchase.getCurrency();
+ }
+
+ ///
+ /// Gets the additional parameters of the purchase.
+ /// See for more details.
+ ///
+ /// Additional parameters as string.
+ public string getAdditionalParameters()
+ {
+ return NativeInAppPurchase.getAdditionalParameters();
+ }
+
+ ///
+ /// Builder class is responsible for creating an object of the class.
+ ///
+ public class Builder
+ {
+ private readonly IAppStoreInAppPurchaseBuilder _appStoreInAppPurchaseBuilder;
+
+ private IAppStoreInAppPurchaseBuilder getBuilderInstance()
+ {
+ return _appStoreInAppPurchaseBuilder;
+ }
+
+ ///
+ /// Public constructor of the class.
+ ///
+ /// type of the purchase.
+ public Builder(Appodeal.AppStorePurchaseType purchaseType)
+ {
+ _appStoreInAppPurchaseBuilder = AppodealAdsClientFactory.GetAppStoreInAppPurchaseBuilder(purchaseType);
+ }
+
+ ///
+ /// Builds the AppStoreInAppPurchase object using all data you have set via the other Builder's methods.
+ ///
+ /// Object of type .
+ public AppStoreInAppPurchase build()
+ {
+ return new AppStoreInAppPurchase(getBuilderInstance().build());
+ }
+
+ ///
+ /// Sets an id of the purchased product.
+ ///
+ /// product id as string.
+ /// An instance of the builder class.
+ public Builder withProductId(string productId)
+ {
+ getBuilderInstance().withProductId(productId);
+ return this;
+ }
+
+ ///
+ /// Sets the transaction id of the purchase.
+ ///
+ /// id of the transaction as string.
+ /// An instance of the builder class.
+ public Builder withTransactionId(string transactionId)
+ {
+ getBuilderInstance().withTransactionId(transactionId);
+ return this;
+ }
+
+ ///
+ /// Sets the price of the purchase.
+ ///
+ /// purchase price as string.
+ /// An instance of the builder class.
+ public Builder withPrice(string price)
+ {
+ getBuilderInstance().withPrice(price);
+ return this;
+ }
+
+ ///
+ /// Sets the currency of the purchase.
+ ///
+ /// purchase currency as string.
+ /// An instance of the builder class.
+ public Builder withCurrency(string currency)
+ {
+ getBuilderInstance().withCurrency(currency);
+ return this;
+ }
+
+ ///
+ /// Sets the additional parameters of the purchase.
+ ///
+ /// additional parameters as string.
+ /// An instance of the builder class.
+ public Builder withAdditionalParameters(Dictionary additionalParameters)
+ {
+ getBuilderInstance().withAdditionalParameters(additionalParameters);
+ return this;
+ }
+ }
+ }
+
+ ///
+ /// PlayStoreInAppPurchase Unity API for developers, including documentation.
+ /// See for more details.
+ ///
+ [SuppressMessage("ReSharper", "UnusedType.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class PlayStoreInAppPurchase : IPlayStoreInAppPurchase
+ {
+ ///
+ /// Provides access to a native object that implements IPlayStoreInAppPurchase interface.
+ ///
+ public IPlayStoreInAppPurchase NativeInAppPurchase { get; }
+
+ ///
+ /// Public constructor of the class.
+ ///
+ /// class which implements AppodealStack.Monetization.Common.IPlayStoreInAppPurchase interface.
+ public PlayStoreInAppPurchase(IPlayStoreInAppPurchase purchase)
+ {
+ NativeInAppPurchase = purchase.NativeInAppPurchase;
+ }
+
+ ///
+ /// Gets the purchase type.
+ /// See for more details.
+ ///
+ /// Type of the purchase as PlayStorePurchaseType object.
+ public Appodeal.PlayStorePurchaseType getPurchaseType()
+ {
+ return NativeInAppPurchase.getPurchaseType();
+ }
+
+ ///
+ /// Gets the public key of the purchase.
+ /// See for more details.
+ ///
+ /// Public key as string.
+ public string getPublicKey()
+ {
+ return NativeInAppPurchase.getPublicKey();
+ }
+
+ ///
+ /// Gets the signature of the purchase.
+ /// See for more details.
+ ///
+ /// Signature as string.
+ public string getSignature()
+ {
+ return NativeInAppPurchase.getSignature();
+ }
+
+ ///
+ /// Gets the purchase data of the purchase.
+ /// See for more details.
+ ///
+ /// Purchase data as string.
+ public string getPurchaseData()
+ {
+ return NativeInAppPurchase.getPurchaseData();
+ }
+
+ ///
+ /// Gets the price of the purchase.
+ /// See for more details.
+ ///
+ /// Price as string.
+ public string getPrice()
+ {
+ return NativeInAppPurchase.getPrice();
+ }
+
+ ///
+ /// Gets the currency of the purchase.
+ /// See for more details.
+ ///
+ /// Currency as string.
+ public string getCurrency()
+ {
+ return NativeInAppPurchase.getCurrency();
+ }
+
+ ///
+ /// Gets the additional parameters of the purchase.
+ /// See for more details.
+ ///
+ /// Additional parameters as string.
+ public string getAdditionalParameters()
+ {
+ return NativeInAppPurchase.getAdditionalParameters();
+ }
+
+ ///
+ /// Gets the SKU of the purchase.
+ /// See for more details.
+ ///
+ /// SKU as string.
+ public string getSku()
+ {
+ return NativeInAppPurchase.getSku();
+ }
+
+ ///
+ /// Gets the order id of the purchase.
+ /// See for more details.
+ ///
+ /// Order id as string.
+ public string getOrderId()
+ {
+ return NativeInAppPurchase.getOrderId();
+ }
+
+ ///
+ /// Gets the token of the purchase.
+ /// See for more details.
+ ///
+ /// Purchase token as string.
+ public string getPurchaseToken()
+ {
+ return NativeInAppPurchase.getPurchaseToken();
+ }
+
+ ///
+ /// Gets the timestamp of the purchase.
+ /// See for more details.
+ ///
+ /// Purchase timestamp as string.
+ public long getPurchaseTimestamp()
+ {
+ return NativeInAppPurchase.getPurchaseTimestamp();
+ }
+
+ ///
+ /// Gets the developer payload of the purchase.
+ /// See for more details.
+ ///
+ /// Developer payload as string.
+ public string getDeveloperPayload()
+ {
+ return NativeInAppPurchase.getDeveloperPayload();
+ }
+
+ ///
+ /// Builder class is responsible for creating an object of the class.
+ ///
+ public class Builder
+ {
+ private readonly IPlayStoreInAppPurchaseBuilder _playStoreInAppPurchaseBuilder;
+
+ private IPlayStoreInAppPurchaseBuilder getBuilderInstance()
+ {
+ return _playStoreInAppPurchaseBuilder;
+ }
+
+ ///
+ /// Public constructor of the class.
+ ///
+ /// type of the purchase.
+ public Builder(Appodeal.PlayStorePurchaseType purchaseType)
+ {
+ _playStoreInAppPurchaseBuilder = AppodealAdsClientFactory.GetPlayStoreInAppPurchaseBuilder(purchaseType);
+ }
+
+ ///
+ /// Builds the PlayStoreInAppPurchase object using all data you have set via the other Builder's methods.
+ ///
+ /// Object of type .
+ public PlayStoreInAppPurchase build()
+ {
+ return new PlayStoreInAppPurchase(getBuilderInstance().build());
+ }
+
+ ///
+ /// Sets the public key of the purchase.
+ ///
+ /// public key as string.
+ /// An instance of the builder class.
+ public Builder withPublicKey(string publicKey)
+ {
+ getBuilderInstance().withPublicKey(publicKey);
+ return this;
+ }
+
+ ///
+ /// Sets the signature of the purchase.
+ ///
+ /// purchase signature as string.
+ /// An instance of the builder class.
+ public Builder withSignature(string signature)
+ {
+ getBuilderInstance().withSignature(signature);
+ return this;
+ }
+
+ ///
+ /// Sets the purchase data.
+ ///
+ /// purchase data as string.
+ /// An instance of the builder class.
+ public Builder withPurchaseData(string purchaseData)
+ {
+ getBuilderInstance().withPurchaseData(purchaseData);
+ return this;
+ }
+
+ ///
+ /// Sets the price of the purchase.
+ ///
+ /// purchase price as string.
+ /// An instance of the builder class.
+ public Builder withPrice(string price)
+ {
+ getBuilderInstance().withPrice(price);
+ return this;
+ }
+
+ ///
+ /// Sets the currency of the purchase.
+ ///
+ /// purchase currency as string.
+ /// An instance of the builder class.
+ public Builder withCurrency(string currency)
+ {
+ getBuilderInstance().withCurrency(currency);
+ return this;
+ }
+
+ ///
+ /// Sets the SKU of the purchase.
+ ///
+ /// purchase SKU as string.
+ /// An instance of the builder class.
+ public Builder withSku(string sku)
+ {
+ getBuilderInstance().withSku(sku);
+ return this;
+ }
+
+ ///
+ /// Sets the order id of the purchase.
+ ///
+ /// order id as string.
+ /// An instance of the builder class.
+ public Builder withOrderId(string orderId)
+ {
+ getBuilderInstance().withOrderId(orderId);
+ return this;
+ }
+
+ ///
+ /// Sets the token of the purchase.
+ ///
+ /// Purchase token as string.
+ /// An instance of the builder class.
+ public Builder withPurchaseToken(string purchaseToken)
+ {
+ getBuilderInstance().withPurchaseToken(purchaseToken);
+ return this;
+ }
+
+ ///
+ /// Sets the timestamp of the purchase.
+ ///
+ /// purchase timestamp as long.
+ /// An instance of the builder class.
+ public Builder withPurchaseTimestamp(long purchaseTimestamp)
+ {
+ getBuilderInstance().withPurchaseTimestamp(purchaseTimestamp);
+ return this;
+ }
+
+ ///
+ /// Sets the additional parameters of the purchase.
+ ///
+ /// additional parameters as string.
+ /// An instance of the builder class.
+ public Builder withAdditionalParameters(Dictionary additionalParameters)
+ {
+ getBuilderInstance().withAdditionalParameters(additionalParameters);
+ return this;
+ }
+
+ ///
+ /// Sets the developer payload of the purchase.
+ ///
+ /// developer payload as string.
+ /// An instance of the builder class.
+ public Builder withDeveloperPayload(string developerPayload)
+ {
+ getBuilderInstance().withDeveloperPayload(developerPayload);
+ return this;
+ }
+ }
+ }
+}
diff --git a/Assets/Appodeal/Api/Appodeal/Appodeal.cs.meta b/Assets/Appodeal/Api/Appodeal/Appodeal.cs.meta
new file mode 100644
index 0000000..4232108
--- /dev/null
+++ b/Assets/Appodeal/Api/Appodeal/Appodeal.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9526cfa6c16d240ebaeefa4ef9601b8f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GoogleMobileAds.meta b/Assets/Appodeal/Api/ConsentManager.meta
similarity index 77%
rename from Assets/GoogleMobileAds.meta
rename to Assets/Appodeal/Api/ConsentManager.meta
index 78d52b8..9580981 100644
--- a/Assets/GoogleMobileAds.meta
+++ b/Assets/Appodeal/Api/ConsentManager.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 04437662021e8c7498d3e27da2d9c69d
+guid: f62c98cb6da0f48d1946490506072c60
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Appodeal/Api/ConsentManager/ConsentManager.cs b/Assets/Appodeal/Api/ConsentManager/ConsentManager.cs
new file mode 100644
index 0000000..2c2056c
--- /dev/null
+++ b/Assets/Appodeal/Api/ConsentManager/ConsentManager.cs
@@ -0,0 +1,318 @@
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using ConsentManager.Common;
+using ConsentManager.Platforms;
+
+namespace ConsentManager
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class ConsentManager
+ {
+ private readonly IConsentManager nativeConsentManager;
+
+ private IConsentManager GetNativeConsentManager()
+ {
+ return nativeConsentManager;
+ }
+
+ private ConsentManager()
+ {
+ nativeConsentManager = ConsentManagerClientFactory.GetConsentManager();
+ }
+
+ public static ConsentManager getInstance()
+ {
+ return new ConsentManager();
+ }
+
+ public enum Storage
+ {
+ NONE,
+ SHARED_PREFERENCE
+ }
+
+ public void requestConsentInfoUpdate(string appodealAppKey, IConsentInfoUpdateListener listener)
+ {
+ GetNativeConsentManager().requestConsentInfoUpdate(appodealAppKey, listener);
+ }
+
+ public void disableAppTrackingTransparencyRequest()
+ {
+ GetNativeConsentManager().disableAppTrackingTransparencyRequest();
+ }
+
+ public void setCustomVendor(Vendor customVendor)
+ {
+ nativeConsentManager.setCustomVendor(customVendor);
+ }
+
+ public Vendor getCustomVendor(string bundle)
+ {
+ return nativeConsentManager.getCustomVendor(bundle);
+ }
+
+ public Storage getStorage()
+ {
+ return nativeConsentManager.getStorage();
+ }
+
+ public Consent.ShouldShow shouldShowConsentDialog()
+ {
+ return nativeConsentManager.shouldShowConsentDialog();
+ }
+
+ public void setStorage(Storage iabStorage)
+ {
+ nativeConsentManager.setStorage(iabStorage);
+ }
+
+ public Consent.Zone getConsentZone()
+ {
+ return nativeConsentManager.getConsentZone();
+ }
+
+ public Consent.Status getConsentStatus()
+ {
+ return nativeConsentManager.getConsentStatus();
+ }
+
+ public Consent getConsent()
+ {
+ return nativeConsentManager.getConsent();
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class ConsentForm
+ {
+ private readonly IConsentForm nativeConsentForm;
+
+ private ConsentForm(IConsentFormListener listener)
+ {
+ nativeConsentForm = ConsentManagerClientFactory.GetConsentForm(listener);
+ }
+
+ public static ConsentForm GetInstance(IConsentFormListener listener)
+ {
+ return new ConsentForm(listener);
+ }
+
+ public IConsentForm GetNativeConsent()
+ {
+ return nativeConsentForm;
+ }
+
+ public void load()
+ {
+ nativeConsentForm.load();
+ }
+
+ public void show()
+ {
+ nativeConsentForm.show();
+ }
+
+ public bool isLoaded()
+ {
+ return nativeConsentForm.isLoaded();
+ }
+
+ public bool isShowing()
+ {
+ return nativeConsentForm.isShowing();
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class Vendor : IVendor
+ {
+ private readonly IVendor nativeVendor;
+
+ public Vendor(IVendor builder)
+ {
+ nativeVendor = builder;
+ }
+
+ public IVendor getNativeVendor()
+ {
+ return nativeVendor;
+ }
+
+ public class Builder
+ {
+ private readonly IVendorBuilder nativeVendorBuilder;
+
+ public Builder(string customVen, string customVendor, string httpsCustomVendorCom)
+ {
+ nativeVendorBuilder =
+ ConsentManagerClientFactory.GetVendorBuilder(customVen, customVendor, httpsCustomVendorCom);
+ }
+
+ public Vendor build()
+ {
+ return new Vendor(nativeVendorBuilder.build());
+ }
+
+ public Builder setPurposeIds(IEnumerable purposeIds)
+ {
+ nativeVendorBuilder.setPurposeIds(purposeIds);
+ return this;
+ }
+
+ public Builder setFeatureIds(IEnumerable featureIds)
+ {
+ nativeVendorBuilder.setFeatureIds(featureIds);
+ return this;
+ }
+
+ public Builder setLegitimateInterestPurposeIds(IEnumerable legitimateInterestPurposeIds)
+ {
+ nativeVendorBuilder.setLegitimateInterestPurposeIds(legitimateInterestPurposeIds);
+ return this;
+ }
+ }
+
+ public string getName()
+ {
+ return nativeVendor.getName();
+ }
+
+ public string getBundle()
+ {
+ return nativeVendor.getBundle();
+ }
+
+ public string getPolicyUrl()
+ {
+ return nativeVendor.getPolicyUrl();
+ }
+
+ public List getPurposeIds()
+ {
+ return nativeVendor.getPurposeIds();
+ }
+
+ public List getFeatureIds()
+ {
+ return nativeVendor.getFeatureIds();
+ }
+
+ public List getLegitimateInterestPurposeIds()
+ {
+ return nativeVendor.getLegitimateInterestPurposeIds();
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class Consent : IConsent
+ {
+ private readonly IConsent consent;
+
+ public Consent(IConsent consent)
+ {
+ this.consent = consent;
+ }
+
+ public IConsent getConsent()
+ {
+ return consent;
+ }
+
+ public enum Status
+ {
+ UNKNOWN,
+ NON_PERSONALIZED,
+ PARTLY_PERSONALIZED,
+ PERSONALIZED
+ }
+
+ public enum Zone
+ {
+ UNKNOWN,
+ NONE,
+ GDPR,
+ CCPA
+ }
+
+ public enum HasConsent
+ {
+ UNKNOWN,
+ TRUE,
+ FALSE
+ }
+
+ public enum ShouldShow
+ {
+ UNKNOWN,
+ TRUE,
+ FALSE
+ }
+
+ public enum AuthorizationStatus
+ {
+ NOT_DETERMINED,
+ RESTRICTED,
+ DENIED,
+ AUTHORIZED
+ }
+
+ public Zone getZone()
+ {
+ return consent.getZone();
+ }
+
+ public Status getStatus()
+ {
+ return consent.getStatus();
+ }
+
+ public AuthorizationStatus getAuthorizationStatus()
+ {
+ return consent.getAuthorizationStatus();
+ }
+
+ public HasConsent hasConsentForVendor(string bundle)
+ {
+ return consent.hasConsentForVendor(bundle);
+ }
+
+ public string getIabConsentString()
+ {
+ return consent.getIabConsentString();
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class ConsentManagerException : IConsentManagerException
+ {
+ private readonly IConsentManagerException consentManagerException;
+
+ public ConsentManagerException()
+ {
+ consentManagerException = ConsentManagerClientFactory.GetConsentManagerException();
+ }
+
+ public ConsentManagerException(IConsentManagerException androidConsentManagerException)
+ {
+ consentManagerException = androidConsentManagerException;
+ }
+
+ public string getReason()
+ {
+ return consentManagerException.getReason();
+ }
+
+ public int getCode()
+ {
+ return consentManagerException.getCode();
+ }
+ }
+}
diff --git a/Assets/Appodeal/Api/ConsentManager/ConsentManager.cs.meta b/Assets/Appodeal/Api/ConsentManager/ConsentManager.cs.meta
new file mode 100644
index 0000000..3793769
--- /dev/null
+++ b/Assets/Appodeal/Api/ConsentManager/ConsentManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c22e7af053c004371a396017f8284b50
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common.meta b/Assets/Appodeal/Common.meta
new file mode 100644
index 0000000..115fae7
--- /dev/null
+++ b/Assets/Appodeal/Common.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 3a076746f2cb340c0a2de3075b77daa8
+folderAsset: yes
+timeCreated: 1530702704
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GoogleMobileAds/Editor/Resources.meta b/Assets/Appodeal/Common/Appodeal.meta
similarity index 77%
rename from Assets/GoogleMobileAds/Editor/Resources.meta
rename to Assets/Appodeal/Common/Appodeal.meta
index cbd4b17..760eb67 100644
--- a/Assets/GoogleMobileAds/Editor/Resources.meta
+++ b/Assets/Appodeal/Common/Appodeal.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: bfec68e9f6f3f184f9e1f3618bc30fbe
+guid: 1323ce415ce9540f3ab8a03b98de34df
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Appodeal/Common/Appodeal/AppodealAdRevenue.cs b/Assets/Appodeal/Common/Appodeal/AppodealAdRevenue.cs
new file mode 100644
index 0000000..af4f20b
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/AppodealAdRevenue.cs
@@ -0,0 +1,89 @@
+// ReSharper Disable CheckNamespace
+namespace AppodealAds.Unity.Common
+{
+ ///
+ ///
+ /// This class is designed to store ad revenue information.
+ ///
+ /// See for more details.
+ ///
+ public class AppodealAdRevenue
+ {
+ ///
+ ///
+ /// Appodeal Ad Type as a not-null string.
+ ///
+ /// See for more details.
+ ///
+ public string AdType;
+
+ ///
+ ///
+ /// Ad Network Name as a not-null string.
+ ///
+ /// See for more details.
+ ///
+ public string NetworkName;
+
+ ///
+ ///
+ /// Appodeal Ad Unit Name as a not-null string.
+ ///
+ /// See for more details.
+ ///
+ public string AdUnitName;
+
+ ///
+ ///
+ /// Demand Source as a not-null string.
+ ///
+ /// See for more details.
+ ///
+ /// Bidder name in case of RTB, otherwise - the same as ad network name.
+ public string DemandSource;
+
+ ///
+ ///
+ /// Appodeal Placement as a not-null string.
+ ///
+ /// See for more details.
+ ///
+ public string Placement;
+
+ ///
+ ///
+ /// The amount of revenue for an ad.
+ ///
+ /// See for more details.
+ ///
+ /// It can be zero in case of an invalid impression.
+ public double Revenue;
+
+ ///
+ ///
+ /// The Revenue Currency as a not-null string.
+ ///
+ /// See for more details.
+ ///
+ /// At the moment the only supported currency is USD.
+ public string Currency;
+
+ ///
+ ///
+ /// Ad Revenue Precision as a not-null string.
+ ///
+ /// See for more details.
+ ///
+ /// 'exact' - programmatic revenue is the resulting price of an auction.'publisher_defined' - revenue from cross-promo campaigns.'estimated' - revenue based on ad unit price floor or historical eCPM.'undefined' - revenue amount is not defined.
+ public string RevenuePrecision;
+
+ ///
+ ///
+ /// Returns ad revenue information as a json-formatted string.
+ ///
+ /// See for more details.
+ ///
+ /// If true, format the output for readability. If false, format the output for minimum size. Default is false.
+ public string ToJsonString(bool isPretty = false) => UnityEngine.JsonUtility.ToJson(this, isPretty);
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/AppodealAdRevenue.cs.meta b/Assets/Appodeal/Common/Appodeal/AppodealAdRevenue.cs.meta
new file mode 100644
index 0000000..2e4ba16
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/AppodealAdRevenue.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 771fde5441a6402694ccdaa1a8023e20
+timeCreated: 1664789154
\ No newline at end of file
diff --git a/Assets/Appodeal/Common/Appodeal/IAdRevenueListener.cs b/Assets/Appodeal/Common/Appodeal/IAdRevenueListener.cs
new file mode 100644
index 0000000..1262619
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IAdRevenueListener.cs
@@ -0,0 +1,18 @@
+// ReSharper Disable CheckNamespace
+namespace AppodealAds.Unity.Common
+{
+ ///
+ /// Interface containing signature of Appodeal Ad Revenue callback method.
+ ///
+ public interface IAdRevenueListener
+ {
+ ///
+ ///
+ /// Fires when Appodeal SDK tracks ad impression.
+ ///
+ /// See for more details.
+ ///
+ /// contains info about the tracked impression.
+ void onAdRevenueReceived(AppodealAdRevenue ad);
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IAdRevenueListener.cs.meta b/Assets/Appodeal/Common/Appodeal/IAdRevenueListener.cs.meta
new file mode 100644
index 0000000..de45e6b
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IAdRevenueListener.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 431d8147345e4487852bf2fad7935c42
+timeCreated: 1664789084
\ No newline at end of file
diff --git a/Assets/Appodeal/Common/Appodeal/IAppodealAdsClient.cs b/Assets/Appodeal/Common/Appodeal/IAppodealAdsClient.cs
new file mode 100644
index 0000000..2e900ba
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IAppodealAdsClient.cs
@@ -0,0 +1,86 @@
+using System.Diagnostics.CodeAnalysis;
+using System.Collections.Generic;
+using AppodealAds.Unity.Api;
+using ConsentManager;
+
+namespace AppodealAds.Unity.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public interface IAppodealAdsClient
+ {
+ void initialize(string appKey, int adTypes, IAppodealInitializationListener listener);
+ bool isInitialized(int adType);
+ bool show(int adTypes);
+ bool show(int adTypes, string placement);
+ bool isLoaded(int adTypes);
+ void cache(int adTypes);
+ void hide(int adTypes);
+ void setAutoCache(int adTypes, bool autoCache);
+ bool isPrecache(int adTypes);
+ bool showBannerView(int YAxis, int XGravity, string Placement);
+ bool showMrecView(int YAxis, int XGravity, string Placement);
+ void hideBannerView();
+ void hideMrecView();
+ void setSmartBanners(bool value);
+ bool isSmartBannersEnabled();
+ void setBannerAnimation(bool value);
+ void setTabletBanners(bool value);
+ void setBannerRotation(int leftBannerRotation, int rightBannerRotation);
+ void setTesting(bool test);
+ void setLogLevel(Appodeal.LogLevel level);
+ void setChildDirectedTreatment(bool value);
+ void updateConsent(Consent consent);
+ void updateGdprConsent(Appodeal.GdprUserConsent consent);
+ void updateCcpaConsent(Appodeal.CcpaUserConsent consent);
+ List getNetworks(int adType);
+ void disableNetwork(string network);
+ void disableNetwork(string network, int type);
+ void disableLocationPermissionCheck();
+ void muteVideosIfCallsMuted(bool value);
+ void showTestScreen();
+ string getVersion();
+ bool canShow(int adTypes);
+ bool canShow(int adTypes, string placement);
+ void setCustomFilter(string name, bool value);
+ void setCustomFilter(string name, int value);
+ void setCustomFilter(string name, double value);
+ void setCustomFilter(string name, string value);
+ void resetCustomFilter(string name);
+ void setExtraData(string key, bool value);
+ void setExtraData(string key, int value);
+ void setExtraData(string key, double value);
+ void setExtraData(string key, string value);
+ void resetExtraData(string key);
+ string getRewardCurrency(string placement);
+ double getRewardAmount(string placement);
+ string getRewardCurrency();
+ double getRewardAmount();
+ double getPredictedEcpm(int adTypes);
+ double getPredictedEcpmForPlacement(int adType, string placement);
+ void setTriggerOnLoadedOnPrecache(int adTypes, bool onLoadedTriggerBoth);
+ void setUserId(string id);
+ string getUserId();
+ long getSegmentId();
+ void trackInAppPurchase(double amount, string currency);
+ void setInterstitialCallbacks(IInterstitialAdListener listener);
+ void setRewardedVideoCallbacks(IRewardedVideoAdListener listener);
+ void setBannerCallbacks(IBannerAdListener listener);
+ void setMrecCallbacks(IMrecAdListener listener);
+ void setAdRevenueCallback(IAdRevenueListener listener);
+ void destroy(int adTypes);
+ void setUseSafeArea(bool value);
+ bool isAutoCacheEnabled(int adType);
+ void logEvent(string eventName, Dictionary eventParams);
+ void validatePlayStoreInAppPurchase(IPlayStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener);
+ void validateAppStoreInAppPurchase(IAppStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener);
+
+ #region Deprecated signatures
+
+ void setSharedAdsInstanceAcrossActivities(bool value);
+
+ #endregion
+
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IAppodealAdsClient.cs.meta b/Assets/Appodeal/Common/Appodeal/IAppodealAdsClient.cs.meta
new file mode 100644
index 0000000..2d4c523
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IAppodealAdsClient.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0d45dae8ca00349059f33fb823bb283e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/Appodeal/IAppodealInitializationListener.cs b/Assets/Appodeal/Common/Appodeal/IAppodealInitializationListener.cs
new file mode 100644
index 0000000..888c8b5
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IAppodealInitializationListener.cs
@@ -0,0 +1,14 @@
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+
+namespace AppodealAds.Unity.Common
+{
+ public interface IAppodealInitializationListener
+ {
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ void onInitializationFinished(List errors);
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IAppodealInitializationListener.cs.meta b/Assets/Appodeal/Common/Appodeal/IAppodealInitializationListener.cs.meta
new file mode 100644
index 0000000..690840b
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IAppodealInitializationListener.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 15002fc8e807d40a29672f293f73c425
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/Appodeal/IBannerAdListener.cs b/Assets/Appodeal/Common/Appodeal/IBannerAdListener.cs
new file mode 100644
index 0000000..66aa1ce
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IBannerAdListener.cs
@@ -0,0 +1,18 @@
+using System.Diagnostics.CodeAnalysis;
+
+namespace AppodealAds.Unity.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ public interface IBannerAdListener
+ {
+ void onBannerLoaded(int height, bool isPrecache);
+ void onBannerFailedToLoad();
+ void onBannerShown();
+ void onBannerShowFailed();
+ void onBannerClicked();
+ void onBannerExpired();
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IBannerAdListener.cs.meta b/Assets/Appodeal/Common/Appodeal/IBannerAdListener.cs.meta
new file mode 100644
index 0000000..60776e7
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IBannerAdListener.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3c523f46716394956be24ac369155edb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/Appodeal/IInAppPurchase.cs b/Assets/Appodeal/Common/Appodeal/IInAppPurchase.cs
new file mode 100644
index 0000000..b2a7856
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IInAppPurchase.cs
@@ -0,0 +1,62 @@
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Api;
+
+namespace AppodealAds.Unity.Common
+{
+ public interface IInAppPurchaseBase
+ {
+ string getPrice();
+ string getCurrency();
+ string getAdditionalParameters();
+ }
+
+ public interface IInAppPurchaseBaseBuilder
+ {
+ void withPrice(string price);
+ void withCurrency(string currency);
+ void withAdditionalParameters(Dictionary additionalParameters);
+ }
+
+ public interface IPlayStoreInAppPurchase : IInAppPurchaseBase
+ {
+ Appodeal.PlayStorePurchaseType getPurchaseType();
+ string getSku();
+ string getOrderId();
+ string getSignature();
+ string getPublicKey();
+ string getPurchaseData();
+ string getPurchaseToken();
+ string getDeveloperPayload();
+ long getPurchaseTimestamp();
+ IPlayStoreInAppPurchase NativeInAppPurchase { get; }
+ }
+
+ public interface IPlayStoreInAppPurchaseBuilder : IInAppPurchaseBaseBuilder
+ {
+ void withSku(string sku);
+ void withOrderId(string orderId);
+ void withPublicKey(string publicKey);
+ void withSignature(string signature);
+ void withPurchaseData(string purchaseData);
+ void withPurchaseToken(string purchaseToken);
+ void withDeveloperPayload(string developerPayload);
+ void withPurchaseTimestamp(long purchaseTimestamp);
+ IPlayStoreInAppPurchase build();
+ }
+
+ public interface IAppStoreInAppPurchase : IInAppPurchaseBase
+ {
+ Appodeal.AppStorePurchaseType getPurchaseType();
+ string getProductId();
+ string getTransactionId();
+ IAppStoreInAppPurchase NativeInAppPurchase { get; }
+ }
+
+ public interface IAppStoreInAppPurchaseBuilder : IInAppPurchaseBaseBuilder
+ {
+ void withProductId(string productId);
+ void withTransactionId(string transactionId);
+ IAppStoreInAppPurchase build();
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IInAppPurchase.cs.meta b/Assets/Appodeal/Common/Appodeal/IInAppPurchase.cs.meta
new file mode 100644
index 0000000..cbdfbf9
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IInAppPurchase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 72b801c20c7544e1fb74b1ba0cacf6f0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/Appodeal/IInAppPurchaseValidationListener.cs b/Assets/Appodeal/Common/Appodeal/IInAppPurchaseValidationListener.cs
new file mode 100644
index 0000000..5acf71c
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IInAppPurchaseValidationListener.cs
@@ -0,0 +1,14 @@
+using System.Diagnostics.CodeAnalysis;
+
+namespace AppodealAds.Unity.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ public interface IInAppPurchaseValidationListener
+ {
+ void onInAppPurchaseValidationSucceeded(string json);
+ void onInAppPurchaseValidationFailed(string json);
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IInAppPurchaseValidationListener.cs.meta b/Assets/Appodeal/Common/Appodeal/IInAppPurchaseValidationListener.cs.meta
new file mode 100644
index 0000000..bb9d405
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IInAppPurchaseValidationListener.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 57ad42aab5dbf46d1a556bb9a145f682
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/Appodeal/IInterstitialAdListener.cs b/Assets/Appodeal/Common/Appodeal/IInterstitialAdListener.cs
new file mode 100644
index 0000000..eec1c11
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IInterstitialAdListener.cs
@@ -0,0 +1,19 @@
+using System.Diagnostics.CodeAnalysis;
+
+namespace AppodealAds.Unity.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ public interface IInterstitialAdListener
+ {
+ void onInterstitialLoaded(bool isPrecache);
+ void onInterstitialFailedToLoad();
+ void onInterstitialShowFailed();
+ void onInterstitialShown();
+ void onInterstitialClosed();
+ void onInterstitialClicked();
+ void onInterstitialExpired();
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IInterstitialAdListener.cs.meta b/Assets/Appodeal/Common/Appodeal/IInterstitialAdListener.cs.meta
new file mode 100644
index 0000000..94ccce5
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IInterstitialAdListener.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e84ede4c77b104546a6dc73eb1b3402c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/Appodeal/IMrecAdListener.cs b/Assets/Appodeal/Common/Appodeal/IMrecAdListener.cs
new file mode 100644
index 0000000..09e05bf
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IMrecAdListener.cs
@@ -0,0 +1,18 @@
+using System.Diagnostics.CodeAnalysis;
+
+namespace AppodealAds.Unity.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ public interface IMrecAdListener
+ {
+ void onMrecLoaded(bool isPrecache);
+ void onMrecFailedToLoad();
+ void onMrecShown();
+ void onMrecShowFailed();
+ void onMrecClicked();
+ void onMrecExpired();
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IMrecAdListener.cs.meta b/Assets/Appodeal/Common/Appodeal/IMrecAdListener.cs.meta
new file mode 100644
index 0000000..7e544bb
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IMrecAdListener.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a7fedafa4546a4c6fbcd34cfb230392a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/Appodeal/IRewardedVideoAdListener.cs b/Assets/Appodeal/Common/Appodeal/IRewardedVideoAdListener.cs
new file mode 100644
index 0000000..89dbbd3
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IRewardedVideoAdListener.cs
@@ -0,0 +1,20 @@
+using System.Diagnostics.CodeAnalysis;
+
+namespace AppodealAds.Unity.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ public interface IRewardedVideoAdListener
+ {
+ void onRewardedVideoLoaded(bool precache);
+ void onRewardedVideoFailedToLoad();
+ void onRewardedVideoShowFailed();
+ void onRewardedVideoShown();
+ void onRewardedVideoFinished(double amount, string name);
+ void onRewardedVideoClosed(bool finished);
+ void onRewardedVideoExpired();
+ void onRewardedVideoClicked();
+ }
+}
diff --git a/Assets/Appodeal/Common/Appodeal/IRewardedVideoAdListener.cs.meta b/Assets/Appodeal/Common/Appodeal/IRewardedVideoAdListener.cs.meta
new file mode 100644
index 0000000..b601993
--- /dev/null
+++ b/Assets/Appodeal/Common/Appodeal/IRewardedVideoAdListener.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bfcaa2dbbdfb64ec3bb38107e982a867
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/ConsentManager.meta b/Assets/Appodeal/Common/ConsentManager.meta
new file mode 100644
index 0000000..f332dac
--- /dev/null
+++ b/Assets/Appodeal/Common/ConsentManager.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bb6a697bedaa8442c8ae8977dab40877
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/ConsentManager/IConsentFormListener.cs b/Assets/Appodeal/Common/ConsentManager/IConsentFormListener.cs
new file mode 100644
index 0000000..fdb9182
--- /dev/null
+++ b/Assets/Appodeal/Common/ConsentManager/IConsentFormListener.cs
@@ -0,0 +1,14 @@
+using System.Diagnostics.CodeAnalysis;
+
+namespace ConsentManager.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
+ public interface IConsentFormListener
+ {
+ void onConsentFormLoaded();
+ void onConsentFormError(ConsentManagerException consentManagerException);
+ void onConsentFormOpened();
+ void onConsentFormClosed(Consent consent);
+ }
+}
diff --git a/Assets/Appodeal/Common/ConsentManager/IConsentFormListener.cs.meta b/Assets/Appodeal/Common/ConsentManager/IConsentFormListener.cs.meta
new file mode 100644
index 0000000..42261e8
--- /dev/null
+++ b/Assets/Appodeal/Common/ConsentManager/IConsentFormListener.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d2a6d1e4a2dc04e4ba9bf43899ad6cea
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/ConsentManager/IConsentInfoUpdateListener.cs b/Assets/Appodeal/Common/ConsentManager/IConsentInfoUpdateListener.cs
new file mode 100644
index 0000000..d7f2daf
--- /dev/null
+++ b/Assets/Appodeal/Common/ConsentManager/IConsentInfoUpdateListener.cs
@@ -0,0 +1,12 @@
+using System.Diagnostics.CodeAnalysis;
+
+namespace ConsentManager.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
+ public interface IConsentInfoUpdateListener
+ {
+ void onConsentInfoUpdated(Consent consent);
+ void onFailedToUpdateConsentInfo(ConsentManagerException error);
+ }
+}
diff --git a/Assets/Appodeal/Common/ConsentManager/IConsentInfoUpdateListener.cs.meta b/Assets/Appodeal/Common/ConsentManager/IConsentInfoUpdateListener.cs.meta
new file mode 100644
index 0000000..722cb85
--- /dev/null
+++ b/Assets/Appodeal/Common/ConsentManager/IConsentInfoUpdateListener.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3e3b4501bed1e45b0b94b9e9bee9d78c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Common/ConsentManager/IConsentManager.cs b/Assets/Appodeal/Common/ConsentManager/IConsentManager.cs
new file mode 100644
index 0000000..1d74261
--- /dev/null
+++ b/Assets/Appodeal/Common/ConsentManager/IConsentManager.cs
@@ -0,0 +1,70 @@
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+
+
+namespace ConsentManager.Common
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ public interface IConsentManager
+ {
+ void requestConsentInfoUpdate(string appodealAppKey, IConsentInfoUpdateListener listener);
+ void setCustomVendor(Vendor customVendor);
+ Vendor getCustomVendor(string bundle);
+ ConsentManager.Storage getStorage();
+ void setStorage(ConsentManager.Storage iabStorage);
+ Consent.ShouldShow shouldShowConsentDialog();
+ Consent.Zone getConsentZone();
+ Consent.Status getConsentStatus();
+ Consent getConsent();
+ void disableAppTrackingTransparencyRequest();
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public interface IConsentForm
+ {
+ void load();
+ void show();
+ bool isLoaded();
+ bool isShowing();
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public interface IVendor
+ {
+ string getName();
+ string getBundle();
+ string getPolicyUrl();
+ List getPurposeIds();
+ List getFeatureIds();
+ List getLegitimateInterestPurposeIds();
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ public interface IVendorBuilder
+ {
+ IVendor build();
+ void setPurposeIds(IEnumerable purposeIds);
+ void setFeatureIds(IEnumerable featureIds);
+ void setLegitimateInterestPurposeIds(IEnumerable legitimateInterestPurposeIds);
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Global")]
+ public interface IConsent
+ {
+ Consent.Zone getZone();
+ Consent.Status getStatus();
+ Consent.AuthorizationStatus getAuthorizationStatus();
+ Consent.HasConsent hasConsentForVendor(string bundle);
+ string getIabConsentString();
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public interface IConsentManagerException
+ {
+ string getReason();
+ int getCode();
+ }
+}
diff --git a/Assets/Appodeal/Common/ConsentManager/IConsentManager.cs.meta b/Assets/Appodeal/Common/ConsentManager/IConsentManager.cs.meta
new file mode 100644
index 0000000..3a4dd89
--- /dev/null
+++ b/Assets/Appodeal/Common/ConsentManager/IConsentManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a4f071b2c746a4e96802d9d255b1a7f6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Demo.meta b/Assets/Appodeal/Demo.meta
new file mode 100644
index 0000000..490a363
--- /dev/null
+++ b/Assets/Appodeal/Demo.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2f3aec5901bed48c5b00b5001e20e083
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Demo/Scenes.meta b/Assets/Appodeal/Demo/Scenes.meta
new file mode 100644
index 0000000..e37077a
--- /dev/null
+++ b/Assets/Appodeal/Demo/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 52489c8c8d0a043b9b10a32e18dc5b27
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Demo/Scenes/AppodealDemoScene.unity b/Assets/Appodeal/Demo/Scenes/AppodealDemoScene.unity
new file mode 100644
index 0000000..0549fb8
--- /dev/null
+++ b/Assets/Appodeal/Demo/Scenes/AppodealDemoScene.unity
@@ -0,0 +1,7571 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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: 170076734}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 0
+ 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: 2
+ m_BakeResolution: 10
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 256
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ 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: 70b2daef1c1b26d40ad26746d8e87f43, type: 2}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &18259488
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 18259489}
+ - component: {fileID: 18259492}
+ - component: {fileID: 18259491}
+ - component: {fileID: 18259490}
+ m_Layer: 5
+ m_Name: Status Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &18259489
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 18259488}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1356128912}
+ m_Father: {fileID: 551720639}
+ 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: 120}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &18259490
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 18259488}
+ 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: 18259491}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: GetConsentStatus
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &18259491
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 18259488}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &18259492
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 18259488}
+ m_CullTransparentMesh: 0
+--- !u!1 &19737509
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 19737510}
+ - component: {fileID: 19737512}
+ - component: {fileID: 19737511}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &19737510
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19737509}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1149045650}
+ 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 &19737511
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19737509}
+ 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: 40
+ 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: Form is loaded
+--- !u!222 &19737512
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19737509}
+ m_CullTransparentMesh: 0
+--- !u!1 &20824706
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 20824707}
+ - component: {fileID: 20824709}
+ - component: {fileID: 20824708}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &20824707
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 20824706}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 527091652}
+ 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 &20824708
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 20824706}
+ 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: 40
+ 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 BANNER RIGHT
+--- !u!222 &20824709
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 20824706}
+ m_CullTransparentMesh: 0
+--- !u!1 &30159935
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 30159936}
+ - component: {fileID: 30159938}
+ - component: {fileID: 30159937}
+ m_Layer: 5
+ m_Name: 'Pre Request Logic Label '
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &30159936
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 30159935}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 419}
+ m_SizeDelta: {x: 980, y: 53.400024}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &30159937
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 30159935}
+ 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: 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 0
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Pre Request Logic
+--- !u!222 &30159938
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 30159935}
+ m_CullTransparentMesh: 0
+--- !u!1 &54824010
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 54824011}
+ - component: {fileID: 54824013}
+ - component: {fileID: 54824012}
+ m_Layer: 5
+ m_Name: RequestLogic
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &54824011
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 54824010}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 3, y: 234}
+ m_SizeDelta: {x: 980, y: 53.4}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &54824012
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 54824010}
+ 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: 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 3
+ m_MaxSize: 45
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Request Logic
+--- !u!222 &54824013
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 54824010}
+ m_CullTransparentMesh: 0
+--- !u!1 &141727278
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 141727279}
+ - component: {fileID: 141727281}
+ - component: {fileID: 141727280}
+ m_Layer: 5
+ m_Name: Advanced Logic Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &141727279
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 141727278}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: -398}
+ m_SizeDelta: {x: 980, y: 53.4}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &141727280
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 141727278}
+ 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: 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 3
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Print Consent Logic
+--- !u!222 &141727281
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 141727278}
+ m_CullTransparentMesh: 0
+--- !u!1 &156098619
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 156098620}
+ - component: {fileID: 156098623}
+ - component: {fileID: 156098622}
+ - component: {fileID: 156098621}
+ m_Layer: 5
+ m_Name: Show BannerView
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &156098620
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 156098619}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1311917263}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -1270}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &156098621
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 156098619}
+ 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: 156098622}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowBannerView
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &156098622
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 156098619}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &156098623
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 156098619}
+ m_CullTransparentMesh: 0
+--- !u!1 &166743777
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 166743778}
+ - component: {fileID: 166743780}
+ - component: {fileID: 166743779}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &166743778
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 166743777}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 541362463}
+ 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 &166743779
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 166743777}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 3
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Zone
+--- !u!222 &166743780
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 166743777}
+ m_CullTransparentMesh: 0
+--- !u!1 &170076733
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 170076735}
+ - component: {fileID: 170076734}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &170076734
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 170076733}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 1
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &170076735
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 170076733}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &185979416
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 185979417}
+ - component: {fileID: 185979420}
+ - component: {fileID: 185979419}
+ - component: {fileID: 185979418}
+ m_Layer: 5
+ m_Name: Bottom Banner Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &185979417
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 185979416}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1729912245}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -695}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &185979418
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 185979416}
+ 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: 185979419}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowBannerBottom
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &185979419
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 185979416}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &185979420
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 185979416}
+ m_CullTransparentMesh: 0
+--- !u!1 &224157127
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 224157128}
+ - component: {fileID: 224157130}
+ - component: {fileID: 224157129}
+ m_Layer: 5
+ m_Name: Demo Panel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &224157128
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 224157127}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1634643288}
+ - {fileID: 1851359259}
+ m_Father: {fileID: 1572186912}
+ 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 &224157129
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 224157127}
+ 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.745283, g: 0, b: 0, 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: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &224157130
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 224157127}
+ m_CullTransparentMesh: 0
+--- !u!1 &224823564
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 224823565}
+ - component: {fileID: 224823567}
+ - component: {fileID: 224823566}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &224823565
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 224823564}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1328668484}
+ m_Father: {fileID: 1426276315}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 10, y: -10}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &224823566
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 224823564}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &224823567
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 224823564}
+ m_CullTransparentMesh: 0
+--- !u!1 &254544178
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 254544179}
+ - component: {fileID: 254544181}
+ - component: {fileID: 254544180}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &254544179
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 254544178}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 826195117}
+ 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 &254544180
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 254544178}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: SHOW MREC
+--- !u!222 &254544181
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 254544178}
+ m_CullTransparentMesh: 0
+--- !u!1 &273150058
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 273150059}
+ - component: {fileID: 273150062}
+ - component: {fileID: 273150061}
+ - component: {fileID: 273150060}
+ m_Layer: 5
+ m_Name: Show As Activity Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &273150059
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 273150058}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 666215521}
+ m_Father: {fileID: 1005256817}
+ 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: 119.77}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &273150060
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 273150058}
+ 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: 273150061}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowFormAsActivity
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &273150061
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 273150058}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &273150062
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 273150058}
+ m_CullTransparentMesh: 0
+--- !u!1 &375756338
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 375756339}
+ - component: {fileID: 375756341}
+ - component: {fileID: 375756340}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &375756339
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 375756338}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1723172033}
+ 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 &375756340
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 375756338}
+ 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: 40
+ 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: Appodeal Logic
+--- !u!222 &375756341
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 375756338}
+ m_CullTransparentMesh: 0
+--- !u!1 &446622821
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 446622822}
+ - component: {fileID: 446622825}
+ - component: {fileID: 446622824}
+ - component: {fileID: 446622823}
+ m_Layer: 5
+ m_Name: Show As Dialog Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &446622822
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 446622821}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1286988268}
+ m_Father: {fileID: 1005256817}
+ 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: 119.77}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &446622823
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 446622821}
+ 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: 446622824}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowFormAsDialog
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &446622824
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 446622821}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &446622825
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 446622821}
+ m_CullTransparentMesh: 0
+--- !u!1 &451274755
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 451274756}
+ - component: {fileID: 451274758}
+ - component: {fileID: 451274757}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &451274756
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 451274755}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1973590142}
+ 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 &451274757
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 451274755}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 3
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Print Current Consent
+--- !u!222 &451274758
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 451274755}
+ m_CullTransparentMesh: 0
+--- !u!1 &454631855
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 454631856}
+ - component: {fileID: 454631859}
+ - component: {fileID: 454631858}
+ - component: {fileID: 454631857}
+ m_Layer: 5
+ m_Name: Hide BannerView
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &454631856
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 454631855}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 695313407}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -1385}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &454631857
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 454631855}
+ 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: 454631858}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: HideBannerView
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &454631858
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 454631855}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &454631859
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 454631855}
+ m_CullTransparentMesh: 0
+--- !u!1 &477637895
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 477637896}
+ - component: {fileID: 477637899}
+ - component: {fileID: 477637898}
+ - component: {fileID: 477637897}
+ m_Layer: 5
+ m_Name: Load Form Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &477637896
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 477637895}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 862145062}
+ m_Father: {fileID: 923652916}
+ 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: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &477637897
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 477637895}
+ 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: 477637898}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: LoadConsentForm
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &477637898
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 477637895}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &477637899
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 477637895}
+ m_CullTransparentMesh: 0
+--- !u!1 &527091651
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 527091652}
+ - component: {fileID: 527091655}
+ - component: {fileID: 527091654}
+ - component: {fileID: 527091653}
+ m_Layer: 5
+ m_Name: Show Banner Right
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &527091652
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 527091651}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 20824707}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -925}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &527091653
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 527091651}
+ 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: 527091654}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowBannerRight
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &527091654
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 527091651}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &527091655
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 527091651}
+ m_CullTransparentMesh: 0
+--- !u!1 &534669902
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 534669905}
+ - component: {fileID: 534669904}
+ - component: {fileID: 534669903}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &534669903
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534669902}
+ m_Enabled: 1
+--- !u!20 &534669904
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534669902}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &534669905
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534669902}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &541362462
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 541362463}
+ - component: {fileID: 541362466}
+ - component: {fileID: 541362465}
+ - component: {fileID: 541362464}
+ m_Layer: 5
+ m_Name: Zone Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &541362463
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 541362462}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 166743778}
+ m_Father: {fileID: 551720639}
+ 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: 120}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &541362464
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 541362462}
+ 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: 541362465}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: GetConsentZone
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &541362465
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 541362462}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &541362466
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 541362462}
+ m_CullTransparentMesh: 0
+--- !u!1 &551720638
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 551720639}
+ - component: {fileID: 551720642}
+ - component: {fileID: 551720641}
+ - component: {fileID: 551720640}
+ m_Layer: 5
+ m_Name: Panel Request Logic
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &551720639
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 551720638}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1637695383}
+ - {fileID: 1262231783}
+ - {fileID: 541362463}
+ - {fileID: 18259489}
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 136}
+ m_SizeDelta: {x: 1030, y: 141.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &551720640
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 551720638}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 4
+ m_Spacing: 10
+ m_ChildForceExpandWidth: 1
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!114 &551720641
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 551720638}
+ 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: 0}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &551720642
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 551720638}
+ m_CullTransparentMesh: 0
+--- !u!1 &580416342
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 580416343}
+ - component: {fileID: 580416346}
+ - component: {fileID: 580416345}
+ - component: {fileID: 580416344}
+ m_Layer: 5
+ m_Name: Rewarded Video Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &580416343
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 580416342}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1106575446}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -580}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &580416344
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 580416342}
+ 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: 580416345}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowRewardedVideo
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &580416345
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 580416342}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &580416346
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 580416342}
+ m_CullTransparentMesh: 0
+--- !u!1 &607698339
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 607698340}
+ - component: {fileID: 607698343}
+ - component: {fileID: 607698342}
+ - component: {fileID: 607698341}
+ m_Layer: 5
+ m_Name: Interstitial Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &607698340
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 607698339}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1235426102}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -465}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &607698341
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 607698339}
+ 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: 607698342}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowInterstitial
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &607698342
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 607698339}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &607698343
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 607698339}
+ m_CullTransparentMesh: 0
+--- !u!1 &621792260
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 621792261}
+ - component: {fileID: 621792264}
+ - component: {fileID: 621792263}
+ - component: {fileID: 621792262}
+ m_Layer: 5
+ m_Name: Set Custom Vendor Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &621792261
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 621792260}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 833058892}
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -0.000030518, y: 337}
+ m_SizeDelta: {x: 1030, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &621792262
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 621792260}
+ 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: 621792263}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: SetCustomVendor
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &621792263
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 621792260}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &621792264
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 621792260}
+ m_CullTransparentMesh: 0
+--- !u!1 &641120836
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 641120837}
+ - component: {fileID: 641120839}
+ - component: {fileID: 641120838}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &641120837
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 641120836}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1637695383}
+ 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 &641120838
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 641120836}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Request
+--- !u!222 &641120839
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 641120836}
+ m_CullTransparentMesh: 0
+--- !u!1 &663080054
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 663080055}
+ - component: {fileID: 663080056}
+ m_Layer: 5
+ m_Name: 'Appodeal Buttons Panel '
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &663080055
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 663080054}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1186680741}
+ - {fileID: 607698340}
+ - {fileID: 580416343}
+ - {fileID: 185979417}
+ - {fileID: 1078221273}
+ - {fileID: 527091652}
+ - {fileID: 1029359884}
+ - {fileID: 2059382383}
+ - {fileID: 156098620}
+ - {fileID: 454631856}
+ - {fileID: 826195117}
+ - {fileID: 1886432122}
+ m_Father: {fileID: 1851359259}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 100, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &663080056
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 663080054}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 300
+ m_Bottom: 0
+ m_ChildAlignment: 4
+ m_Spacing: 15
+ m_ChildForceExpandWidth: 1
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 0
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!1 &666215520
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 666215521}
+ - component: {fileID: 666215523}
+ - component: {fileID: 666215522}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &666215521
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 666215520}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 273150059}
+ 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 &666215522
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 666215520}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Show as activity
+--- !u!222 &666215523
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 666215520}
+ m_CullTransparentMesh: 0
+--- !u!1 &695313406
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 695313407}
+ - component: {fileID: 695313409}
+ - component: {fileID: 695313408}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &695313407
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 695313406}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 454631856}
+ 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 &695313408
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 695313406}
+ 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: 40
+ 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: HIDE BANNER VIEW
+--- !u!222 &695313409
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 695313406}
+ m_CullTransparentMesh: 0
+--- !u!1 &777467649
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 777467650}
+ - component: {fileID: 777467652}
+ - component: {fileID: 777467651}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &777467650
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 777467649}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1886432122}
+ 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 &777467651
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 777467649}
+ 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: 40
+ 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: HIDE MREC
+--- !u!222 &777467652
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 777467649}
+ m_CullTransparentMesh: 0
+--- !u!1 &820090510
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 820090511}
+ - component: {fileID: 820090513}
+ - component: {fileID: 820090512}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &820090511
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 820090510}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1580703567}
+ m_Father: {fileID: 2038355072}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 10, y: -10}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &820090512
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 820090510}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &820090513
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 820090510}
+ m_CullTransparentMesh: 0
+--- !u!1 &826195116
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 826195117}
+ - component: {fileID: 826195120}
+ - component: {fileID: 826195119}
+ - component: {fileID: 826195118}
+ m_Layer: 5
+ m_Name: Show Mrec
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &826195117
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 826195116}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 254544179}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -1500}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &826195118
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 826195116}
+ 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: 826195119}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowMrecView
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &826195119
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 826195116}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &826195120
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 826195116}
+ m_CullTransparentMesh: 0
+--- !u!1 &833058891
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 833058892}
+ - component: {fileID: 833058894}
+ - component: {fileID: 833058893}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &833058892
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 833058891}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 621792261}
+ 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 &833058893
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 833058891}
+ 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: 40
+ 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: Set Custom Vendor
+--- !u!222 &833058894
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 833058891}
+ m_CullTransparentMesh: 0
+--- !u!1 &862145061
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 862145062}
+ - component: {fileID: 862145064}
+ - component: {fileID: 862145063}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &862145062
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 862145061}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 477637896}
+ 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 &862145063
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 862145061}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Load form
+--- !u!222 &862145064
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 862145061}
+ m_CullTransparentMesh: 0
+--- !u!1 &923652915
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 923652916}
+ - component: {fileID: 923652919}
+ - component: {fileID: 923652918}
+ - component: {fileID: 923652917}
+ m_Layer: 5
+ m_Name: Panel ConsentForm Load Logic
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &923652916
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923652915}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 477637896}
+ - {fileID: 1149045650}
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: -65.99994}
+ m_SizeDelta: {x: 930, y: 141.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &923652917
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923652915}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 4
+ m_Spacing: 10
+ m_ChildForceExpandWidth: 1
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!114 &923652918
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923652915}
+ 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: 0}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &923652919
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923652915}
+ m_CullTransparentMesh: 0
+--- !u!1 &1004384088
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1004384089}
+ - component: {fileID: 1004384092}
+ - component: {fileID: 1004384091}
+ - component: {fileID: 1004384090}
+ m_Layer: 5
+ m_Name: Panel Advanced Logic
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1004384089
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1004384088}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1324083652}
+ - {fileID: 1973590142}
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: -494.99994}
+ m_SizeDelta: {x: 930, y: 141.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1004384090
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1004384088}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 4
+ m_Spacing: 10
+ m_ChildForceExpandWidth: 1
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!114 &1004384091
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1004384088}
+ 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: 0}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1004384092
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1004384088}
+ m_CullTransparentMesh: 0
+--- !u!1 &1005256816
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1005256817}
+ - component: {fileID: 1005256820}
+ - component: {fileID: 1005256819}
+ - component: {fileID: 1005256818}
+ m_Layer: 5
+ m_Name: Panel ConsentForm Show Logic
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1005256817
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1005256816}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 273150059}
+ - {fileID: 446622822}
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: -271.99997}
+ m_SizeDelta: {x: 930, y: 141.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1005256818
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1005256816}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 4
+ m_Spacing: 10
+ m_ChildForceExpandWidth: 1
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!114 &1005256819
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1005256816}
+ 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: 0}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1005256820
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1005256816}
+ m_CullTransparentMesh: 0
+--- !u!1 &1029359883
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1029359884}
+ - component: {fileID: 1029359887}
+ - component: {fileID: 1029359886}
+ - component: {fileID: 1029359885}
+ m_Layer: 5
+ m_Name: Show Banner Left
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1029359884
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1029359883}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1120145947}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -1040}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1029359885
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1029359883}
+ 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: 1029359886}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowBannerLeft
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1029359886
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1029359883}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1029359887
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1029359883}
+ m_CullTransparentMesh: 0
+--- !u!1 &1071803916
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1071803917}
+ - component: {fileID: 1071803919}
+ - component: {fileID: 1071803918}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1071803917
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1071803916}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.33333334, y: 0.33333334, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2038355072}
+ 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: 35.52, y: 0}
+ m_SizeDelta: {x: 140.13, y: 53.4}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1071803918
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1071803916}
+ 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: 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 0
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Testing
+--- !u!222 &1071803919
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1071803916}
+ m_CullTransparentMesh: 0
+--- !u!1 &1077407447
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1077407448}
+ - component: {fileID: 1077407450}
+ - component: {fileID: 1077407449}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1077407448
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1077407447}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.33333334, y: 0.33333334, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1426276315}
+ 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: 48.4, y: 0}
+ m_SizeDelta: {x: 217.41, y: 53.4}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1077407449
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1077407447}
+ 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: 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 0
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'Logging
+
+'
+--- !u!222 &1077407450
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1077407447}
+ m_CullTransparentMesh: 0
+--- !u!1 &1078221272
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1078221273}
+ - component: {fileID: 1078221276}
+ - component: {fileID: 1078221275}
+ - component: {fileID: 1078221274}
+ m_Layer: 5
+ m_Name: Top Banner Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1078221273
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1078221272}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1632596255}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -810}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1078221274
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1078221272}
+ 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: 1078221275}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowBannerTop
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1078221275
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1078221272}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1078221276
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1078221272}
+ m_CullTransparentMesh: 0
+--- !u!1 &1094430007
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1094430008}
+ - component: {fileID: 1094430010}
+ - component: {fileID: 1094430009}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1094430008
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1094430007}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1186680741}
+ 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 &1094430009
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1094430007}
+ 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: 40
+ 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: INITIALIZE
+--- !u!222 &1094430010
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1094430007}
+ m_CullTransparentMesh: 0
+--- !u!1 &1106575445
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1106575446}
+ - component: {fileID: 1106575448}
+ - component: {fileID: 1106575447}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1106575446
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1106575445}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 580416343}
+ 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 &1106575447
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1106575445}
+ 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: 40
+ 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: CACHE REWARDED VIDEO
+--- !u!222 &1106575448
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1106575445}
+ m_CullTransparentMesh: 0
+--- !u!1 &1120145946
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1120145947}
+ - component: {fileID: 1120145949}
+ - component: {fileID: 1120145948}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1120145947
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1120145946}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1029359884}
+ 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 &1120145948
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1120145946}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: SHOW BANNER LEFT
+--- !u!222 &1120145949
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1120145946}
+ m_CullTransparentMesh: 0
+--- !u!1 &1149045649
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1149045650}
+ - component: {fileID: 1149045653}
+ - component: {fileID: 1149045652}
+ - component: {fileID: 1149045651}
+ m_Layer: 5
+ m_Name: Form Loaded Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1149045650
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1149045649}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 19737510}
+ m_Father: {fileID: 923652916}
+ 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: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1149045651
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1149045649}
+ 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: 1149045652}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: IsLoadedConsentForm
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1149045652
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1149045649}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1149045653
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1149045649}
+ m_CullTransparentMesh: 0
+--- !u!1 &1172485015
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1172485016}
+ - component: {fileID: 1172485018}
+ - component: {fileID: 1172485017}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1172485016
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1172485015}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1324083652}
+ 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 &1172485017
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1172485015}
+ 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: 40
+ 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: Print IAB String
+--- !u!222 &1172485018
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1172485015}
+ m_CullTransparentMesh: 0
+--- !u!1 &1186680740
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1186680741}
+ - component: {fileID: 1186680744}
+ - component: {fileID: 1186680743}
+ - component: {fileID: 1186680742}
+ m_Layer: 5
+ m_Name: Initialize Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1186680741
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1186680740}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1094430008}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -350}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1186680742
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1186680740}
+ 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: 1186680743}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: Initialize
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1186680743
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1186680740}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1186680744
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1186680740}
+ m_CullTransparentMesh: 0
+--- !u!1 &1235426101
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1235426102}
+ - component: {fileID: 1235426104}
+ - component: {fileID: 1235426103}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1235426102
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1235426101}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 607698340}
+ 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 &1235426103
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1235426101}
+ 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: 40
+ 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: CACHE INTERSTITIAL
+--- !u!222 &1235426104
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1235426101}
+ m_CullTransparentMesh: 0
+--- !u!1 &1262231782
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1262231783}
+ - component: {fileID: 1262231786}
+ - component: {fileID: 1262231785}
+ - component: {fileID: 1262231784}
+ m_Layer: 5
+ m_Name: Should Show Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1262231783
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1262231782}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1838163238}
+ m_Father: {fileID: 551720639}
+ 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: 120}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1262231784
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1262231782}
+ 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: 1262231785}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShouldShowForm
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1262231785
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1262231782}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1262231786
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1262231782}
+ m_CullTransparentMesh: 0
+--- !u!1 &1278136237
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1278136238}
+ - component: {fileID: 1278136241}
+ - component: {fileID: 1278136240}
+ - component: {fileID: 1278136239}
+ m_Layer: 5
+ m_Name: Authorization Status
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1278136238
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1278136237}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1678559563}
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -0.000030518, y: -636}
+ m_SizeDelta: {x: 1030, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1278136239
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1278136237}
+ 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: 1278136240}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: PrintAuthorizationStatus
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1278136240
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1278136237}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1278136241
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1278136237}
+ m_CullTransparentMesh: 0
+--- !u!1 &1286988267
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1286988268}
+ - component: {fileID: 1286988270}
+ - component: {fileID: 1286988269}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1286988268
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1286988267}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 446622822}
+ 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 &1286988269
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1286988267}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 0
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Show as dialog
+--- !u!222 &1286988270
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1286988267}
+ m_CullTransparentMesh: 0
+--- !u!1 &1311917262
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1311917263}
+ - component: {fileID: 1311917265}
+ - component: {fileID: 1311917264}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1311917263
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1311917262}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 156098620}
+ 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 &1311917264
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1311917262}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: SHOW BANNER VIEW
+--- !u!222 &1311917265
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1311917262}
+ m_CullTransparentMesh: 0
+--- !u!1 &1324083651
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1324083652}
+ - component: {fileID: 1324083655}
+ - component: {fileID: 1324083654}
+ - component: {fileID: 1324083653}
+ m_Layer: 5
+ m_Name: Print IAB String Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1324083652
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1324083651}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1172485016}
+ m_Father: {fileID: 1004384089}
+ 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: 125}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1324083653
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1324083651}
+ 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: 1324083654}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: PrintIABString
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1324083654
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1324083651}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1324083655
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1324083651}
+ m_CullTransparentMesh: 0
+--- !u!1 &1328668483
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1328668484}
+ - component: {fileID: 1328668486}
+ - component: {fileID: 1328668485}
+ m_Layer: 5
+ m_Name: Checkmark
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1328668484
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1328668483}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 224823565}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1328668485
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1328668483}
+ 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: 10901, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1328668486
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1328668483}
+ m_CullTransparentMesh: 0
+--- !u!1 &1356128911
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1356128912}
+ - component: {fileID: 1356128914}
+ - component: {fileID: 1356128913}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1356128912
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1356128911}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 18259489}
+ 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 &1356128913
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1356128911}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 3
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Status
+--- !u!222 &1356128914
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1356128911}
+ m_CullTransparentMesh: 0
+--- !u!1 &1426276314
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1426276315}
+ - component: {fileID: 1426276316}
+ m_Layer: 5
+ m_Name: Toogle Logging
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1426276315
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1426276314}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 3.5, y: 3.5, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 224823565}
+ - {fileID: 1077407448}
+ m_Father: {fileID: 1851359259}
+ 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: 133, y: -150}
+ m_SizeDelta: {x: 20.2, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1426276316
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1426276314}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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: 224823566}
+ toggleTransition: 1
+ graphic: {fileID: 1328668485}
+ m_Group: {fileID: 0}
+ onValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_IsOn: 1
+--- !u!1 &1470584433
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1470584434}
+ - component: {fileID: 1470584436}
+ - component: {fileID: 1470584435}
+ m_Layer: 5
+ m_Name: ConsentForm Show Logic Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1470584434
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1470584433}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: -178.99997}
+ m_SizeDelta: {x: 980, y: 53.4}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1470584435
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1470584433}
+ 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: 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 3
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Consent Form Show Logic
+--- !u!222 &1470584436
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1470584433}
+ m_CullTransparentMesh: 0
+--- !u!1 &1572186907
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1572186912}
+ - component: {fileID: 1572186911}
+ - component: {fileID: 1572186910}
+ - component: {fileID: 1572186909}
+ - component: {fileID: 1572186908}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1572186908
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1572186907}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ffb831a105b614dd1bd2adbfcd130c78, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ tgTesting: {fileID: 2038355073}
+ tgLogging: {fileID: 1426276316}
+ btnShowInterstitial: {fileID: 607698341}
+ btnShowRewardedVideo: {fileID: 580416344}
+ consentManagerPanel: {fileID: 1634643287}
+ appodealPanel: {fileID: 1851359258}
+--- !u!114 &1572186909
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1572186907}
+ 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 &1572186910
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1572186907}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 1
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 1080, y: 1920}
+ m_ScreenMatchMode: 1
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &1572186911
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1572186907}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 534669904}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1572186912
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1572186907}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 224157128}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1 &1580703566
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1580703567}
+ - component: {fileID: 1580703569}
+ - component: {fileID: 1580703568}
+ m_Layer: 5
+ m_Name: Checkmark
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1580703567
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1580703566}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 820090511}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1580703568
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1580703566}
+ 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: 10901, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1580703569
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1580703566}
+ m_CullTransparentMesh: 0
+--- !u!1 &1632596254
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1632596255}
+ - component: {fileID: 1632596257}
+ - component: {fileID: 1632596256}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1632596255
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1632596254}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1078221273}
+ 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 &1632596256
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1632596254}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: SHOW BANNER TOP
+--- !u!222 &1632596257
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1632596254}
+ m_CullTransparentMesh: 0
+--- !u!1 &1634643287
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1634643288}
+ m_Layer: 5
+ m_Name: Consnent Manager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1634643288
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1634643287}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 30159936}
+ - {fileID: 621792261}
+ - {fileID: 54824011}
+ - {fileID: 551720639}
+ - {fileID: 1994467824}
+ - {fileID: 923652916}
+ - {fileID: 1470584434}
+ - {fileID: 1005256817}
+ - {fileID: 141727279}
+ - {fileID: 1004384089}
+ - {fileID: 1723172033}
+ - {fileID: 1278136238}
+ m_Father: {fileID: 224157128}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 429}
+ m_SizeDelta: {x: 100, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &1637695382
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1637695383}
+ - component: {fileID: 1637695386}
+ - component: {fileID: 1637695385}
+ - component: {fileID: 1637695384}
+ m_Layer: 5
+ m_Name: Request Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1637695383
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1637695382}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 641120837}
+ m_Father: {fileID: 551720639}
+ 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: 120}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1637695384
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1637695382}
+ 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: 1637695385}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: RequestConsentInfoUpdate
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1637695385
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1637695382}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1637695386
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1637695382}
+ m_CullTransparentMesh: 0
+--- !u!1 &1678559562
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1678559563}
+ - component: {fileID: 1678559565}
+ - component: {fileID: 1678559564}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1678559563
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1678559562}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1278136238}
+ 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 &1678559564
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1678559562}
+ 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: 40
+ 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: Authorization Status
+--- !u!222 &1678559565
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1678559562}
+ m_CullTransparentMesh: 0
+--- !u!1 &1723172032
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1723172033}
+ - component: {fileID: 1723172036}
+ - component: {fileID: 1723172035}
+ - component: {fileID: 1723172034}
+ m_Layer: 5
+ m_Name: Appodeal Logic Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1723172033
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1723172032}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 375756339}
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -0.000030518, y: -763}
+ m_SizeDelta: {x: 1030, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1723172034
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1723172032}
+ 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: 1723172035}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: ShowAppodealLogic
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1723172035
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1723172032}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1723172036
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1723172032}
+ m_CullTransparentMesh: 0
+--- !u!1 &1729912244
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1729912245}
+ - component: {fileID: 1729912247}
+ - component: {fileID: 1729912246}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1729912245
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1729912244}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 185979417}
+ 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 &1729912246
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1729912244}
+ 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: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: SHOW BANNER BOTTOM
+--- !u!222 &1729912247
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1729912244}
+ m_CullTransparentMesh: 0
+--- !u!1 &1838163237
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1838163238}
+ - component: {fileID: 1838163240}
+ - component: {fileID: 1838163239}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1838163238
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1838163237}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1262231783}
+ 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 &1838163239
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1838163237}
+ 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: 36
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 4
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Should show?
+--- !u!222 &1838163240
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1838163237}
+ m_CullTransparentMesh: 0
+--- !u!1 &1851359258
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1851359259}
+ m_Layer: 5
+ m_Name: Appodeal Logic
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1851359259
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1851359258}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1977862822}
+ - {fileID: 1426276315}
+ - {fileID: 2038355072}
+ - {fileID: 663080055}
+ m_Father: {fileID: 224157128}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: -50}
+ m_SizeDelta: {x: 0, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &1886432121
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1886432122}
+ - component: {fileID: 1886432125}
+ - component: {fileID: 1886432124}
+ - component: {fileID: 1886432123}
+ m_Layer: 5
+ m_Name: Hide Mrec
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1886432122
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1886432121}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 777467650}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -1615}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1886432123
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1886432121}
+ 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: 1886432124}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: HideMrecView
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1886432124
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1886432121}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1886432125
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1886432121}
+ m_CullTransparentMesh: 0
+--- !u!1 &1927940424
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1927940427}
+ - component: {fileID: 1927940426}
+ - component: {fileID: 1927940425}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1927940425
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1927940424}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_SendPointerHoverToParent: 1
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1927940426
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1927940424}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &1927940427
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1927940424}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1973590141
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1973590142}
+ - component: {fileID: 1973590145}
+ - component: {fileID: 1973590144}
+ - component: {fileID: 1973590143}
+ m_Layer: 5
+ m_Name: Print Current Consent Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1973590142
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1973590141}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 451274756}
+ m_Father: {fileID: 1004384089}
+ 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: 125}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1973590143
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1973590141}
+ 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: 1973590144}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: PrintCurrentConsent
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1973590144
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1973590141}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1973590145
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1973590141}
+ m_CullTransparentMesh: 0
+--- !u!1 &1977862821
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1977862822}
+ - component: {fileID: 1977862824}
+ - component: {fileID: 1977862823}
+ m_Layer: 5
+ m_Name: 'Appodeal Logic Label '
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1977862822
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1977862821}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1851359259}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: -50}
+ m_SizeDelta: {x: 980, y: 53.400024}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1977862823
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1977862821}
+ 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: 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 0
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Appodeal Logic
+--- !u!222 &1977862824
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1977862821}
+ m_CullTransparentMesh: 0
+--- !u!1 &1994467823
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1994467824}
+ - component: {fileID: 1994467826}
+ - component: {fileID: 1994467825}
+ m_Layer: 5
+ m_Name: Consent Form Logic Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1994467824
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1994467823}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1634643288}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 13.000038}
+ m_SizeDelta: {x: 980, y: 53.4}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1994467825
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1994467823}
+ 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: 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 40
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 3
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Consent Form Load Logic
+--- !u!222 &1994467826
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1994467823}
+ m_CullTransparentMesh: 0
+--- !u!1 &2016348337
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2016348338}
+ - component: {fileID: 2016348340}
+ - component: {fileID: 2016348339}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2016348338
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2016348337}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2059382383}
+ 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 &2016348339
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2016348337}
+ 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: 40
+ 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: HIDE BANNER
+--- !u!222 &2016348340
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2016348337}
+ m_CullTransparentMesh: 0
+--- !u!1 &2038355071
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2038355072}
+ - component: {fileID: 2038355073}
+ m_Layer: 5
+ m_Name: Toogle Testing
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2038355072
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2038355071}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 3.5, y: 3.5, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 820090511}
+ - {fileID: 1071803917}
+ m_Father: {fileID: 1851359259}
+ 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: -292.7, y: -150}
+ m_SizeDelta: {x: 20.2, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2038355073
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2038355071}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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: 820090512}
+ toggleTransition: 1
+ graphic: {fileID: 1580703568}
+ m_Group: {fileID: 0}
+ onValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_IsOn: 0
+--- !u!1 &2059382382
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2059382383}
+ - component: {fileID: 2059382386}
+ - component: {fileID: 2059382385}
+ - component: {fileID: 2059382384}
+ m_Layer: 5
+ m_Name: Hide Banner Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2059382383
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2059382382}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2016348338}
+ m_Father: {fileID: 663080055}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 50, y: -1155}
+ m_SizeDelta: {x: 980, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2059382384
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2059382382}
+ 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: 2059382385}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1572186908}
+ m_TargetAssemblyTypeName:
+ m_MethodName: HideBanner
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &2059382385
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2059382382}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &2059382386
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2059382382}
+ m_CullTransparentMesh: 0
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 534669905}
+ - {fileID: 170076735}
+ - {fileID: 1572186912}
+ - {fileID: 1927940427}
diff --git a/Assets/Appodeal/Demo/Scenes/AppodealDemoScene.unity.meta b/Assets/Appodeal/Demo/Scenes/AppodealDemoScene.unity.meta
new file mode 100644
index 0000000..daf0fb1
--- /dev/null
+++ b/Assets/Appodeal/Demo/Scenes/AppodealDemoScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2ad88b269161f4e84aad9fcef055bf58
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Demo/Scenes/AppodealDemoSceneSettings.lighting b/Assets/Appodeal/Demo/Scenes/AppodealDemoSceneSettings.lighting
new file mode 100644
index 0000000..065dd28
--- /dev/null
+++ b/Assets/Appodeal/Demo/Scenes/AppodealDemoSceneSettings.lighting
@@ -0,0 +1,66 @@
+%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: AppodealDemoSceneSettings
+ serializedVersion: 6
+ m_GIWorkflowMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 10
+ m_Padding: 2
+ m_LightmapCompression: 3
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ 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: 256
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRMinBounces: 2
+ m_PVREnvironmentImportanceSampling: 0
+ m_PVRFilteringMode: 2
+ 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
+ m_PVRTiledBaking: 0
+ m_NumRaysToShootPerTexel: -1
+ m_RespectSceneVisibilityWhenBakingGI: 0
diff --git a/Assets/Appodeal/Demo/Scenes/AppodealDemoSceneSettings.lighting.meta b/Assets/Appodeal/Demo/Scenes/AppodealDemoSceneSettings.lighting.meta
new file mode 100644
index 0000000..9a7e46d
--- /dev/null
+++ b/Assets/Appodeal/Demo/Scenes/AppodealDemoSceneSettings.lighting.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 70b2daef1c1b26d40ad26746d8e87f43
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 4890085278179872738
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Demo/Scripts.meta b/Assets/Appodeal/Demo/Scripts.meta
new file mode 100644
index 0000000..f774d36
--- /dev/null
+++ b/Assets/Appodeal/Demo/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 22c314f3a6094434297695ee0a52cce8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Demo/Scripts/AppodealDemo.cs b/Assets/Appodeal/Demo/Scripts/AppodealDemo.cs
new file mode 100644
index 0000000..2048aa1
--- /dev/null
+++ b/Assets/Appodeal/Demo/Scripts/AppodealDemo.cs
@@ -0,0 +1,625 @@
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+using ConsentManager.Common;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace ConsentManager.ConsentManagerDemo.Scripts
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ParameterHidesMember")]
+ public class AppodealDemo : MonoBehaviour, IAppodealInitializationListener, IInAppPurchaseValidationListener,
+ IBannerAdListener, IInterstitialAdListener, IRewardedVideoAdListener, IMrecAdListener,
+ IConsentFormListener, IConsentInfoUpdateListener, IAdRevenueListener
+ {
+ #region Constants
+
+ private const string CACHE_INTERSTITIAL = "CACHE INTERSTITIAL";
+ private const string SHOW_INTERSTITIAL = "SHOW INTERSTITIAL";
+ private const string CACHE_REWARDED_VIDEO = "CACHE REWARDED VIDEO";
+
+ #endregion
+
+ #region UI
+
+ [SerializeField] public Toggle tgTesting;
+ [SerializeField] public Toggle tgLogging;
+ [SerializeField] public Button btnShowInterstitial;
+ [SerializeField] public Button btnShowRewardedVideo;
+ [SerializeField] public GameObject consentManagerPanel;
+ [SerializeField] public GameObject appodealPanel;
+
+ #endregion
+
+ #region Application keys
+
+#if UNITY_EDITOR && !UNITY_ANDROID && !UNITY_IPHONE
+ public static string appKey = "";
+#elif UNITY_ANDROID
+ public static string appKey = "fee50c333ff3825fd6ad6d38cff78154de3025546d47a84f";
+#elif UNITY_IPHONE
+ public static string appKey = "466de0d625e01e8811c588588a42a55970bc7c132649eede";
+#else
+ public static string appKey = "";
+#endif
+
+ #endregion
+
+ private Consent currentConsent;
+ private ConsentForm consentForm;
+ private ConsentManager consentManager;
+
+ private void Start()
+ {
+ consentManagerPanel.gameObject.SetActive(true);
+ appodealPanel.gameObject.SetActive(false);
+
+ btnShowInterstitial.GetComponentInChildren().text = CACHE_INTERSTITIAL;
+ btnShowRewardedVideo.GetComponentInChildren().text = CACHE_REWARDED_VIDEO;
+
+ consentManager = ConsentManager.getInstance();
+ consentManager.setStorage(ConsentManager.Storage.SHARED_PREFERENCE);
+ }
+
+ private void OnDestroy()
+ {
+ Appodeal.destroy(Appodeal.BANNER);
+ }
+
+ public void RequestConsentInfoUpdate()
+ {
+ consentManager?.requestConsentInfoUpdate(appKey, this);
+ }
+
+ public void SetCustomVendor()
+ {
+ var customVendor = new Vendor.Builder(
+ "Appodeal Test",
+ "com.appodeal.test",
+ "https://customvendor.com")
+ .setPurposeIds(new List {100, 200, 300})
+ .setFeatureIds(new List {400, 500, 600})
+ .setLegitimateInterestPurposeIds(new List {700, 800, 900})
+ .build();
+
+ consentManager?.setCustomVendor(customVendor);
+
+ var vendor = consentManager?.getCustomVendor("com.appodeal.test");
+ if (vendor == null) return;
+ Debug.Log("Vendor getName: " + vendor.getName());
+ Debug.Log("Vendor getBundle: " + vendor.getBundle());
+ Debug.Log("Vendor getPolicyUrl: " + vendor.getPolicyUrl());
+ foreach (var purposeId in vendor.getPurposeIds())
+ {
+ Debug.Log("Vendor getPurposeIds: " + purposeId);
+ }
+
+ foreach (var featureId in vendor.getFeatureIds())
+ {
+ Debug.Log("Vendor getFeatureIds: " + featureId);
+ }
+
+ foreach (var legitimateInterestPurposeId in vendor.getLegitimateInterestPurposeIds())
+ {
+ Debug.Log("Vendor getLegitimateInterestPurposeIds: " + legitimateInterestPurposeId);
+ }
+ }
+
+ public void ShouldShowForm()
+ {
+ Debug.Log("shouldShowConsentDialog: " + consentManager.shouldShowConsentDialog());
+ }
+
+ public void GetConsentZone()
+ {
+ Debug.Log("getConsentZone: " + consentManager.getConsentZone());
+ }
+
+ public void GetConsentStatus()
+ {
+ Debug.Log("getConsentStatus: " + consentManager.getConsentStatus());
+ }
+
+ public void LoadConsentForm()
+ {
+ consentForm = ConsentForm.GetInstance(this);
+ consentForm?.load();
+ }
+
+ public void IsLoadedConsentForm()
+ {
+ if (consentForm != null)
+ {
+ Debug.Log("isLoadedConsentForm: " + consentForm.isLoaded());
+ }
+ }
+
+ public void ShowFormAsActivity()
+ {
+ if (consentForm != null)
+ {
+ consentForm.show();
+ }
+ else
+ {
+ Debug.Log("showForm - false");
+ }
+ }
+
+ public void ShowFormAsDialog()
+ {
+ if (consentForm != null)
+ {
+ consentForm.show();
+ }
+ else
+ {
+ Debug.Log("showForm - false");
+ }
+ }
+
+ public void PrintIABString()
+ {
+ Debug.Log("Consent IAB String is: " + consentManager.getConsent().getIabConsentString());
+ }
+
+ public void PrintCurrentConsent()
+ {
+ if (consentManager.getConsent() == null) return;
+ Debug.Log("consent.hasConsentForVendor() - " + consentManager.getConsent().hasConsentForVendor("com.appodeal.test"));
+ Debug.Log("consent.getStatus() - " + consentManager.getConsent().getStatus());
+ Debug.Log("consent.getZone() - " + consentManager.getConsent().getZone());
+ }
+
+ public void PrintAuthorizationStatus()
+ {
+ if (consentManager.getConsent() == null) return;
+ Debug.Log($"AuthorizationStatus - {consentManager.getConsent().getAuthorizationStatus()} ");
+ }
+
+ public void ShowAppodealLogic()
+ {
+ consentManagerPanel.SetActive(false);
+ appodealPanel.SetActive(true);
+ }
+
+ public void Initialize()
+ {
+ InitWithConsent(currentConsent != null);
+ }
+
+ public void InitWithConsent(bool isConsent)
+ {
+ Appodeal.setLogLevel(tgLogging.isOn ? Appodeal.LogLevel.Verbose : Appodeal.LogLevel.None);
+ Appodeal.setTesting(tgTesting.isOn);
+ Appodeal.setUseSafeArea(true);
+
+ Appodeal.setUserId("1");
+ Appodeal.setCustomFilter(UserSettings.USER_AGE, 18);
+ Appodeal.setCustomFilter(UserSettings.USER_GENDER, (int) UserSettings.Gender.MALE);
+
+ Appodeal.setExtraData("testKey", "testValue");
+ Appodeal.resetExtraData("testKey");
+
+ Appodeal.setSmartBanners(true);
+ Appodeal.setBannerAnimation(false);
+ Appodeal.setTabletBanners(false);
+ Appodeal.setBannerRotation(-90, 110);
+
+ Appodeal.disableLocationPermissionCheck();
+ Appodeal.setChildDirectedTreatment(false);
+ Appodeal.muteVideosIfCallsMuted(true);
+
+ Appodeal.setTriggerOnLoadedOnPrecache(Appodeal.INTERSTITIAL, true);
+
+ Appodeal.disableNetwork(AppodealNetworks.VUNGLE);
+ Appodeal.disableNetwork(AppodealNetworks.YANDEX, Appodeal.MREC);
+
+ Appodeal.setAutoCache(Appodeal.INTERSTITIAL, false);
+ Appodeal.setAutoCache(Appodeal.REWARDED_VIDEO, false);
+
+ Appodeal.setBannerCallbacks(this);
+ Appodeal.setInterstitialCallbacks(this);
+ Appodeal.setRewardedVideoCallbacks(this);
+ Appodeal.setMrecCallbacks(this);
+ Appodeal.setAdRevenueCallback(this);
+
+ Appodeal.setCustomFilter("newBoolean", true);
+ Appodeal.setCustomFilter("newInt", 1234567890);
+ Appodeal.setCustomFilter("newDouble", 123.123456789);
+ Appodeal.setCustomFilter("newString", "newStringFromSDK");
+
+ if (isConsent)
+ {
+ Appodeal.updateConsent(currentConsent);
+ }
+ else
+ {
+ Appodeal.updateCcpaConsent(Appodeal.CcpaUserConsent.OptOut);
+ Appodeal.updateGdprConsent(Appodeal.GdprUserConsent.NonPersonalized);
+ }
+
+ int adTypes = Appodeal.INTERSTITIAL | Appodeal.BANNER | Appodeal.REWARDED_VIDEO | Appodeal.MREC;
+ Appodeal.initialize(appKey, adTypes, (IAppodealInitializationListener) this);
+ }
+
+ public void ShowInterstitial()
+ {
+ if (Appodeal.isLoaded(Appodeal.INTERSTITIAL) && Appodeal.canShow(Appodeal.INTERSTITIAL, "default") && !Appodeal.isPrecache(Appodeal.INTERSTITIAL))
+ {
+ Appodeal.show(Appodeal.INTERSTITIAL);
+ }
+ else
+ {
+ Appodeal.cache(Appodeal.INTERSTITIAL);
+ }
+ }
+
+ public void ShowRewardedVideo()
+ {
+ if (Appodeal.isLoaded(Appodeal.REWARDED_VIDEO) && Appodeal.canShow(Appodeal.REWARDED_VIDEO, "default"))
+ {
+ Appodeal.show(Appodeal.REWARDED_VIDEO);
+ }
+ else
+ {
+ Appodeal.cache(Appodeal.REWARDED_VIDEO);
+ }
+ }
+
+ public void ShowBannerBottom()
+ {
+ Appodeal.show(Appodeal.BANNER_BOTTOM, "default");
+ }
+
+ public void ShowBannerTop()
+ {
+ Appodeal.show(Appodeal.BANNER_TOP, "default");
+ }
+
+ public void HideBanner()
+ {
+ Appodeal.hide(Appodeal.BANNER);
+ }
+
+ public void ShowBannerView()
+ {
+ Appodeal.showBannerView(Appodeal.BANNER_BOTTOM, Appodeal.BANNER_HORIZONTAL_CENTER, "default");
+ }
+
+ public void HideBannerView()
+ {
+ Appodeal.hideBannerView();
+ }
+
+ public void ShowMrecView()
+ {
+ Appodeal.showMrecView(Appodeal.BANNER_TOP, Appodeal.BANNER_HORIZONTAL_CENTER, "default");
+ }
+
+ public void HideMrecView()
+ {
+ Appodeal.hideMrecView();
+ }
+
+ public void ShowBannerLeft()
+ {
+ Appodeal.show(Appodeal.BANNER_LEFT);
+ }
+
+ public void ShowBannerRight()
+ {
+ Appodeal.show(Appodeal.BANNER_RIGHT);
+ }
+
+ #region AppodealInitializeListener
+
+ public void onInitializationFinished(List errors)
+ {
+ string output = errors == null ? string.Empty : string.Join(", ", errors);
+ Debug.Log($"onInitializationFinished(errors:[{output}])");
+
+ Debug.Log($"isAutoCacheEnabled() for banner: {Appodeal.isAutoCacheEnabled(Appodeal.BANNER)}");
+ Debug.Log($"isInitialized() for banner: {Appodeal.isInitialized(Appodeal.BANNER)}");
+ Debug.Log($"isSmartBannersEnabled(): {Appodeal.isSmartBannersEnabled()}");
+ Debug.Log($"getUserId(): {Appodeal.getUserId()}");
+ Debug.Log($"getSegmentId(): {Appodeal.getSegmentId()}");
+ Debug.Log($"getRewardParameters(): {Appodeal.getRewardParameters()}");
+ Debug.Log($"getNativeSDKVersion(): {Appodeal.getNativeSDKVersion()}");
+
+ var networksList = Appodeal.getNetworks(Appodeal.REWARDED_VIDEO);
+ output = networksList == null ? string.Empty : string.Join(", ", (networksList.ToArray()));
+ Debug.Log($"getNetworks() for RV: {output}");
+
+#if UNITY_ANDROID
+ var additionalParams = new Dictionary { { "key1", "value1" }, { "key2", "value2" } };
+
+ var purchase = new PlayStoreInAppPurchase.Builder(Appodeal.PlayStorePurchaseType.Subs)
+ .withAdditionalParameters(additionalParams)
+ .withPurchaseTimestamp(793668600)
+ .withDeveloperPayload("payload")
+ .withPurchaseToken("token")
+ .withPurchaseData("data")
+ .withPublicKey("key")
+ .withSignature("signature")
+ .withCurrency("USD")
+ .withOrderId("orderId")
+ .withPrice("1.99")
+ .withSku("sku")
+ .build();
+
+ Appodeal.validatePlayStoreInAppPurchase(purchase, this);
+#elif UNITY_IOS
+ var additionalParams = new Dictionary { { "key1", "value1" }, { "key2", "value2" } };
+
+ var purchase = new AppStoreInAppPurchase.Builder(Appodeal.AppStorePurchaseType.Consumable)
+ .withAdditionalParameters(additionalParams)
+ .withTransactionId("transactionId")
+ .withProductId("productId")
+ .withCurrency("USD")
+ .withPrice("2.89")
+ .build();
+
+ Appodeal.validateAppStoreInAppPurchase(purchase, this);
+#endif
+
+ Appodeal.logEvent("test_event", new Dictionary { { "test_key_1", 42 }, { "test_key_2", "test_value" } });
+ }
+
+ #endregion
+
+ #region InAppPurchaseValidationListener
+
+ public void onInAppPurchaseValidationSucceeded(string json)
+ {
+ Debug.Log($"onInAppPurchaseValidationSucceeded(string json:\n{json})");
+ }
+
+ public void onInAppPurchaseValidationFailed(string json)
+ {
+ Debug.Log($"onInAppPurchaseValidationFailed(string json:\n{json})");
+ }
+
+ #endregion
+
+ #region ConsentFormListener
+
+ public void onConsentFormLoaded()
+ {
+ Debug.Log("ConsentFormListener - onConsentFormLoaded");
+ }
+
+ public void onConsentFormError(ConsentManagerException exception)
+ {
+ Debug.Log($"ConsentFormListener - onConsentFormError, reason - {exception.getReason()}");
+ }
+
+ public void onConsentFormOpened()
+ {
+ Debug.Log("ConsentFormListener - onConsentFormOpened");
+ }
+
+ public void onConsentFormClosed(Consent consent)
+ {
+ currentConsent = consent;
+ Debug.Log($"ConsentFormListener - onConsentFormClosed, consentStatus - {consent.getStatus()}");
+ }
+
+ #endregion
+
+ #region ConsentInfoUpdateListener
+
+ public void onConsentInfoUpdated(Consent consent)
+ {
+ currentConsent = consent;
+ Debug.Log("onConsentInfoUpdated");
+ }
+
+ public void onFailedToUpdateConsentInfo(ConsentManagerException error)
+ {
+ Debug.Log($"onFailedToUpdateConsentInfo");
+
+ if (error == null) return;
+ Debug.Log($"onFailedToUpdateConsentInfo Reason: {error.getReason()}");
+
+ switch (error.getCode())
+ {
+ case 0:
+ Debug.Log("onFailedToUpdateConsentInfo - UNKNOWN");
+ break;
+ case 1:
+ Debug.Log(
+ "onFailedToUpdateConsentInfo - INTERNAL - Error on SDK side. Includes JS-bridge or encoding/decoding errors");
+ break;
+ case 2:
+ Debug.Log("onFailedToUpdateConsentInfo - NETWORKING - HTTP errors, parse request/response ");
+ break;
+ case 3:
+ Debug.Log("onFailedToUpdateConsentInfo - INCONSISTENT - Incorrect SDK API usage");
+ break;
+ }
+ }
+
+ #endregion
+
+ #region Banner callback handlers
+
+ public void onBannerLoaded(int height, bool precache)
+ {
+ Debug.Log("onBannerLoaded");
+ Debug.Log($"Banner height - {height}");
+ Debug.Log($"Banner precache - {precache}");
+ Debug.Log($"getPredictedEcpm(): {Appodeal.getPredictedEcpm(Appodeal.BANNER)}");
+ }
+
+ public void onBannerFailedToLoad()
+ {
+ Debug.Log("onBannerFailedToLoad");
+ }
+
+ public void onBannerShown()
+ {
+ Debug.Log("onBannerShown");
+ }
+
+ public void onBannerShowFailed()
+ {
+ Debug.Log("onBannerShowFailed");
+ }
+
+ public void onBannerClicked()
+ {
+ Debug.Log("onBannerClicked");
+ }
+
+ public void onBannerExpired()
+ {
+ Debug.Log("onBannerExpired");
+ }
+
+ #endregion
+
+ #region Interstitial callback handlers
+
+ public void onInterstitialLoaded(bool isPrecache)
+ {
+ if (!isPrecache)
+ {
+ btnShowInterstitial.GetComponentInChildren().text = SHOW_INTERSTITIAL;
+ }
+ else
+ {
+ Debug.Log("Appodeal. Interstitial loaded. isPrecache - true");
+ }
+
+ Debug.Log("onInterstitialLoaded");
+ Debug.Log($"getPredictedEcpm(): {Appodeal.getPredictedEcpm(Appodeal.INTERSTITIAL)}");
+ }
+
+ public void onInterstitialFailedToLoad()
+ {
+ Debug.Log("onInterstitialFailedToLoad");
+ }
+
+ public void onInterstitialShowFailed()
+ {
+ Debug.Log("onInterstitialShowFailed");
+ }
+
+ public void onInterstitialShown()
+ {
+ Debug.Log("onInterstitialShown");
+ }
+
+ public void onInterstitialClosed()
+ {
+ btnShowInterstitial.GetComponentInChildren().text = CACHE_INTERSTITIAL;
+ Debug.Log("onInterstitialClosed");
+ }
+
+ public void onInterstitialClicked()
+ {
+ Debug.Log("onInterstitialClicked");
+ }
+
+ public void onInterstitialExpired()
+ {
+ Debug.Log("onInterstitialExpired");
+ }
+
+ #endregion
+
+ #region Rewarded Video callback handlers
+
+ public void onRewardedVideoLoaded(bool isPrecache)
+ {
+ btnShowRewardedVideo.GetComponentInChildren().text = "SHOW REWARDED VIDEO";
+ Debug.Log("onRewardedVideoLoaded");
+ Debug.Log($"getPredictedEcpm(): {Appodeal.getPredictedEcpm(Appodeal.REWARDED_VIDEO)}");
+ }
+
+ public void onRewardedVideoFailedToLoad()
+ {
+ Debug.Log("onRewardedVideoFailedToLoad");
+ }
+
+ public void onRewardedVideoShowFailed()
+ {
+ Debug.Log("onRewardedVideoShowFailed");
+ }
+
+ public void onRewardedVideoShown()
+ {
+ Debug.Log("onRewardedVideoShown");
+ }
+
+ public void onRewardedVideoClosed(bool finished)
+ {
+ btnShowRewardedVideo.GetComponentInChildren().text = "CACHE REWARDED VIDEO";
+ Debug.Log($"onRewardedVideoClosed. Finished - {finished}");
+ }
+
+ public void onRewardedVideoFinished(double amount, string name)
+ {
+ Debug.Log("onRewardedVideoFinished. Reward: " + amount + " " + name);
+ }
+
+ public void onRewardedVideoExpired()
+ {
+ Debug.Log("onRewardedVideoExpired");
+ }
+
+ public void onRewardedVideoClicked()
+ {
+ Debug.Log("onRewardedVideoClicked");
+ }
+
+ #endregion
+
+ #region Mrec callback handlers
+
+ public void onMrecLoaded(bool precache)
+ {
+ Debug.Log($"onMrecLoaded. Precache - {precache}");
+ Debug.Log($"getPredictedEcpm(): {Appodeal.getPredictedEcpm(Appodeal.MREC)}");
+ }
+
+ public void onMrecFailedToLoad()
+ {
+ Debug.Log("onMrecFailedToLoad");
+ }
+
+ public void onMrecShown()
+ {
+ Debug.Log("onMrecShown");
+ }
+
+ public void onMrecShowFailed()
+ {
+ Debug.Log("onMrecShowFailed");
+ }
+
+ public void onMrecClicked()
+ {
+ Debug.Log("onMrecClicked");
+ }
+
+ public void onMrecExpired()
+ {
+ Debug.Log("onMrecExpired");
+ }
+
+ #endregion
+
+ #region IAdRevenueListener implementation
+
+ public void onAdRevenueReceived(AppodealAdRevenue ad)
+ {
+ Debug.Log($"[APDUnity] [Callback] onAdRevenueReceived({ad.ToJsonString(true)})");
+ }
+
+ #endregion
+ }
+}
diff --git a/Assets/Appodeal/Demo/Scripts/AppodealDemo.cs.meta b/Assets/Appodeal/Demo/Scripts/AppodealDemo.cs.meta
new file mode 100644
index 0000000..4e59951
--- /dev/null
+++ b/Assets/Appodeal/Demo/Scripts/AppodealDemo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ffb831a105b614dd1bd2adbfcd130c78
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor.meta b/Assets/Appodeal/Editor.meta
new file mode 100644
index 0000000..d245f48
--- /dev/null
+++ b/Assets/Appodeal/Editor.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: c1038daf12b2c471fbc6c2c233f84cad
+folderAsset: yes
+timeCreated: 1530702704
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Checkers.meta b/Assets/Appodeal/Editor/Checkers.meta
new file mode 100644
index 0000000..e6f06bc
--- /dev/null
+++ b/Assets/Appodeal/Editor/Checkers.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9aebd6607e7d446bfb67ef2569e87b08
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Checkers/CheckerWindow.cs b/Assets/Appodeal/Editor/Checkers/CheckerWindow.cs
new file mode 100644
index 0000000..f76c9b5
--- /dev/null
+++ b/Assets/Appodeal/Editor/Checkers/CheckerWindow.cs
@@ -0,0 +1,56 @@
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using UnityEditor;
+
+namespace AppodealAds.Unity.Editor.Checkers
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class FixProblemInstruction
+ {
+ private bool _checkedForResolve;
+
+ public bool checkedForResolve
+ {
+ get
+ {
+ return _checkedForResolve;
+ }
+ set
+ {
+ if (isAutoresolvePossible) _checkedForResolve = value;
+ }
+ }
+
+ private readonly string desc;
+ private readonly bool isAutoresolvePossible;
+
+ public FixProblemInstruction(string description, bool autoresolve)
+ {
+ desc = description;
+ isAutoresolvePossible = autoresolve;
+ }
+
+ public string getDescription()
+ {
+ return desc;
+ }
+
+ public bool canBeResolvedAutomatically()
+ {
+ return isAutoresolvePossible;
+ }
+
+ public virtual void fixProblem()
+ {
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public abstract class CheckingStep
+ {
+ public bool done;
+ public abstract string getName();
+ public abstract List check();
+ public abstract bool isRequiredForPlatform(BuildTarget target);
+ }
+}
\ No newline at end of file
diff --git a/Assets/Appodeal/Editor/Checkers/CheckerWindow.cs.meta b/Assets/Appodeal/Editor/Checkers/CheckerWindow.cs.meta
new file mode 100644
index 0000000..da1319c
--- /dev/null
+++ b/Assets/Appodeal/Editor/Checkers/CheckerWindow.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: aff991977bdce4cca8d7e82c73b39460
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Checkers/MultidexActivator.cs b/Assets/Appodeal/Editor/Checkers/MultidexActivator.cs
new file mode 100644
index 0000000..6b57d4b
--- /dev/null
+++ b/Assets/Appodeal/Editor/Checkers/MultidexActivator.cs
@@ -0,0 +1,533 @@
+using System.Text.RegularExpressions;
+using UnityEngine;
+using UnityEditor;
+using System.IO;
+using System;
+using System.Xml;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using Debug = System.Diagnostics.Debug;
+using AppodealAds.Unity.Editor.Utils;
+
+
+namespace AppodealAds.Unity.Editor.Checkers
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class MultidexActivator : CheckingStep
+ {
+ #region Constants
+
+ //Templates in Unity Editor Data folder
+ private const string gradleDefaultTemplatePath = "PlaybackEngines/AndroidPlayer/Tools/GradleTemplates";
+ public const string manifestDefaultTemplatePath = "PlaybackEngines/AndroidPlayer/Apk/AndroidManifest.xml";
+
+ //Paths without leading Assets folder
+ public const string androidPluginsPath = "Plugins/Android";
+ public const string gradleTemplateName = "mainTemplate.gradle";
+ public const string manifestTemplateName = "AndroidManifest.xml";
+ public const string appodealTemplatesPath = "Appodeal/InternalResources";
+ private const string appodealDexesPath = "Assets/Plugins/Android/appodeal/assets/dex";
+
+ //Gradle search lines
+ public const string GRADLE_GOOGLE_REPOSITORY = "google()";
+ public const string GRADLE_GOOGLE_REPOSITORY_COMPAT = "maven { url \"https://maven.google.com\" }";
+ public const string GRADLE_DEPENDENCIES = "**DEPS**";
+ public const string GRADLE_APP_ID = "**APPLICATIONID**";
+ public const string GRADLE_USE_PROGUARD = "useProguard";
+ public const string GRADLE_MULTIDEX_DEPENDENCY_WO_VERSION = "androidx.multidex:multidex:";
+ public const string GRAFLE_DEFAULT_CONFIG = "defaultConfig";
+ public const string COMPILE_OPTIONS = "compileOptions {";
+ public const string GRADLE_JAVA_VERSION_1_8 = "JavaVersion.VERSION_1_8";
+ public const string GRADLE_SOURCE_CAPABILITY = "sourceCompatibility ";
+ public const string GRADLE_TARGET_CAPATILITY = "targetCompatibility ";
+
+ //Gradle add lines
+ public const string GRADLE_COMPILE = "compile ";
+ public const string GRADLE_IMPLEMENTATION = "implementation ";
+ public const string GRADLE_MULTIDEX_DEPENDENCY = "'androidx.multidex:multidex:2.0.1'";
+ public const string GRADLE_MULTIDEX_ENABLE = "multiDexEnabled true";
+
+ //Manifest add lines
+ public const string manifestMutlidexApp = "androidx.multidex.MultiDexApplication";
+
+ #endregion
+
+ public override string getName()
+ {
+ return "Android Multidex Settings";
+ }
+
+ public override bool isRequiredForPlatform(BuildTarget target)
+ {
+ return target == BuildTarget.Android;
+ }
+
+ public override List check()
+ {
+ var instructions = new List();
+ if (isNodexBuild() && EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
+ {
+ if (!AppodealUnityUtils.isGradleEnabled())
+ {
+ if (!AppodealUnityUtils.isGradleAvailable())
+ {
+ var fix = new FixProblemInstruction(
+ "Gradle should be enabled if you use nodex version of Appodeal Plugin. " +
+ "But your version of Unity doesn't support gradle build system.Please update your Unity or use export to Eclipse or Android Studio.",
+ false);
+ instructions.Add(fix);
+ return instructions;
+ }
+
+ instructions.Add(new EnableGradle());
+ }
+
+ var customGradeScript = getCustomGradleScriptPath();
+ if (string.IsNullOrEmpty(customGradeScript) || !File.Exists(customGradeScript))
+ {
+ if (File.Exists(getDefaultGradleTemplate()))
+ {
+ instructions.Add(new CopyGradleScriptAndEnableMultidex());
+ }
+ else
+ {
+ var instr = new FixProblemInstruction(
+ "There is no build.gradle template in your Unity. " +
+ "Please ensure that your copy of Unity isn't crashed and contact Appodeal Support team.",
+ false);
+ instructions.Add(instr);
+ return instructions;
+ }
+ }
+ else
+ {
+ var settings = new ImportantGradleSettings(customGradeScript);
+ if (!settings.isMultiDexAddedCompletely())
+ {
+ instructions.Add(new EnableMultidexInGradle(customGradeScript));
+ }
+
+ if (!settings.isJavaVersionIncluded())
+ {
+ instructions.Add(new EnableJavaVersion(customGradeScript));
+ }
+ }
+
+ var customManifestPath = getCustomManifestPath();
+ if (string.IsNullOrEmpty(customManifestPath) || !File.Exists(customManifestPath))
+ {
+ instructions.Add(new CopyManifestTemplateAndAddNameAttribute());
+ }
+ else
+ {
+ var appNode = getApplicationNode(customManifestPath);
+ var ns = appNode.GetNamespaceOfPrefix("android");
+ if (!appNode.HasAttribute("name", ns))
+ {
+ instructions.Add(new AddNameAttrubute(appNode, ns));
+ }
+ else
+ {
+ if (appNode.GetAttribute("name", ns) == manifestMutlidexApp) return instructions;
+ var fix = new FixProblemInstruction(
+ "We found that you use custom Application class in this project. " +
+ "Please ensure that your application class meets the multidex requirements (see the official android multidex documentation).",
+ false);
+ instructions.Add(fix);
+ }
+ }
+ }
+ else if (!isNodexBuild() && isMultidexEnabledSimpleCheck() &&
+ EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
+ {
+ var fix = new FixProblemInstruction(
+ "We found that multidex is enabled in your project. To avoid possible problems please " +
+ "replace current version of Appodeal plugin with nodex version.", false);
+ instructions.Add(fix);
+ }
+
+ return instructions;
+ }
+
+ public static XmlElement getApplicationNode(string manifestPath)
+ {
+ var doc = new XmlDocument();
+ doc.Load(manifestPath);
+ var manNode = AppodealUnityUtils.XmlFindChildNode(doc, "manifest");
+ var appNode = (XmlElement) AppodealUnityUtils.XmlFindChildNode(manNode, "application");
+ return appNode;
+ }
+
+ private static string getCustomGradleScriptPath()
+ {
+ var androidDirectory = new DirectoryInfo(Path.Combine("Assets", androidPluginsPath));
+ var filePaths = androidDirectory.GetFiles("*.gradle");
+ return filePaths.Length > 0
+ ? Path.Combine(Path.Combine(Application.dataPath, androidPluginsPath), filePaths[0].Name)
+ : null;
+ }
+
+ public static string getCustomManifestPath()
+ {
+ return AppodealUnityUtils.combinePaths(Application.dataPath, androidPluginsPath, manifestTemplateName);
+ }
+
+ private static bool isNodexBuild()
+ {
+ var dexesDirectory = new DirectoryInfo(appodealDexesPath);
+ if (!dexesDirectory.Exists)
+ {
+ return true;
+ }
+
+ var dexes = dexesDirectory.GetFiles("*.dex");
+ return dexes.Length == 0;
+ }
+
+ private static bool isMultidexEnabledSimpleCheck()
+ {
+ var path = getCustomGradleScriptPath();
+ if (string.IsNullOrEmpty(path))
+ {
+ return false;
+ }
+
+ var settings = new ImportantGradleSettings(path);
+ return settings.isMultidexEnabled() && AppodealUnityUtils.isGradleEnabled();
+ }
+
+ public static string getDefaultGradleTemplate()
+ {
+ var defaultGradleTemplateFullName = AppodealUnityUtils.combinePaths(
+ EditorApplication.applicationContentsPath,
+ gradleDefaultTemplatePath,
+ gradleTemplateName);
+ if (File.Exists(defaultGradleTemplateFullName)) return defaultGradleTemplateFullName;
+ var unixAppContentsPath =
+ Path.GetDirectoryName(Path.GetDirectoryName(EditorApplication.applicationContentsPath));
+ defaultGradleTemplateFullName = AppodealUnityUtils.combinePaths(unixAppContentsPath,
+ gradleDefaultTemplatePath,
+ gradleTemplateName);
+
+ return defaultGradleTemplateFullName;
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "NotAccessedField.Local")]
+ public class ImportantGradleSettings
+ {
+ public readonly bool googleRepositoryPresented;
+ public readonly bool multidexDependencyPresented;
+ public readonly bool multidexEnabled;
+ public readonly bool deprecatedProguardPresented;
+ public readonly bool compileOptions;
+ public readonly bool sourceCapability;
+ public readonly bool targetCapability;
+ public bool defaultConfig;
+
+ public ImportantGradleSettings(string gradlePath)
+ {
+ var gradleScriptFullText = File.ReadAllText(gradlePath);
+ multidexDependencyPresented =
+ gradleScriptFullText.Contains(MultidexActivator.GRADLE_MULTIDEX_DEPENDENCY_WO_VERSION);
+ multidexEnabled = gradleScriptFullText.Contains(MultidexActivator.GRADLE_MULTIDEX_ENABLE);
+ deprecatedProguardPresented = gradleScriptFullText.Contains(MultidexActivator.GRADLE_USE_PROGUARD);
+ compileOptions = gradleScriptFullText.Contains(MultidexActivator.COMPILE_OPTIONS);
+ sourceCapability =
+ gradleScriptFullText.Contains(MultidexActivator.GRADLE_SOURCE_CAPABILITY +
+ MultidexActivator.GRADLE_JAVA_VERSION_1_8);
+ targetCapability =
+ gradleScriptFullText.Contains(MultidexActivator.GRADLE_TARGET_CAPATILITY +
+ MultidexActivator.GRADLE_JAVA_VERSION_1_8);
+ defaultConfig = gradleScriptFullText.Contains(MultidexActivator.GRAFLE_DEFAULT_CONFIG);
+
+ var allprojects = getModule("allprojects", gradleScriptFullText);
+ googleRepositoryPresented = allprojects.Contains(MultidexActivator.GRADLE_GOOGLE_REPOSITORY) ||
+ gradleScriptFullText.Contains(MultidexActivator
+ .GRADLE_GOOGLE_REPOSITORY_COMPAT);
+ }
+
+ public bool isJavaVersionIncluded()
+ {
+ return sourceCapability && targetCapability;
+ }
+
+ public bool isMultidexEnabled()
+ {
+ return multidexDependencyPresented || multidexEnabled;
+ }
+
+ public bool isMultiDexAddedCompletely()
+ {
+ return multidexDependencyPresented && multidexEnabled && !deprecatedProguardPresented &&
+ googleRepositoryPresented;
+ }
+
+ private static string getModule(string moduleName, string fulltext)
+ {
+ var startIndex = fulltext.IndexOf(moduleName, StringComparison.Ordinal);
+ startIndex = fulltext.IndexOf('{', startIndex) + 1;
+ var currentIndex = startIndex;
+ var braces = 1;
+ while (braces != 0)
+ {
+ var c = fulltext[currentIndex];
+ switch (c)
+ {
+ case '{':
+ braces++;
+ break;
+ case '}':
+ braces--;
+ break;
+ }
+
+ currentIndex++;
+ }
+
+ return fulltext.Substring(startIndex, currentIndex - startIndex);
+ }
+ }
+
+ internal class EnableGradle : FixProblemInstruction
+ {
+ public EnableGradle() : base(
+ "Gradle build system isn't enabled.\n(required for nodex version of Appodeal Plugin " +
+ "and if you aren't going to export your project to Android Studio or Eclipse).", true)
+ {
+ }
+
+ public override void fixProblem()
+ {
+ AppodealUnityUtils.enableGradleBuildSystem();
+ }
+ }
+
+ internal class CopyGradleScriptAndEnableMultidex : FixProblemInstruction
+ {
+ public CopyGradleScriptAndEnableMultidex() : base("Assets/Plugins/Android/mainTemplate.gradle not found.\n" +
+ "(required if you aren't going to export your project to Android Studio or Eclipse)",
+ true)
+ {
+ }
+
+ public override void fixProblem()
+ {
+ //EditorApplication.applicationContentsPath is different for macos and win. need to fix to reach manifest and gradle templates
+ var defaultGradleTemplateFullName = MultidexActivator.getDefaultGradleTemplate();
+
+ var destGradleScriptFullName = AppodealUnityUtils.combinePaths(Application.dataPath,
+ MultidexActivator.androidPluginsPath,
+ MultidexActivator.gradleTemplateName);
+ //Prefer to use build.gradle from the box. Just in case.
+ if (File.Exists(defaultGradleTemplateFullName))
+ {
+ File.Copy(defaultGradleTemplateFullName, destGradleScriptFullName);
+ }
+
+ AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(destGradleScriptFullName),
+ ImportAssetOptions.ForceUpdate);
+
+ //There are no multidex settings in default build.gradle but they can add that stuff.
+ var settings = new ImportantGradleSettings(destGradleScriptFullName);
+
+ if (!settings.isMultiDexAddedCompletely())
+ new EnableMultidexInGradle(destGradleScriptFullName).fixProblem();
+ }
+ }
+
+ internal class EnableMultidexInGradle : FixProblemInstruction
+ {
+ private readonly string path;
+
+ public EnableMultidexInGradle(string gradleScriptPath) : base(
+ "Multidex isn't enabled. mainTemplate.gradle should be edited " +
+ "according to the official documentation:\nhttps://developer.android.com/studio/build/multidex", true)
+ {
+ path = gradleScriptPath;
+ }
+
+ public override void fixProblem()
+ {
+ var settings = new ImportantGradleSettings(path);
+ var leadingWhitespaces = "";
+ string line;
+ var prevLine = "";
+ var modifiedGradle = "";
+ var gradleScript = new StreamReader(path);
+ string multidexDependency;
+ var comparsionUnityVersionWith20182 =
+ AppodealUnityUtils.compareVersions(Application.unityVersion, "2018.2");
+ if (comparsionUnityVersionWith20182 < 0)
+ {
+ multidexDependency = MultidexActivator.GRADLE_COMPILE + MultidexActivator.GRADLE_MULTIDEX_DEPENDENCY;
+ }
+ else
+ {
+ multidexDependency = MultidexActivator.GRADLE_IMPLEMENTATION +
+ MultidexActivator.GRADLE_MULTIDEX_DEPENDENCY;
+ }
+
+ while ((line = gradleScript.ReadLine()) != null)
+ {
+ if (!settings.multidexDependencyPresented && line.Contains(MultidexActivator.GRADLE_DEPENDENCIES))
+ {
+ modifiedGradle += leadingWhitespaces + multidexDependency + Environment.NewLine;
+ }
+
+ if (!settings.multidexEnabled && line.Contains(MultidexActivator.GRADLE_APP_ID))
+ {
+ modifiedGradle += leadingWhitespaces + MultidexActivator.GRADLE_MULTIDEX_ENABLE +
+ Environment.NewLine;
+ }
+
+ if (settings.deprecatedProguardPresented && line.Contains(MultidexActivator.GRADLE_USE_PROGUARD))
+ {
+ continue;
+ }
+
+ modifiedGradle += line + Environment.NewLine;
+ leadingWhitespaces = Regex.Match(line, "^\\s*").Value;
+ if (line.Contains("repositories") && prevLine.Contains("allprojects") &&
+ !settings.googleRepositoryPresented)
+ {
+ leadingWhitespaces += leadingWhitespaces;
+ modifiedGradle += leadingWhitespaces + MultidexActivator.GRADLE_GOOGLE_REPOSITORY_COMPAT +
+ Environment.NewLine;
+ }
+
+ prevLine = line;
+ }
+
+ gradleScript.Close();
+ File.WriteAllText(path, modifiedGradle);
+ AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(path), ImportAssetOptions.ForceUpdate);
+ }
+ }
+
+ internal class EnableJavaVersion : FixProblemInstruction
+ {
+ private readonly string path;
+
+ public EnableJavaVersion(string gradleScriptPath) : base("Java version isn't included to mainTemplate.gradle",
+ true)
+ {
+ path = gradleScriptPath;
+ }
+
+ public override void fixProblem()
+ {
+ var settings = new ImportantGradleSettings(path);
+ var leadingWhitespaces = " ";
+ const string additionalWhiteSpaces = "";
+ string line;
+ var modifiedGradle = "";
+
+ var gradleScript = new StreamReader(path);
+
+ while ((line = gradleScript.ReadLine()) != null)
+ {
+ if (line.Contains(MultidexActivator.GRAFLE_DEFAULT_CONFIG))
+ {
+ if (!settings.compileOptions)
+ {
+ modifiedGradle += additionalWhiteSpaces + leadingWhitespaces +
+ MultidexActivator.COMPILE_OPTIONS + Environment.NewLine;
+ }
+
+ if (!settings.sourceCapability)
+ {
+ modifiedGradle += leadingWhitespaces + leadingWhitespaces +
+ MultidexActivator.GRADLE_SOURCE_CAPABILITY
+ + MultidexActivator.GRADLE_JAVA_VERSION_1_8 + Environment.NewLine;
+ }
+
+ if (!settings.targetCapability)
+ {
+ modifiedGradle += leadingWhitespaces + leadingWhitespaces +
+ MultidexActivator.GRADLE_TARGET_CAPATILITY
+ + MultidexActivator.GRADLE_JAVA_VERSION_1_8 + Environment.NewLine;
+ }
+
+ if (!settings.targetCapability)
+ {
+ modifiedGradle += leadingWhitespaces + "}" + Environment.NewLine;
+ }
+
+ if (!settings.targetCapability)
+ {
+ modifiedGradle += leadingWhitespaces + Environment.NewLine;
+ }
+ }
+
+ modifiedGradle += line + Environment.NewLine;
+ leadingWhitespaces = Regex.Match(line, "^\\s*").Value;
+ }
+
+ gradleScript.Close();
+ File.WriteAllText(path, modifiedGradle);
+ AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(path), ImportAssetOptions.ForceUpdate);
+ }
+ }
+
+ internal class CopyManifestTemplateAndAddNameAttribute : FixProblemInstruction
+ {
+ public CopyManifestTemplateAndAddNameAttribute() : base(
+ "Assets/Plugins/Android/AndroidManifest.xml not found.\n", true)
+ {
+ }
+
+ public override void fixProblem()
+ {
+ var fullManifestName = MultidexActivator.getCustomManifestPath();
+ var defaultTemplate = Path.Combine(EditorApplication.applicationContentsPath,
+ MultidexActivator.manifestDefaultTemplatePath);
+ if (!File.Exists(defaultTemplate))
+ {
+ var unixAppContentsPath =
+ Path.GetDirectoryName(Path.GetDirectoryName(EditorApplication.applicationContentsPath));
+ Debug.Assert(unixAppContentsPath != null, nameof(unixAppContentsPath) + " != null");
+ defaultTemplate = Path.Combine(unixAppContentsPath, MultidexActivator.manifestDefaultTemplatePath);
+ }
+
+ var appodealTemplate = AppodealUnityUtils.combinePaths(Application.dataPath,
+ MultidexActivator.appodealTemplatesPath,
+ MultidexActivator.manifestTemplateName);
+ File.Copy(File.Exists(defaultTemplate) ? defaultTemplate : appodealTemplate, fullManifestName);
+ AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(fullManifestName),
+ ImportAssetOptions.ForceUpdate);
+
+ var appNode = MultidexActivator.getApplicationNode(fullManifestName);
+ var ns = appNode.GetNamespaceOfPrefix("android");
+ if (!appNode.HasAttribute("name", ns))
+ {
+ new AddNameAttrubute(appNode, ns).fixProblem();
+ }
+ }
+ }
+
+ internal class AddNameAttrubute : FixProblemInstruction
+ {
+ private readonly XmlElement appNode;
+ private readonly string ns;
+
+ public AddNameAttrubute(XmlElement appNode, string ns) : base(
+ "Problem in AndroidManifest.xml found.\nApplication tag should contain android:" +
+ "name attribute with value: " + MultidexActivator.manifestMutlidexApp, true)
+ {
+ this.appNode = appNode;
+ this.ns = ns;
+ }
+
+ public override void fixProblem()
+ {
+ var fullManifestName = MultidexActivator.getCustomManifestPath();
+ appNode.SetAttribute("name", ns, MultidexActivator.manifestMutlidexApp);
+ Debug.Assert(appNode.OwnerDocument != null, "appNode.OwnerDocument != null");
+ appNode.OwnerDocument.Save(fullManifestName);
+ AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(fullManifestName),
+ ImportAssetOptions.ForceUpdate);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Appodeal/Editor/Checkers/MultidexActivator.cs.meta b/Assets/Appodeal/Editor/Checkers/MultidexActivator.cs.meta
new file mode 100644
index 0000000..5ff3b9e
--- /dev/null
+++ b/Assets/Appodeal/Editor/Checkers/MultidexActivator.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7b6f78d5631104e87b80549c2de29cf1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/InternalResources.meta b/Assets/Appodeal/Editor/InternalResources.meta
new file mode 100644
index 0000000..0f582c2
--- /dev/null
+++ b/Assets/Appodeal/Editor/InternalResources.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 80a09398ec71b48589e89ee7a5b5d480
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/InternalResources/AppodealSettings.asset b/Assets/Appodeal/Editor/InternalResources/AppodealSettings.asset
new file mode 100644
index 0000000..0ce74e4
--- /dev/null
+++ b/Assets/Appodeal/Editor/InternalResources/AppodealSettings.asset
@@ -0,0 +1,1267 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9403d56c027e8442284a59449c4f1002, type: 3}
+ m_Name: AppodealSettings
+ m_EditorClassIdentifier:
+ adMobAndroidAppId: 010153e7ddbb96a5639a058bce268953b4d74b1038e266d1
+ adMobIosAppId:
+ accessCoarseLocationPermission: 0
+ writeExternalStoragePermission: 0
+ accessWifiStatePermission: 0
+ vibratePermission: 0
+ accessFineLocationPermission: 0
+ androidMultidex: 0
+ nSUserTrackingUsageDescription: 0
+ nSLocationWhenInUseUsageDescription: 0
+ nSCalendarsUsageDescription: 0
+ nSAppTransportSecurity: 0
+ iOSSKAdNetworkItems: 0
+ iOsskAdNetworkItemsList:
+ - v9wttpbfk9.skadnetwork
+ - n38lu8286q.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - v72qych5uu.skadnetwork
+ - k674qkevps.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 97r2b46745.skadnetwork
+ - zq492l623r.skadnetwork
+ - a2p9lx4jpn.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - v72qych5uu.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - gta8lk7p23.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - v72qych5uu.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - gta8lk7p23.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - v9wttpbfk9.skadnetwork
+ - n38lu8286q.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - mls7yz5dvl.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - ejvt5qm6ak.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - v72qych5uu.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - 8m87ys6875.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - 488r3q3dtq.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - f38h382jlk.skadnetwork
+ - zmvfpc5aq8.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - 97r2b46745.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - 6xzpu9s2p8.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - g28c52eehv.skadnetwork
+ - 52fl2v3hgk.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - p78axxw29g.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 523jb4fst2.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - 24t9a8vw3c.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - feyaarzu9v.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - 424m5254lk.skadnetwork
+ - gta9lk7p23.skadnetwork
+ - 5tjdwbrq8w.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - u679fj5vs4.skadnetwork
+ - 275upjj5gd.skadnetwork
+ - rx5hdcabgc.skadnetwork
+ - x44k69ngh6.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - w9q455wk68.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - m5mvw97r93.skadnetwork
+ - 89z7zv988g.skadnetwork
+ - k674qkevps.skadnetwork
+ - hb56zgv37p.skadnetwork
+ - rvh3l7un93.skadnetwork
+ - mp6xlyr22a.skadnetwork
+ - qqp299437r.skadnetwork
+ - b9bk5wbcq9.skadnetwork
+ - bxvub5ada5.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - 6v7lgmsu45.skadnetwork
+ - m297p6643m.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - r45fhb6rf7.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - 3l6bd9hu43.skadnetwork
+ - vcra2ehyfk.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - 74b6s63p6l.skadnetwork
+ - k674qkevps.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - 3qy4746246.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - v79kvwwj4g.skadnetwork
+ - 424m5254lk.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - w9q455wk68.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - a2p9lx4jpn.skadnetwork
+ - 4dzt52r2t5.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - s39g8k73mm.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - zq492l623r.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - mp6xlyr22a.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - lr83yxwka7.skadnetwork
+ - f38h382jlk.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - 5tjdwbrq8w.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 238da6jt44.skadnetwork
+ - 488r3q3dtq.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - f7s53z58qe.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - v72qych5uu.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - 4w7y6s5ca2.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - zmvfpc5aq8.skadnetwork
+ - x44k69ngh6.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - 737z793b9f.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - t38b2kh725.skadnetwork
+ - s39g8k73mm.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - f38h382jlk.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - w9q455wk68.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - lr83yxwka7.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - mls7yz5dvl.skadnetwork
+ - p78axxw29g.skadnetwork
+ - v72qych5uu.skadnetwork
+ - 6xzpu9s2p8.skadnetwork
+ - g28c52eehv.skadnetwork
+ - 523jb4fst2.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - 24t9a8vw3c.skadnetwork
+ - ejvt5qm6ak.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - zmvfpc5aq8.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - feyaarzu9v.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - 424m5254lk.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - gta9lk7p23.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - ludvb6z3bs.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - su67r6k2v3.skadnetwork
+ - 4w7y6s5ca2.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - dzg6xy7pwj.skadnetwork
+ - y45688jllp.skadnetwork
+ - hdw39hrw9y.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 4dzt52r2t5.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - 5tjdwbrq8w.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - x44k69ngh6.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - mp6xlyr22a.skadnetwork
+ - qqp299437r.skadnetwork
+ - xy9t38ct57.skadnetwork
+ - 54nzkqm89y.skadnetwork
+ - 9b89h5y424.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - 79pbpufp6p.skadnetwork
+ - 275upjj5gd.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - 44n7hlldy6.skadnetwork
+ - 54nzkqm89y.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - 6p4ks3rnbw.skadnetwork
+ - 79pbpufp6p.skadnetwork
+ - 97r2b46745.skadnetwork
+ - 9b89h5y424.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - g2y4y55b64.skadnetwork
+ - k674qkevps.skadnetwork
+ - mp6xlyr22a.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - qqp299437r.skadnetwork
+ - rx5hdcabgc.skadnetwork
+ - s69wq72ugq.skadnetwork
+ - u679fj5vs4.skadnetwork
+ - xy9t38ct57.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - rvh3l7un93.skadnetwork
+ - x8uqf25wch.skadnetwork
+ - a7xqa6mtl2.skadnetwork
+ - zq492l623r.skadnetwork
+ - 74b6s63p6l.skadnetwork
+ - r45fhb6rf7.skadnetwork
+ - b9bk5wbcq9.skadnetwork
+ - bxvub5ada5.skadnetwork
+ - 84993kbrcf.skadnetwork
+ - 6964rsfnh4.skadnetwork
+ - pwdxu55a5a.skadnetwork
+ - krvm3zuq6h.skadnetwork
+ - c3frkrj4fj.skadnetwork
+ - a2p9lx4jpn.skadnetwork
+ - 8r8llnkz5a.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 252b5q8x7y.skadnetwork
+ - z959bm4gru.skadnetwork
+ - su67r6k2v3.skadnetwork
+ - 97r2b46745.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - a8cz6cu7e5.skadnetwork
+ - 252b5q8x7y.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - f7s53z58qe.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - s39g8k73mm.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - 6yxyv74ff7.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 5tjdwbrq8w.skadnetwork
+ - su67r6k2v3.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - 7fmhfwg9en.skadnetwork
+ - mqn7fxpca7.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - zq492l623r.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - k674qkevps.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - 424m5254lk.skadnetwork
+ - v72qych5uu.skadnetwork
+ - f38h382jlk.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - 3qy4746246.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - v72qych5uu.skadnetwork
+ - k674qkevps.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 97r2b46745.skadnetwork
+ - zq492l623r.skadnetwork
+ - a2p9lx4jpn.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - k674qkevps.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - v72qych5uu.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - g28c52eehv.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - r45fhb6rf7.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - p78axxw29g.skadnetwork
+ - c3frkrj4fj.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - mls7yz5dvl.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - ejvt5qm6ak.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - v72qych5uu.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - 8m87ys6875.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - 488r3q3dtq.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - f38h382jlk.skadnetwork
+ - zmvfpc5aq8.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - 97r2b46745.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - 6xzpu9s2p8.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - g28c52eehv.skadnetwork
+ - 52fl2v3hgk.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - p78axxw29g.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 523jb4fst2.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - 24t9a8vw3c.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - feyaarzu9v.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - 424m5254lk.skadnetwork
+ - gta9lk7p23.skadnetwork
+ - 5tjdwbrq8w.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - u679fj5vs4.skadnetwork
+ - 275upjj5gd.skadnetwork
+ - rx5hdcabgc.skadnetwork
+ - x44k69ngh6.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - w9q455wk68.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - m5mvw97r93.skadnetwork
+ - 89z7zv988g.skadnetwork
+ - k674qkevps.skadnetwork
+ - hb56zgv37p.skadnetwork
+ - rvh3l7un93.skadnetwork
+ - mp6xlyr22a.skadnetwork
+ - qqp299437r.skadnetwork
+ - b9bk5wbcq9.skadnetwork
+ - bxvub5ada5.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - 6v7lgmsu45.skadnetwork
+ - m297p6643m.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - r45fhb6rf7.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - 3l6bd9hu43.skadnetwork
+ - vcra2ehyfk.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - 74b6s63p6l.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - p78axxw29g.skadnetwork
+ - v72qych5uu.skadnetwork
+ - ludvb6z3bs.skadnetwork
+ - cp8zw746q7.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - s39g8k73mm.skadnetwork
+ - 3qy4746246.skadnetwork
+ - f38h382jlk.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - v4nxqhlyqp.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - gta9lk7p23.skadnetwork
+ - vutu7akeur.skadnetwork
+ - y5ghdn5j9k.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - v9wttpbfk9.skadnetwork
+ - n38lu8286q.skadnetwork
+ - 47vhws6wlr.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - eh6m2bh4zr.skadnetwork
+ - a2p9lx4jpn.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - ecpz2srf59.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - 4dzt52r2t5.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - 8c4e2ghe7u.skadnetwork
+ - zq492l623r.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - zq492l623r.skadnetwork
+ - 633vhxswh4.skadnetwork
+ - tmhh9296z4.skadnetwork
+ - vcra2ehyfk.skadnetwork
+ - zh3b7bxvad.skadnetwork
+ - xmn954pzmp.skadnetwork
+ - 79w64w269u.skadnetwork
+ - 488r3q3dtq.skadnetwork
+ - d7g9azk84q.skadnetwork
+ - nzq8sh4pbs.skadnetwork
+ - 866k9ut3g3.skadnetwork
+ - 2q884k2j68.skadnetwork
+ - x8jxxk4ff5.skadnetwork
+ - gfat3222tu.skadnetwork
+ - pd25vrrwzn.skadnetwork
+ - lr83yxwka7.skadnetwork
+ - cp8zw746q7.skadnetwork
+ - pwdxu55a5a.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - s39g8k73mm.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - g28c52eehv.skadnetwork
+ - 523jb4fst2.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - 3qy4746246.skadnetwork
+ - a8cz6cu7e5.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - y755zyxw56.skadnetwork
+ - qlbq5gtkt8.skadnetwork
+ - mls7yz5dvl.skadnetwork
+ - 67369282zy.skadnetwork
+ - 899vrgt9g8.skadnetwork
+ - mj797d8u6f.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - f38h382jlk.skadnetwork
+ - 24t9a8vw3c.skadnetwork
+ - mp6xlyr22a.skadnetwork
+ - x44k69ngh6.skadnetwork
+ - 88k8774x49.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - t3b3f7n3x8.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - c7g47wypnu.skadnetwork
+ - 52fl2v3hgk.skadnetwork
+ - 9vvzujtq5s.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - 9g2aggbj52.skadnetwork
+ - m5mvw97r93.skadnetwork
+ - z5b3gh5ugf.skadnetwork
+ - dd3a75yxkv.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - h5jmj969g5.skadnetwork
+ - dr774724x4.skadnetwork
+ - t7ky8fmwkd.skadnetwork
+ - fz2k2k5tej.skadnetwork
+ - u679fj5vs4.skadnetwork
+ - cs644xg564.skadnetwork
+ - 9b89h5y424.skadnetwork
+ - w28pnjg2k4.skadnetwork
+ - 2rq3zucswp.skadnetwork
+ - a7xqa6mtl2.skadnetwork
+ - g2y4y55b64.skadnetwork
+ - vc83br9sjg.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - eqhxz8m8av.skadnetwork
+ - 7k3cvf297u.skadnetwork
+ - w9q455wk68.skadnetwork
+ - nu4557a4je.skadnetwork
+ - v4nxqhlyqp.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 7fmhfwg9en.skadnetwork
+ - su67r6k2v3.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - 7tnzynbdc7.skadnetwork
+ - l6nv3x923s.skadnetwork
+ - h8vml93bkz.skadnetwork
+ - uzqba5354d.skadnetwork
+ - 8qiegk9qfv.skadnetwork
+ - v79kvwwj4g.skadnetwork
+ - xx9sdjej2w.skadnetwork
+ - au67k4efj4.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - rx5hdcabgc.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - qqp299437r.skadnetwork
+ - zmvfpc5aq8.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - 79pbpufp6p.skadnetwork
+ - dmv22haz9p.skadnetwork
+ - y5ghdn5j9k.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - v9wttpbfk9.skadnetwork
+ - n38lu8286q.skadnetwork
+ - feyaarzu9v.skadnetwork
+ - 7fbxrn65az.skadnetwork
+ - 47vhws6wlr.skadnetwork
+ - ejvt5qm6ak.skadnetwork
+ - b55w3d8y8z.skadnetwork
+ - v7896pgt74.skadnetwork
+ - 5ghnmfs3dh.skadnetwork
+ - 275upjj5gd.skadnetwork
+ - 627r9wr2y5.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - sczv5946wb.skadnetwork
+ - 8w3np9l82g.skadnetwork
+ - hb56zgv37p.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - nrt9jy4kw9.skadnetwork
+ - 7953jerfzd.skadnetwork
+ - dn942472g5.skadnetwork
+ - 6v7lgmsu45.skadnetwork
+ - cad8qz2s3j.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - r26jy69rpl.skadnetwork
+ - eh6m2bh4zr.skadnetwork
+ - jb7bn6koa5.skadnetwork
+ - fkak3gfpt6.skadnetwork
+ - a2p9lx4jpn.skadnetwork
+ - 97r2b46745.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - 238da6jt44.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - b9bk5wbcq9.skadnetwork
+ - k674qkevps.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - 24zw6aqk47.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - 2tdux39lx8.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 3cgn6rq224.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - nfqy3847ph.skadnetwork
+ - dticjx1a9i.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 9wsyqb3ku7.skadnetwork
+ - 74b6s63p6l.skadnetwork
+ - xy9t38ct57.skadnetwork
+ - 424m5254lk.skadnetwork
+ - qu637u8glc.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - 44n7hlldy6.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - ecpz2srf59.skadnetwork
+ - x5854y7y24.skadnetwork
+ - f7s53z58qe.skadnetwork
+ - x8uqf25wch.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - 6964rsfnh4.skadnetwork
+ - gvmwg8q7h5.skadnetwork
+ - 6yxyv74ff7.skadnetwork
+ - 84993kbrcf.skadnetwork
+ - 54nzkqm89y.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - 9yg77x724h.skadnetwork
+ - n66cz3y3bx.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - 4dzt52r2t5.skadnetwork
+ - bvpn9ufa9b.skadnetwork
+ - 6qx585k4p6.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - l93v5h6a4m.skadnetwork
+ - rvh3l7un93.skadnetwork
+ - gta9lk7p23.skadnetwork
+ - 5tjdwbrq8w.skadnetwork
+ - r45fhb6rf7.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - 8c4e2ghe7u.skadnetwork
+ - axh5283zss.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 5mv394q32t.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - v72qych5uu.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 4w7y6s5ca2.skadnetwork
+ - 252b5q8x7y.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - 3l6bd9hu43.skadnetwork
+ - 4mn522wn87.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - 6p4ks3rnbw.skadnetwork
+ - 6xzpu9s2p8.skadnetwork
+ - 737z793b9f.skadnetwork
+ - 89z7zv988g.skadnetwork
+ - 8m87ys6875.skadnetwork
+ - 8r8llnkz5a.skadnetwork
+ - bxvub5ada5.skadnetwork
+ - c3frkrj4fj.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - dbu4b84rxf.skadnetwork
+ - dkc879ngq3.skadnetwork
+ - dzg6xy7pwj.skadnetwork
+ - gta8lk7p23.skadnetwork
+ - hdw39hrw9y.skadnetwork
+ - hjevpa356n.skadnetwork
+ - krvm3zuq6h.skadnetwork
+ - ln5gz23vtd.skadnetwork
+ - ludvb6z3bs.skadnetwork
+ - m297p6643m.skadnetwork
+ - p78axxw29g.skadnetwork
+ - pu4na253f3.skadnetwork
+ - s69wq72ugq.skadnetwork
+ - t6d3zquu66.skadnetwork
+ - vutu7akeur.skadnetwork
+ - x2jnk7ly8j.skadnetwork
+ - x5l83yy675.skadnetwork
+ - y45688jllp.skadnetwork
+ - yrqqpx2mcb.skadnetwork
+ - z4gj7hsk7h.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - v72qych5uu.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 7953jerfzd.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - f38h382jlk.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - w9q455wk68.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - xy9t38ct57.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - bd757ywx3.skadnetwork
+ - 33r6p7g8nc.skadnetwork
+ - g69uk9uh2b.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - w9q455wk68.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - v72qych5uu.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - p78axxw29g.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 424m5254lk.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - k674qkevps.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - g28c52eehv.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - 97r2b46745.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - b9bk5wbcq9.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - 523jb4fst2.skadnetwork
+ - mls7yz5dvl.skadnetwork
+ - 74b6s63p6l.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - 52fl2v3hgk.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - x5l83yy675.skadnetwork
+ - mqn7fxpca7.skadnetwork
+ - g6gcrrvk4p.skadnetwork
+ - r45fhb6rf7.skadnetwork
+ - c3frkrj4fj.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - 737z793b9f.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - mls7yz5dvl.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - w9q455wk68.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - p78axxw29g.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - v72qych5uu.skadnetwork
+ - 6xzpu9s2p8.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - g28c52eehv.skadnetwork
+ - 523jb4fst2.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - f38h382jlk.skadnetwork
+ - 24t9a8vw3c.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - ejvt5qm6ak.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - zmvfpc5aq8.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - feyaarzu9v.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - 424m5254lk.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - gta9lk7p23.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - t38b2kh725.skadnetwork
+ - s39g8k73mm.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - lr83yxwka7.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - ludvb6z3bs.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - su67r6k2v3.skadnetwork
+ - 4w7y6s5ca2.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - dzg6xy7pwj.skadnetwork
+ - y45688jllp.skadnetwork
+ - hdw39hrw9y.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 4dzt52r2t5.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - 5tjdwbrq8w.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - xy9t38ct57.skadnetwork
+ - 54nzkqm89y.skadnetwork
+ - 9b89h5y424.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - 79pbpufp6p.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - s69wq72ugq.skadnetwork
+ - k674qkevps.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - x44k69ngh6.skadnetwork
+ - mp6xlyr22a.skadnetwork
+ - rx5hdcabgc.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - u679fj5vs4.skadnetwork
+ - qqp299437r.skadnetwork
+ - 275upjj5gd.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - 97r2b46745.skadnetwork
+ - g2y4y55b64.skadnetwork
+ - 44n7hlldy6.skadnetwork
+ - 6p4ks3rnbw.skadnetwork
+ - rvh3l7un93.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - 74b6s63p6l.skadnetwork
+ - a7xqa6mtl2.skadnetwork
+ - zq492l623r.skadnetwork
+ - r45fhb6rf7.skadnetwork
+ - 84993kbrcf.skadnetwork
+ - pwdxu55a5a.skadnetwork
+ - 6964rsfnh4.skadnetwork
+ - 24zw6aqk47.skadnetwork
+ - cs644xg564.skadnetwork
+ - 9vvzujtq5s.skadnetwork
+ - c3frkrj4fj.skadnetwork
+ - 8r8llnkz5a.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - k674qkevps.skadnetwork
+ - k674qkevps.skadnetwork
+ - c3frkrj4fj.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - p78axxw29g.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - bmxgpxpgc.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - s39g8k73mm.skadnetwork
+ - krvm3zuq6h.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 424m5254lk.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - v72qych5uu.skadnetwork
+ - x8uqf25wch.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - rx5hdcabgc.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - 3qy4746246.skadnetwork
+ - 252b5q8x7y.skadnetwork
+ - f38h382jlk.skadnetwork
+ - 24t9a8vw3c.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - 9g2aggbj52.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - ejvt5qm6ak.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - hdw39hrw9y.skadnetwork
+ - y45688jllp.skadnetwork
+ - dzg6xy7pwj.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - g28c52eehv.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - zq492l623r.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - w9q455wk68.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - t38b2kh725.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - v72qych5uu.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - p78axxw29g.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - 424m5254lk.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - k674qkevps.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - g28c52eehv.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - 97r2b46745.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - b9bk5wbcq9.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - 523jb4fst2.skadnetwork
+ - mls7yz5dvl.skadnetwork
+ - 74b6s63p6l.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - 52fl2v3hgk.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - x5l83yy675.skadnetwork
+ - c3frkrj4fj.skadnetwork
+ - 22mmun2rn5.skadnetwork
+ - 238da6jt44.skadnetwork
+ - 24t9a8vw3c.skadnetwork
+ - 24zw6aqk47.skadnetwork
+ - 252b5q8x7y.skadnetwork
+ - 275upjj5gd.skadnetwork
+ - 294l99pt4k.skadnetwork
+ - 2fnua5tdw4.skadnetwork
+ - 2u9pt9hc89.skadnetwork
+ - 32z4fx6l9h.skadnetwork
+ - 3l6bd9hu43.skadnetwork
+ - 3qcr597p9d.skadnetwork
+ - 3qy4746246.skadnetwork
+ - 3rd42ekr43.skadnetwork
+ - 3sh42y64q3.skadnetwork
+ - 424m5254lk.skadnetwork
+ - 4468km3ulz.skadnetwork
+ - 44jx6755aq.skadnetwork
+ - 44n7hlldy6.skadnetwork
+ - 47vhws6wlr.skadnetwork
+ - 488r3q3dtq.skadnetwork
+ - 4dzt52r2t5.skadnetwork
+ - 4fzdc2evr5.skadnetwork
+ - 4mn522wn87.skadnetwork
+ - 4pfyvq9l8r.skadnetwork
+ - 4w7y6s5ca2.skadnetwork
+ - 523jb4fst2.skadnetwork
+ - 52fl2v3hgk.skadnetwork
+ - 54nzkqm89y.skadnetwork
+ - 578prtvx9j.skadnetwork
+ - 5a6flpkh64.skadnetwork
+ - 5l3tpt7t6e.skadnetwork
+ - 5lm9lj6jb7.skadnetwork
+ - 5tjdwbrq8w.skadnetwork
+ - 6964rsfnh4.skadnetwork
+ - 6g9af3uyq4.skadnetwork
+ - 6p4ks3rnbw.skadnetwork
+ - 6v7lgmsu45.skadnetwork
+ - 6xzpu9s2p8.skadnetwork
+ - 737z793b9f.skadnetwork
+ - 74b6s63p6l.skadnetwork
+ - 79pbpufp6p.skadnetwork
+ - 7fmhfwg9en.skadnetwork
+ - 7rz58n8ntl.skadnetwork
+ - 7ug5zh24hu.skadnetwork
+ - 84993kbrcf.skadnetwork
+ - 89z7zv988g.skadnetwork
+ - 8c4e2ghe7u.skadnetwork
+ - 8m87ys6875.skadnetwork
+ - 8r8llnkz5a.skadnetwork
+ - 8s468mfl3y.skadnetwork
+ - 97r2b46745.skadnetwork
+ - 9b89h5y424.skadnetwork
+ - 9nlqeag3gk.skadnetwork
+ - 9rd848q2bz.skadnetwork
+ - 9t245vhmpl.skadnetwork
+ - 9vvzujtq5s.skadnetwork
+ - 9yg77x724h.skadnetwork
+ - a2p9lx4jpn.skadnetwork
+ - a7xqa6mtl2.skadnetwork
+ - a8cz6cu7e5.skadnetwork
+ - av6w8kgt66.skadnetwork
+ - b9bk5wbcq9.skadnetwork
+ - bxvub5ada5.skadnetwork
+ - c3frkrj4fj.skadnetwork
+ - c6k4g5qg8m.skadnetwork
+ - cg4yq2srnc.skadnetwork
+ - cj5566h2ga.skadnetwork
+ - cp8zw746q7.skadnetwork
+ - cs644xg564.skadnetwork
+ - cstr6suwn9.skadnetwork
+ - dbu4b84rxf.skadnetwork
+ - dkc879ngq3.skadnetwork
+ - dzg6xy7pwj.skadnetwork
+ - e5fvkxwrpn.skadnetwork
+ - ecpz2srf59.skadnetwork
+ - eh6m2bh4zr.skadnetwork
+ - ejvt5qm6ak.skadnetwork
+ - f38h382jlk.skadnetwork
+ - f73kdq92p3.skadnetwork
+ - f7s53z58qe.skadnetwork
+ - feyaarzu9v.skadnetwork
+ - g28c52eehv.skadnetwork
+ - g2y4y55b64.skadnetwork
+ - ggvn48r87g.skadnetwork
+ - glqzh8vgby.skadnetwork
+ - gta8lk7p23.skadnetwork
+ - gta9lk7p23.skadnetwork
+ - hb56zgv37p.skadnetwork
+ - hdw39hrw9y.skadnetwork
+ - hs6bdukanm.skadnetwork
+ - k674qkevps.skadnetwork
+ - kbd757ywx3.skadnetwork
+ - kbmxgpxpgc.skadnetwork
+ - klf5c3l5u5.skadnetwork
+ - krvm3zuq6h.skadnetwork
+ - lr83yxwka7.skadnetwork
+ - ludvb6z3bs.skadnetwork
+ - m297p6643m.skadnetwork
+ - m5mvw97r93.skadnetwork
+ - m8dbw4sv7c.skadnetwork
+ - mlmmfzh3r3.skadnetwork
+ - mls7yz5dvl.skadnetwork
+ - mp6xlyr22a.skadnetwork
+ - mtkv5xtk9e.skadnetwork
+ - n38lu8286q.skadnetwork
+ - n66cz3y3bx.skadnetwork
+ - n6fk4nfna4.skadnetwork
+ - n9x2a789qt.skadnetwork
+ - nzq8sh4pbs.skadnetwork
+ - p78axxw29g.skadnetwork
+ - ppxm28t8ap.skadnetwork
+ - prcb7njmu6.skadnetwork
+ - pwa73g5rt2.skadnetwork
+ - pwdxu55a5a.skadnetwork
+ - qqp299437r.skadnetwork
+ - r45fhb6rf7.skadnetwork
+ - rvh3l7un93.skadnetwork
+ - rx5hdcabgc.skadnetwork
+ - s39g8k73mm.skadnetwork
+ - s69wq72ugq.skadnetwork
+ - su67r6k2v3.skadnetwork
+ - t38b2kh725.skadnetwork
+ - tl55sbb4fm.skadnetwork
+ - u679fj5vs4.skadnetwork
+ - uw77j35x4d.skadnetwork
+ - v4nxqhlyqp.skadnetwork
+ - v72qych5uu.skadnetwork
+ - v79kvwwj4g.skadnetwork
+ - v9wttpbfk9.skadnetwork
+ - vcra2ehyfk.skadnetwork
+ - vutu7akeur.skadnetwork
+ - w9q455wk68.skadnetwork
+ - wg4vff78zm.skadnetwork
+ - wzmmz9fp6w.skadnetwork
+ - x44k69ngh6.skadnetwork
+ - x5l83yy675.skadnetwork
+ - x8jxxk4ff5.skadnetwork
+ - x8uqf25wch.skadnetwork
+ - xy9t38ct57.skadnetwork
+ - y45688jllp.skadnetwork
+ - y5ghdn5j9k.skadnetwork
+ - yclnxrl5pm.skadnetwork
+ - ydx93a7ass.skadnetwork
+ - zmvfpc5aq8.skadnetwork
+ - zq492l623r.skadnetwork
diff --git a/Assets/GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset.meta b/Assets/Appodeal/Editor/InternalResources/AppodealSettings.asset.meta
similarity index 79%
rename from Assets/GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset.meta
rename to Assets/Appodeal/Editor/InternalResources/AppodealSettings.asset.meta
index a6548a4..31687c6 100644
--- a/Assets/GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset.meta
+++ b/Assets/Appodeal/Editor/InternalResources/AppodealSettings.asset.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: f4211f958842e6344b36577f3a622296
+guid: 8a48b4d6ba042004e8a2c4a1d9e47abd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
diff --git a/Assets/Appodeal/Editor/InternalResources/AppodealSettings.cs b/Assets/Appodeal/Editor/InternalResources/AppodealSettings.cs
new file mode 100644
index 0000000..9cbd96d
--- /dev/null
+++ b/Assets/Appodeal/Editor/InternalResources/AppodealSettings.cs
@@ -0,0 +1,155 @@
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace AppodealAds.Unity.Editor.InternalResources
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class AppodealSettings : ScriptableObject
+ {
+ private const string AppodealSettingsExportPath = "Appodeal/Editor/InternalResources/AppodealSettings.asset";
+ private static AppodealSettings instance;
+
+ [SerializeField] private string adMobAndroidAppId = string.Empty;
+ [SerializeField] private string adMobIosAppId = string.Empty;
+
+ [SerializeField] private bool accessCoarseLocationPermission;
+ [SerializeField] private bool writeExternalStoragePermission;
+ [SerializeField] private bool accessWifiStatePermission;
+ [SerializeField] private bool vibratePermission;
+ [SerializeField] private bool accessFineLocationPermission;
+
+ [SerializeField] private bool androidMultidex;
+
+ [SerializeField] private bool nSUserTrackingUsageDescription;
+ [SerializeField] private bool nSLocationWhenInUseUsageDescription;
+ [SerializeField] private bool nSCalendarsUsageDescription;
+ [SerializeField] private bool nSAppTransportSecurity;
+
+ [SerializeField] private bool iOSSKAdNetworkItems;
+ [SerializeField] private List iOsskAdNetworkItemsList;
+
+ public static AppodealSettings Instance
+ {
+ get
+ {
+ if (instance != null) return instance;
+ var settingsFilePath = Path.Combine("Assets", AppodealSettingsExportPath);
+ var settingsDir = Path.GetDirectoryName(settingsFilePath);
+ if (!Directory.Exists(settingsDir))
+ {
+ Directory.CreateDirectory(settingsDir ?? string.Empty);
+ }
+
+ instance = AssetDatabase.LoadAssetAtPath(settingsFilePath);
+ if (instance != null) return instance;
+ instance = CreateInstance();
+ AssetDatabase.CreateAsset(instance, settingsFilePath);
+
+ return instance;
+ }
+ }
+
+ public string AdMobAndroidAppId
+ {
+ get { return Instance.adMobAndroidAppId; }
+ set { Instance.adMobAndroidAppId = value.Trim(); }
+ }
+
+ public string AdMobIosAppId
+ {
+ get { return Instance.adMobIosAppId; }
+ set { Instance.adMobIosAppId = value.Trim(); }
+ }
+
+ public bool AccessCoarseLocationPermission
+ {
+ get { return accessCoarseLocationPermission; }
+ set { Instance.accessCoarseLocationPermission = value; }
+ }
+
+ public bool WriteExternalStoragePermission
+ {
+ get { return writeExternalStoragePermission; }
+ set { Instance.writeExternalStoragePermission = value; }
+ }
+
+ public bool AccessWifiStatePermission
+ {
+ get { return accessWifiStatePermission; }
+ set { Instance.accessWifiStatePermission = value; }
+ }
+
+ public bool VibratePermission
+ {
+ get { return vibratePermission; }
+ set { Instance.vibratePermission = value; }
+ }
+
+ public bool AccessFineLocationPermission
+ {
+ get { return accessFineLocationPermission; }
+ set { Instance.accessFineLocationPermission = value; }
+ }
+
+ public bool AndroidMultidex
+ {
+ get { return androidMultidex; }
+ set { Instance.androidMultidex = value; }
+ }
+
+ public bool NSUserTrackingUsageDescription
+ {
+ get { return nSUserTrackingUsageDescription; }
+ set { Instance.nSUserTrackingUsageDescription = value; }
+ }
+
+ public bool NSLocationWhenInUseUsageDescription
+ {
+ get { return nSLocationWhenInUseUsageDescription; }
+ set { Instance.nSLocationWhenInUseUsageDescription = value; }
+ }
+
+ public bool NSCalendarsUsageDescription
+ {
+ get { return nSCalendarsUsageDescription; }
+ set { Instance.nSCalendarsUsageDescription = value; }
+ }
+
+ public bool NSAppTransportSecurity
+ {
+ get { return nSAppTransportSecurity; }
+ set
+ {
+ Instance.nSAppTransportSecurity = value;
+#if UNITY_2018_1_OR_NEWER
+ if (BuildPipeline.IsBuildTargetSupported(BuildTargetGroup.iOS, BuildTarget.iOS)) PlayerSettings.iOS.allowHTTPDownload = value;
+ else Instance.nSAppTransportSecurity = false;
+#elif UNITY_IOS
+ PlayerSettings.iOS.allowHTTPDownload = value;
+#else
+ Instance.nSAppTransportSecurity = false;
+#endif
+ }
+ }
+
+ public bool IOSSkAdNetworkItems
+ {
+ get { return iOSSKAdNetworkItems; }
+ set { Instance.iOSSKAdNetworkItems = value; }
+ }
+
+ public List IOSSkAdNetworkItemsList
+ {
+ get { return iOsskAdNetworkItemsList; }
+ set { Instance.iOsskAdNetworkItemsList = value; }
+ }
+
+ public void SaveAsync()
+ {
+ EditorUtility.SetDirty(instance);
+ }
+ }
+}
diff --git a/Assets/Appodeal/Editor/InternalResources/AppodealSettings.cs.meta b/Assets/Appodeal/Editor/InternalResources/AppodealSettings.cs.meta
new file mode 100644
index 0000000..705f93e
--- /dev/null
+++ b/Assets/Appodeal/Editor/InternalResources/AppodealSettings.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9403d56c027e8442284a59449c4f1002
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/InternalResources/remove_list.xml b/Assets/Appodeal/Editor/InternalResources/remove_list.xml
new file mode 100644
index 0000000..17e967a
--- /dev/null
+++ b/Assets/Appodeal/Editor/InternalResources/remove_list.xml
@@ -0,0 +1,120 @@
+
+
+ -
+ ^((?!InternalResources).)*$
+ false
+ Appodeal unity interface
+ Appodeal
+
+ -
+ true
+ false
+ Appodeal unity interface
+ Appodeal
+
+ -
+ false
+ Appodeal unity interface
+ Appodeal
+ true
+
+ -
+ false
+ false
+ ConsentManager
+ ConsentManager
+
+ -
+ External Dependency Manager is used by many plugins for integrating platform specific
+ libraries and resolving conflicting dependencies. If some of your plugins use Jar
+ Resolver, removing can lead to issues.
+
+ true
+ Jar Resolver
+ ExternalDependencyManager
+
+ -
+ ^Appodeal.*
+ false
+ Appodeal Dependencies
+ Editor
+
+ -
+ true
+ false
+ Appodeal Editor
+ Editor
+
+ -
+ Appodeal
+ false
+ Appodeal iOS
+ Plugins/iOS
+
+
+ -
+ false
+ false
+ Plugins iOS Consent Manager
+ Plugins/iOS/ConsentManager
+
+ -
+ true
+ false
+ Plugins iOS folder
+ Plugins/iOS
+
+ -
+
+ (appodeal-)|(appodeal)|(adcolony)|(applovin)|(amazon)|(chartboost)|(facebook)|(inmobi)|(ironsource)|(mytarget)|(startapp)|(tapjoy)|(unity_ads)|(yandex)|(mintegral)|(mintegral-)|(ogury-)
+
+ false
+ Appodeal Android
+ Plugins/Android
+
+ -
+
+ |(adcolony)|(amazon_ads)|(applovin)|(chartboost)|(facebook)|(ironsource)|(my_target)|(protobuf)|(tapjoy)|(unity_ads)|(vungle)|(yandex)|
+
+ false
+ Appodeal Android Assets Dex
+ Plugins/Android/assets/dex
+
+ -
+ false
+ false
+ Plugins Android Assets Com Tapjoy
+ Plugins/Android/assets/com/tapjoy
+
+ -
+ true
+ false
+ Plugins Android Assets Com
+ Plugins/Android/assets/com
+
+ -
+ false
+ Plugins Android Assets Js
+ Plugins/Android/assets/js
+ (closebutton\.html)|(mraid\.js)
+
+ -
+ true
+ false
+ Plugins Android Assets
+ Plugins/Android/assets
+
+
+ -
+ true
+ false
+ Plugins Android folder
+ Plugins/Android
+
+ -
+ true
+ false
+ Assets Plugins
+ Plugins
+
+
\ No newline at end of file
diff --git a/Assets/Appodeal/Editor/InternalResources/remove_list.xml.meta b/Assets/Appodeal/Editor/InternalResources/remove_list.xml.meta
new file mode 100644
index 0000000..8f386c1
--- /dev/null
+++ b/Assets/Appodeal/Editor/InternalResources/remove_list.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0c7bc99260f0c43e3bb182e9a9aa9bd7
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs.meta b/Assets/Appodeal/Editor/NetworkConfigs.meta
new file mode 100644
index 0000000..e646131
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 96b04064353f64115acbb3f904cf278d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AdColonyDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/AdColonyDependencies.xml
new file mode 100644
index 0000000..eae3518
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AdColonyDependencies.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AdColonyDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/AdColonyDependencies.xml.meta
new file mode 100644
index 0000000..4d24b4f
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AdColonyDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4e45e06cf431d48e8afd52fdb18cfe70
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AdjustDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/AdjustDependencies.xml
new file mode 100644
index 0000000..aee13e8
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AdjustDependencies.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+ https://github.com/appodeal/CocoaPods.git
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AdjustDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/AdjustDependencies.xml.meta
new file mode 100644
index 0000000..0e338d2
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AdjustDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ba700f0a931b64e6296dc8deb1610466
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AppLovinDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/AppLovinDependencies.xml
new file mode 100644
index 0000000..70d53df
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AppLovinDependencies.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AppLovinDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/AppLovinDependencies.xml.meta
new file mode 100644
index 0000000..6a73815
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AppLovinDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7fad1169905f24b97b06cce224203af7
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AppodealDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/AppodealDependencies.xml
new file mode 100644
index 0000000..d194ab7
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AppodealDependencies.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AppodealDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/AppodealDependencies.xml.meta
new file mode 100644
index 0000000..15391c4
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AppodealDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 95fd68066d56242daa4a6bd25eaff950
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AppsFlyerDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/AppsFlyerDependencies.xml
new file mode 100644
index 0000000..ef7eb98
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AppsFlyerDependencies.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/AppsFlyerDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/AppsFlyerDependencies.xml.meta
new file mode 100644
index 0000000..619bb14
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/AppsFlyerDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 43ec741b8409546ca99f9ed7f8d366f4
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/BidMachineDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/BidMachineDependencies.xml
new file mode 100644
index 0000000..8aaf17f
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/BidMachineDependencies.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/BidMachineDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/BidMachineDependencies.xml.meta
new file mode 100644
index 0000000..615d5e9
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/BidMachineDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e62f366a4d86549ca9638abb21ac0d02
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/FirebaseDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/FirebaseDependencies.xml
new file mode 100644
index 0000000..e19b46e
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/FirebaseDependencies.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/FirebaseDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/FirebaseDependencies.xml.meta
new file mode 100644
index 0000000..05cebea
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/FirebaseDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 43fe1f0f98df449cbbe92b9e3a9ed3a7
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml
new file mode 100644
index 0000000..c08dc59
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml.meta
new file mode 100644
index 0000000..2513c3e
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1b0b5f6b7541c4d8d8eef948344d1307
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/IABDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/IABDependencies.xml
new file mode 100644
index 0000000..b4454b2
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/IABDependencies.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/IABDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/IABDependencies.xml.meta
new file mode 100644
index 0000000..6daf38c
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/IABDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 516bf1ee5904f412cb906b2aeaebabc6
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/IronSourceDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/IronSourceDependencies.xml
new file mode 100644
index 0000000..6af4170
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/IronSourceDependencies.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/IronSourceDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/IronSourceDependencies.xml.meta
new file mode 100644
index 0000000..8fa8eec
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/IronSourceDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3f4c4c86bf9f14b6e95b588278f775fe
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/MetaAudienceNetworkDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/MetaAudienceNetworkDependencies.xml
new file mode 100644
index 0000000..a80ad86
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/MetaAudienceNetworkDependencies.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/MetaAudienceNetworkDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/MetaAudienceNetworkDependencies.xml.meta
new file mode 100644
index 0000000..0d17d85
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/MetaAudienceNetworkDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0b1ee1c3cfbd348439492e3e2af3adb3
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/MetaDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/MetaDependencies.xml
new file mode 100644
index 0000000..efe2b91
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/MetaDependencies.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/MetaDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/MetaDependencies.xml.meta
new file mode 100644
index 0000000..2116500
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/MetaDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 6e9e2f441126b45169884cae8b64d64a
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/MyTargetDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/MyTargetDependencies.xml
new file mode 100644
index 0000000..9a71eb6
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/MyTargetDependencies.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/MyTargetDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/MyTargetDependencies.xml.meta
new file mode 100644
index 0000000..10c3720
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/MyTargetDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 77c70a83ec8654ec489f729418f92798
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/SentryAnalyticsDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/SentryAnalyticsDependencies.xml
new file mode 100644
index 0000000..7f4e625
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/SentryAnalyticsDependencies.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/SentryAnalyticsDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/SentryAnalyticsDependencies.xml.meta
new file mode 100644
index 0000000..aeaa971
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/SentryAnalyticsDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2e850d7e2306444149de058b95c356ff
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/StackAnalyticsDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/StackAnalyticsDependencies.xml
new file mode 100644
index 0000000..44a21ef
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/StackAnalyticsDependencies.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/StackAnalyticsDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/StackAnalyticsDependencies.xml.meta
new file mode 100644
index 0000000..307854f
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/StackAnalyticsDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 99356fd3c53024770808863a56aae8ab
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/UnityDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/UnityDependencies.xml
new file mode 100644
index 0000000..3377bcf
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/UnityDependencies.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/UnityDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/UnityDependencies.xml.meta
new file mode 100644
index 0000000..20bc663
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/UnityDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: c432d629d99c34980a38a7633fd76645
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/VungleDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/VungleDependencies.xml
new file mode 100644
index 0000000..597266a
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/VungleDependencies.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/VungleDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/VungleDependencies.xml.meta
new file mode 100644
index 0000000..44d82af
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/VungleDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 934a7a1941d9b459e9e8bac106b2b987
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/YandexDependencies.xml b/Assets/Appodeal/Editor/NetworkConfigs/YandexDependencies.xml
new file mode 100644
index 0000000..adc21f4
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/YandexDependencies.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://artifactory.appodeal.com/appodeal
+
+
+
diff --git a/Assets/Appodeal/Editor/NetworkConfigs/YandexDependencies.xml.meta b/Assets/Appodeal/Editor/NetworkConfigs/YandexDependencies.xml.meta
new file mode 100644
index 0000000..54fc467
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworkConfigs/YandexDependencies.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4a6ba9c97026a492ea15671dd614939a
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager.meta b/Assets/Appodeal/Editor/NetworksManager.meta
new file mode 100644
index 0000000..ebade7c
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a30d5928ba4d3451aad806721abfdccd
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager/AppodealAdapterManager.cs b/Assets/Appodeal/Editor/NetworksManager/AppodealAdapterManager.cs
new file mode 100644
index 0000000..094961e
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/AppodealAdapterManager.cs
@@ -0,0 +1,1151 @@
+#if UNITY_2018_1_OR_NEWER
+using System;
+using System.IO;
+using System.Net;
+using System.Xml;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using UnityEditor;
+using UnityEngine;
+using File = UnityEngine.Windows.File;
+using UnityEngine.Networking;
+using Appodeal.Editor.AppodealManager.Data;
+using marijnz.EditorCoroutines;
+
+#pragma warning disable 618
+
+#pragma warning disable 612
+
+namespace Appodeal.Editor.AppodealManager.AppodealDependencies
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public enum PlatformSdk
+ {
+ Android,
+ iOS
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "NotAccessedVariable")]
+ [SuppressMessage("ReSharper", "CollectionNeverQueried.Local")]
+ public class AppodealAdapterManager : EditorWindow
+ {
+ #region Dictionaries
+
+ private SortedDictionary internalDependencies = new SortedDictionary();
+ private SortedDictionary latestDependencies = new SortedDictionary();
+
+ #endregion
+
+ #region GUIStyles
+
+ private GUIStyle labelStyle;
+ private GUIStyle headerInfoStyle;
+ private GUIStyle packageInfoStyle;
+ private readonly GUILayoutOption btnFieldWidth = GUILayout.Width(60);
+
+ #endregion
+
+ private static EditorCoroutines.EditorCoroutine coroutine;
+ private static EditorCoroutines.EditorCoroutine coroutinePB;
+ private float progress;
+ private float loading;
+ private WebClient downloader;
+ private Vector2 scrollPosition;
+ private bool isPluginInfoReady;
+ private AppodealUnityPlugin appodealUnityPlugin;
+
+ public static void ShowSdkManager()
+ {
+ GetWindow(typeof(AppodealAdapterManager),
+ true, AppodealDependencyUtils.AppodealSdkManager);
+ }
+
+ private void Awake()
+ {
+ labelStyle = new GUIStyle(EditorStyles.label)
+ {
+ fontSize = 15,
+ fontStyle = FontStyle.Bold
+ };
+ packageInfoStyle = new GUIStyle(EditorStyles.label)
+ {
+ fontSize = 12,
+ fontStyle = FontStyle.Normal,
+ fixedHeight = 18
+ };
+
+ headerInfoStyle = new GUIStyle(EditorStyles.label)
+ {
+ fontSize = 13,
+ fontStyle = FontStyle.Bold,
+ fixedHeight = 18
+ };
+
+ Reset();
+ }
+
+ public void Reset()
+ {
+ internalDependencies = new SortedDictionary();
+ latestDependencies = new SortedDictionary();
+
+ if (downloader != null)
+ {
+ downloader.CancelAsync();
+ return;
+ }
+
+ if (coroutine != null)
+ this.StopCoroutine(coroutine.routine);
+ if (progress > 0)
+ EditorUtility.ClearProgressBar();
+ if (loading > 0)
+ EditorUtility.ClearProgressBar();
+
+ coroutine = null;
+ downloader = null;
+
+ loading = 0f;
+ progress = 0f;
+ }
+
+ private void OnEnable()
+ {
+ loading = 0f;
+ coroutine = this.StartCoroutine(GetAppodealSDKData());
+ }
+
+ private void OnGUI()
+ {
+ this.minSize = new Vector2(650, 650);
+ this.maxSize = new Vector2(2000, 2000);
+ scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition,
+ false,
+ false);
+ GUILayout.BeginVertical();
+
+ if (isPluginInfoReady)
+ {
+ #region Plugin
+
+ GUILayout.Space(5);
+ EditorGUILayout.LabelField(AppodealDependencyUtils.AppodealUnityPlugin, labelStyle,
+ GUILayout.Height(20));
+
+ if (appodealUnityPlugin != null)
+ {
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle, GUILayout.Height(45)))
+ {
+ AppodealDependencyUtils.GuiHeaders(headerInfoStyle, btnFieldWidth);
+ if (!string.IsNullOrEmpty(AppodealAds.Unity.Api.Appodeal.APPODEAL_PLUGIN_VERSION) &&
+ !string.IsNullOrEmpty(appodealUnityPlugin.version) &&
+ !string.IsNullOrEmpty(appodealUnityPlugin.source))
+ {
+ GuiPluginRow(appodealUnityPlugin);
+ }
+ else
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this, "Can't find plugin information.",
+ "Can't find plugin information. - {180}");
+ }
+ }
+ }
+ else
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this, "Can't find plugin information.",
+ "appodealUnityPlugin != null - {175}");
+ }
+
+ #endregion
+
+ #region CoreInfo
+
+ if (internalDependencies.Count > 0 && latestDependencies.Count > 0)
+ {
+ EditorGUILayout.LabelField(AppodealDependencyUtils.AppodealCoreDependencies, labelStyle,
+ GUILayout.Height(20));
+ EditorGUILayout.LabelField(AppodealDependencyUtils.iOS, labelStyle, GUILayout.Height(20));
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle, GUILayout.Height(45)))
+ {
+ AppodealDependencyUtils.GuiHeaders(headerInfoStyle, btnFieldWidth);
+ GuiCoreRow(AppodealDependencyUtils.GetAppodealDependency(internalDependencies),
+ AppodealDependencyUtils.GetAppodealDependency(latestDependencies), PlatformSdk.iOS);
+ }
+
+ EditorGUILayout.LabelField(AppodealDependencyUtils.Android, labelStyle, GUILayout.Height(20));
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle, GUILayout.Height(45)))
+ {
+ AppodealDependencyUtils.GuiHeaders(headerInfoStyle, btnFieldWidth);
+ GuiCoreRow(AppodealDependencyUtils.GetAppodealDependency(internalDependencies),
+ AppodealDependencyUtils.GetAppodealDependency(latestDependencies), PlatformSdk.Android);
+ }
+ }
+
+ #endregion
+
+ #region NetworksAdaptersInfo
+
+ if (internalDependencies.Count > 0)
+ {
+ EditorGUILayout.LabelField(AppodealDependencyUtils.AppodealNetworkDependencies, labelStyle,
+ GUILayout.Height(20));
+ EditorGUILayout.LabelField(AppodealDependencyUtils.iOS, labelStyle, GUILayout.Height(20));
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle, GUILayout.Height(45)))
+ {
+ AppodealDependencyUtils.GuiHeaders(headerInfoStyle, btnFieldWidth);
+ GuiAdaptersRows(PlatformSdk.iOS, DependencyType.AdNetwork);
+ }
+
+ EditorGUILayout.LabelField(AppodealDependencyUtils.Android, labelStyle, GUILayout.Height(20));
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle, GUILayout.Height(45)))
+ {
+ AppodealDependencyUtils.GuiHeaders(headerInfoStyle, btnFieldWidth);
+ GuiAdaptersRows(PlatformSdk.Android, DependencyType.AdNetwork);
+ }
+ }
+
+ #endregion
+
+ #region ServicesAdaptersInfo
+
+ if (internalDependencies.Count > 0)
+ {
+ EditorGUILayout.LabelField(AppodealDependencyUtils.AppodealServiceDependencies, labelStyle,
+ GUILayout.Height(20));
+ EditorGUILayout.LabelField(AppodealDependencyUtils.iOS, labelStyle, GUILayout.Height(20));
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle, GUILayout.Height(45)))
+ {
+ AppodealDependencyUtils.GuiHeaders(headerInfoStyle, btnFieldWidth);
+ GuiAdaptersRows(PlatformSdk.iOS, DependencyType.Service);
+ }
+
+ EditorGUILayout.LabelField(AppodealDependencyUtils.Android, labelStyle, GUILayout.Height(20));
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle, GUILayout.Height(45)))
+ {
+ AppodealDependencyUtils.GuiHeaders(headerInfoStyle, btnFieldWidth);
+ GuiAdaptersRows(PlatformSdk.Android, DependencyType.Service);
+ }
+ }
+
+ #endregion
+
+ }
+
+ GUILayout.Space(5);
+ GUILayout.EndVertical();
+ EditorGUILayout.EndScrollView();
+ }
+
+ private void GuiAdaptersRows(PlatformSdk platformSdk, DependencyType type)
+ {
+ foreach (var key in latestDependencies.Keys)
+ {
+ if (internalDependencies.ContainsKey(key))
+ {
+ if (key.Equals(AppodealDependencyUtils.Appodeal)) continue;
+
+ if (latestDependencies.TryGetValue(key, out var latestDependency) &&
+ internalDependencies.TryGetValue(key, out var internalDependency))
+ {
+ switch (platformSdk)
+ {
+ case PlatformSdk.Android:
+ if (latestDependency.type == type)
+ {
+ if (internalDependency.android_info != null && latestDependency.android_info != null)
+ {
+ if (!string.IsNullOrEmpty(internalDependency.android_info.name)
+ && !string.IsNullOrEmpty(internalDependency.android_info.version)
+ && !string.IsNullOrEmpty(internalDependency.android_info.unity_content))
+ {
+ SetAdapterUpdateInfo(latestDependency.name,
+ internalDependency.android_info.version,
+ latestDependency.android_info.version,
+ internalDependency.android_info.unity_content,
+ latestDependency.android_info.unity_content,
+ SDKInfo(latestDependency.android_info.dependencies));
+ }
+ }
+ else
+ {
+ if (latestDependency.android_info.name != null)
+ {
+ SetAdapterInformationForImport(latestDependency, platformSdk);
+ }
+ }
+ }
+ break;
+ case PlatformSdk.iOS:
+ if (latestDependency.type == type)
+ {
+ if (internalDependency.ios_info != null && latestDependency.ios_info != null)
+ {
+ if (!string.IsNullOrEmpty(internalDependency.ios_info.name)
+ && !string.IsNullOrEmpty(internalDependency.ios_info.version)
+ && !string.IsNullOrEmpty(internalDependency.ios_info.unity_content))
+ {
+ SetAdapterUpdateInfo(latestDependency.name,
+ internalDependency.ios_info.version,
+ latestDependency.ios_info.version,
+ internalDependency.ios_info.unity_content,
+ latestDependency.ios_info.unity_content,
+ SDKInfo(latestDependency.ios_info.dependencies));
+ }
+ }
+ else
+ {
+ if (latestDependency.ios_info?.name != null)
+ {
+ SetAdapterInformationForImport(latestDependency, platformSdk);
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (latestDependencies.TryGetValue(key, out var networkDependency))
+ {
+ switch (platformSdk)
+ {
+ case PlatformSdk.Android:
+ if (networkDependency.type == type && networkDependency.android_info?.name != null)
+ {
+ SetAdapterInformationForImport(networkDependency, PlatformSdk.Android);
+ }
+
+ break;
+ case PlatformSdk.iOS:
+ if (networkDependency.type == type && networkDependency.ios_info?.name != null)
+ {
+ SetAdapterInformationForImport(networkDependency, PlatformSdk.iOS);
+ }
+
+ break;
+ default:
+ throw new ArgumentOutOfRangeException(nameof(platformSdk), platformSdk, null);
+ }
+ }
+ }
+ }
+ }
+
+ private void SetAdapterInformationForImport(AppodealDependency latestDependency, PlatformSdk platformSdk)
+ {
+ switch (platformSdk)
+ {
+ case PlatformSdk.Android:
+ if (latestDependency.android_info != null)
+ {
+ SetAdapterImportInfo(latestDependency.name, AppodealDependencyUtils.EmptyCurrentVersion,
+ latestDependency.android_info.version, latestDependency.android_info.unity_content);
+ }
+
+ break;
+ case PlatformSdk.iOS:
+ if (latestDependency.ios_info != null)
+ {
+ SetAdapterImportInfo(latestDependency.name, AppodealDependencyUtils.EmptyCurrentVersion,
+ latestDependency.ios_info.version, latestDependency.ios_info.unity_content);
+ }
+
+ break;
+ default:
+ throw new ArgumentOutOfRangeException(nameof(platformSdk), platformSdk, null);
+ }
+ }
+
+ private void ImportConfig(string nameDep, string content)
+ {
+ var path = AppodealDependencyUtils.Network_configs_path + nameDep + AppodealDependencyUtils.Dependencies +
+ AppodealDependencyUtils.XmlFileExtension;
+ if (File.Exists(path))
+ {
+ UpdateDependency(nameDep, AppodealDependencyUtils.SpecCloseDependencies,
+ content + "\n" + AppodealDependencyUtils.SpecCloseDependencies);
+ }
+ else
+ {
+ using (TextWriter writer = new StreamWriter(path, false))
+ {
+ writer.WriteLine(AppodealDependencyUtils.SpecOpenDependencies
+ + content + "\n" + AppodealDependencyUtils.SpecCloseDependencies);
+ writer.Close();
+ }
+
+ AppodealDependencyUtils.FormatXml(path);
+ }
+
+ UpdateWindow();
+ }
+
+ private void GuiCoreRow(AppodealDependency internalDependency, AppodealDependency latestDependency,
+ PlatformSdk platform)
+ {
+ if (internalDependency == null || latestDependency == null) return;
+ using (new EditorGUILayout.HorizontalScope(GUILayout.Height(20)))
+ {
+ if (!string.IsNullOrEmpty(internalDependency.name))
+ {
+ GUILayout.Space(2);
+ GUILayout.Button(internalDependency.name, packageInfoStyle, GUILayout.Width(150));
+ if (platform == PlatformSdk.iOS)
+ {
+ if (internalDependency.ios_info != null
+ && !string.IsNullOrEmpty(internalDependency.ios_info.version))
+ {
+ GUILayout.Space(56);
+ GUILayout.Button(
+ AppodealDependencyUtils.ReplaceBetaVersion(internalDependency.ios_info.version),
+ packageInfoStyle, GUILayout.Width(110));
+ if (latestDependency.ios_info != null &&
+ !string.IsNullOrEmpty(latestDependency.ios_info.version))
+ {
+ GUILayout.Space(85);
+ GUILayout.Button(
+ AppodealDependencyUtils.ReplaceBetaVersion(latestDependency.ios_info.version),
+ packageInfoStyle);
+ GUILayout.Space(15);
+
+ if (AppodealDependencyUtils.CompareVersion(internalDependency.ios_info.version,
+ latestDependency.ios_info.version) == 0)
+ {
+ GUI.enabled = false;
+ GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth);
+ GUI.enabled = true;
+ }
+ else if (AppodealDependencyUtils.CompareVersion(internalDependency.ios_info.version,
+ latestDependency.ios_info.version) > 0)
+ {
+ GUI.enabled = false;
+ GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth);
+ GUI.enabled = true;
+ }
+ else
+ {
+ UpdateCoreProccess(internalDependency.name,
+ internalDependency.ios_info.unity_content,
+ latestDependency.ios_info.unity_content, PlatformSdk.iOS);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (internalDependency.android_info != null
+ && !string.IsNullOrEmpty(internalDependency.android_info.version))
+ {
+ GUILayout.Space(56);
+ GUILayout.Button(
+ AppodealDependencyUtils.ReplaceBetaVersion(internalDependency.android_info.version),
+ packageInfoStyle, GUILayout.Width(110));
+ if (latestDependency.android_info != null &&
+ !string.IsNullOrEmpty(latestDependency.android_info.version))
+ {
+ GUILayout.Space(85);
+ GUILayout.Button(
+ AppodealDependencyUtils.ReplaceBetaVersion(
+ latestDependency.android_info.version),
+ packageInfoStyle);
+ GUILayout.Space(15);
+
+ if (AppodealDependencyUtils.CompareVersion(
+ internalDependency.android_info.version,
+ latestDependency.android_info.version) == 0)
+ {
+ GUI.enabled = false;
+ GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth);
+ GUI.enabled = true;
+ }
+ else if (AppodealDependencyUtils.CompareVersion(
+ internalDependency.android_info.version,
+ latestDependency.android_info.version) > 0)
+ {
+ GUI.enabled = false;
+ GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth);
+ GUI.enabled = true;
+ }
+ else
+ {
+ UpdateCoreProccess(internalDependency.name,
+ internalDependency.android_info.unity_content,
+ latestDependency.android_info.unity_content,
+ PlatformSdk.Android);
+ }
+ }
+ }
+ }
+ }
+
+ GUILayout.Space(5);
+ GUILayout.Space(5);
+ GUILayout.Space(5);
+ }
+ }
+
+ private void UpdateCoreProccess(string internalDependencyName, string internalDependencyUnityContent,
+ string latestDependencyUnityContent, PlatformSdk platformSdk)
+ {
+ if (GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth))
+ {
+ var option = EditorUtility.DisplayDialog("Update dependencies",
+ "If you will update core, all adapters for this platform will be updated automatically. " +
+ "Do you want to update core?",
+ "Ok",
+ "Cancel");
+ if (!option) return;
+ switch (platformSdk)
+ {
+ case PlatformSdk.iOS:
+ if (internalDependencies.Count <= 0 || latestDependencies.Count <= 0) return;
+ foreach (var key in internalDependencies.Keys.Where(key =>
+ latestDependencies.ContainsKey(key)))
+ {
+ if (internalDependencies.TryGetValue(key, out var internalDep) &&
+ latestDependencies.TryGetValue(key, out var latestDep))
+ {
+ if (internalDep.ios_info != null)
+ {
+ UpdateDependency(internalDep.name,
+ internalDep.ios_info.unity_content,
+ latestDep.ios_info.unity_content);
+ }
+ }
+ }
+
+ break;
+ case PlatformSdk.Android:
+ if (internalDependencies.Count <= 0 || latestDependencies.Count <= 0) return;
+ foreach (var key in internalDependencies.Keys.Where(key =>
+ latestDependencies.ContainsKey(key)))
+ {
+ if (internalDependencies.TryGetValue(key, out var internalDep) &&
+ latestDependencies.TryGetValue(key, out var latestDep))
+ {
+ if (internalDep.android_info != null)
+ {
+ UpdateDependency(internalDep.name,
+ internalDep.android_info.unity_content,
+ latestDep.android_info.unity_content);
+ }
+ }
+ }
+
+ break;
+ default:
+ throw new ArgumentOutOfRangeException(nameof(platformSdk), platformSdk, null);
+ }
+
+ UpdateDependency(internalDependencyName,
+ internalDependencyUnityContent,
+ latestDependencyUnityContent);
+
+ UpdateWindow();
+ }
+ }
+
+ private void SetAdapterImportInfo(string nameDep, string currentVersion, string latestVersion, string content)
+ {
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle))
+ {
+ using (new EditorGUILayout.HorizontalScope(GUILayout.Height(20)))
+ {
+ GUILayout.Space(2);
+ if (string.IsNullOrEmpty(nameDep) || string.IsNullOrEmpty(currentVersion) ||
+ string.IsNullOrEmpty(latestVersion)) return;
+ GUILayout.Button(nameDep, packageInfoStyle,
+ GUILayout.Width(145));
+ GUILayout.Space(56);
+ GUILayout.Button(currentVersion,
+ packageInfoStyle,
+ GUILayout.Width(110));
+ GUILayout.Space(85);
+ GUILayout.Button(
+ AppodealDependencyUtils.ReplaceBetaVersion(latestVersion),
+ packageInfoStyle);
+ GUILayout.Space(15);
+ Color defaultColor = GUI.backgroundColor;
+ GUI.backgroundColor = Color.green;
+ if (GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionImport },
+ btnFieldWidth))
+ {
+ ImportConfig(nameDep, content);
+ }
+ GUI.backgroundColor = defaultColor;
+
+ GUILayout.Space(5);
+ GUILayout.Space(5);
+ GUILayout.Space(5);
+ }
+ }
+ }
+
+ private static string SDKInfo(IEnumerable dependencies)
+ {
+ string content = null;
+ var enumerable = dependencies as AppodealDependency.Dependency[] ?? dependencies.ToArray();
+ foreach (var dependency in enumerable)
+ {
+ if (dependency.Equals(enumerable.Last()))
+ {
+ content += dependency.name + " - " + dependency.version;
+ }
+ else
+ {
+ content += dependency.name + " - " + dependency.version + "\n";
+ }
+ }
+
+ return string.IsNullOrEmpty(content) ? " " : content;
+ }
+
+ private void SetAdapterUpdateInfo(string nameDep, string currentVersion, string latestVersion,
+ string internalContent, string latestContent, string sdkInfoDependencies)
+ {
+ using (new EditorGUILayout.VerticalScope(AppodealDependencyUtils.BoxStyle))
+ {
+ using (new EditorGUILayout.HorizontalScope(GUILayout.Height(20)))
+ {
+ GUILayout.Space(2);
+ if (string.IsNullOrEmpty(nameDep) || string.IsNullOrEmpty(currentVersion) ||
+ string.IsNullOrEmpty(latestVersion)) return;
+ EditorGUILayout.LabelField(new GUIContent
+ {
+ text = nameDep,
+ tooltip = string.IsNullOrEmpty(sdkInfoDependencies) ? "-" : sdkInfoDependencies
+ }, packageInfoStyle, GUILayout.Width(145));
+ GUILayout.Space(56);
+ GUILayout.Button(
+ AppodealDependencyUtils.ReplaceBetaVersion(currentVersion),
+ packageInfoStyle,
+ GUILayout.Width(110));
+ GUILayout.Space(85);
+ GUILayout.Button(
+ AppodealDependencyUtils.ReplaceBetaVersion(latestVersion),
+ packageInfoStyle);
+ GUILayout.Space(15);
+
+ if (GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionRemove },
+ btnFieldWidth))
+ {
+ var path = $"{AppodealDependencyUtils.Network_configs_path}{nameDep}Dependencies.xml";
+
+ AppodealDependencyUtils.ReplaceInFile(path, internalContent, "");
+ AppodealDependencyUtils.FormatXml(path);
+
+ UpdateWindow();
+ }
+
+ var current = AppodealDependencyUtils.GetMajorVersion(
+ AppodealDependencyUtils.ReplaceBetaVersion(currentVersion));
+ var last = AppodealDependencyUtils.GetMajorVersion(
+ AppodealDependencyUtils.ReplaceBetaVersion(latestVersion));
+
+ if (AppodealDependencyUtils.CompareVersion(current, last) == -1)
+ {
+ CompareForAction(0,
+ nameDep, internalContent, latestContent);
+ }
+ else
+ {
+ if (AppodealDependencyUtils.CompareVersion(currentVersion, latestVersion) == -1)
+ {
+ CompareForAction(AppodealDependencyUtils.CompareVersion(
+ AppodealDependencyUtils.ReplaceBetaVersion(currentVersion),
+ AppodealDependencyUtils.ReplaceBetaVersion(latestVersion)),
+ nameDep, internalContent, latestContent);
+ }
+ else
+ {
+ CompareForAction(0,
+ nameDep, internalContent, latestContent);
+ }
+ }
+ }
+ }
+ }
+
+ private void CompareForAction(int action, string nameDependency, string previous, string latest)
+ {
+ if (action == -1)
+ {
+ Color defaultColor = GUI.backgroundColor;
+ GUI.backgroundColor = Color.red;
+ if (GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth))
+ {
+ UpdateDependency(nameDependency, previous, latest);
+ UpdateWindow();
+ }
+ GUI.backgroundColor = defaultColor;
+ }
+ else
+ {
+ GUI.enabled = false;
+ GUILayout.Button(
+ new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth);
+ GUI.enabled = true;
+ }
+
+ GUILayout.Space(5);
+ GUILayout.Space(5);
+ GUILayout.Space(5);
+ }
+
+ private void UpdateDependency(string nameDependency, string previous, string latest)
+ {
+ var path = AppodealDependencyUtils.Network_configs_path + nameDependency +
+ AppodealDependencyUtils.Dependencies + ".xml";
+ if (!File.Exists(path))
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this,
+ "Can't find config with path " + path, $"path - {nameDependency}");
+ }
+ else
+ {
+ string contentString;
+ using (var reader = new StreamReader(path))
+ {
+ contentString = reader.ReadToEnd();
+ reader.Close();
+ }
+
+ contentString = Regex.Replace(contentString, previous, latest);
+
+ using (var writer = new StreamWriter(path))
+ {
+ writer.Write(contentString);
+ writer.Close();
+ }
+
+ AppodealDependencyUtils.FormatXml(path);
+ }
+ }
+
+ private void GuiPluginRow(AppodealUnityPlugin plugin)
+ {
+ using (new EditorGUILayout.HorizontalScope(GUILayout.Height(20)))
+ {
+ GUILayout.Space(2);
+ GUILayout.Button(AppodealDependencyUtils.AppodealUnityPlugin, packageInfoStyle,
+ GUILayout.Width(150));
+ GUILayout.Space(56);
+ GUILayout.Button(AppodealDependencyUtils.ReplaceBetaVersion(AppodealAds.Unity.Api.Appodeal
+ .APPODEAL_PLUGIN_VERSION), packageInfoStyle, GUILayout.Width(110));
+ GUILayout.Space(85);
+ GUILayout.Button(AppodealDependencyUtils.ReplaceBetaVersion(plugin.version), packageInfoStyle);
+ GUILayout.Space(15);
+
+ if (AppodealDependencyUtils.CompareVersion(
+ AppodealAds.Unity.Api.Appodeal.APPODEAL_PLUGIN_VERSION,
+ plugin.version) == 0)
+ {
+ GUI.enabled = false;
+ GUILayout.Button(new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth);
+ GUI.enabled = true;
+ }
+ else if (AppodealDependencyUtils.CompareVersion(
+ AppodealAds.Unity.Api.Appodeal.APPODEAL_PLUGIN_VERSION,
+ plugin.version) > 0)
+ {
+ GUI.enabled = false;
+ GUILayout.Button(new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth);
+ GUI.enabled = true;
+ }
+ else
+ {
+ Color defaultColor = GUI.backgroundColor;
+ GUI.backgroundColor = Color.red;
+ if (GUILayout.Button(new GUIContent { text = AppodealDependencyUtils.ActionUpdate },
+ btnFieldWidth))
+ {
+ this.StartCoroutine(DownloadUnityPlugin(plugin.source, plugin.version));
+ }
+ GUI.backgroundColor = defaultColor;
+ }
+
+ GUILayout.Space(15);
+ }
+ }
+
+ private IEnumerator GetAppodealSDKData()
+ {
+ yield return null;
+
+ if (!EditorUtility.DisplayCancelableProgressBar(
+ AppodealDependencyUtils.AppodealSdkManager,
+ AppodealDependencyUtils.Loading,
+ 80f))
+ {
+ }
+
+ #region Internal
+
+ if (AppodealDependencyUtils.GetInternalDependencyPath() != null)
+ {
+ foreach (var fileInfo in AppodealDependencyUtils.GetInternalDependencyPath())
+ {
+ if (!File.Exists(AppodealDependencyUtils.Network_configs_path + fileInfo.Name))
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this,
+ $"File doesn't exist - {AppodealDependencyUtils.Network_configs_path + fileInfo.Name}",
+ string.Empty);
+ }
+ else
+ {
+ GetInternalDependencies(AppodealDependencyUtils.Network_configs_path + fileInfo.Name);
+ }
+ }
+ }
+ else
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this,
+ "Can't find internal dependencies.", string.Empty);
+ }
+
+ #endregion
+
+ #region Plugin
+
+ using (var webRequest = UnityWebRequest.Get(AppodealDependencyUtils.PluginRequest))
+ {
+ yield return webRequest.SendWebRequest();
+ var pages = AppodealDependencyUtils.PluginRequest.Split('/');
+ var page = pages.Length - 1;
+ if (webRequest.isNetworkError)
+ {
+ Debug.Log(pages[page] + ": Error: " + webRequest.error);
+ AppodealDependencyUtils.ShowInternalErrorDialog(this, webRequest.error, string.Empty);
+ }
+ else
+ {
+ if (string.IsNullOrEmpty(webRequest.downloadHandler.text))
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this, "Can't find appodeal plugin information",
+ string.Empty);
+ yield break;
+ }
+
+ var root = JsonUtility.FromJson(webRequest.downloadHandler.text);
+ appodealUnityPlugin = root.items.ToList().FirstOrDefault(x => x.build_type.Equals("stable"));
+
+ if (appodealUnityPlugin == null)
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this, "Can't find appodeal plugin information",
+ string.Empty);
+ yield break;
+ }
+ }
+ }
+
+ #endregion
+
+ #region Adapters
+
+ const string adaptersUri = AppodealDependencyUtils.AdaptersRequest +
+ AppodealAds.Unity.Api.Appodeal.APPODEAL_PLUGIN_VERSION;
+ using (var webRequest = UnityWebRequest.Get(adaptersUri))
+ {
+ yield return webRequest.SendWebRequest();
+ var pages = adaptersUri.Split('/');
+ var page = pages.Length - 1;
+ if (webRequest.isNetworkError)
+ {
+ Debug.Log(pages[page] + ": Error: " + webRequest.error);
+ AppodealDependencyUtils.ShowInternalErrorDialog(this, webRequest.error, string.Empty);
+ }
+ else
+ {
+ if (string.IsNullOrEmpty(webRequest.downloadHandler.text))
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this,
+ "Can't find appodeal adapters information",
+ string.Empty);
+ yield break;
+ }
+
+ var networkDependencies = JsonUtility.FromJson(webRequest.downloadHandler.text);
+
+ networkDependencies.core.type = DependencyType.Core;
+ networkDependencies.ad_networks.ForEach(network => network.type = DependencyType.AdNetwork);
+ networkDependencies.services.ForEach(service => service.type = DependencyType.Service);
+
+ var tempDeps = new List {networkDependencies.core};
+ networkDependencies.ad_networks.ForEach(dep => tempDeps.Add(dep));
+ networkDependencies.services.ForEach(dep => tempDeps.Add(dep));
+
+ tempDeps.Where(dep => !String.IsNullOrEmpty(dep.name) && !dep.name.Equals(AppodealDependencyUtils.TwitterMoPub))
+ .ToList().ForEach(dep => latestDependencies.Add(dep.name, dep));
+
+ if (latestDependencies.Count > 0)
+ {
+ var missingAdapters = internalDependencies.Keys.Where(key => !latestDependencies.ContainsKey(key)).ToList();
+ if (missingAdapters.Count > 0) {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this,
+ $"Out-of-use appodeal adapters were found: {string.Join(", ", missingAdapters)}",
+ string.Empty);
+ }
+ }
+ }
+ }
+
+ #endregion
+
+ coroutine = null;
+
+ isPluginInfoReady = true;
+
+ EditorUtility.ClearProgressBar();
+ }
+
+ private void GetInternalDependencies(string dependencyPath)
+ {
+ var networkDependency = new AppodealDependency
+ {
+ name = AppodealDependencyUtils.GetConfigName(dependencyPath)
+ };
+
+ #region iOSInternalDependencies
+
+ var sourcesiOS = new List();
+ string podName = null;
+ string version = null;
+ string minTargetSdk = null;
+
+ XmlUtilities.ParseXmlTextFileElements(dependencyPath,
+ (reader, elementName, isStart, parentElementName, elementNameStack) =>
+ {
+ if (elementName == "dependencies" &&
+ parentElementName == "" || elementName == "iosPods" &&
+ (parentElementName == "dependencies" || parentElementName == ""))
+ return true;
+
+ if (elementName == "iosPod" && parentElementName == "iosPods")
+ {
+ if (isStart)
+ {
+ podName = reader.GetAttribute("name");
+ version = reader.GetAttribute("version");
+ minTargetSdk = reader.GetAttribute("minTargetSdk");
+
+ sourcesiOS = new List();
+ if (podName == null)
+ {
+ Debug.Log(
+ $"Pod name not specified while reading {dependencyPath}:{reader.LineNumber}\n");
+ return false;
+ }
+ }
+ else
+ {
+ if (podName != null && version != null && minTargetSdk != null)
+ {
+ if ((podName.Equals("Appodeal") || podName.StartsWith("APD")) && !podName.Contains(AppodealDependencyUtils.APDAppodealAdExchangeAdapter))
+ {
+ networkDependency.ios_info = new AppodealDependency.IosDependency(podName,
+ version,
+ AppodealDependencyUtils.GetiOSContent(dependencyPath));
+ }
+ }
+ }
+
+ return true;
+ }
+
+ if (elementName == "sources" && parentElementName == "iosPod")
+ return true;
+ if (elementName == "sources" && parentElementName == "iosPods")
+ {
+ if (isStart)
+ {
+ sourcesiOS = new List();
+ }
+ else
+ {
+ using (var enumerator = sourcesiOS.GetEnumerator())
+ {
+ while (enumerator.MoveNext())
+ {
+ var current = enumerator.Current;
+ Debug.Log(current);
+ }
+ }
+ }
+
+ return true;
+ }
+
+ if (!(elementName == "source") || !(parentElementName == "sources"))
+ return false;
+ if (isStart && reader.Read() && reader.NodeType == XmlNodeType.Text)
+ sourcesiOS.Add(reader.ReadContentAsString());
+ return true;
+ });
+
+ #endregion
+
+ #region AndroidInternalDependencies
+
+ string specName;
+
+ XmlUtilities.ParseXmlTextFileElements(dependencyPath,
+ (reader, elementName, isStart, parentElementName, elementNameStack) =>
+ {
+ if (elementName == "dependencies" &&
+ parentElementName == "" || elementName == "androidPackages" &&
+ (parentElementName == "dependencies" || parentElementName == ""))
+ {
+ return true;
+ }
+
+ if (elementName == "androidPackage" && parentElementName == "androidPackages")
+ {
+ if (isStart)
+ {
+ specName = reader.GetAttribute("spec");
+ if (specName == null)
+ {
+ Debug.Log(
+ $"Pod name not specified while reading {dependencyPath}:{reader.LineNumber}\n");
+ return false;
+ }
+
+ if (networkDependency.name == AppodealDependencyUtils.Appodeal && !specName.Contains(AppodealDependencyUtils.Replace_dependency_core)) return true;
+
+ if (networkDependency.name != AppodealDependencyUtils.Appodeal && specName.Contains(AppodealDependencyUtils.Replace_dependency_core)) return true;
+
+ if (networkDependency.name == AppodealDependencyUtils.GoogleAdMob &&
+ !specName.Contains(AppodealDependencyUtils.ReplaceAdmobDepValue)) return true;
+
+ if (specName.Contains(AppodealDependencyUtils.Replace_network_dependency_value) || specName.Contains(AppodealDependencyUtils.Replace_service_dependency_value))
+ {
+ networkDependency.android_info = new AppodealDependency.AndroidDependency(
+ AppodealDependencyUtils.GetAndroidDependencyName(specName),
+ AppodealDependencyUtils.GetAndroidDependencyVersion(specName),
+ AppodealDependencyUtils.GetAndroidContent(dependencyPath));
+
+ return false;
+ }
+ else if (specName.Contains(AppodealDependencyUtils.Replace_dependency_core))
+ {
+ networkDependency.android_info = new AppodealDependency.AndroidDependency(
+ "appodeal",
+ AppodealDependencyUtils.GetAndroidDependencyCoreVersion(specName),
+ AppodealDependencyUtils.GetAndroidContent(dependencyPath));
+
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ });
+
+ #endregion
+
+ if (!string.IsNullOrEmpty(networkDependency.name))
+ {
+ internalDependencies.Add(networkDependency.name, networkDependency);
+ }
+ }
+
+ private IEnumerator DownloadUnityPlugin(string source, string pluginVersion)
+ {
+ yield return null;
+ var ended = false;
+ var cancelled = false;
+ Exception error = null;
+ int oldPercentage = 0, newPercentage = 0;
+ var path = Path.Combine("Assets/Appodeal", AppodealDependencyUtils.AppodealUnityPlugin + pluginVersion);
+ progress = 0.01f;
+ downloader = new WebClient { Encoding = Encoding.UTF8 };
+ downloader.DownloadProgressChanged += (sender, args) => { newPercentage = args.ProgressPercentage; };
+ downloader.DownloadFileCompleted += (sender, args) =>
+ {
+ ended = true;
+ cancelled = args.Cancelled;
+ error = args.Error;
+ };
+
+ if (!string.IsNullOrEmpty(source))
+ {
+ Debug.LogFormat("Downloading {0} to {1}", source, path);
+ Debug.Log(source);
+ downloader.DownloadFileAsync(new Uri(source), path);
+ }
+ else
+ {
+ AppodealDependencyUtils.ShowInternalErrorDialog(this, "Can't find internal dependencies.",
+ string.Empty);
+ }
+
+ while (!ended)
+ {
+ Repaint();
+ var percentage = oldPercentage;
+ yield return new WaitUntil(() => ended || newPercentage > percentage);
+ oldPercentage = newPercentage;
+ progress = oldPercentage / 100.0f;
+ }
+
+ if (error != null)
+ {
+ Debug.LogError(error);
+ cancelled = true;
+ }
+
+ downloader = null;
+ coroutine = null;
+ progress = 0;
+ EditorUtility.ClearProgressBar();
+ if (!cancelled)
+ {
+ AssetDatabase.ImportPackage(path, true);
+ }
+ else
+ {
+ Debug.Log("Download terminated.");
+ }
+ }
+
+ private void UpdateWindow()
+ {
+ Reset();
+ coroutine = this.StartCoroutine(GetAppodealSDKData());
+ GUI.enabled = true;
+ AssetDatabase.Refresh();
+ }
+
+ private void OnInspectorUpdate()
+ {
+ Repaint();
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Editor/NetworksManager/AppodealAdapterManager.cs.meta b/Assets/Appodeal/Editor/NetworksManager/AppodealAdapterManager.cs.meta
new file mode 100644
index 0000000..23ce4a3
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/AppodealAdapterManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d36084c2e5a794d83af1233007969ec6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager/AppodealDependencyUtils.cs b/Assets/Appodeal/Editor/NetworksManager/AppodealDependencyUtils.cs
new file mode 100644
index 0000000..90dba63
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/AppodealDependencyUtils.cs
@@ -0,0 +1,343 @@
+using System;
+using System.IO;
+using System.Xml;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using UnityEngine;
+using UnityEditor;
+using Appodeal.Editor.AppodealManager.Data;
+
+// ReSharper disable All
+
+namespace Appodeal.Editor.AppodealManager.AppodealDependencies
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ReturnValueOfPureMethodIsNotUsed")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public static class AppodealDependencyUtils
+ {
+ #region Constants
+
+ public const string PluginRequest = "https://mw-backend.appodeal.com/v2.1/unity";
+ public const string AdaptersRequest = "https://mw-backend.appodeal.com/v2.1/unity/config/";
+ public const string Network_configs_path = "Assets/Appodeal/Editor/NetworkConfigs/";
+ public const string Replace_network_dependency_value = "com.appodeal.ads.sdk.networks:";
+ public const string Replace_service_dependency_value = "com.appodeal.ads.sdk.services:";
+ public const string Replace_dependency_core = "com.appodeal.ads.sdk:core:";
+ public const string ReplaceAdmobDepValue = "com.appodeal.ads.sdk.networks:admob";
+ public const string PackageName = "Name";
+ public const string CurrentVersionHeader = "Current Version";
+ public const string LatestVersionHeader = "Latest Version";
+ public const string ActionHeader = "Action";
+ public const string BoxStyle = "box";
+ public const string ActionUpdate = "Update";
+ public const string ActionImport = "Import";
+ public const string ActionRemove = "Remove";
+ public const string EmptyCurrentVersion = " - ";
+ public const string AppodealUnityPlugin = "Appodeal Unity Plugin";
+ public const string AppodealSdkManager = "Appodeal SDK Manager";
+ public const string Appodeal = "Appodeal";
+ public const string Loading = "Loading...";
+ public const string ProgressBar_cancelled = "Progress bar canceled by the user";
+ public const string AppodealCoreDependencies = "Appodeal Core Dependencies";
+ public const string iOS = "iOS";
+ public const string Android = "Android";
+ public const string AppodealNetworkDependencies = "Appodeal Network Dependencies";
+ public const string AppodealServiceDependencies = "Appodeal Service Dependencies";
+ public const string SpecOpenDependencies = "\n";
+ public const string SpecCloseDependencies = "";
+ public const string XmlFileExtension = ".xml";
+ public const string TwitterMoPub = "TwitterMoPub";
+ public const string GoogleAdMob = "GoogleAdMob";
+ public const string APDAppodealAdExchangeAdapter = "APDAppodealAdExchangeAdapter";
+ public const string Dependencies = "Dependencies";
+
+ #endregion
+
+ public static FileInfo[] GetInternalDependencyPath()
+ {
+ var info = new DirectoryInfo(Network_configs_path);
+ var fileInfo = info.GetFiles();
+
+ return fileInfo.Length <= 0 ? null : fileInfo.Where(val => !val.Name.Contains("meta")).ToArray();
+ }
+
+ public static void ShowInternalErrorDialog(EditorWindow editorWindow, string message, string debugLog)
+ {
+ EditorUtility.ClearProgressBar();
+ Debug.LogError(message);
+ var option = EditorUtility.DisplayDialog("Internal error",
+ $"{message}. Please contact Appodeal support.",
+ "Ok");
+ if (option)
+ {
+ editorWindow.Close();
+ }
+ }
+
+ public static void ShowInternalErrorDialog(EditorWindow editorWindow, string message)
+ {
+ EditorUtility.ClearProgressBar();
+ Debug.LogError(message);
+ var option = EditorUtility.DisplayDialog("Internal error",
+ $"{message}.",
+ "Ok");
+ if (option)
+ {
+ editorWindow.Close();
+ }
+ }
+
+ public static void FormatXml(string inputXml)
+ {
+ var document = new XmlDocument();
+ document.Load(inputXml);
+ using (var writer = new XmlTextWriter(inputXml, Encoding.UTF8))
+ {
+ writer.Formatting = Formatting.Indented;
+ writer.Indentation = 4;
+ document.Save(writer);
+ }
+ }
+
+ public static string GetConfigName(string value)
+ {
+ var configName = value.Replace(Network_configs_path, string.Empty);
+ return configName.Replace("Dependencies.xml", string.Empty);
+ }
+
+ public static string GetiOSContent(string path)
+ {
+ var iOSContent = string.Empty;
+ var lines = File.ReadAllLines(path);
+ foreach (var line in lines)
+ {
+ if (string.IsNullOrEmpty(line)) continue;
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line;
+ }
+ }
+
+ return iOSContent;
+ }
+
+ public static string GetAndroidContent(string path)
+ {
+ var iOSContent = string.Empty;
+ var lines = File.ReadAllLines(path);
+ foreach (var line in lines)
+ {
+ if (string.IsNullOrEmpty(line)) continue;
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line + "\n";
+ }
+
+ if (line.Contains(""))
+ {
+ iOSContent += line;
+ }
+ }
+
+ return iOSContent;
+ }
+
+ public static string GetAndroidDependencyName(string value)
+ {
+ return value.Substring(value.IndexOf(':') + 1, value.LastIndexOf(':') - value.IndexOf(':') - 1);
+ }
+
+ public static string GetAndroidDependencyVersion(string value)
+ {
+ string androidDependencyVersion = value.Substring(value.LastIndexOf(':') + 1);
+ if (androidDependencyVersion.Contains("@aar"))
+ {
+ androidDependencyVersion = androidDependencyVersion.Substring(0,
+ androidDependencyVersion.IndexOf('@'));
+ }
+
+ return androidDependencyVersion;
+ }
+
+ public static string GetMajorVersion(string value)
+ {
+ return value.Substring(0, 6).Remove(0, 5).Insert(0, string.Empty);
+ }
+
+ public static string GetAndroidDependencyCoreVersion(string value)
+ {
+ var androidDependencyVersion =
+ value.Replace(Replace_dependency_core, string.Empty);
+ if (androidDependencyVersion.Contains("@aar"))
+ {
+ androidDependencyVersion = androidDependencyVersion.Substring(0,
+ androidDependencyVersion.LastIndexOf("@", StringComparison.Ordinal));
+ }
+
+ return androidDependencyVersion;
+ }
+
+ public static string ReplaceBetaVersion(string value)
+ {
+ return Regex.Replace(value, "-Beta", string.Empty);
+ }
+
+ public static void ReplaceInFile(
+ string filePath, string searchText, string replaceText)
+ {
+ string contentString;
+ using (var reader = new StreamReader(filePath))
+ {
+ contentString = reader.ReadToEnd();
+ reader.Close();
+ }
+
+ contentString = Regex.Replace(contentString.Replace("\r", ""), searchText, replaceText);
+
+ using (var writer = new StreamWriter(filePath))
+ {
+ writer.Write(contentString);
+ writer.Close();
+ }
+ }
+#if UNITY_2018_1_OR_NEWER
+ public static int CompareVersion(string interal, string latest)
+ {
+ var xParts = interal.Split('.');
+ var yParts = latest.Split('.');
+ var partsLength = Math.Max(xParts.Length, yParts.Length);
+ if (partsLength <= 0) return string.Compare(interal, latest, StringComparison.Ordinal);
+ for (var i = 0; i < partsLength; i++)
+ {
+ if (xParts.Length <= i) return -1;
+ if (yParts.Length <= i) return 1;
+ var xPart = xParts[i];
+ var yPart = yParts[i];
+ if (string.IsNullOrEmpty(xPart)) xPart = "0";
+ if (string.IsNullOrEmpty(yPart)) yPart = "0";
+ if (!int.TryParse(xPart, out var xInt) || !int.TryParse(yPart, out var yInt))
+ {
+ var abcCompare = string.Compare(xPart, yPart, StringComparison.Ordinal);
+ if (abcCompare != 0)
+ return abcCompare;
+ continue;
+ }
+
+ if (xInt != yInt) return xInt < yInt ? -1 : 1;
+ }
+
+ return 0;
+ }
+#endif
+
+ public static void GuiHeaders(GUIStyle headerInfoStyle, GUILayoutOption btnFieldWidth)
+ {
+ using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandWidth(false)))
+ {
+ GUILayout.Button(PackageName, headerInfoStyle, GUILayout.Width(150));
+ GUILayout.Space(25);
+ GUILayout.Button(CurrentVersionHeader, headerInfoStyle, GUILayout.Width(110));
+ GUILayout.Space(90);
+ GUILayout.Button(LatestVersionHeader, headerInfoStyle);
+ GUILayout.Button(ActionHeader, headerInfoStyle, btnFieldWidth);
+ GUILayout.Button(string.Empty, headerInfoStyle, GUILayout.Width(5));
+ }
+ }
+
+ public static AppodealDependency GetAppodealDependency(SortedDictionary dependencies)
+ {
+ return dependencies.First(dep => dep.Key.Contains(Appodeal) && dep.Value != null).Value;
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public static class JsonHelper
+ {
+ public static T[] FromJson(string json)
+ {
+ var wrapper = JsonUtility.FromJson>(json);
+ return wrapper.Items;
+ }
+
+ public static string ToJson(T[] array)
+ {
+ var wrapper = new Wrapper {Items = array};
+ return JsonUtility.ToJson(wrapper);
+ }
+
+ public static string ToJson(T[] array, bool prettyPrint)
+ {
+ var wrapper = new Wrapper();
+ wrapper.Items = array;
+ return JsonUtility.ToJson(wrapper, prettyPrint);
+ }
+
+ public static string fixJson(string value)
+ {
+ value = "{\"Items\":" + value + "}";
+ return value;
+ }
+
+ [Serializable]
+ private class Wrapper
+ {
+ public T[] Items;
+ }
+ }
+}
diff --git a/Assets/Appodeal/Editor/NetworksManager/AppodealDependencyUtils.cs.meta b/Assets/Appodeal/Editor/NetworksManager/AppodealDependencyUtils.cs.meta
new file mode 100644
index 0000000..adbcb49
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/AppodealDependencyUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ef4a9558d40aa4f838304d2bd1a6c326
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager/Data.meta b/Assets/Appodeal/Editor/NetworksManager/Data.meta
new file mode 100644
index 0000000..8b3f4ad
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/Data.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5ff783cad9a044716b029fcb72fdc4a0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager/Data/AppodealUnityPlugin.cs b/Assets/Appodeal/Editor/NetworksManager/Data/AppodealUnityPlugin.cs
new file mode 100644
index 0000000..ba4d013
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/Data/AppodealUnityPlugin.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Appodeal.Editor.AppodealManager.Data
+{
+ [Serializable]
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class Root
+ {
+ public Metadata metadata;
+ public AppodealUnityPlugin[] items;
+ }
+
+ [Serializable]
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class Metadata
+ {
+ public int per;
+ public int total;
+ public int page;
+ }
+
+
+ [Serializable]
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class AppodealUnityPlugin
+ {
+ public string created_at;
+ public string build_type;
+ public long id;
+ public string updated_at;
+ public string name;
+ public string source;
+ public string version;
+ public SupportedSdk[] sdks;
+
+ public AppodealUnityPlugin(string name, string buildType, int id, string version,
+ string updatedAt, string createdAt, SupportedSdk[] supportedSdks, string source)
+ {
+ this.name = name;
+ build_type = buildType;
+ this.id = id;
+ this.version = version;
+ updated_at = updatedAt;
+ created_at = createdAt;
+ sdks = supportedSdks;
+ this.source = source;
+ }
+ }
+
+ [Serializable]
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class SupportedSdk
+ {
+ public int id;
+ public string platform;
+ public string version;
+ public string build_type;
+ public string updated_at;
+
+ public SupportedSdk(int id, string platform, string buildType, string version)
+ {
+ this.id = id;
+ this.platform = platform;
+ build_type = buildType;
+ this.version = version;
+ }
+ }
+}
diff --git a/Assets/Appodeal/Editor/NetworksManager/Data/AppodealUnityPlugin.cs.meta b/Assets/Appodeal/Editor/NetworksManager/Data/AppodealUnityPlugin.cs.meta
new file mode 100644
index 0000000..6410b9c
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/Data/AppodealUnityPlugin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: de9a5c96035da45c699253cb3d87bbaa
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager/Data/NetworkDependency.cs b/Assets/Appodeal/Editor/NetworksManager/Data/NetworkDependency.cs
new file mode 100644
index 0000000..60252c4
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/Data/NetworkDependency.cs
@@ -0,0 +1,89 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Appodeal.Editor.AppodealManager.Data
+{
+ public enum DependencyType
+ {
+ Unknown,
+ AdNetwork,
+ Service,
+ Core
+ }
+
+ [Serializable]
+ public class ServerConfig
+ {
+ public List ad_networks;
+ public List services;
+ public AppodealDependency core;
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ClassNeverInstantiated.Local")]
+ [SuppressMessage("ReSharper", "ConvertToAutoProperty")]
+ [Serializable]
+ public class AppodealDependency
+ {
+ public string name;
+ public DependencyType type;
+ public IosDependency ios_info;
+ public AndroidDependency android_info;
+
+ [Serializable]
+ public class AndroidDependency
+ {
+ public string name;
+ public string version;
+ public string unity_content;
+ public List dependencies;
+
+ public AndroidDependency(string name, string version, string unity_content)
+ {
+ this.name = name;
+ this.version = version;
+ this.unity_content = unity_content;
+ }
+
+ public AndroidDependency(string name, string version, string unity_content, List dependencies)
+ {
+ this.name = name;
+ this.version = version;
+ this.unity_content = unity_content;
+ this.dependencies = dependencies;
+ }
+ }
+
+ [Serializable]
+ public class IosDependency
+ {
+ public string name;
+ public string version;
+ public string unity_content;
+ public List dependencies;
+
+ public IosDependency(string name, string version, string unity_content)
+ {
+ this.name = name;
+ this.version = version;
+ this.unity_content = unity_content;
+ }
+
+ public IosDependency(string name, string version, string unity_content, List dependencies)
+ {
+ this.name = name;
+ this.version = version;
+ this.unity_content = unity_content;
+ this.dependencies = dependencies;
+ }
+ }
+
+ [Serializable]
+ public class Dependency
+ {
+ public string name;
+ public string version;
+ }
+ }
+}
diff --git a/Assets/Appodeal/Editor/NetworksManager/Data/NetworkDependency.cs.meta b/Assets/Appodeal/Editor/NetworksManager/Data/NetworkDependency.cs.meta
new file mode 100644
index 0000000..3c2900a
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/Data/NetworkDependency.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 64be6392fb05543f58b82caae0de301f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager/EditorCoroutineExtensions.cs b/Assets/Appodeal/Editor/NetworksManager/EditorCoroutineExtensions.cs
new file mode 100644
index 0000000..dc447c4
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/EditorCoroutineExtensions.cs
@@ -0,0 +1,64 @@
+/*
+Copyright (c) 2017 Marijn Zwemmer
+
+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.Diagnostics.CodeAnalysis;
+using UnityEditor;
+
+namespace marijnz.EditorCoroutines
+{
+ [Obsolete]
+ [SuppressMessage("ReSharper", "UnusedType.Global")]
+ public static class EditorCoroutineExtensions
+ {
+ public static EditorCoroutines.EditorCoroutine StartCoroutine(this EditorWindow thisRef, IEnumerator coroutine)
+ {
+ return EditorCoroutines.StartCoroutine(coroutine, thisRef);
+ }
+
+ public static EditorCoroutines.EditorCoroutine StartCoroutine(this EditorWindow thisRef, string methodName)
+ {
+ return EditorCoroutines.StartCoroutine(methodName, thisRef);
+ }
+
+ public static EditorCoroutines.EditorCoroutine StartCoroutine(this EditorWindow thisRef, string methodName, object value)
+ {
+ return EditorCoroutines.StartCoroutine(methodName, value, thisRef);
+ }
+
+ public static void StopCoroutine(this EditorWindow thisRef, IEnumerator coroutine)
+ {
+ EditorCoroutines.StopCoroutine(coroutine, thisRef);
+ }
+
+ public static void StopCoroutine(this EditorWindow thisRef, string methodName)
+ {
+ EditorCoroutines.StopCoroutine(methodName, thisRef);
+ }
+
+ public static void StopAllCoroutines(this EditorWindow thisRef)
+ {
+ EditorCoroutines.StopAllCoroutines(thisRef);
+ }
+ }
+}
diff --git a/Assets/Appodeal/Editor/NetworksManager/EditorCoroutineExtensions.cs.meta b/Assets/Appodeal/Editor/NetworksManager/EditorCoroutineExtensions.cs.meta
new file mode 100644
index 0000000..fc16a3c
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/EditorCoroutineExtensions.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 48cfea4d47d944dacad4fe3e096de530
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager/EditorCoroutines.cs b/Assets/Appodeal/Editor/NetworksManager/EditorCoroutines.cs
new file mode 100644
index 0000000..4ea5772
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/EditorCoroutines.cs
@@ -0,0 +1,414 @@
+/*
+Copyright (c) 2017 Marijn Zwemmer
+
+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 UnityEngine;
+using System.Collections;
+using UnityEditor;
+using System.Collections.Generic;
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.Reflection;
+// ReSharper disable All
+
+namespace marijnz.EditorCoroutines
+{
+ [Obsolete]
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ConditionIsAlwaysTrueOrFalse")]
+ public class EditorCoroutines
+ {
+ public class EditorCoroutine
+ {
+ public ICoroutineYield currentYield = new YieldDefault();
+ public readonly IEnumerator routine;
+ public readonly string routineUniqueHash;
+ public readonly string ownerUniqueHash;
+ public readonly string MethodName = "";
+
+ public int ownerHash;
+ public string ownerType;
+ public bool finished = false;
+
+ public EditorCoroutine(IEnumerator routine, int ownerHash, string ownerType)
+ {
+ this.routine = routine;
+ this.ownerHash = ownerHash;
+ this.ownerType = ownerType;
+ ownerUniqueHash = ownerHash + "_" + ownerType;
+
+ if (routine != null)
+ {
+ var split = routine.ToString().Split('<', '>');
+ if (split.Length == 3)
+ {
+ MethodName = split[1];
+ }
+ }
+
+ routineUniqueHash = ownerHash + "_" + ownerType + "_" + MethodName;
+ }
+
+ public EditorCoroutine(string methodName, int ownerHash, string ownerType)
+ {
+ MethodName = methodName;
+ this.ownerHash = ownerHash;
+ this.ownerType = ownerType;
+ ownerUniqueHash = ownerHash + "_" + ownerType;
+ routineUniqueHash = ownerHash + "_" + ownerType + "_" + MethodName;
+ }
+ }
+
+ public interface ICoroutineYield
+ {
+ bool IsDone(float deltaTime);
+ }
+
+ private struct YieldDefault : ICoroutineYield
+ {
+ public bool IsDone(float deltaTime)
+ {
+ return true;
+ }
+ }
+
+ private struct YieldWaitForSeconds : ICoroutineYield
+ {
+ public float timeLeft;
+
+ public bool IsDone(float deltaTime)
+ {
+ timeLeft -= deltaTime;
+ return timeLeft < 0;
+ }
+ }
+
+ private struct YieldCustomYieldInstruction : ICoroutineYield
+ {
+ public CustomYieldInstruction customYield;
+
+ public bool IsDone(float deltaTime)
+ {
+ return !customYield.keepWaiting;
+ }
+ }
+
+ private struct YieldWWW : ICoroutineYield
+ {
+ public WWW Www;
+
+ public bool IsDone(float deltaTime)
+ {
+ return Www.isDone;
+ }
+ }
+
+ private struct YieldAsync : ICoroutineYield
+ {
+ public AsyncOperation asyncOperation;
+
+ public bool IsDone(float deltaTime)
+ {
+ return asyncOperation.isDone;
+ }
+ }
+
+ private struct YieldNestedCoroutine : ICoroutineYield
+ {
+ public EditorCoroutine coroutine;
+
+ public bool IsDone(float deltaTime)
+ {
+ return coroutine.finished;
+ }
+ }
+
+ private static EditorCoroutines instance;
+
+ private readonly Dictionary> coroutineDict = new Dictionary>();
+ private readonly List> tempCoroutineList = new List>();
+
+ private readonly Dictionary> coroutineOwnerDict =
+ new Dictionary>();
+
+ private DateTime previousTimeSinceStartup;
+
+ /// Starts a coroutine.
+ /// The coroutine to start.
+ /// Reference to the instance of the class containing the method.
+ public static EditorCoroutine StartCoroutine(IEnumerator routine, object thisReference)
+ {
+ CreateInstanceIfNeeded();
+ return instance.GoStartCoroutine(routine, thisReference);
+ }
+
+ /// Starts a coroutine.
+ /// The name of the coroutine method to start.
+ /// Reference to the instance of the class containing the method.
+ public static EditorCoroutine StartCoroutine(string methodName, object thisReference)
+ {
+ return StartCoroutine(methodName, null, thisReference);
+ }
+
+ /// Starts a coroutine.
+ /// The name of the coroutine method to start.
+ /// The parameter to pass to the coroutine.
+ /// Reference to the instance of the class containing the method.
+ public static EditorCoroutine StartCoroutine(string methodName, object value, object thisReference)
+ {
+ var methodInfo = thisReference.GetType()
+ .GetMethod(methodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+ if (methodInfo == null)
+ {
+ Debug.LogError("Coroutine '" + methodName + "' couldn't be started, the method doesn't exist!");
+ }
+ object returnValue;
+
+ System.Diagnostics.Debug.Assert(methodInfo != null, nameof(methodInfo) + " != null");
+ returnValue = methodInfo.Invoke(thisReference, value == null ? null : new[] {value});
+
+ if (returnValue is IEnumerator)
+ {
+ CreateInstanceIfNeeded();
+ return instance.GoStartCoroutine((IEnumerator) returnValue, thisReference);
+ }
+
+ Debug.LogError("Coroutine '" + methodName + "' couldn't be started, the method doesn't return an IEnumerator!");
+
+ return null;
+ }
+
+ /// Stops all coroutines being the routine running on the passed instance.
+ /// The coroutine to stop.
+ /// Reference to the instance of the class containing the method.
+ public static void StopCoroutine(IEnumerator routine, object thisReference)
+ {
+ CreateInstanceIfNeeded();
+ instance.GoStopCoroutine(routine, thisReference);
+ }
+
+ ///
+ /// Stops all coroutines named methodName running on the passed instance.
+ /// The name of the coroutine method to stop.
+ /// Reference to the instance of the class containing the method.
+ public static void StopCoroutine(string methodName, object thisReference)
+ {
+ CreateInstanceIfNeeded();
+ instance.GoStopCoroutine(methodName, thisReference);
+ }
+
+ ///
+ /// Stops all coroutines running on the passed instance.
+ /// Reference to the instance of the class containing the method.
+ public static void StopAllCoroutines(object thisReference)
+ {
+ CreateInstanceIfNeeded();
+ instance.GoStopAllCoroutines(thisReference);
+ }
+
+ private static void CreateInstanceIfNeeded()
+ {
+ if (instance != null) return;
+ instance = new EditorCoroutines();
+ instance.Initialize();
+ }
+
+ private void Initialize()
+ {
+ previousTimeSinceStartup = DateTime.Now;
+ EditorApplication.update += OnUpdate;
+ }
+
+ private void GoStopCoroutine(IEnumerator routine, object thisReference)
+ {
+ GoStopActualRoutine(CreateCoroutine(routine, thisReference));
+ }
+
+ private void GoStopCoroutine(string methodName, object thisReference)
+ {
+ GoStopActualRoutine(CreateCoroutineFromString(methodName, thisReference));
+ }
+
+ private void GoStopActualRoutine(EditorCoroutine routine)
+ {
+ if (!coroutineDict.ContainsKey(routine.routineUniqueHash)) return;
+ coroutineOwnerDict[routine.ownerUniqueHash].Remove(routine.routineUniqueHash);
+ coroutineDict.Remove(routine.routineUniqueHash);
+ }
+
+ private void GoStopAllCoroutines(object thisReference)
+ {
+ var coroutine = CreateCoroutine(null, thisReference);
+ if (!coroutineOwnerDict.ContainsKey(coroutine.ownerUniqueHash)) return;
+ foreach (var couple in coroutineOwnerDict[coroutine.ownerUniqueHash])
+ {
+ coroutineDict.Remove(couple.Value.routineUniqueHash);
+ }
+ coroutineOwnerDict.Remove(coroutine.ownerUniqueHash);
+ }
+
+ private EditorCoroutine GoStartCoroutine(IEnumerator routine, object thisReference)
+ {
+ if (routine == null)
+ {
+ Debug.LogException(new Exception("IEnumerator is null!"), null);
+ }
+ var coroutine = CreateCoroutine(routine, thisReference);
+ GoStartCoroutine(coroutine);
+ return coroutine;
+ }
+
+ private void GoStartCoroutine(EditorCoroutine coroutine)
+ {
+ if (!coroutineDict.ContainsKey(coroutine.routineUniqueHash))
+ {
+ var newCoroutineList = new List();
+ coroutineDict.Add(coroutine.routineUniqueHash, newCoroutineList);
+ }
+ coroutineDict[coroutine.routineUniqueHash].Add(coroutine);
+
+ if (!coroutineOwnerDict.ContainsKey(coroutine.ownerUniqueHash))
+ {
+ var newCoroutineDict = new Dictionary();
+ coroutineOwnerDict.Add(coroutine.ownerUniqueHash, newCoroutineDict);
+ }
+
+ // If the method from the same owner has been stored before, it doesn't have to be stored anymore,
+ // One reference is enough in order for "StopAllCoroutines" to work
+ if (!coroutineOwnerDict[coroutine.ownerUniqueHash].ContainsKey(coroutine.routineUniqueHash))
+ {
+ coroutineOwnerDict[coroutine.ownerUniqueHash].Add(coroutine.routineUniqueHash, coroutine);
+ }
+
+ MoveNext(coroutine);
+ }
+
+ private static EditorCoroutine CreateCoroutine(IEnumerator routine, object thisReference)
+ {
+ return new EditorCoroutine(routine, thisReference.GetHashCode(), thisReference.GetType().ToString());
+ }
+
+ private static EditorCoroutine CreateCoroutineFromString(string methodName, object thisReference)
+ {
+ return new EditorCoroutine(methodName, thisReference.GetHashCode(), thisReference.GetType().ToString());
+ }
+
+ private void OnUpdate()
+ {
+ var deltaTime = (float) (DateTime.Now.Subtract(previousTimeSinceStartup).TotalMilliseconds / 1000.0f);
+
+ previousTimeSinceStartup = DateTime.Now;
+ if (coroutineDict.Count == 0)
+ {
+ return;
+ }
+
+ tempCoroutineList.Clear();
+ foreach (var pair in coroutineDict)
+ tempCoroutineList.Add(pair.Value);
+
+ for (var i = tempCoroutineList.Count - 1; i >= 0; i--)
+ {
+ var coroutines = tempCoroutineList[i];
+
+ for (var j = coroutines.Count - 1; j >= 0; j--)
+ {
+ var coroutine = coroutines[j];
+
+ if (!coroutine.currentYield.IsDone(deltaTime))
+ {
+ continue;
+ }
+
+ if (!MoveNext(coroutine))
+ {
+ coroutines.RemoveAt(j);
+ coroutine.currentYield = null;
+ coroutine.finished = true;
+ }
+
+ if (coroutines.Count == 0)
+ {
+ coroutineDict.Remove(coroutine.ownerUniqueHash);
+ }
+ }
+ }
+ }
+
+ private static bool MoveNext(EditorCoroutine coroutine)
+ {
+ return coroutine.routine.MoveNext() && Process(coroutine);
+ }
+
+ private static bool Process(EditorCoroutine coroutine)
+ {
+ var current = coroutine.routine.Current;
+ if (current == null)
+ {
+ coroutine.currentYield = new YieldDefault();
+ }
+ else if (current is WaitForSeconds)
+ {
+ var seconds = float.Parse(GetInstanceField(typeof(WaitForSeconds), current, "m_Seconds").ToString());
+ coroutine.currentYield = new YieldWaitForSeconds {timeLeft = seconds};
+ }
+ else if (current is CustomYieldInstruction)
+ {
+ coroutine.currentYield = new YieldCustomYieldInstruction()
+ {
+ customYield = current as CustomYieldInstruction
+ };
+ }
+ else if (current is WWW)
+ {
+ coroutine.currentYield = new YieldWWW {Www = (WWW) current};
+ }
+ else if (current is WaitForFixedUpdate || current is WaitForEndOfFrame)
+ {
+ coroutine.currentYield = new YieldDefault();
+ }
+ else if (current is AsyncOperation)
+ {
+ coroutine.currentYield = new YieldAsync {asyncOperation = (AsyncOperation) current};
+ }
+ else if (current is EditorCoroutine)
+ {
+ coroutine.currentYield = new YieldNestedCoroutine { coroutine= (EditorCoroutine) current};
+ }
+ else
+ {
+ Debug.LogException(
+ new Exception("<" + coroutine.MethodName + "> yielded an unknown or unsupported type! (" + current.GetType() + ")"),
+ null);
+ coroutine.currentYield = new YieldDefault();
+ }
+ return true;
+ }
+
+ private static object GetInstanceField(Type type, object instance, string fieldName)
+ {
+ const BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
+ var field = type.GetField(fieldName, bindFlags);
+ System.Diagnostics.Debug.Assert(field != null, nameof(field) + " != null");
+ return field.GetValue(instance);
+ }
+ }
+}
diff --git a/Assets/Appodeal/Editor/NetworksManager/EditorCoroutines.cs.meta b/Assets/Appodeal/Editor/NetworksManager/EditorCoroutines.cs.meta
new file mode 100644
index 0000000..6c74c2a
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/EditorCoroutines.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d7232058220ec4a9eb608a6acd94b243
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/NetworksManager/XmlUtilities.cs b/Assets/Appodeal/Editor/NetworksManager/XmlUtilities.cs
new file mode 100644
index 0000000..796e43f
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/XmlUtilities.cs
@@ -0,0 +1,117 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.IO;
+using System.Xml;
+using UnityEngine;
+
+namespace Appodeal.Editor.AppodealManager
+{
+ [SuppressMessage("ReSharper", "MemberInitializerValueIgnored")]
+ [SuppressMessage("ReSharper", "UnusedVariable")]
+ [SuppressMessage("ReSharper", "UnusedMethodReturnValue.Local")]
+ [SuppressMessage("ReSharper", "RedundantToStringCall")]
+ internal class XmlUtilities
+ {
+ public static int Num;
+ internal static bool ParseXmlTextFileElements(
+ string filename,
+ ParseElement parseElement)
+ {
+ if (!File.Exists(filename))
+ return false;
+ try
+ {
+ using (var xmlTextReader = new XmlTextReader(new StreamReader(filename)))
+ {
+ var elementNameStack = new List();
+ Func func = () => elementNameStack.Count > 0 ? elementNameStack[0] : "";
+ var reader = new Reader(xmlTextReader);
+ while (reader.Reading)
+ {
+ var name = xmlTextReader.Name;
+ var parentElementName = func();
+ if (xmlTextReader.NodeType == XmlNodeType.Element)
+ {
+ if (parseElement(xmlTextReader, name, true, parentElementName, elementNameStack))
+ elementNameStack.Insert(0, name);
+ if (reader.XmlReaderIsAhead)
+ {
+ reader.Read();
+ continue;
+ }
+ }
+
+ if ((xmlTextReader.NodeType == XmlNodeType.EndElement ||
+ xmlTextReader.NodeType == XmlNodeType.Element && xmlTextReader.IsEmptyElement) &&
+ !string.IsNullOrEmpty(parentElementName))
+ {
+ if (elementNameStack[0] == name)
+ elementNameStack.RemoveAt(0);
+ else
+ elementNameStack.Clear();
+ Num = parseElement(xmlTextReader, name, false, func(), elementNameStack) ? 1 : 0;
+ }
+
+ reader.Read();
+ }
+ }
+ }
+ catch (XmlException ex)
+ {
+ Debug.Log(string.Format("Failed while parsing XML file {0}\n{1}\n", filename, ex.ToString()));
+ return false;
+ }
+
+ return true;
+ }
+
+ private class Reader
+ {
+ private int lineNumber = -1;
+ private int linePosition = -1;
+ private readonly XmlTextReader reader;
+
+ public Reader(XmlTextReader xmlReader)
+ {
+ reader = xmlReader;
+ Reading = reader.Read();
+ lineNumber = reader.LineNumber;
+ linePosition = reader.LinePosition;
+ }
+
+ public bool Reading { private set; get; }
+
+ public bool XmlReaderIsAhead
+ {
+ get
+ {
+ if (lineNumber == reader.LineNumber)
+ return linePosition != reader.LinePosition;
+ return true;
+ }
+ }
+
+ public bool Read()
+ {
+ var flag = false;
+ if (Reading && !XmlReaderIsAhead)
+ {
+ Reading = reader.Read();
+ flag = true;
+ }
+
+ lineNumber = reader.LineNumber;
+ linePosition = reader.LinePosition;
+ return flag;
+ }
+ }
+
+ internal delegate bool ParseElement(
+ XmlTextReader reader,
+ string elementName,
+ bool isStart,
+ string parentElementName,
+ List elementNameStack);
+ }
+}
\ No newline at end of file
diff --git a/Assets/Appodeal/Editor/NetworksManager/XmlUtilities.cs.meta b/Assets/Appodeal/Editor/NetworksManager/XmlUtilities.cs.meta
new file mode 100644
index 0000000..d634dfe
--- /dev/null
+++ b/Assets/Appodeal/Editor/NetworksManager/XmlUtilities.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b0a1cbb52e2de45eeac50de8c064f21b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Utils.meta b/Assets/Appodeal/Editor/Utils.meta
new file mode 100644
index 0000000..3ed33bd
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0c71b5cecd6e04a2691abe70a86d8339
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Utils/AppodealEditorSettings.cs b/Assets/Appodeal/Editor/Utils/AppodealEditorSettings.cs
new file mode 100644
index 0000000..20ab10a
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealEditorSettings.cs
@@ -0,0 +1,45 @@
+#if UNITY_EDITOR
+#if UNITY_2018_1_OR_NEWER
+using Appodeal.Editor.AppodealManager.AppodealDependencies;
+#endif
+using UnityEditor;
+using UnityEngine;
+
+namespace AppodealAds.Unity.Editor.Utils
+{
+ public class AppodealEditorSettings : ScriptableObject
+ {
+ [MenuItem("Appodeal/SDK Documentation")]
+ public static void OpenDocumentation()
+ {
+ Application.OpenURL("https://wiki.appodeal.com/en/unity/get-started");
+ }
+
+ [MenuItem("Appodeal/Appodeal Homepage")]
+ public static void OpenAppodealHome()
+ {
+ Application.OpenURL("https://appodeal.com/");
+ }
+
+#if UNITY_2018_1_OR_NEWER
+ [MenuItem("Appodeal/Manage Appodeal SDK")]
+ public static void AppodealSdkManager()
+ {
+ AppodealAdapterManager.ShowSdkManager();
+ }
+#endif
+
+ [MenuItem("Appodeal/Appodeal Settings")]
+ public static void SetAdMobAppId()
+ {
+ AppodealInternalSettings.ShowAppodealInternalSettings();
+ }
+
+ [MenuItem("Appodeal/Remove plugin")]
+ public static void RemoveAppodealPlugin()
+ {
+ RemoveHelper.RemovePlugin();
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Editor/Utils/AppodealEditorSettings.cs.meta b/Assets/Appodeal/Editor/Utils/AppodealEditorSettings.cs.meta
new file mode 100644
index 0000000..a22cd89
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealEditorSettings.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6403ac45f2fe344ac84a2d7b8e61bb60
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Utils/AppodealInternalSettings.cs b/Assets/Appodeal/Editor/Utils/AppodealInternalSettings.cs
new file mode 100644
index 0000000..8423312
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealInternalSettings.cs
@@ -0,0 +1,257 @@
+#pragma warning disable 612
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using Appodeal.Editor.AppodealManager.AppodealDependencies;
+using AppodealAds.Unity.Editor.InternalResources;
+using marijnz.EditorCoroutines;
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.Networking;
+
+#pragma warning disable 618
+
+[SuppressMessage("ReSharper", "NotAccessedField.Local")]
+[SuppressMessage("ReSharper", "InconsistentNaming")]
+[SuppressMessage("ReSharper", "CollectionNeverQueried.Global")]
+public class AppodealInternalSettings : EditorWindow
+{
+ private static List SKAdNetworkIdentifiers;
+
+ public static void ShowAppodealInternalSettings()
+ {
+ GetWindowWithRect(typeof(AppodealInternalSettings), new Rect(0, 0, 650, 340), true, "Appodeal Settings");
+ }
+
+ private void OnEnable()
+ {
+ this.StartCoroutine(GetSkaNetworkIds());
+ }
+
+ private static IEnumerator GetSkaNetworkIds()
+ {
+ SKAdNetworkIdentifiers = new List();
+ var requestSkaNetworkIds = UnityWebRequest.Get("https://mw-backend.appodeal.com/v1/skadnetwork/");
+ yield return requestSkaNetworkIds.SendWebRequest();
+ if (requestSkaNetworkIds.isError)
+ {
+ Debug.LogError(requestSkaNetworkIds.error);
+ }
+ else
+ {
+ if (string.IsNullOrEmpty(requestSkaNetworkIds.downloadHandler.text))
+ {
+ Debug.LogError("string.IsNullOrEmpty(requestSkaNetworkIds.downloadHandler.text)");
+ }
+
+ if (requestSkaNetworkIds.downloadHandler.text.Contains("error"))
+ {
+ Debug.LogError(
+ $"{requestSkaNetworkIds.downloadHandler.text}");
+ yield break;
+ }
+
+ var skaItems =
+ JsonHelper.FromJson(JsonHelper.fixJson(requestSkaNetworkIds.downloadHandler.text));
+
+ foreach (var skaItem in skaItems)
+ {
+ foreach (var itemID in skaItem.ids)
+ {
+ if (!string.IsNullOrEmpty(itemID))
+ {
+ SKAdNetworkIdentifiers.Add(itemID);
+ }
+ }
+ }
+ }
+
+ requestSkaNetworkIds.Dispose();
+ yield return null;
+ }
+
+ private void OnGUI()
+ {
+ #region Admob App Id Setting
+
+ GUILayout.BeginHorizontal();
+ using (new EditorGUILayout.VerticalScope("box"))
+ {
+ if (GUILayout.Button("AdMob App Id Setting", new GUIStyle(EditorStyles.label)
+ {
+ fontSize = 15,
+ fontStyle = FontStyle.Bold,
+ fixedHeight = 25
+ }, GUILayout.Width(200)))
+ {
+ Application.OpenURL(
+ "https://wiki.appodeal.com/en/unity/get-started#UnitySDK.GetStarted-2.3Admobconfiguration");
+ }
+
+ GUILayout.Space(2);
+
+
+ AppodealSettings.Instance.AdMobAndroidAppId = AdmobAppIdPlatformRow("App ID (Android)",
+ AppodealSettings.Instance.AdMobAndroidAppId, GUILayout.Width(200));
+ AppodealSettings.Instance.AdMobIosAppId = AdmobAppIdPlatformRow("App ID (iOS)",
+ AppodealSettings.Instance.AdMobIosAppId, GUILayout.Width(200));
+ GUILayout.Space(10);
+ }
+
+ GUILayout.EndHorizontal();
+
+ #endregion
+
+ #region Android Settings
+
+ GUILayout.BeginHorizontal();
+
+
+ using (new EditorGUILayout.VerticalScope("box", GUILayout.Width(200), GUILayout.Height(200)))
+ {
+ LabelField("Android Settings");
+ HeaderField("Add optional permissions",
+ "https://wiki.appodeal.com/en/unity/get-started#UnitySDK.GetStarted-Configure-AndroidManifest.xml");
+
+ AppodealSettings.Instance.AccessCoarseLocationPermission = KeyRow("ACCESS_COARSE_LOCATION",
+ AppodealSettings.Instance.AccessCoarseLocationPermission);
+ AppodealSettings.Instance.AccessFineLocationPermission = KeyRow("ACCESS_FINE_LOCATION",
+ AppodealSettings.Instance.AccessFineLocationPermission);
+ AppodealSettings.Instance.WriteExternalStoragePermission = KeyRow("WRITE_EXTERNAL_STORAGE",
+ AppodealSettings.Instance.WriteExternalStoragePermission);
+ AppodealSettings.Instance.AccessWifiStatePermission = KeyRow("ACCESS_WIFI_STATE",
+ AppodealSettings.Instance.AccessWifiStatePermission);
+ AppodealSettings.Instance.VibratePermission =
+ KeyRow("VIBRATE", AppodealSettings.Instance.VibratePermission);
+
+ GUILayout.Space(10);
+ if (GUILayout.Button("Multidex", new GUIStyle(EditorStyles.label)
+ {
+ fontSize = 12,
+ fontStyle = FontStyle.Bold,
+ fixedHeight = 18
+ }, GUILayout.Width(100)))
+ {
+ Application.OpenURL("https://developer.android.com/studio/build/multidex");
+ }
+
+ AppodealSettings.Instance.AndroidMultidex =
+ KeyRow("Enable multidex", AppodealSettings.Instance.AndroidMultidex);
+ GUILayout.Space(12);
+ }
+
+ #endregion
+
+ #region iOS Settings
+
+ using (new EditorGUILayout.VerticalScope("box", GUILayout.Width(200), GUILayout.Height(200)))
+ {
+ LabelField("iOS Settings");
+ HeaderField("Add keys to info.plist",
+ "https://wiki.appodeal.com/en/unity/get-started#UnitySDK.GetStarted-2.2iOSconfiguration");
+ GUILayout.Space(10);
+
+ AppodealSettings.Instance.NSUserTrackingUsageDescription = KeyRow("NSUserTrackingUsageDescription",
+ AppodealSettings.Instance.NSUserTrackingUsageDescription);
+ AppodealSettings.Instance.NSLocationWhenInUseUsageDescription = KeyRow(
+ "NSLocationWhenInUseUsageDescription",
+ AppodealSettings.Instance.NSLocationWhenInUseUsageDescription);
+ AppodealSettings.Instance.NSCalendarsUsageDescription = KeyRow("NSCalendarsUsageDescription",
+ AppodealSettings.Instance.NSCalendarsUsageDescription);
+ AppodealSettings.Instance.NSAppTransportSecurity = KeyRow("NSAppTransportSecurity",
+ AppodealSettings.Instance.NSAppTransportSecurity);
+
+ GUILayout.Space(25);
+ if (GUILayout.Button("SKAdNetwork", new GUIStyle(EditorStyles.label)
+ {
+ fontSize = 12,
+ fontStyle = FontStyle.Bold,
+ fixedHeight = 18
+ }, GUILayout.ExpandWidth(true)))
+ {
+ Application.OpenURL("https://developer.apple.com/documentation/storekit/skadnetwork");
+ }
+
+
+ AppodealSettings.Instance.IOSSkAdNetworkItems =
+ KeyRow("Add SKAdNetworkItems", AppodealSettings.Instance.IOSSkAdNetworkItems);
+
+ if (AppodealSettings.Instance.IOSSkAdNetworkItemsList != null &&
+ AppodealSettings.Instance.IOSSkAdNetworkItemsList.Count > 0)
+ {
+ AppodealSettings.Instance.IOSSkAdNetworkItemsList = null;
+ AppodealSettings.Instance.IOSSkAdNetworkItemsList = SKAdNetworkIdentifiers;
+ }
+ else
+ {
+ AppodealSettings.Instance.IOSSkAdNetworkItemsList = SKAdNetworkIdentifiers;
+ }
+
+ GUILayout.Space(10);
+ }
+
+ GUILayout.EndHorizontal();
+
+ #endregion
+
+ AppodealSettings.Instance.SaveAsync();
+ }
+
+ private static void LabelField(string label)
+ {
+ EditorGUILayout.LabelField(label, new GUIStyle(EditorStyles.label)
+ {
+ fontSize = 15,
+ fontStyle = FontStyle.Bold
+ },
+ GUILayout.Height(20), GUILayout.Width(311));
+ GUILayout.Space(2);
+ }
+
+ private static void HeaderField(string header, string url)
+ {
+ if (GUILayout.Button(header, new GUIStyle(EditorStyles.label)
+ {
+ fontSize = 12,
+ fontStyle = FontStyle.Bold,
+ fixedHeight = 18
+ }, GUILayout.Width(200)))
+ {
+ Application.OpenURL(url);
+ }
+
+ GUILayout.Space(2);
+ }
+
+ private static string AdmobAppIdPlatformRow(string fieldTitle, string text, GUILayoutOption labelWidth,
+ GUILayoutOption textFieldWidthOption = null)
+ {
+ GUILayout.BeginHorizontal();
+ EditorGUILayout.LabelField(new GUIContent(fieldTitle), labelWidth);
+ text = textFieldWidthOption == null
+ ? GUILayout.TextField(text)
+ : GUILayout.TextField(text, textFieldWidthOption);
+ GUILayout.EndHorizontal();
+ return text;
+ }
+
+ private static bool KeyRow(string fieldTitle, bool value)
+ {
+ GUILayout.Space(5);
+ var originalValue = EditorGUIUtility.labelWidth;
+ EditorGUIUtility.labelWidth = 235;
+ value = EditorGUILayout.Toggle(fieldTitle, value);
+ EditorGUIUtility.labelWidth = originalValue;
+ return value;
+ }
+
+ [Serializable]
+ public class SkaNetworkItem
+ {
+ public string name;
+ public long id;
+ public string[] ids;
+ public string compatible_version;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Appodeal/Editor/Utils/AppodealInternalSettings.cs.meta b/Assets/Appodeal/Editor/Utils/AppodealInternalSettings.cs.meta
new file mode 100644
index 0000000..3b03b0b
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealInternalSettings.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8463da8c2c5364d92ab4e3c62fe21aa2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Utils/AppodealPostProcess.cs b/Assets/Appodeal/Editor/Utils/AppodealPostProcess.cs
new file mode 100644
index 0000000..cb950b4
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealPostProcess.cs
@@ -0,0 +1,21 @@
+#if UNITY_IPHONE
+using Appodeal.Unity.Editor.Utils;
+using UnityEditor;
+using UnityEditor.Callbacks;
+using UnityEngine;
+
+namespace AppodealAds.Unity.Editor.Utils
+{
+ public class AppodealPostProcess : MonoBehaviour
+ {
+ [PostProcessBuild(100)]
+ public static void OnPostProcessBuild(BuildTarget target, string path)
+ {
+ if (target.ToString() == "iOS" || target.ToString() == "iPhone")
+ {
+ iOSPostprocessUtils.PrepareProject(path);
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/Appodeal/Editor/Utils/AppodealPostProcess.cs.meta b/Assets/Appodeal/Editor/Utils/AppodealPostProcess.cs.meta
new file mode 100644
index 0000000..9cdf4d0
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealPostProcess.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b938fd23b1aab40529afa203d53697fe
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Utils/AppodealPreProcess.cs b/Assets/Appodeal/Editor/Utils/AppodealPreProcess.cs
new file mode 100644
index 0000000..6b36d9e
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealPreProcess.cs
@@ -0,0 +1,659 @@
+// ReSharper disable All
+
+#if UNITY_ANDROID
+using System;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Xml;
+using System.Xml.Linq;
+using AppodealAds.Unity.Editor.Checkers;
+using AppodealAds.Unity.Editor.InternalResources;
+using AppodealAds.Unity.Editor.Utils;
+using UnityEditor;
+using UnityEditor.Android;
+using UnityEditor.Build;
+#if UNITY_2018_1_OR_NEWER
+using UnityEditor.Build.Reporting;
+using UnityEngine.Android;
+#endif
+using UnityEngine;
+
+namespace Appodeal.Unity.Editor.Utils
+{
+ public class AppodealPreProcess :
+#if UNITY_2018_1_OR_NEWER
+ IPreprocessBuildWithReport
+#else
+ IPreprocessBuild
+#endif
+ {
+ #region Constants
+
+ //Templates in Unity Editor Data folder
+ private const string gradleDefaultTemplatePath = "PlaybackEngines/AndroidPlayer/Tools/GradleTemplates";
+ public const string manifestDefaultTemplatePath = "PlaybackEngines/AndroidPlayer/Apk/AndroidManifest.xml";
+
+ //Paths without leading Assets folder
+ public const string androidPluginsPath = "Plugins/Android";
+ public const string gradleTemplateName = "mainTemplate.gradle";
+ public const string manifestTemplateName = "AndroidManifest.xml";
+ public const string appodealTemplatesPath = "Appodeal/InternalResources";
+ private const string appodealDexesPath = "Assets/Plugins/Android/appodeal/assets/dex";
+
+ //Gradle search lines
+ public const string GRADLE_GOOGLE_REPOSITORY = "google()";
+ public const string GRADLE_GOOGLE_REPOSITORY_COMPAT = "maven { url \"https://maven.google.com\" }";
+ public const string GRADLE_DEPENDENCIES = "**DEPS**";
+ public const string GRADLE_APP_ID = "**APPLICATIONID**";
+ public const string GRADLE_USE_PROGUARD = "useProguard";
+ public const string GRADLE_MULTIDEX_DEPENDENCY_WO_VERSION = "androidx.multidex:multidex:";
+ public const string GRAFLE_DEFAULT_CONFIG = "defaultConfig";
+ public const string COMPILE_OPTIONS = "compileOptions {";
+ public const string GRADLE_JAVA_VERSION_1_8 = "JavaVersion.VERSION_1_8";
+ public const string GRADLE_SOURCE_CAPABILITY = "sourceCompatibility ";
+ public const string GRADLE_TARGET_CAPATILITY = "targetCompatibility ";
+
+ //Gradle add lines
+ public const string GRADLE_IMPLEMENTATION = "implementation ";
+ public const string GRADLE_MULTIDEX_DEPENDENCY = "'androidx.multidex:multidex:2.0.1'";
+ public const string GRADLE_MULTIDEX_ENABLE = "multiDexEnabled true";
+
+ //Manifest add lines
+ public const string manifestMutlidexApp = "androidx.multidex.MultiDexApplication";
+
+ #endregion
+
+#if UNITY_2018_1_OR_NEWER
+ public void OnPreprocessBuild(BuildReport report)
+#else
+ public void OnPreprocessBuild(BuildTarget target, string path)
+#endif
+
+ {
+ var manifestPath = Path.Combine(Application.dataPath,
+ "Plugins/Android/appodeal.androidlib/AndroidManifest.xml");
+
+ var androidManifest = new AndroidManifest(manifestPath);
+
+ AddOptionalPermissions(manifestPath, androidManifest);
+ AddAdmobAppId(manifestPath, androidManifest);
+ EnableMultidex(manifestPath, androidManifest);
+
+ androidManifest.Save();
+ }
+
+ private void EnableMultidex(string manifestPath, AndroidManifest androidManifest)
+ {
+#if UNITY_2019_3_OR_NEWER
+ if(CheckContainsMultidex(manifestPath, manifestMutlidexApp))
+ {
+ androidManifest.RemoveMultiDexApplication();
+ }
+#else
+
+ if (AppodealSettings.Instance.AndroidMultidex)
+ {
+ if (PlayerSettings.Android.minSdkVersion < AndroidSdkVersions.AndroidApiLevel21)
+ {
+ androidManifest.AddMultiDexApplication();
+
+ if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
+ {
+ if (!AppodealUnityUtils.isGradleEnabled())
+ {
+ new EnableGradle().fixProblem();
+ }
+
+ var customGradeScript = GetCustomGradleScriptPath();
+ if (string.IsNullOrEmpty(customGradeScript) || !File.Exists(customGradeScript))
+ {
+ if (File.Exists(getDefaultGradleTemplate()))
+ {
+ new CopyGradleScriptAndEnableMultidex().fixProblem();
+ }
+ }
+ else
+ {
+ var settings = new ImportantGradleSettings(customGradeScript);
+ if (!settings.isMultiDexAddedCompletely())
+ {
+ new EnableMultidexInGradle(customGradeScript).fixProblem();
+ }
+
+ if (!settings.isJavaVersionIncluded())
+ {
+ new EnableJavaVersion(customGradeScript).fixProblem();
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ androidManifest.RemoveMultiDexApplication();
+ }
+#endif
+ }
+
+ private void AddAdmobAppId(string path, AndroidManifest androidManifest)
+ {
+ if (File.Exists(Path.Combine(Application.dataPath, "Plugins/Android/AndroidManifest.xml"))
+ && CheckContainsAppId(Path.Combine(Application.dataPath, "Plugins/Android/AndroidManifest.xml")))
+ {
+ if (File.Exists(path) && CheckContainsAppId(path))
+ {
+ androidManifest.RemoveAdmobAppId();
+ Debug.LogWarning(
+ $"AdmobAppId has already been added to {Path.Combine(Application.dataPath, "Plugins/Android/AndroidManifest.xml")}" +
+ "\nRemoving duplicate from internal Appodeal AndroidManifest.xml file.");
+ return;
+ }
+ else if (!string.IsNullOrEmpty(AppodealSettings.Instance.AdMobAndroidAppId))
+ {
+ Debug.LogWarning(
+ $"AdmobAppId has already been added to {Path.Combine(Application.dataPath, "Plugins/Android/AndroidManifest.xml")}" +
+ "\nThe value you set up via 'Appodeal/Appodeal Settings' tool will be ignored.");
+ return;
+ }
+ else
+ {
+ return;
+ }
+ }
+
+ if (!File.Exists("Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml"))
+ {
+ if (File.Exists(path) && CheckContainsAppId(path))
+ {
+ androidManifest.RemoveAdmobAppId();
+ }
+ Debug.LogWarning(
+ "Missing Admob config (Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml). Admob App Id won't be added.");
+ return;
+ }
+
+ if (!File.Exists(path))
+ {
+ Debug.LogError(
+ $"Missing internal AndroidManifest {path}." +
+ "\nAdmob App ID can't be added. The app may crash on startup!");
+ return;
+ }
+
+ if (string.IsNullOrEmpty(AppodealSettings.Instance.AdMobAndroidAppId))
+ {
+ if (CheckContainsAppId(path))
+ {
+ androidManifest.RemoveAdmobAppId();
+ }
+ Debug.LogError(
+ $"Admob App ID is not set via 'Appodeal/Appodeal Settings' tool." +
+ "\nThe app may crash on startup!");
+ }
+ else
+ {
+ if (!AppodealSettings.Instance.AdMobAndroidAppId.StartsWith("ca-app-pub-"))
+ {
+ Debug.LogError(
+ "Incorrect value. The app may crash on startup." +
+ "\nPlease enter a valid AdMob App ID via 'Appodeal/Appodeal Settings' tool.");
+ }
+
+ if (CheckContainsAppId(path))
+ {
+ androidManifest.ChangeAdmobAppId(AppodealSettings.Instance.AdMobAndroidAppId);
+ }
+ else
+ {
+ androidManifest.AddAdmobAppId(AppodealSettings.Instance.AdMobAndroidAppId);
+ }
+ }
+ }
+
+ private void AddOptionalPermissions(string manifestPath, AndroidManifest androidManifest)
+ {
+ if (AppodealSettings.Instance.AccessCoarseLocationPermission)
+ {
+ if (!CheckContainsPermission(manifestPath, AppodealUnityUtils.CoarseLocation))
+ {
+ androidManifest.SetPermission(AppodealUnityUtils.CoarseLocation);
+ }
+ }
+ else
+ {
+ if (CheckContainsPermission(manifestPath, AppodealUnityUtils.CoarseLocation))
+ {
+ androidManifest.RemovePermission(AppodealUnityUtils.CoarseLocation);
+ }
+ }
+
+ if (AppodealSettings.Instance.AccessFineLocationPermission)
+ {
+ if (!CheckContainsPermission(manifestPath, AppodealUnityUtils.FineLocation))
+ {
+ androidManifest.SetPermission(AppodealUnityUtils.FineLocation);
+ }
+ }
+ else
+ {
+ if (CheckContainsPermission(manifestPath, AppodealUnityUtils.FineLocation))
+ {
+ androidManifest.RemovePermission(AppodealUnityUtils.FineLocation);
+ }
+ }
+
+ if (AppodealSettings.Instance.WriteExternalStoragePermission)
+ {
+ if (!CheckContainsPermission(manifestPath, AppodealUnityUtils.ExternalStorageWrite))
+ {
+ androidManifest.SetPermission(AppodealUnityUtils.ExternalStorageWrite);
+ }
+ }
+ else
+ {
+ if (CheckContainsPermission(manifestPath, AppodealUnityUtils.ExternalStorageWrite))
+ {
+ androidManifest.RemovePermission(AppodealUnityUtils.ExternalStorageWrite);
+ }
+ }
+
+
+ if (AppodealSettings.Instance.AccessWifiStatePermission)
+ {
+ if (!CheckContainsPermission(manifestPath, AppodealUnityUtils.AccessWifiState))
+ {
+ androidManifest.SetPermission(AppodealUnityUtils.AccessWifiState);
+ }
+ }
+ else
+ {
+ if (CheckContainsPermission(manifestPath, AppodealUnityUtils.AccessWifiState))
+ {
+ androidManifest.RemovePermission(AppodealUnityUtils.AccessWifiState);
+ }
+ }
+
+ if (AppodealSettings.Instance.VibratePermission)
+ {
+ if (!CheckContainsPermission(manifestPath, AppodealUnityUtils.Vibrate))
+ {
+ androidManifest.SetPermission(AppodealUnityUtils.Vibrate);
+ }
+ }
+ else
+ {
+ if (CheckContainsPermission(manifestPath, AppodealUnityUtils.Vibrate))
+ {
+ androidManifest.RemovePermission(AppodealUnityUtils.Vibrate);
+ }
+ }
+ }
+
+ private bool CheckContainsAppId(string manifestPath)
+ {
+ return GetContentString(manifestPath).Contains("APPLICATION_ID");
+ }
+
+ private bool CheckContainsPermission(string manifestPath, string permission)
+ {
+ return GetContentString(manifestPath).Contains(permission);
+ }
+
+ private bool CheckContainsMultidex(string manifestPath, string multidex)
+ {
+ return GetContentString(manifestPath).Contains(multidex);
+ }
+
+ private bool CheckContainsMultidexDependency()
+ {
+ return GetContentString(getDefaultGradleTemplate())
+ .Contains(GRADLE_IMPLEMENTATION + GRADLE_MULTIDEX_DEPENDENCY);
+ }
+
+ private void RemoveMultidexDependency(string path)
+ {
+ var contentString = GetContentString(getDefaultGradleTemplate());
+ contentString = Regex.Replace(contentString, GRADLE_IMPLEMENTATION + GRADLE_MULTIDEX_DEPENDENCY,
+ string.Empty);
+
+ using (var writer = new StreamWriter(getDefaultGradleTemplate()))
+ {
+ writer.Write(contentString);
+ writer.Close();
+ }
+ }
+
+ public static string getDefaultGradleTemplate()
+ {
+ var defaultGradleTemplateFullName = AppodealUnityUtils.combinePaths(
+ EditorApplication.applicationContentsPath,
+ gradleDefaultTemplatePath,
+ gradleTemplateName);
+ if (File.Exists(defaultGradleTemplateFullName)) return defaultGradleTemplateFullName;
+ var unixAppContentsPath =
+ Path.GetDirectoryName(Path.GetDirectoryName(EditorApplication.applicationContentsPath));
+ defaultGradleTemplateFullName = AppodealUnityUtils.combinePaths(unixAppContentsPath,
+ gradleDefaultTemplatePath,
+ gradleTemplateName);
+
+ return defaultGradleTemplateFullName;
+ }
+
+ private static string GetContentString(string path)
+ {
+ string contentString;
+ using (var reader = new StreamReader(path))
+ {
+ contentString = reader.ReadToEnd();
+ reader.Close();
+ }
+
+ return contentString;
+ }
+
+ private static string GetCustomGradleScriptPath()
+ {
+ var androidDirectory = new DirectoryInfo(Path.Combine("Assets", androidPluginsPath));
+ var filePaths = androidDirectory.GetFiles("*.gradle");
+ return filePaths.Length > 0
+ ? Path.Combine(Path.Combine(Application.dataPath, androidPluginsPath), filePaths[0].Name)
+ : null;
+ }
+
+ public int callbackOrder => 0;
+ }
+
+ internal class AndroidXmlDocument : XmlDocument
+ {
+ private readonly string mPath;
+ private readonly XmlNamespaceManager nsMgr;
+ protected readonly string AndroidXmlNamespace = "http://schemas.android.com/apk/res/android";
+
+ protected AndroidXmlDocument(string path)
+ {
+ mPath = path;
+ using (var reader = new XmlTextReader(mPath))
+ {
+ reader.Read();
+ Load(reader);
+ }
+
+ nsMgr = new XmlNamespaceManager(NameTable);
+ nsMgr.AddNamespace("android", AndroidXmlNamespace);
+ }
+
+ public void Save()
+ {
+ SaveAs(mPath);
+ }
+
+ public void SaveAs(string path)
+ {
+ using (var writer = new XmlTextWriter(path, new UTF8Encoding(false)))
+ {
+ writer.Formatting = Formatting.Indented;
+ Save(writer);
+ }
+ }
+ }
+
+ internal class AndroidManifest : AndroidXmlDocument
+ {
+ public readonly XmlElement applicationElement;
+
+ public AndroidManifest(string path) : base(path)
+ {
+ applicationElement = SelectSingleNode("/manifest/application") as XmlElement;
+ }
+
+ private XmlAttribute CreateAndroidAttribute(string key, string value)
+ {
+ var attr = CreateAttribute("android", key, AndroidXmlNamespace);
+ attr.Value = value;
+ return attr;
+ }
+
+ internal void SetPermission(string permission)
+ {
+ var manifest = SelectSingleNode("/manifest");
+ if (manifest == null) return;
+ var child = CreateElement("uses-permission");
+ manifest.AppendChild(child);
+ var newAttribute = CreateAndroidAttribute("name", permission);
+ child.Attributes.Append(newAttribute);
+ }
+
+ internal void RemovePermission(string permission)
+ {
+ var manifest = SelectSingleNode("/manifest");
+ if (manifest == null) return;
+ foreach (XmlNode child in manifest.SelectNodes("uses-permission"))
+ {
+ for (int i = 0; i < child.Attributes.Count; i++)
+ {
+ if (child.Attributes[i].Value.Equals(permission))
+ {
+ manifest.RemoveChild(child);
+ }
+ }
+ }
+ }
+
+ internal void ChangeAdmobAppId(string id)
+ {
+ var manifest = SelectSingleNode("/manifest/application");
+ RemoveAdmobAppId();
+ var childMetaData = CreateElement("meta-data");
+ manifest.AppendChild(childMetaData);
+ childMetaData.Attributes.Append(CreateAndroidAttribute("name",
+ "com.google.android.gms.ads.APPLICATION_ID"));
+ childMetaData.Attributes.Append(CreateAndroidAttribute("value", id));
+ }
+
+ internal void RemoveAdmobAppId()
+ {
+ var manifest = SelectSingleNode("/manifest/application");
+ if (manifest == null) return;
+ foreach (XmlNode child in manifest.SelectNodes("meta-data"))
+ {
+ manifest.RemoveChild(child);
+ }
+ }
+
+ internal void AddAdmobAppId(string id)
+ {
+ var manifest = SelectSingleNode("/manifest/application");
+ if (manifest == null) return;
+ var child = CreateElement("meta-data");
+ manifest.AppendChild(child);
+ var androidAttribute = CreateAndroidAttribute("name", "com.google.android.gms.ads.APPLICATION_ID");
+ var valueAttribute = CreateAndroidAttribute("value", id);
+ child.Attributes.Append(androidAttribute);
+ child.Attributes.Append(valueAttribute);
+ }
+
+ internal void RemoveMultiDexApplication()
+ {
+ var manifest = SelectSingleNode("/manifest/application");
+ if (manifest == null) return;
+ for (int i = 0; i < manifest.Attributes.Count; i++)
+ {
+ if (manifest.Attributes[i].Value.Equals("androidx.multidex.MultiDexApplication"))
+ {
+ manifest.Attributes.Remove(manifest.Attributes[i]);
+ }
+ }
+ }
+
+ internal void AddMultiDexApplication()
+ {
+ var manifest = SelectSingleNode("/manifest/application");
+ if (manifest == null) return;
+ manifest.Attributes.Append(CreateAndroidAttribute("name", "androidx.multidex.MultiDexApplication"));
+ }
+ }
+
+ internal class EnableJavaVersion : FixProblemInstruction
+ {
+ private readonly string path;
+
+ public EnableJavaVersion(string gradleScriptPath) : base("Java version isn't included to mainTemplate.gradle",
+ true)
+ {
+ path = gradleScriptPath;
+ }
+
+ public override void fixProblem()
+ {
+ var settings = new ImportantGradleSettings(path);
+ var leadingWhitespaces = " ";
+ const string additionalWhiteSpaces = "";
+ string line;
+ var modifiedGradle = "";
+
+ var gradleScript = new StreamReader(path);
+
+ while ((line = gradleScript.ReadLine()) != null)
+ {
+ if (line.Contains(MultidexActivator.GRAFLE_DEFAULT_CONFIG))
+ {
+ if (!settings.compileOptions)
+ {
+ modifiedGradle += additionalWhiteSpaces + leadingWhitespaces +
+ MultidexActivator.COMPILE_OPTIONS + Environment.NewLine;
+ }
+
+ if (!settings.sourceCapability)
+ {
+ modifiedGradle += leadingWhitespaces + leadingWhitespaces +
+ MultidexActivator.GRADLE_SOURCE_CAPABILITY
+ + MultidexActivator.GRADLE_JAVA_VERSION_1_8 + Environment.NewLine;
+ }
+
+ if (!settings.targetCapability)
+ {
+ modifiedGradle += leadingWhitespaces + leadingWhitespaces +
+ MultidexActivator.GRADLE_TARGET_CAPATILITY
+ + MultidexActivator.GRADLE_JAVA_VERSION_1_8 + Environment.NewLine;
+ }
+
+ if (!settings.targetCapability)
+ {
+ modifiedGradle += leadingWhitespaces + "}" + Environment.NewLine;
+ }
+
+ if (!settings.targetCapability)
+ {
+ modifiedGradle += leadingWhitespaces + Environment.NewLine;
+ }
+ }
+
+ modifiedGradle += line + Environment.NewLine;
+ leadingWhitespaces = Regex.Match(line, "^\\s*").Value;
+ }
+
+ gradleScript.Close();
+ File.WriteAllText(path, modifiedGradle);
+ AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(path), ImportAssetOptions.ForceUpdate);
+ }
+ }
+
+ internal class CopyGradleScriptAndEnableMultidex : FixProblemInstruction
+ {
+ public CopyGradleScriptAndEnableMultidex() : base("Assets/Plugins/Android/mainTemplate.gradle not found.\n" +
+ "(required if you aren't going to export your project to Android Studio or Eclipse)",
+ true)
+ {
+ }
+
+ public override void fixProblem()
+ {
+ //EditorApplication.applicationContentsPath is different for macos and win. need to fix to reach manifest and gradle templates
+ var defaultGradleTemplateFullName = MultidexActivator.getDefaultGradleTemplate();
+
+ var destGradleScriptFullName = AppodealUnityUtils.combinePaths(Application.dataPath,
+ MultidexActivator.androidPluginsPath,
+ MultidexActivator.gradleTemplateName);
+ //Prefer to use build.gradle from the box. Just in case.
+ if (File.Exists(defaultGradleTemplateFullName))
+ {
+ File.Copy(defaultGradleTemplateFullName, destGradleScriptFullName);
+ }
+
+ AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(destGradleScriptFullName),
+ ImportAssetOptions.ForceUpdate);
+
+ //There are no multidex settings in default build.gradle but they can add that stuff.
+ var settings = new ImportantGradleSettings(destGradleScriptFullName);
+
+ if (!settings.isMultiDexAddedCompletely())
+ new EnableMultidexInGradle(destGradleScriptFullName).fixProblem();
+ }
+ }
+
+ internal class EnableMultidexInGradle : FixProblemInstruction
+ {
+ private readonly string path;
+
+ public EnableMultidexInGradle(string gradleScriptPath) : base(
+ "Multidex isn't enabled. mainTemplate.gradle should be edited " +
+ "according to the official documentation:\nhttps://developer.android.com/studio/build/multidex", true)
+ {
+ path = gradleScriptPath;
+ }
+
+ public override void fixProblem()
+ {
+ var settings = new ImportantGradleSettings(path);
+ var leadingWhitespaces = "";
+ string line;
+ var prevLine = "";
+ var modifiedGradle = "";
+ var gradleScript = new StreamReader(path);
+ string multidexDependency;
+
+
+ multidexDependency = MultidexActivator.GRADLE_IMPLEMENTATION +
+ MultidexActivator.GRADLE_MULTIDEX_DEPENDENCY;
+
+
+ while ((line = gradleScript.ReadLine()) != null)
+ {
+ if (!settings.multidexDependencyPresented && line.Contains(MultidexActivator.GRADLE_DEPENDENCIES))
+ {
+ modifiedGradle += leadingWhitespaces + multidexDependency + Environment.NewLine;
+ }
+
+ if (!settings.multidexEnabled && line.Contains(MultidexActivator.GRADLE_APP_ID))
+ {
+ modifiedGradle += leadingWhitespaces + MultidexActivator.GRADLE_MULTIDEX_ENABLE +
+ Environment.NewLine;
+ }
+
+ if (settings.deprecatedProguardPresented && line.Contains(MultidexActivator.GRADLE_USE_PROGUARD))
+ {
+ continue;
+ }
+
+ modifiedGradle += line + Environment.NewLine;
+ leadingWhitespaces = Regex.Match(line, "^\\s*").Value;
+ if (line.Contains("repositories") && prevLine.Contains("allprojects") &&
+ !settings.googleRepositoryPresented)
+ {
+ leadingWhitespaces += leadingWhitespaces;
+ modifiedGradle += leadingWhitespaces + MultidexActivator.GRADLE_GOOGLE_REPOSITORY_COMPAT +
+ Environment.NewLine;
+ }
+
+ prevLine = line;
+ }
+
+ gradleScript.Close();
+ File.WriteAllText(path, modifiedGradle);
+ AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(path), ImportAssetOptions.ForceUpdate);
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Editor/Utils/AppodealPreProcess.cs.meta b/Assets/Appodeal/Editor/Utils/AppodealPreProcess.cs.meta
new file mode 100644
index 0000000..d0db609
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealPreProcess.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 41e9cd6a694fc4d4491c0bbee6d63795
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Utils/AppodealUnityUtils.cs b/Assets/Appodeal/Editor/Utils/AppodealUnityUtils.cs
new file mode 100644
index 0000000..eaa260b
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealUnityUtils.cs
@@ -0,0 +1,278 @@
+using UnityEditor;
+using UnityEngine;
+using System.Reflection;
+using System;
+using System.Collections.Generic;
+using System.Xml;
+using System.Text.RegularExpressions;
+using System.IO;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+
+namespace AppodealAds.Unity.Editor.Utils
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ShiftExpressionRealShiftCountIsZero")]
+ [SuppressMessage("ReSharper", "ConditionIsAlwaysTrueOrFalse")]
+ public static class AppodealUnityUtils
+ {
+ private const string UNITY_ANDROID_VERSION_ENUM_PREFIX = "AndroidApiLevel";
+ private const BindingFlags PublicStaticFlags = BindingFlags.Public | BindingFlags.Static;
+ public const string KeySkAdNetworkItems = "SKAdNetworkItems";
+ public const string KeySkAdNetworkID = "SKAdNetworkIdentifier";
+ public const string GADApplicationIdentifier = "GADApplicationIdentifier";
+ public const string NSUserTrackingUsageDescriptionKey = "NSUserTrackingUsageDescription";
+ public const string NSUserTrackingUsageDescription = "This identifier will be used to deliver personalized ads to you";
+
+ public const string GADApplicationIdentifierDefaultKey = "ca-app-pub-3940256099942544~1458002511";
+
+ #region Optional Android Permissions
+
+ public const string CoarseLocation = "android.permission.ACCESS_COARSE_LOCATION";
+ public const string FineLocation = "android.permission.ACCESS_FINE_LOCATION";
+ public const string ExternalStorageWrite = "android.permission.WRITE_EXTERNAL_STORAGE";
+ public const string AccessWifiState = "android.permission.ACCESS_WIFI_STATE";
+ public const string Vibrate = "android.permission.VIBRATE";
+
+ #endregion
+
+ [Flags]
+ public enum AndroidArchitecture
+ {
+ invalid = 0,
+ armv7 = 1 << 0,
+ arm64 = 1 << 1,
+ x86 = 1 << 2,
+ }
+
+ public static string getApplicationId()
+ {
+ var appId = typeof(PlayerSettings).GetProperty("applicationIdentifier", PublicStaticFlags);
+ if (appId == null) appId = typeof(PlayerSettings).GetProperty("bundleIdentifier", PublicStaticFlags);
+ var bundleId = (string) appId?.GetValue(null, null);
+ return bundleId;
+ }
+
+ public static bool isGradleEnabled()
+ {
+ var isGradleEnabledVal = false;
+ var androidBuildSystem =
+ typeof(EditorUserBuildSettings).GetProperty("androidBuildSystem", PublicStaticFlags);
+ if (androidBuildSystem == null) return isGradleEnabledVal;
+ var gradle = Enum.Parse(androidBuildSystem.PropertyType, "Gradle");
+ isGradleEnabledVal = androidBuildSystem.GetValue(null, null).Equals(gradle);
+
+ return isGradleEnabledVal;
+ }
+
+ public static bool isGradleAvailable()
+ {
+ var androidBuildSystem =
+ typeof(EditorUserBuildSettings).GetProperty("androidBuildSystem", PublicStaticFlags);
+ return androidBuildSystem != null;
+ }
+
+ public static void enableGradleBuildSystem()
+ {
+ var androidBuildSystem =
+ typeof(EditorUserBuildSettings).GetProperty("androidBuildSystem", PublicStaticFlags);
+ if (androidBuildSystem == null) return;
+ var gradle = Enum.Parse(androidBuildSystem.PropertyType, "Gradle");
+ androidBuildSystem.SetValue(null, gradle, null);
+ }
+
+ public static string absolute2Relative(string absolutepath)
+ {
+ var relativepath = absolutepath;
+ if (absolutepath.StartsWith(Application.dataPath, StringComparison.Ordinal))
+ {
+ relativepath = "Assets" + absolutepath.Substring(Application.dataPath.Length);
+ }
+
+ return relativepath;
+ }
+
+ public static string relative2Absolute(string relativepath)
+ {
+ var absolutepath = relativepath;
+ if (!relativepath.StartsWith(Application.dataPath, StringComparison.Ordinal))
+ {
+ absolutepath = Application.dataPath + absolutepath.Substring("Assets".Length);
+ }
+
+ return absolutepath;
+ }
+
+ public static int getAndroidMinSDK()
+ {
+ var minSdkVersion = VersionFromAndroidSDKVersionsEnum(
+ PlayerSettings.Android.minSdkVersion.ToString());
+ return minSdkVersion;
+ }
+
+ public static int getAndroidTargetSDK()
+ {
+ var property = typeof(PlayerSettings.Android).GetProperty("targetSdkVersion");
+ var target = -1;
+ if (property != null)
+ target = VersionFromAndroidSDKVersionsEnum(Enum.GetName(property.PropertyType,
+ property.GetValue(null, null)));
+ if (target == -1)
+ target = GetLatestInstalledAndroidPlatformVersion();
+ return target;
+ }
+
+ private static int VersionFromAndroidSDKVersionsEnum(string enumName)
+ {
+ if (enumName.StartsWith(UNITY_ANDROID_VERSION_ENUM_PREFIX))
+ {
+ enumName = enumName.Substring(UNITY_ANDROID_VERSION_ENUM_PREFIX.Length);
+ }
+
+ if (enumName == "Auto")
+ {
+ return -1;
+ }
+
+ int versionVal;
+ int.TryParse(enumName, out versionVal);
+ return versionVal;
+ }
+
+ private static int GetLatestInstalledAndroidPlatformVersion()
+ {
+ var androidSDKPath = EditorPrefs.GetString("AndroidSdkRoot");
+ if (string.IsNullOrEmpty(androidSDKPath)) return -1;
+
+ var platforms = Directory.GetDirectories(Path.Combine(androidSDKPath, "platforms"), "*",
+ SearchOption.TopDirectoryOnly);
+ var buildToolsRegex = new Regex(@"android-(\d+)$", RegexOptions.Compiled);
+
+ return platforms
+ .Select(platform => buildToolsRegex.Match(platform))
+ .Select(match => int.Parse(match.Groups[1].Value))
+ .Concat(new[] {0}).Max();
+ }
+
+ public static AndroidArchitecture getAndroidArchitecture()
+ {
+ var targetArchitectures =
+ typeof(PlayerSettings.Android).GetProperty("targetArchitectures");
+ var arch = AndroidArchitecture.invalid;
+ if (targetArchitectures != null)
+ {
+ var armv7 = Enum.Parse(targetArchitectures.PropertyType, "ARMv7");
+ var armv7_int = (int) Convert.ChangeType(armv7, typeof(int));
+ var arm64 = Enum.Parse(targetArchitectures.PropertyType, "ARM64");
+ var arm64_int = (int) Convert.ChangeType(arm64, typeof(int));
+ var x64 = Enum.Parse(targetArchitectures.PropertyType, "X86");
+ var x64_int = (int) Convert.ChangeType(x64, typeof(int));
+ var currentArch = targetArchitectures.GetValue(null, null);
+ var currentArch_int = (int) Convert.ChangeType(currentArch, typeof(int));
+ if ((currentArch_int & armv7_int) == armv7_int) arch |= AndroidArchitecture.armv7;
+ if ((currentArch_int & arm64_int) == arm64_int) arch |= AndroidArchitecture.arm64;
+ if ((currentArch_int & x64_int) == x64_int) arch |= AndroidArchitecture.x86;
+ }
+ else
+ {
+ targetArchitectures = typeof(PlayerSettings.Android).GetProperty("targetDevice");
+ if (targetArchitectures == null) return arch;
+ var currentDevice = targetArchitectures.GetValue(null, null);
+ var armv7 = Enum.Parse(targetArchitectures.PropertyType, "ARMv7");
+ var x64 = Enum.Parse(targetArchitectures.PropertyType, "x86");
+ var fat = Enum.Parse(targetArchitectures.PropertyType, "FAT");
+ if (currentDevice.Equals(armv7)) arch = AndroidArchitecture.armv7;
+ else if (currentDevice.Equals(x64)) arch = AndroidArchitecture.x86;
+ else if (currentDevice.Equals(fat)) arch = AndroidArchitecture.armv7 | AndroidArchitecture.x86;
+ }
+
+ return arch;
+ }
+
+ public static string combinePaths(params string[] paths)
+ {
+ var result = paths[0];
+ for (var i = 1; i < paths.Length; i++)
+ {
+ result = Path.Combine(result, paths[i]);
+ }
+
+ return result;
+ }
+
+ public static int compareVersions(string v1, string v2)
+ {
+ var re = new Regex(@"\d+(\.\d+)+");
+ var match1 = re.Match(v1);
+ var match2 = re.Match(v2);
+ return new Version(match1.ToString()).CompareTo(new Version(match2.ToString()));
+ }
+
+ public static Texture2D makeColorTexture(int width, int height, Color color)
+ {
+ var colors = new Color [width * height];
+ for (var i = 0; i < colors.Length; ++i)
+ colors[i] = color;
+
+ var retval = new Texture2D(width, height);
+ retval.SetPixels(colors);
+ retval.Apply();
+ return retval;
+ }
+
+ public static XmlNode XmlFindChildNode(XmlNode parent, string name)
+ {
+ var curr = parent.FirstChild;
+ while (curr != null)
+ {
+ if (curr.Name.Equals(name))
+ {
+ return curr;
+ }
+
+ curr = curr.NextSibling;
+ }
+
+ return null;
+ }
+
+ public static XmlElement XmlCreateTag(XmlDocument doc, string tag)
+ {
+ var permissionElement = doc.CreateElement(tag);
+ return permissionElement;
+ }
+
+ public static string FixSlashesInPath(string path)
+ {
+ return path?.Replace('\\', '/');
+ }
+
+ public static string getXcodeVersion()
+ {
+ string profilerOutput = null;
+ try
+ {
+ var p = new Process
+ {
+ StartInfo = new ProcessStartInfo("system_profiler", "SPDeveloperToolsDataType | grep \"Xcode:\"")
+ {
+ CreateNoWindow = false, RedirectStandardOutput = true, UseShellExecute = false
+ }
+ };
+ p.Start();
+ p.WaitForExit();
+ profilerOutput = p.StandardOutput.ReadToEnd();
+ var re = new Regex(@"Xcode: (?\d+(\.\d+)+)");
+ var m = re.Match(profilerOutput);
+ if (m.Success) profilerOutput = m.Groups["version"].Value;
+ }
+ catch (Exception e)
+ {
+ UnityEngine.Debug.LogError(e.Message);
+ }
+
+ return profilerOutput;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Appodeal/Editor/Utils/AppodealUnityUtils.cs.meta b/Assets/Appodeal/Editor/Utils/AppodealUnityUtils.cs.meta
new file mode 100644
index 0000000..1630ab1
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/AppodealUnityUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: adaafbd594d814b8da8bf10892ca8857
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Utils/RemoveHelper.cs b/Assets/Appodeal/Editor/Utils/RemoveHelper.cs
new file mode 100644
index 0000000..45cec31
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/RemoveHelper.cs
@@ -0,0 +1,266 @@
+#pragma warning disable 0649
+using System.IO;
+using UnityEditor;
+using System.Text.RegularExpressions;
+using UnityEngine;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Xml;
+
+namespace AppodealAds.Unity.Editor.Utils
+{
+ [System.Serializable]
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ internal class ItemToRemove
+ {
+ public string name;
+ public bool is_confirmation_required;
+ public string path;
+ public string description;
+ public bool check_if_empty;
+ public bool perform_only_if_total_remove;
+ public string filter;
+ }
+
+ [System.Serializable]
+ internal class ItemsWrapper
+ {
+ public ItemToRemove[] items;
+ }
+
+
+ [InitializeOnLoad]
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "RedundantJumpStatement")]
+ [SuppressMessage("ReSharper", "UnusedMember.Local")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class RemoveHelper
+ {
+ private const string PLAY_SERVICES_RESOLVER_PLUGIN = "Appodeal-Unity-Play-Services-Resolver";
+ private const string ANDROID_SUPPORT_PLUGIN = "Appodeal-Unity-Android-Support";
+ private const string PLAY_SERVICES_PLUGIN = "Unity-Google-Play-Services";
+ private const string UNITY_PLUGIN = "Appodeal-Unity-";
+
+ public static string[] pathsToSearchNetworksFiles =
+ {
+ Path.Combine(Application.dataPath, "Appodeal/Adapters"),
+ Path.Combine(Application.dataPath, "Plugins/Android"),
+ Path.Combine(Application.dataPath, "Plugins/Android/appodeal/assets/dex")
+ };
+
+ static RemoveHelper()
+ {
+ AssetDatabase.importPackageStarted += importPackageStartedListener;
+ AssetDatabase.importPackageCompleted += RemoveOptionalNetworks;
+ }
+
+ private static void RemoveOptionalNetworks(string packagename)
+ {
+ string[] optionalNetworksConfigs =
+ {
+ "ChartboostDependencies.xml",
+ "InMobiDependencies.xml",
+ "InnerActiveDependencies.xml",
+ "MintegralDependencies.xml",
+ "OpenXDependencies.xml",
+ "PubnativeDependencies.xml",
+ "TapjoyDependencies.xml"
+ };
+
+
+ var info = new DirectoryInfo("Assets/Appodeal/Editor/NetworkConfigs/");
+
+ var fileInfo = info.GetFiles();
+
+ foreach (var file in fileInfo)
+ {
+ foreach (var optionalNetworksConfig in optionalNetworksConfigs)
+ {
+ if (file.Name.Equals(optionalNetworksConfig))
+ {
+ File.Delete("Assets/Appodeal/Editor/NetworkConfigs/" + file.Name);
+ }
+ }
+ }
+ }
+
+ private static void importPackageStartedListener(string packageName)
+ {
+ if (packageName.Contains(PLAY_SERVICES_RESOLVER_PLUGIN) || packageName.Contains(ANDROID_SUPPORT_PLUGIN) ||
+ packageName.Contains(PLAY_SERVICES_PLUGIN))
+ {
+ return;
+ }
+
+ if (!packageName.Contains(UNITY_PLUGIN)) return;
+
+ if (EditorUtility.DisplayDialog("Appodeal Warning",
+ "It seems like you are going to install new version of Appodeal plugin. " +
+ "To avoid conflicts it's recommended to delete previous version of the plugin.",
+ "Delete automatically",
+ "I'll do it manually"))
+ {
+ RemovePlugin(true);
+ }
+ }
+
+ public static void removeNetworks(IEnumerable networks)
+ {
+ foreach (var networkPath in networks)
+ {
+ FileUtil.DeleteFileOrDirectory(networkPath);
+ }
+ }
+
+ private static IEnumerable readXML()
+ {
+ var itemToRemoveList = new List();
+ var xDoc = new XmlDocument();
+ xDoc.Load(Path.Combine(Application.dataPath, "Appodeal/Editor/InternalResources/remove_list.xml"));
+ var xRoot = xDoc.DocumentElement;
+
+ if (xRoot == null) return itemToRemoveList.ToArray();
+ foreach (XmlNode xnode in xRoot)
+ {
+ var itemToRemove = new ItemToRemove();
+ foreach (XmlNode childNode in xnode.ChildNodes)
+ {
+ if (childNode.Name.Equals("name"))
+ {
+ itemToRemove.name = childNode.InnerText;
+ }
+
+ if (childNode.Name.Equals("is_confirmation_required"))
+ {
+ if (childNode.InnerText.Equals("true"))
+ {
+ itemToRemove.is_confirmation_required = true;
+ }
+ else if (childNode.InnerText.Equals("true"))
+ {
+ itemToRemove.is_confirmation_required = false;
+ }
+ }
+
+ if (childNode.Name.Equals("path"))
+ {
+ itemToRemove.path = childNode.InnerText;
+ }
+
+ if (childNode.Name.Equals("description"))
+ {
+ itemToRemove.description = childNode.InnerText;
+ }
+
+ if (childNode.Name.Equals("check_if_empty"))
+ {
+ if (childNode.InnerText.Equals("true"))
+ {
+ itemToRemove.check_if_empty = true;
+ }
+ else if (childNode.InnerText.Equals("false"))
+ {
+ itemToRemove.check_if_empty = false;
+ }
+ }
+
+ if (childNode.Name.Equals("perform_only_if_total_remove"))
+ {
+ if (childNode.InnerText.Equals("true"))
+ {
+ itemToRemove.perform_only_if_total_remove = true;
+ }
+ else if (childNode.InnerText.Equals("false"))
+ {
+ itemToRemove.perform_only_if_total_remove = false;
+ }
+ }
+
+ if (childNode.Name.Equals("filter"))
+ {
+ itemToRemove.filter = childNode.InnerText;
+ }
+ }
+
+ itemToRemoveList.Add(itemToRemove);
+ }
+
+ return itemToRemoveList.ToArray();
+ }
+
+ public static void RemovePlugin(bool isCleanBeforeUpdate = false)
+ {
+ if (EditorUtility.DisplayDialog("Remove Appodeal plugin",
+ "Are you sure you want to remove the Appodeal plugin from your project?",
+ "Yes",
+ "Cancel"))
+ {
+ var items = readXML();
+ foreach (var t in items)
+ {
+ if (t.perform_only_if_total_remove && isCleanBeforeUpdate) continue;
+ var confirmed = !t.is_confirmation_required || isCleanBeforeUpdate;
+ var fullItemPath = Path.Combine(Application.dataPath, t.path);
+
+ if (!confirmed)
+ {
+ if (EditorUtility.DisplayDialog("Removing " + t.name, t.description, "Yes", "No"))
+ {
+ confirmed = true;
+ }
+ }
+
+ if (!confirmed) continue;
+ var isChecked = !t.check_if_empty;
+ if (!isChecked) isChecked = isFolderEmpty(fullItemPath);
+ if (!isChecked) continue;
+
+ if (string.IsNullOrEmpty(t.filter))
+ {
+ FileUtil.DeleteFileOrDirectory(fullItemPath);
+ FileUtil.DeleteFileOrDirectory(fullItemPath + ".meta");
+ continue;
+ }
+
+ var isDirectoryExists = Directory.Exists(fullItemPath);
+ if (!isDirectoryExists) continue;
+ var filesList =
+ new List(Directory.GetFiles(fullItemPath, "*", SearchOption.TopDirectoryOnly));
+ filesList.AddRange(Directory.GetDirectories(fullItemPath, "*", SearchOption.TopDirectoryOnly));
+ foreach (var t1 in from t1 in filesList
+ let fileName = Path.GetFileName(t1)
+ where Regex.IsMatch(fileName, t.filter, RegexOptions.IgnoreCase)
+ select t1)
+ {
+ FileUtil.DeleteFileOrDirectory(t1);
+ FileUtil.DeleteFileOrDirectory(t1 + ".meta");
+ }
+
+ if (!isFolderEmpty(fullItemPath)) continue;
+ FileUtil.DeleteFileOrDirectory(fullItemPath);
+ FileUtil.DeleteFileOrDirectory(fullItemPath + ".meta");
+ }
+
+ AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
+
+ }
+ }
+
+ private static bool isFolderEmpty(string path)
+ {
+ if (!Directory.Exists(path)) return false;
+ var filesPaths = Directory.GetFiles(path, "*", SearchOption.TopDirectoryOnly);
+ var s = new List(filesPaths);
+ for (var i = 0; i < s.Count; i++)
+ {
+ if (s[i].Contains(".DS_Store"))
+ {
+ s.RemoveAt(i);
+ }
+ }
+
+ return s.Count == 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Appodeal/Editor/Utils/RemoveHelper.cs.meta b/Assets/Appodeal/Editor/Utils/RemoveHelper.cs.meta
new file mode 100644
index 0000000..0dd2d90
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/RemoveHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b92d206e99e1b4480be910801f089aba
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Editor/Utils/iOSPostprocessUtils.cs b/Assets/Appodeal/Editor/Utils/iOSPostprocessUtils.cs
new file mode 100644
index 0000000..7a32de4
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/iOSPostprocessUtils.cs
@@ -0,0 +1,418 @@
+#if UNITY_IPHONE
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.IO;
+using System.Text.RegularExpressions;
+using System.Xml.Linq;
+using AppodealAds.Unity.Editor.InternalResources;
+using AppodealAds.Unity.Editor.Utils;
+using UnityEditor;
+using UnityEditor.Callbacks;
+using UnityEditor.iOS.Xcode;
+using UnityEngine;
+
+#pragma warning disable 618
+
+namespace Appodeal.Unity.Editor.Utils
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "AssignNullToNotNullAttribute")]
+ [SuppressMessage("ReSharper", "UnusedVariable")]
+ [SuppressMessage("ReSharper", "UnusedMember.Local")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Local")]
+ [SuppressMessage("ReSharper", "PossibleNullReferenceException")]
+ [SuppressMessage("ReSharper", "Unity.IncorrectMethodSignature")]
+ public class iOSPostprocessUtils : MonoBehaviour
+ {
+ private const string suffix = ".framework";
+ private const string minVersionToDisableBitcode = "14.0";
+
+ [PostProcessBuildAttribute(41)]
+ public static void updateInfoPlist(BuildTarget buildTarget, string buildPath)
+ {
+ var path = Path.Combine(buildPath, "Info.plist");
+ AddGADApplicationIdentifier(path);
+ AddNSUserTrackingUsageDescription(path);
+ AddNSLocationWhenInUseUsageDescription(path);
+ AddNSCalendarsUsageDescription(path);
+ AddSkAdNetworkIds(buildTarget, buildPath);
+ }
+
+ private static void AddSkAdNetworkIds(BuildTarget buildTarget, string buildPath)
+ {
+ if (string.IsNullOrEmpty(PlayerSettings.iOS.targetOSVersionString)) return;
+
+ if (!AppodealSettings.Instance.IOSSkAdNetworkItems || (AppodealSettings.Instance.IOSSkAdNetworkItemsList?.Count ?? 0) <= 0) return;
+
+ if (buildTarget != BuildTarget.iOS) return;
+
+ var plistPath = buildPath + "/Info.plist";
+ var plist = new PlistDocument();
+ plist.ReadFromString(File.ReadAllText(plistPath));
+
+ PlistElementArray array = null;
+ if (plist.root.values.ContainsKey(AppodealUnityUtils.KeySkAdNetworkItems))
+ {
+ try
+ {
+ PlistElement element;
+ plist.root.values.TryGetValue(AppodealUnityUtils.KeySkAdNetworkItems, out element);
+ if (element != null) array = element.AsArray();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError(e.Message);
+ array = null;
+ }
+ }
+ else
+ {
+ array = plist.root.CreateArray(AppodealUnityUtils.KeySkAdNetworkItems);
+ }
+
+ if (array != null)
+ {
+ foreach (var id in AppodealSettings.Instance.IOSSkAdNetworkItemsList)
+ {
+ if (ContainsSkAdNetworkIdentifier(array, id)) continue;
+ var added = array.AddDict();
+ added.SetString(AppodealUnityUtils.KeySkAdNetworkID, id);
+ }
+ }
+
+ File.WriteAllText(plistPath, plist.WriteToString());
+ }
+
+ private static void AddKeyToPlist(string path, string key, string value)
+ {
+ var plist = new PlistDocument();
+ plist.ReadFromFile(path);
+ plist.root.SetString(key, value);
+ File.WriteAllText(path, plist.WriteToString());
+ }
+
+ private static bool CheckContainsKey(string path, string key)
+ {
+ string contentString;
+ using (var reader = new StreamReader(path))
+ {
+ contentString = reader.ReadToEnd();
+ reader.Close();
+ }
+
+ return contentString.Contains(key);
+ }
+
+ private static void AddGADApplicationIdentifier(string path)
+ {
+ if (!File.Exists("Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml"))
+ {
+ Debug.LogWarning(
+ "Missing Admob config (Assets/Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml).\nAdmob App Id won't be added.");
+ return;
+ }
+
+ if (!CheckiOSAttribute())
+ {
+ Debug.LogError(
+ "Google Admob Config is invalid. Ensure that Appodeal Unity plugin is imported correctly.");
+ return;
+ }
+
+ if (string.IsNullOrEmpty(AppodealSettings.Instance.AdMobIosAppId))
+ {
+ Debug.LogError(
+ "Admob App ID is not set via 'Appodeal/Appodeal Settings' tool.\nThe app may crash on startup!");
+ return;
+ }
+
+ if (!AppodealSettings.Instance.AdMobIosAppId.StartsWith("ca-app-pub-"))
+ {
+ Debug.LogError(
+ "Incorrect value. The app may crash on startup." +
+ "\nPlease enter a valid AdMob App ID via 'Appodeal/Appodeal Settings' tool." +
+ "\nAlternatively, change the value manually in Info.plist file.");
+ }
+
+ if (!CheckContainsKey(path, "GADApplicationIdentifier"))
+ {
+ AddKeyToPlist(path, "GADApplicationIdentifier", AppodealSettings.Instance.AdMobIosAppId);
+ }
+ }
+
+ private static void AddNSUserTrackingUsageDescription(string path)
+ {
+ if (!AppodealSettings.Instance.NSUserTrackingUsageDescription) return;
+ if (!CheckContainsKey(path, "NSUserTrackingUsageDescription"))
+ {
+ AddKeyToPlist(path, "NSUserTrackingUsageDescription",
+ "$(PRODUCT_NAME)" + " " +
+ "needs your advertising identifier to provide personalised advertising experience tailored to you.");
+ }
+ }
+
+ private static void AddNSLocationWhenInUseUsageDescription(string path)
+ {
+ if (!AppodealSettings.Instance.NSLocationWhenInUseUsageDescription) return;
+ if (!CheckContainsKey(path, "NSLocationWhenInUseUsageDescription"))
+ {
+ AddKeyToPlist(path, "NSLocationWhenInUseUsageDescription",
+ "$(PRODUCT_NAME)" + " " +
+ "needs your location for analytics and advertising purposes.");
+ }
+ }
+
+ private static void AddNSCalendarsUsageDescription(string path)
+ {
+ if (!AppodealSettings.Instance.NSCalendarsUsageDescription) return;
+ if (!CheckContainsKey(path, "NSCalendarsUsageDescription"))
+ {
+ AddKeyToPlist(path, "NSCalendarsUsageDescription",
+ "$(PRODUCT_NAME)" + " " +
+ "needs your calendar to provide personalised advertising experience tailored to you.");
+ }
+ }
+
+ private static void ReplaceInFile(
+ string filePath, string searchText, string replaceText)
+ {
+ string contentString;
+ using (var reader = new StreamReader(filePath))
+ {
+ contentString = reader.ReadToEnd();
+ reader.Close();
+ }
+
+ contentString = Regex.Replace(contentString, searchText, replaceText);
+
+ using (var writer = new StreamWriter(filePath))
+ {
+ writer.Write(contentString);
+ writer.Close();
+ }
+ }
+
+ private static readonly string[] frameworkList =
+ {
+ "AdSupport",
+ "AudioToolbox",
+ "AVFoundation",
+ "CFNetwork",
+ "CoreFoundation",
+ "CoreGraphics",
+ "CoreImage",
+ "CoreLocation",
+ "CoreMedia",
+ "CoreMotion",
+ "CoreTelephony",
+ "CoreText",
+ "EventKitUI",
+ "EventKit",
+ "GLKit",
+ "ImageIO",
+ "JavaScriptCore",
+ "MediaPlayer",
+ "MessageUI",
+ "MobileCoreServices",
+ "QuartzCore",
+ "SafariServices",
+ "Security",
+ "Social",
+ "StoreKit",
+ "SystemConfiguration",
+ "Twitter",
+ "UIKit",
+ "VideoToolbox",
+ "WatchConnectivity",
+ "WebKit"
+ };
+
+ private static readonly string[] weakFrameworkList =
+ {
+ "AppTrackingTransparency"
+ };
+
+ private static readonly string[] platformLibs =
+ {
+ "libc++.dylib",
+ "libz.dylib",
+ "libsqlite3.dylib",
+ "libxml2.2.dylib"
+ };
+
+ public static void PrepareProject(string buildPath)
+ {
+ Debug.Log("preparing your xcode project for appodeal");
+ var projectPath = PBXProject.GetPBXProjectPath(buildPath);
+ var project = new PBXProject();
+
+ project.ReadFromString(File.ReadAllText(projectPath));
+
+#if UNITY_2019_3_OR_NEWER
+ var target = project.GetUnityMainTargetGuid();
+ var unityFrameworkTarget = project.GetUnityFrameworkTargetGuid();
+#else
+ var target = project.TargetGuidByName("Unity-iPhone");
+#endif
+
+ AddProjectFrameworks(frameworkList, project, target, false);
+ AddProjectFrameworks(weakFrameworkList, project, target, true);
+ AddProjectLibs(platformLibs, project, target);
+ project.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC");
+
+ var xcodeVersion = AppodealUnityUtils.getXcodeVersion();
+ if (xcodeVersion == null ||
+ AppodealUnityUtils.compareVersions(xcodeVersion, minVersionToDisableBitcode) >= 0)
+ {
+ project.SetBuildProperty(project.ProjectGuid(), "ENABLE_BITCODE", "NO");
+ }
+
+ project.AddBuildProperty(target, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)/Libraries");
+ project.AddBuildProperty(target, "LIBRARY_SEARCH_PATHS", "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)");
+#if UNITY_2019_3_OR_NEWER
+ project.AddBuildProperty(target, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
+ project.AddBuildProperty(unityFrameworkTarget, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO");
+#else
+ project.AddBuildProperty(target, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
+#endif
+ project.AddBuildProperty(target, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks");
+ project.SetBuildProperty(target, "SWIFT_VERSION", "4.0");
+
+ File.WriteAllText(projectPath, project.WriteToString());
+ }
+
+ private static void AddProjectFrameworks(IEnumerable frameworks, PBXProject project, string target,
+ bool weak)
+ {
+ foreach (var framework in frameworks)
+ {
+ if (!project.ContainsFramework(target, framework))
+ {
+ project.AddFrameworkToProject(target, framework + suffix, weak);
+ }
+ }
+ }
+
+ private static void AddProjectLibs(IEnumerable libs, PBXProject project, string target)
+ {
+ foreach (var lib in libs)
+ {
+ var libGUID = project.AddFile("usr/lib/" + lib, "Libraries/" + lib, PBXSourceTree.Sdk);
+ project.AddFileToBuild(target, libGUID);
+ }
+ }
+
+ private static void CopyAndReplaceDirectory(string srcPath, string dstPath)
+ {
+ if (Directory.Exists(dstPath))
+ {
+ Directory.Delete(dstPath);
+ }
+
+ if (File.Exists(dstPath))
+ {
+ File.Delete(dstPath);
+ }
+
+ Directory.CreateDirectory(dstPath);
+
+ foreach (var file in Directory.GetFiles(srcPath))
+ {
+ if (!file.Contains(".meta"))
+ {
+ File.Copy(file, Path.Combine(dstPath, Path.GetFileName(file)));
+ }
+ }
+
+ foreach (var dir in Directory.GetDirectories(srcPath))
+ {
+ CopyAndReplaceDirectory(dir, Path.Combine(dstPath, Path.GetFileName(dir)));
+ }
+ }
+
+ private static bool CheckiOSAttribute()
+ {
+ var adMobConfigPath = Path.Combine(Application.dataPath,
+ "Appodeal/Editor/NetworkConfigs/GoogleAdMobDependencies.xml");
+
+ XDocument config;
+ try
+ {
+ config = XDocument.Load(adMobConfigPath);
+ }
+ catch (IOException exception)
+ {
+ Debug.LogError(exception.Message);
+ return false;
+ }
+
+ var elementConfigDependencies = config.Element("dependencies");
+ if (elementConfigDependencies == null)
+ {
+ return false;
+ }
+
+ if (!elementConfigDependencies.HasElements)
+ {
+ return false;
+ }
+
+ var elementiOSPods = elementConfigDependencies.Element("iosPods");
+ if (elementiOSPods == null)
+ {
+ return false;
+ }
+
+ if (!elementiOSPods.HasElements)
+ {
+ return false;
+ }
+
+ var elementiOSPod = elementiOSPods.Element("iosPod");
+ if (elementiOSPod == null)
+ {
+ return false;
+ }
+
+ if (!elementiOSPod.HasAttributes)
+ {
+ return false;
+ }
+
+ var attributeElementiOSPod = elementiOSPod.Attribute("name");
+
+ if (attributeElementiOSPod == null)
+ {
+ return false;
+ }
+
+ return attributeElementiOSPod.Value.Equals("APDGoogleAdMobAdapter");
+ }
+
+ private static bool ContainsSkAdNetworkIdentifier(PlistElementArray skAdNetworkItemsArray, string id)
+ {
+ foreach (var elem in skAdNetworkItemsArray.values)
+ {
+ try
+ {
+ PlistElement value;
+ var identifierExists = elem.AsDict().values
+ .TryGetValue(AppodealUnityUtils.KeySkAdNetworkID, out value);
+
+ if (identifierExists && value.AsString().Equals(id))
+ {
+ return true;
+ }
+ }
+ catch (Exception e)
+ {
+ Debug.LogError(e.Message);
+ }
+ }
+
+ return false;
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Editor/Utils/iOSPostprocessUtils.cs.meta b/Assets/Appodeal/Editor/Utils/iOSPostprocessUtils.cs.meta
new file mode 100644
index 0000000..02e593a
--- /dev/null
+++ b/Assets/Appodeal/Editor/Utils/iOSPostprocessUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b48aab45cd8224a81bd8ccbcfe2b78ad
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms.meta b/Assets/Appodeal/Platforms.meta
new file mode 100644
index 0000000..df9531d
--- /dev/null
+++ b/Assets/Appodeal/Platforms.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 866ff516769934d7fbffde738951a4bd
+folderAsset: yes
+timeCreated: 1530702704
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal.meta b/Assets/Appodeal/Platforms/Appodeal.meta
new file mode 100644
index 0000000..5368937
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dc123c73b55464cf3873f1c18c8c6d38
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android.meta b/Assets/Appodeal/Platforms/Appodeal/Android.meta
new file mode 100644
index 0000000..486d28c
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 575b061f58760417290d0ffc1a236aa0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AndroidAppodealClient.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidAppodealClient.cs
new file mode 100644
index 0000000..b41f3d3
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidAppodealClient.cs
@@ -0,0 +1,571 @@
+#if UNITY_ANDROID
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using UnityEngine;
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+using ConsentManager;
+using ConsentManager.Platforms.Android;
+
+namespace AppodealAds.Unity.Android
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class AndroidAppodealClient : IAppodealAdsClient
+ {
+ private AndroidJavaClass appodealClass;
+ private AndroidJavaClass appodealUnityClass;
+ private AndroidJavaObject appodealBannerInstance;
+ private AndroidJavaObject activity;
+
+ public const int NONE = 0;
+ public const int INTERSTITIAL = 3;
+ public const int BANNER = 4;
+ public const int BANNER_BOTTOM = 8;
+ public const int BANNER_TOP = 16;
+ public const int BANNER_VIEW = 64;
+ public const int BANNER_LEFT = 1024;
+ public const int BANNER_RIGHT = 2048;
+ public const int MREC = 256;
+ public const int REWARDED_VIDEO = 128;
+
+ private static int nativeAdTypesForType(int adTypes)
+ {
+ var nativeAdTypes = 0;
+
+ if ((adTypes & Appodeal.INTERSTITIAL) > 0)
+ {
+ nativeAdTypes |= Appodeal.INTERSTITIAL;
+ }
+
+ if ((adTypes & Appodeal.BANNER) > 0)
+ {
+ nativeAdTypes |= Appodeal.BANNER;
+ }
+
+ if ((adTypes & Appodeal.BANNER_VIEW) > 0)
+ {
+ nativeAdTypes |= Appodeal.BANNER_VIEW;
+ }
+
+ if ((adTypes & Appodeal.BANNER_TOP) > 0)
+ {
+ nativeAdTypes |= Appodeal.BANNER_TOP;
+ }
+
+ if ((adTypes & Appodeal.BANNER_LEFT) > 0)
+ {
+ nativeAdTypes |= Appodeal.BANNER_LEFT;
+ }
+
+ if ((adTypes & Appodeal.BANNER_RIGHT) > 0)
+ {
+ nativeAdTypes |= Appodeal.BANNER_RIGHT;
+ }
+
+ if ((adTypes & Appodeal.BANNER_BOTTOM) > 0)
+ {
+ nativeAdTypes |= Appodeal.BANNER_BOTTOM;
+ }
+
+ if ((adTypes & Appodeal.MREC) > 0)
+ {
+ nativeAdTypes |= 256;
+ }
+
+ if ((adTypes & Appodeal.REWARDED_VIDEO) > 0)
+ {
+ nativeAdTypes |= Appodeal.REWARDED_VIDEO;
+ }
+
+ return nativeAdTypes;
+ }
+
+ private AndroidJavaClass getAppodealClass()
+ {
+ return appodealClass ?? (appodealClass = new AndroidJavaClass("com.appodeal.ads.Appodeal"));
+ }
+
+ private AndroidJavaObject getAppodealBannerInstance()
+ {
+ return appodealBannerInstance ?? (appodealBannerInstance = new AndroidJavaClass("com.appodeal.ads.AppodealUnityBannerView").CallStatic("getInstance"));
+ }
+
+ private AndroidJavaObject getActivity()
+ {
+ return activity ?? (activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity"));
+ }
+
+ public void initialize(string appKey, int adTypes, IAppodealInitializationListener listener)
+ {
+ getAppodealClass().CallStatic("setFramework", "unity", Appodeal.getPluginVersion(), Appodeal.getUnityVersion());
+ getAppodealClass().CallStatic("initialize", getActivity(), appKey, nativeAdTypesForType(adTypes), new AppodealInitializationCallback(listener));
+ }
+
+ public bool isInitialized(int adType)
+ {
+ return getAppodealClass().CallStatic("isInitialized", nativeAdTypesForType(adType));
+ }
+
+ public bool show(int adTypes)
+ {
+ return getAppodealClass().CallStatic("show", getActivity(), nativeAdTypesForType(adTypes));
+ }
+
+ public bool show(int adTypes, string placement)
+ {
+ return getAppodealClass().CallStatic("show", getActivity(), nativeAdTypesForType(adTypes), placement);
+ }
+
+ public bool showBannerView(int YAxis, int XAxis, string Placement)
+ {
+ return getAppodealBannerInstance().Call("showBannerView", getActivity(), XAxis, YAxis, Placement);
+ }
+
+ public bool showMrecView(int YAxis, int XAxis, string Placement)
+ {
+ return getAppodealBannerInstance().Call("showMrecView", getActivity(), XAxis, YAxis, Placement);
+ }
+
+ public bool isLoaded(int adTypes)
+ {
+ return getAppodealClass().CallStatic("isLoaded", nativeAdTypesForType(adTypes));
+ }
+
+ public void cache(int adTypes)
+ {
+ getAppodealClass().CallStatic("cache", getActivity(), nativeAdTypesForType(adTypes));
+ }
+
+ public void hide(int adTypes)
+ {
+ getAppodealClass().CallStatic("hide", getActivity(), nativeAdTypesForType(adTypes));
+ }
+
+ public void hideBannerView()
+ {
+ getAppodealBannerInstance().Call("hideBannerView", getActivity());
+ }
+
+ public void hideMrecView()
+ {
+ getAppodealBannerInstance().Call("hideMrecView", getActivity());
+ }
+
+ public bool isPrecache(int adTypes)
+ {
+ return getAppodealClass().CallStatic("isPrecache", nativeAdTypesForType(adTypes));
+ }
+
+ public void setAutoCache(int adTypes, bool autoCache)
+ {
+ getAppodealClass().CallStatic("setAutoCache", nativeAdTypesForType(adTypes), autoCache);
+ }
+
+ public void setSmartBanners(bool value)
+ {
+ getAppodealClass().CallStatic("setSmartBanners", value);
+ }
+
+ public bool isSmartBannersEnabled()
+ {
+ return getAppodealClass().CallStatic("isSmartBannersEnabled");
+ }
+
+ public void setBannerAnimation(bool value)
+ {
+ getAppodealClass().CallStatic("setBannerAnimation", value);
+ }
+
+ public void setTabletBanners(bool value)
+ {
+ getAppodealClass().CallStatic("set728x90Banners", value);
+ }
+
+ public void setBannerRotation(int leftBannerRotation, int rightBannerRotation)
+ {
+ getAppodealClass().CallStatic("setBannerRotation", leftBannerRotation, rightBannerRotation);
+ }
+
+ public void setTesting(bool test)
+ {
+ getAppodealClass().CallStatic("setTesting", test);
+ }
+
+ public void setLogLevel(Appodeal.LogLevel logging)
+ {
+ var logLevel = new AndroidJavaClass("com.appodeal.ads.utils.Log$LogLevel");
+ switch (logging)
+ {
+ case Appodeal.LogLevel.None:
+ {
+ getAppodealClass().CallStatic("setLogLevel", logLevel.CallStatic("valueOf", "none"));
+ break;
+ }
+ case Appodeal.LogLevel.Debug:
+ {
+ getAppodealClass().CallStatic("setLogLevel", logLevel.CallStatic("valueOf", "debug"));
+ break;
+ }
+ case Appodeal.LogLevel.Verbose:
+ {
+ getAppodealClass().CallStatic("setLogLevel", logLevel.CallStatic("valueOf", "verbose"));
+ break;
+ }
+ default:
+ throw new ArgumentOutOfRangeException(nameof(logging), logging, null);
+ }
+ }
+
+ public void setChildDirectedTreatment(bool value)
+ {
+ getAppodealClass().CallStatic("setChildDirectedTreatment", Helper.getJavaObject(value));
+ }
+
+ public void updateConsent(Consent consent)
+ {
+ var androidConsent = (AndroidConsent) consent.getConsent();
+ getAppodealClass().CallStatic("updateConsent", androidConsent.getConsent());
+ }
+
+ public void updateGdprConsent(Appodeal.GdprUserConsent consent)
+ {
+ var gdprConsent = new AndroidJavaClass("com.appodeal.ads.regulator.GDPRUserConsent");
+ switch (consent)
+ {
+ case Appodeal.GdprUserConsent.Unknown:
+ {
+ getAppodealClass().CallStatic("updateGDPRUserConsent", gdprConsent.CallStatic("valueOf", "Unknown"));
+ break;
+ }
+ case Appodeal.GdprUserConsent.Personalized:
+ {
+ getAppodealClass().CallStatic("updateGDPRUserConsent", gdprConsent.CallStatic("valueOf", "Personalized"));
+ break;
+ }
+ case Appodeal.GdprUserConsent.NonPersonalized:
+ {
+ getAppodealClass().CallStatic("updateGDPRUserConsent", gdprConsent.CallStatic("valueOf", "NonPersonalized"));
+ break;
+ }
+ default:
+ throw new ArgumentOutOfRangeException(nameof(consent), consent, null);
+ }
+ }
+
+ public void updateCcpaConsent(Appodeal.CcpaUserConsent consent)
+ {
+ var ccpaConsent = new AndroidJavaClass("com.appodeal.ads.regulator.CCPAUserConsent");
+ switch (consent)
+ {
+ case Appodeal.CcpaUserConsent.Unknown:
+ {
+ getAppodealClass().CallStatic("updateCCPAUserConsent", ccpaConsent.CallStatic("valueOf", "Unknown"));
+ break;
+ }
+ case Appodeal.CcpaUserConsent.OptIn:
+ {
+ getAppodealClass().CallStatic("updateCCPAUserConsent", ccpaConsent.CallStatic("valueOf", "OptIn"));
+ break;
+ }
+ case Appodeal.CcpaUserConsent.OptOut:
+ {
+ getAppodealClass().CallStatic("updateCCPAUserConsent", ccpaConsent.CallStatic("valueOf", "OptOut"));
+ break;
+ }
+ default:
+ throw new ArgumentOutOfRangeException(nameof(consent), consent, null);
+ }
+ }
+
+ public void disableNetwork(string network)
+ {
+ getAppodealClass().CallStatic("disableNetwork", network);
+ }
+
+ public void disableNetwork(string network, int adTypes)
+ {
+ getAppodealClass().CallStatic("disableNetwork", network, nativeAdTypesForType(adTypes));
+ }
+
+ public void disableLocationPermissionCheck()
+ {
+ Debug.Log("Not supported on Android platform");
+ }
+
+ public void setTriggerOnLoadedOnPrecache(int adTypes, bool onLoadedTriggerBoth)
+ {
+ getAppodealClass().CallStatic("setTriggerOnLoadedOnPrecache", nativeAdTypesForType(adTypes),
+ onLoadedTriggerBoth);
+ }
+
+ public void muteVideosIfCallsMuted(bool value)
+ {
+ getAppodealClass().CallStatic("muteVideosIfCallsMuted", value);
+ }
+
+ public void showTestScreen()
+ {
+ getAppodealClass().CallStatic("startTestActivity", getActivity());
+ }
+
+ public string getVersion()
+ {
+ return getAppodealClass().CallStatic("getVersion");
+ }
+
+ public long getSegmentId()
+ {
+ return getAppodealClass().CallStatic("getSegmentId");
+ }
+
+ public bool canShow(int adTypes)
+ {
+ return getAppodealClass().CallStatic("canShow", nativeAdTypesForType(adTypes));
+ }
+
+ public bool canShow(int adTypes, string placement)
+ {
+ return getAppodealClass().CallStatic("canShow", nativeAdTypesForType(adTypes), placement);
+ }
+
+ public void setCustomFilter(string name, bool value)
+ {
+ getAppodealClass().CallStatic("setCustomFilter", name, value);
+ }
+
+ public void setCustomFilter(string name, int value)
+ {
+ getAppodealClass().CallStatic("setCustomFilter", name, value);
+ }
+
+ public void setCustomFilter(string name, double value)
+ {
+ getAppodealClass().CallStatic("setCustomFilter", name, value);
+ }
+
+ public void setCustomFilter(string name, string value)
+ {
+ getAppodealClass().CallStatic("setCustomFilter", name, value);
+ }
+
+ public void resetCustomFilter(string name)
+ {
+ getAppodealClass().CallStatic("setCustomFilter", name, null);
+ }
+
+ public void setExtraData(string key, bool value)
+ {
+ getAppodealClass().CallStatic("setExtraData", key, value);
+ }
+
+ public void setExtraData(string key, int value)
+ {
+ getAppodealClass().CallStatic("setExtraData", key, value);
+ }
+
+ public void setExtraData(string key, double value)
+ {
+ getAppodealClass().CallStatic("setExtraData", key, value);
+ }
+
+ public void setExtraData(string key, string value)
+ {
+ getAppodealClass().CallStatic("setExtraData", key, value);
+ }
+
+ public void resetExtraData(string key)
+ {
+ getAppodealClass().CallStatic("setExtraData", key, null);
+ }
+
+ public void trackInAppPurchase(double amount, string currency)
+ {
+ getAppodealClass().CallStatic("trackInAppPurchase", getActivity(), amount, currency);
+ }
+
+ public List getNetworks(int adTypes)
+ {
+ var networks = getAppodealClass().CallStatic("getNetworks", nativeAdTypesForType(adTypes));
+ int countOfNetworks = networks.Call("size");
+ var networksList = new List();
+ for(int i = 0; i < countOfNetworks; i++)
+ {
+ networksList.Add(networks.Call("get", i));
+ }
+ return networksList;
+ }
+
+ public string getRewardCurrency(string placement)
+ {
+ var reward = getAppodealClass().CallStatic("getReward", placement);
+ return reward.Call("getCurrency");
+ }
+
+ public double getRewardAmount(string placement)
+ {
+ var reward = getAppodealClass().CallStatic("getReward", placement);
+ return reward.Call("getAmount");
+ }
+
+ public string getRewardCurrency()
+ {
+ var reward = getAppodealClass().CallStatic("getReward");
+ return reward.Call("getCurrency");
+ }
+
+ public double getRewardAmount()
+ {
+ var reward = getAppodealClass().CallStatic("getReward");
+ return reward.Call("getAmount");
+ }
+
+ public double getPredictedEcpm(int adType)
+ {
+ return getAppodealClass().CallStatic("getPredictedEcpm", adType);
+ }
+
+ public double getPredictedEcpmForPlacement(int adType, string placement)
+ {
+ return String.IsNullOrEmpty(placement)
+ ? getAppodealClass().CallStatic("getPredictedEcpmByPlacement", nativeAdTypesForType(adType))
+ : getAppodealClass().CallStatic("getPredictedEcpmByPlacement", nativeAdTypesForType(adType), placement);
+ }
+
+ public void destroy(int adTypes)
+ {
+ getAppodealClass().CallStatic("destroy", nativeAdTypesForType(adTypes));
+ }
+
+ public void setUserId(string id)
+ {
+ getAppodealClass().CallStatic("setUserId", id);
+ }
+
+ public string getUserId()
+ {
+ return getAppodealClass().CallStatic("getUserId");
+ }
+
+ public void setInterstitialCallbacks(IInterstitialAdListener listener)
+ {
+ getAppodealClass().CallStatic("setInterstitialCallbacks", new AppodealInterstitialCallbacks(listener));
+ }
+
+ public void setRewardedVideoCallbacks(IRewardedVideoAdListener listener)
+ {
+ getAppodealClass().CallStatic("setRewardedVideoCallbacks", new AppodealRewardedVideoCallbacks(listener));
+ }
+
+ public void setBannerCallbacks(IBannerAdListener listener)
+ {
+ getAppodealClass().CallStatic("setBannerCallbacks", new AppodealBannerCallbacks(listener));
+ }
+
+ public void setMrecCallbacks(IMrecAdListener listener)
+ {
+ getAppodealClass().CallStatic("setMrecCallbacks", new AppodealMrecCallbacks(listener));
+ }
+
+ public void setAdRevenueCallback(IAdRevenueListener listener)
+ {
+ getAppodealClass().CallStatic("setAdRevenueCallbacks", new AppodealAdRevenueCallback(listener));
+ }
+
+ public void setSharedAdsInstanceAcrossActivities(bool value)
+ {
+ getAppodealClass().CallStatic("setSharedAdsInstanceAcrossActivities", value);
+ }
+
+ public void setUseSafeArea(bool value)
+ {
+ getAppodealClass().CallStatic("setUseSafeArea", value);
+ }
+
+ public bool isAutoCacheEnabled(int adType)
+ {
+ return getAppodealClass().CallStatic("isAutoCacheEnabled", nativeAdTypesForType(adType));
+ }
+
+ public void logEvent(string eventName, Dictionary eventParams)
+ {
+ if (eventParams == null)
+ {
+ getAppodealClass().CallStatic("logEvent", eventName, null);
+ }
+ else
+ {
+ var paramsFiltered = new Dictionary();
+
+ eventParams.Keys.Where(key => eventParams[key] is int || eventParams[key] is double || eventParams[key] is string)
+ .ToList().ForEach(key => paramsFiltered.Add(key, eventParams[key]));
+
+ var map = new AndroidJavaObject("java.util.HashMap");
+
+ foreach (var entry in paramsFiltered)
+ {
+ map.Call("put", entry.Key, Helper.getJavaObject(entry.Value));
+ }
+
+ getAppodealClass().CallStatic("logEvent", eventName, map);
+ }
+ }
+
+ public void validatePlayStoreInAppPurchase(IPlayStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener)
+ {
+ var androidPurchase = purchase.NativeInAppPurchase as AndroidPlayStoreInAppPurchase;
+ if (androidPurchase == null) return;
+ getAppodealClass().CallStatic("validateInAppPurchase", getActivity(), androidPurchase.getInAppPurchase(), new InAppPurchaseValidationCallbacks(listener));
+ }
+
+ public void validateAppStoreInAppPurchase(IAppStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener)
+ {
+ Debug.Log("Not supported on Android platform");
+ }
+ }
+
+ public static class Helper
+ {
+ public static object getJavaObject(object value)
+ {
+ if (value is string)
+ {
+ return value;
+ }
+
+ if (value is char)
+ {
+ return new AndroidJavaObject("java.lang.Character", value);
+ }
+
+ if (value is bool)
+ {
+ return new AndroidJavaObject("java.lang.Boolean", value);
+ }
+
+ if (value is int)
+ {
+ return new AndroidJavaObject("java.lang.Integer", value);
+ }
+
+ if (value is long)
+ {
+ return new AndroidJavaObject("java.lang.Long", value);
+ }
+
+ if (value is float)
+ {
+ return new AndroidJavaObject("java.lang.Float", value);
+ }
+
+ if (value is double)
+ {
+ return new AndroidJavaObject("java.lang.Float", value);
+ }
+
+ return null;
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AndroidAppodealClient.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidAppodealClient.cs.meta
new file mode 100644
index 0000000..c35bb36
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidAppodealClient.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d6ca36d61e1d048b3b5b26732e315c10
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchase.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchase.cs
new file mode 100644
index 0000000..792fa8c
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchase.cs
@@ -0,0 +1,94 @@
+#if UNITY_ANDROID
+using System;
+using UnityEngine;
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Android
+{
+ public class AndroidPlayStoreInAppPurchase : IPlayStoreInAppPurchase
+ {
+ public IPlayStoreInAppPurchase NativeInAppPurchase { get; }
+
+ private readonly AndroidJavaObject _inAppPurchase;
+
+ public AndroidPlayStoreInAppPurchase (AndroidJavaObject inAppPurchase)
+ {
+ _inAppPurchase = inAppPurchase;
+ NativeInAppPurchase = this;
+ }
+
+ public AndroidJavaObject getInAppPurchase()
+ {
+ return _inAppPurchase;
+ }
+
+ public Appodeal.PlayStorePurchaseType getPurchaseType()
+ {
+ string type = getInAppPurchase().Call("getType").Call("toString");
+
+ switch (type)
+ {
+ case "Subs": return Appodeal.PlayStorePurchaseType.Subs;
+ case "InApp": return Appodeal.PlayStorePurchaseType.InApp;
+ default: throw new ArgumentOutOfRangeException(nameof(Appodeal.PlayStorePurchaseType), type, null);
+ }
+ }
+
+ public string getPublicKey()
+ {
+ return getInAppPurchase().Call("getPublicKey");
+ }
+
+ public string getSignature()
+ {
+ return getInAppPurchase().Call("getSignature");
+ }
+
+ public string getPurchaseData()
+ {
+ return getInAppPurchase().Call("getPurchaseData");
+ }
+
+ public string getPrice()
+ {
+ return getInAppPurchase().Call("getPrice");
+ }
+
+ public string getCurrency()
+ {
+ return getInAppPurchase().Call("getCurrency");
+ }
+
+ public string getSku()
+ {
+ return getInAppPurchase().Call("getSku");
+ }
+
+ public string getOrderId()
+ {
+ return getInAppPurchase().Call("getOrderId");
+ }
+
+ public string getPurchaseToken()
+ {
+ return getInAppPurchase().Call("getPurchaseToken");
+ }
+
+ public long getPurchaseTimestamp()
+ {
+ return getInAppPurchase().Call("getPurchaseTimestamp");
+ }
+
+ public string getAdditionalParameters()
+ {
+ return getInAppPurchase().Call("getAdditionalParameters").Call("toString");
+ }
+
+ public string getDeveloperPayload()
+ {
+ return getInAppPurchase().Call("getDeveloperPayload");
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchase.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchase.cs.meta
new file mode 100644
index 0000000..79298d6
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3ffd81f3d3c994a9f8bbd619c5fcd717
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchaseBuilder.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchaseBuilder.cs
new file mode 100644
index 0000000..fa353fe
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchaseBuilder.cs
@@ -0,0 +1,102 @@
+#if UNITY_ANDROID
+using UnityEngine;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Android
+{
+ [SuppressMessage("ReSharper", "UnusedType.Global")]
+ public class AndroidPlayStoreInAppPurchaseBuilder : IPlayStoreInAppPurchaseBuilder
+ {
+ private readonly AndroidJavaObject _inAppPurchaseBuilder;
+ private AndroidJavaObject _inAppPurchase;
+
+ public AndroidPlayStoreInAppPurchaseBuilder(Appodeal.PlayStorePurchaseType purchaseType)
+ {
+ switch (purchaseType)
+ {
+ case Appodeal.PlayStorePurchaseType.Subs:
+ _inAppPurchaseBuilder = new AndroidJavaClass("com.appodeal.ads.inapp.InAppPurchase").CallStatic("newSubscriptionBuilder");
+ break;
+ case Appodeal.PlayStorePurchaseType.InApp:
+ _inAppPurchaseBuilder = new AndroidJavaClass("com.appodeal.ads.inapp.InAppPurchase").CallStatic("newInAppBuilder");
+ break;
+ }
+ }
+
+ private AndroidJavaObject getBuilder()
+ {
+ return _inAppPurchaseBuilder;
+ }
+
+ public IPlayStoreInAppPurchase build()
+ {
+ _inAppPurchase = getBuilder().Call("build");
+ return new AndroidPlayStoreInAppPurchase(_inAppPurchase);
+ }
+
+ public void withPublicKey(string publicKey)
+ {
+ getBuilder().Call("withPublicKey", publicKey);
+ }
+
+ public void withSignature(string signature)
+ {
+ getBuilder().Call("withSignature", signature);
+ }
+
+ public void withPurchaseData(string purchaseData)
+ {
+ getBuilder().Call("withPurchaseData", purchaseData);
+ }
+
+ public void withPrice(string price)
+ {
+ getBuilder().Call("withPrice", price);
+ }
+
+ public void withCurrency(string currency)
+ {
+ getBuilder().Call("withCurrency", currency);
+ }
+
+ public void withSku(string sku)
+ {
+ getBuilder().Call("withSku", sku);
+ }
+
+ public void withOrderId(string orderId)
+ {
+ getBuilder().Call("withOrderId", orderId);
+ }
+
+ public void withDeveloperPayload(string developerPayload)
+ {
+ getBuilder().Call("withDeveloperPayload", developerPayload);
+ }
+
+ public void withPurchaseToken(string purchaseToken)
+ {
+ getBuilder().Call("withPurchaseToken", purchaseToken);
+ }
+
+ public void withPurchaseTimestamp(long purchaseTimestamp)
+ {
+ getBuilder().Call("withPurchaseTimestamp", purchaseTimestamp);
+ }
+
+ public void withAdditionalParameters(Dictionary additionalParameters)
+ {
+ var map = new AndroidJavaObject("java.util.HashMap");
+ foreach (var entry in additionalParameters)
+ {
+ map.Call("put", entry.Key, Helper.getJavaObject(entry.Value));
+ }
+
+ getBuilder().Call("withAdditionalParams", map);
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchaseBuilder.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchaseBuilder.cs.meta
new file mode 100644
index 0000000..115f63b
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AndroidPlayStoreInAppPurchaseBuilder.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a011a21c98237432d8722c4171d0a6f9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealAdRevenueCallback.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealAdRevenueCallback.cs
new file mode 100644
index 0000000..98a3e6f
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealAdRevenueCallback.cs
@@ -0,0 +1,45 @@
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Common;
+
+// ReSharper Disable CheckNamespace
+namespace AppodealAds.Unity.Android
+{
+ ///
+ /// Android implementation of interface.
+ ///
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMember.Local")]
+ public class AppodealAdRevenueCallback
+#if UNITY_ANDROID
+ : UnityEngine.AndroidJavaProxy
+ {
+ private readonly IAdRevenueListener _listener;
+
+ internal AppodealAdRevenueCallback(IAdRevenueListener listener) : base("com.appodeal.ads.revenue.AdRevenueCallbacks")
+ {
+ _listener = listener;
+ }
+
+ private void onAdRevenueReceive(UnityEngine.AndroidJavaObject ad)
+ {
+ _listener?.onAdRevenueReceived(
+ new AppodealAdRevenue
+ {
+ AdType = ad.Call("getAdTypeString"),
+ NetworkName = ad.Call("getNetworkName"),
+ AdUnitName = ad.Call("getAdUnitName"),
+ DemandSource = ad.Call("getDemandSource"),
+ Placement = ad.Call("getPlacement"),
+ Revenue = ad.Call("getRevenue"),
+ Currency = ad.Call("getCurrency"),
+ RevenuePrecision = ad.Call("getRevenuePrecision")
+ }
+ );
+ }
+ }
+#else
+ {
+ public AppodealAdRevenueCallback(IAdRevenueListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealAdRevenueCallback.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealAdRevenueCallback.cs.meta
new file mode 100644
index 0000000..f1d8870
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealAdRevenueCallback.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: cbdbd1e174424d90ae2e843d0f88c512
+timeCreated: 1664789250
\ No newline at end of file
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealBannerCallbacks.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealBannerCallbacks.cs
new file mode 100644
index 0000000..edbf652
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealBannerCallbacks.cs
@@ -0,0 +1,54 @@
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Android
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Local")]
+ public class AppodealBannerCallbacks
+#if UNITY_ANDROID
+ : UnityEngine.AndroidJavaProxy
+ {
+ private readonly IBannerAdListener listener;
+
+ internal AppodealBannerCallbacks(IBannerAdListener listener) : base("com.appodeal.ads.BannerCallbacks")
+ {
+ this.listener = listener;
+ }
+
+ private void onBannerLoaded(int height, bool isPrecache)
+ {
+ listener?.onBannerLoaded(height,isPrecache);
+ }
+
+ private void onBannerFailedToLoad()
+ {
+ listener?.onBannerFailedToLoad();
+ }
+
+ private void onBannerShown()
+ {
+ listener?.onBannerShown();
+ }
+
+ private void onBannerShowFailed()
+ {
+ listener?.onBannerShowFailed();
+ }
+
+ private void onBannerClicked()
+ {
+ listener?.onBannerClicked();
+ }
+
+ private void onBannerExpired()
+ {
+ listener?.onBannerExpired();
+ }
+ }
+#else
+ {
+ public AppodealBannerCallbacks(IBannerAdListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealBannerCallbacks.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealBannerCallbacks.cs.meta
new file mode 100644
index 0000000..e652f19
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealBannerCallbacks.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c3dac5edc0ab14073827a6a56f148a4e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInitializationCallback.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInitializationCallback.cs
new file mode 100644
index 0000000..1f7dfe4
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInitializationCallback.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Android
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMember.Local")]
+ public class AppodealInitializationCallback
+#if UNITY_ANDROID
+ : AndroidJavaProxy
+ {
+ private readonly IAppodealInitializationListener _listener;
+
+ internal AppodealInitializationCallback(IAppodealInitializationListener listener) : base("com.appodeal.ads.initializing.ApdInitializationCallback")
+ {
+ _listener = listener;
+ }
+
+ private void onInitializationFinished(AndroidJavaObject errors)
+ {
+ if (errors == null)
+ {
+ _listener?.onInitializationFinished(null);
+ return;
+ }
+
+ var errorsList = new List();
+
+ int countOfErrors = errors.Call("size");
+ for (int i = 0; i < countOfErrors; i++)
+ {
+ errorsList.Add(errors.Call("get", i).Call("toString"));
+ }
+
+ _listener?.onInitializationFinished(errorsList);
+ }
+ }
+#else
+ {
+ public AppodealInitializationCallback(IAppodealInitializationListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInitializationCallback.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInitializationCallback.cs.meta
new file mode 100644
index 0000000..21444bd
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInitializationCallback.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 73c87508085684e6b88bee7e1683e41e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInterstitialCallbacks.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInterstitialCallbacks.cs
new file mode 100644
index 0000000..ef2f716
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInterstitialCallbacks.cs
@@ -0,0 +1,59 @@
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Android
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Local")]
+ public class AppodealInterstitialCallbacks
+#if UNITY_ANDROID
+ : UnityEngine.AndroidJavaProxy
+ {
+ private readonly IInterstitialAdListener listener;
+
+ internal AppodealInterstitialCallbacks(IInterstitialAdListener listener) : base("com.appodeal.ads.InterstitialCallbacks")
+ {
+ this.listener = listener;
+ }
+
+ private void onInterstitialLoaded(bool isPrecache)
+ {
+ listener?.onInterstitialLoaded(isPrecache);
+ }
+
+ private void onInterstitialFailedToLoad()
+ {
+ listener?.onInterstitialFailedToLoad();
+ }
+
+ private void onInterstitialShowFailed()
+ {
+ listener?.onInterstitialShowFailed();
+ }
+
+ private void onInterstitialShown()
+ {
+ listener?.onInterstitialShown();
+ }
+
+ private void onInterstitialClicked()
+ {
+ listener?.onInterstitialClicked();
+ }
+
+ private void onInterstitialClosed()
+ {
+ listener?.onInterstitialClosed();
+ }
+
+ private void onInterstitialExpired()
+ {
+ listener?.onInterstitialExpired();
+ }
+ }
+#else
+ {
+ public AppodealInterstitialCallbacks(IInterstitialAdListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInterstitialCallbacks.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInterstitialCallbacks.cs.meta
new file mode 100644
index 0000000..fd95f4a
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealInterstitialCallbacks.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b11ad77cd1df34df69b04944191bdb2e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealMrecCallbacks.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealMrecCallbacks.cs
new file mode 100644
index 0000000..fef5890
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealMrecCallbacks.cs
@@ -0,0 +1,54 @@
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Android
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Local")]
+ public class AppodealMrecCallbacks
+#if UNITY_ANDROID
+ : UnityEngine.AndroidJavaProxy
+ {
+ private readonly IMrecAdListener listener;
+
+ internal AppodealMrecCallbacks(IMrecAdListener listener) : base("com.appodeal.ads.MrecCallbacks")
+ {
+ this.listener = listener;
+ }
+
+ private void onMrecLoaded(bool isPrecache)
+ {
+ listener?.onMrecLoaded(isPrecache);
+ }
+
+ private void onMrecFailedToLoad()
+ {
+ listener?.onMrecFailedToLoad();
+ }
+
+ private void onMrecShown()
+ {
+ listener?.onMrecShown();
+ }
+
+ private void onMrecShowFailed()
+ {
+ listener?.onMrecShowFailed();
+ }
+
+ private void onMrecClicked()
+ {
+ listener?.onMrecClicked();
+ }
+
+ private void onMrecExpired()
+ {
+ listener?.onMrecExpired();
+ }
+ }
+#else
+ {
+ public AppodealMrecCallbacks(IMrecAdListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealMrecCallbacks.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealMrecCallbacks.cs.meta
new file mode 100644
index 0000000..6bd0069
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealMrecCallbacks.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1fff0bd53ec9d48c69e98088bda6901b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealRewardedVideoCallbacks.cs b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealRewardedVideoCallbacks.cs
new file mode 100644
index 0000000..aa97cb6
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealRewardedVideoCallbacks.cs
@@ -0,0 +1,69 @@
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Android
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Local")]
+ public class AppodealRewardedVideoCallbacks
+#if UNITY_ANDROID
+ : UnityEngine.AndroidJavaProxy
+ {
+ private readonly IRewardedVideoAdListener listener;
+
+ internal AppodealRewardedVideoCallbacks(IRewardedVideoAdListener listener) : base("com.appodeal.ads.RewardedVideoCallbacks")
+ {
+ this.listener = listener;
+ }
+
+ private void onRewardedVideoLoaded(bool precache)
+ {
+ listener?.onRewardedVideoLoaded(precache);
+ }
+
+ private void onRewardedVideoFailedToLoad()
+ {
+ listener?.onRewardedVideoFailedToLoad();
+ }
+
+ private void onRewardedVideoShowFailed()
+ {
+ listener?.onRewardedVideoShowFailed();
+ }
+
+ private void onRewardedVideoShown()
+ {
+ listener?.onRewardedVideoShown();
+ }
+
+ private void onRewardedVideoFinished(double amount, UnityEngine.AndroidJavaObject name)
+ {
+ listener?.onRewardedVideoFinished(amount, null);
+ }
+
+ private void onRewardedVideoFinished(double amount, string name)
+ {
+ listener?.onRewardedVideoFinished(amount, name);
+ }
+
+ private void onRewardedVideoClosed(bool finished)
+ {
+ listener?.onRewardedVideoClosed(finished);
+ }
+
+ private void onRewardedVideoExpired()
+ {
+ listener?.onRewardedVideoExpired();
+ }
+
+ private void onRewardedVideoClicked()
+ {
+ listener?.onRewardedVideoClicked();
+ }
+ }
+#else
+ {
+ public AppodealRewardedVideoCallbacks(IRewardedVideoAdListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/AppodealRewardedVideoCallbacks.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealRewardedVideoCallbacks.cs.meta
new file mode 100644
index 0000000..6474ee0
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/AppodealRewardedVideoCallbacks.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 99e059bc62d094c5fb68b733b36448fc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/InAppPurchaseValidationCallbacks.cs b/Assets/Appodeal/Platforms/Appodeal/Android/InAppPurchaseValidationCallbacks.cs
new file mode 100644
index 0000000..fe84646
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/InAppPurchaseValidationCallbacks.cs
@@ -0,0 +1,70 @@
+using UnityEngine;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Android
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMember.Local")]
+ public class InAppPurchaseValidationCallbacks
+#if UNITY_ANDROID
+ : AndroidJavaProxy
+ {
+ private readonly IInAppPurchaseValidationListener _listener;
+
+ internal InAppPurchaseValidationCallbacks(IInAppPurchaseValidationListener listener) : base("com.appodeal.ads.inapp.InAppPurchaseValidateCallback")
+ {
+ _listener = listener;
+ }
+
+ private void onInAppPurchaseValidateSuccess(AndroidJavaObject purchase, AndroidJavaObject errors)
+ {
+ _listener?.onInAppPurchaseValidationSucceeded(CreateResponse(purchase, errors));
+ }
+
+ private void onInAppPurchaseValidateFail(AndroidJavaObject purchase, AndroidJavaObject errors)
+ {
+ _listener?.onInAppPurchaseValidationFailed(CreateResponse(purchase, errors));
+ }
+
+ private string CreateResponse(AndroidJavaObject purchase, AndroidJavaObject errors)
+ {
+ var androidPurchase = new AndroidPlayStoreInAppPurchase(purchase);
+
+ string responsePurchase = "\"InAppPurchase\":{";
+ responsePurchase += $"\"PublicKey\":\"{androidPurchase.getPublicKey() ?? String.Empty}\",";
+ responsePurchase += $"\"Signature\":\"{androidPurchase.getSignature() ?? String.Empty}\",";
+ responsePurchase += $"\"PurchaseData\":\"{androidPurchase.getPurchaseData() ?? String.Empty}\",";
+ responsePurchase += $"\"Price\":\"{androidPurchase.getPrice() ?? String.Empty}\",";
+ responsePurchase += $"\"Currency\":\"{androidPurchase.getCurrency() ?? String.Empty}\",";
+ responsePurchase += $"\"Sku\":\"{androidPurchase.getSku() ?? String.Empty}\",";
+ responsePurchase += $"\"OrderId\":\"{androidPurchase.getOrderId() ?? String.Empty}\",";
+ responsePurchase += $"\"PurchaseToken\":\"{androidPurchase.getPurchaseToken() ?? String.Empty}\",";
+ responsePurchase += $"\"PurchaseTimestamp\":\"{androidPurchase.getPurchaseTimestamp()}\",";
+ responsePurchase += $"\"AdditionalParameters\":\"{androidPurchase.getAdditionalParameters() ?? String.Empty}\",";
+ responsePurchase += $"\"DeveloperPayload\":\"{androidPurchase.getDeveloperPayload() ?? String.Empty}\"}}";
+
+ string responseError = "\"Errors\":[";
+ if (errors != null)
+ {
+ var errorsList = new List();
+ int countOfErrors = errors.Call("size");
+ for (int i = 0; i < countOfErrors; i++)
+ {
+ errorsList.Add($"\"{errors.Call("get", i).Call("toString")}\"");
+ }
+ responseError += String.Join(",", errorsList);
+ }
+ responseError += ']';
+
+ return $"{{{responsePurchase},{responseError}}}";
+ }
+ }
+#else
+ {
+ public InAppPurchaseValidationCallbacks(IInAppPurchaseValidationListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Android/InAppPurchaseValidationCallbacks.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Android/InAppPurchaseValidationCallbacks.cs.meta
new file mode 100644
index 0000000..944d0b2
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Android/InAppPurchaseValidationCallbacks.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1fddcb9d8b4c04200b2f474f7e6f5518
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/AppodealAdsClientFactory.cs b/Assets/Appodeal/Platforms/Appodeal/AppodealAdsClientFactory.cs
new file mode 100644
index 0000000..da8e982
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/AppodealAdsClientFactory.cs
@@ -0,0 +1,41 @@
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity
+{
+ internal static class AppodealAdsClientFactory
+ {
+ internal static IAppodealAdsClient GetAppodealAdsClient()
+ {
+#if UNITY_ANDROID && !UNITY_EDITOR
+ return new Android.AndroidAppodealClient();
+#elif UNITY_IPHONE && !UNITY_EDITOR
+ return new iOS.AppodealAdsClient();
+#else
+ return new Dummy.DummyClient();
+#endif
+ }
+
+ internal static IPlayStoreInAppPurchaseBuilder GetPlayStoreInAppPurchaseBuilder(Appodeal.PlayStorePurchaseType purchaseType)
+ {
+#if UNITY_ANDROID && !UNITY_EDITOR
+ return new Android.AndroidPlayStoreInAppPurchaseBuilder(purchaseType);
+#elif UNITY_IPHONE && !UNITY_EDITOR
+ return null;
+#else
+ return new Dummy.DummyPlayStoreInAppPurchaseBuilder();
+#endif
+ }
+
+ internal static IAppStoreInAppPurchaseBuilder GetAppStoreInAppPurchaseBuilder(Appodeal.AppStorePurchaseType purchaseType)
+ {
+#if UNITY_ANDROID && !UNITY_EDITOR
+ return null;
+#elif UNITY_IPHONE && !UNITY_EDITOR
+ return new iOS.IosAppStoreInAppPurchaseBuilder(purchaseType);
+#else
+ return new Dummy.DummyAppStoreInAppPurchaseBuilder();
+#endif
+ }
+ }
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/AppodealAdsClientFactory.cs.meta b/Assets/Appodeal/Platforms/Appodeal/AppodealAdsClientFactory.cs.meta
new file mode 100644
index 0000000..4ec4126
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/AppodealAdsClientFactory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 36f2c20f3c41441db929e46b10825f65
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Dummy.meta b/Assets/Appodeal/Platforms/Appodeal/Dummy.meta
new file mode 100644
index 0000000..743749d
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da41076973dc84b6a9744d37cf9a7f51
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyAppStoreInAppPurchaseBuilder.cs b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyAppStoreInAppPurchaseBuilder.cs
new file mode 100644
index 0000000..41023a9
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyAppStoreInAppPurchaseBuilder.cs
@@ -0,0 +1,42 @@
+using UnityEngine;
+using System.Collections.Generic;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Dummy
+{
+ public class DummyAppStoreInAppPurchaseBuilder : IAppStoreInAppPurchaseBuilder
+ {
+ private const string DummyMessage = " To test in-app purchases, install your application on the Android/iOS device.";
+
+ public void withPrice(string price)
+ {
+ Debug.Log("Call to withPrice on not supported platform." + DummyMessage);
+ }
+
+ public void withCurrency(string currency)
+ {
+ Debug.Log("Call to withCurrency on not supported platform." + DummyMessage);
+ }
+
+ public void withAdditionalParameters(Dictionary additionalParameters)
+ {
+ Debug.Log("Call to withAdditionalParameters on not supported platform." + DummyMessage);
+ }
+
+ public void withProductId(string productId)
+ {
+ Debug.Log("Call to withProductId on not supported platform." + DummyMessage);
+ }
+
+ public void withTransactionId(string transactionId)
+ {
+ Debug.Log("Call to withTransactionId on not supported platform." + DummyMessage);
+ }
+
+ public IAppStoreInAppPurchase build()
+ {
+ Debug.Log("Call to build on not supported platform." + DummyMessage);
+ return null;
+ }
+ }
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyAppStoreInAppPurchaseBuilder.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyAppStoreInAppPurchaseBuilder.cs.meta
new file mode 100644
index 0000000..bef53fe
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyAppStoreInAppPurchaseBuilder.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d6829cb9f68b643319f39eff2a1d5bf0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyClient.cs b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyClient.cs
new file mode 100644
index 0000000..2e626fd
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyClient.cs
@@ -0,0 +1,364 @@
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using UnityEngine;
+using ConsentManager;
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Dummy
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ public class DummyClient : IAppodealAdsClient
+ {
+ public void initialize(string appKey, int adTypes, IAppodealInitializationListener listener)
+ {
+ Debug.Log("Call to Appodeal.initialize on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public bool isInitialized(int adType)
+ {
+ Debug.Log("Call Appodeal.isInitialized on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public bool show(int adTypes)
+ {
+ Debug.Log("Call to Appodeal.show on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public bool show(int adTypes, string placement)
+ {
+ Debug.Log("Call to Appodeal.show on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public bool showBannerView(int YAxis, int XAxis, string Placement)
+ {
+ Debug.Log("Call to Appodeal.showBannerView on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public bool showMrecView(int YAxis, int XGravity, string Placement)
+ {
+ Debug.Log("Call to Appodeal.showMrecView on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public bool isLoaded(int adTypes)
+ {
+ Debug.Log("Call to Appodeal.showBannerView on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public void cache(int adTypes)
+ {
+ Debug.Log("Call to Appodeal.cache on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void hide(int adTypes)
+ {
+ Debug.Log("Call to Appodeal.hide on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void hideBannerView()
+ {
+ Debug.Log("Call to Appodeal.hideBannerView on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void hideMrecView()
+ {
+ Debug.Log("Call to Appodeal.hideMrecView on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public bool isPrecache(int adTypes)
+ {
+ Debug.Log("Call to Appodeal.isPrecache on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public void setAutoCache(int adTypes, bool autoCache)
+ {
+ Debug.Log("Call to Appodeal.setAutoCache on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setSmartBanners(bool value)
+ {
+ Debug.Log("Call to Appodeal.setSmartBanners on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public bool isSmartBannersEnabled()
+ {
+ Debug.Log("Call to Appodeal.isSmartBannersEnabled on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public void setBannerAnimation(bool value)
+ {
+ Debug.Log("Call to Appodeal.setBannerAnimation on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setTabletBanners(bool value)
+ {
+ Debug.Log("Call to Appodeal.setTabletBanners on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setBannerRotation(int leftBannerRotation, int rightBannerRotation)
+ {
+ Debug.Log("Call to Appodeal.setBannerRotation on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setTesting(bool test)
+ {
+ Debug.Log("Call to Appodeal.setTesting on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setLogLevel(Appodeal.LogLevel logging)
+ {
+ Debug.Log("Call to Appodeal.setLogLevel on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setChildDirectedTreatment(bool value)
+ {
+ Debug.Log("Call to Appodeal.setChildDirectedTreatment on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void updateConsent(Consent consent)
+ {
+ Debug.Log("Call to Appodeal.updateConsent on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void updateGdprConsent(Appodeal.GdprUserConsent consent)
+ {
+ Debug.Log("Call to Appodeal.updateGdprConsent on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void updateCcpaConsent(Appodeal.CcpaUserConsent consent)
+ {
+ Debug.Log("Call to Appodeal.updateCcpaConsent on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void disableNetwork(string network)
+ {
+ Debug.Log("Call to Appodeal.disableNetwork on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void disableNetwork(string network, int adTypes)
+ {
+ Debug.Log("Call to Appodeal.disableNetwork on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void disableLocationPermissionCheck()
+ {
+ Debug.Log("Call to Appodeal.disableLocationPermissionCheck on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setTriggerOnLoadedOnPrecache(int adTypes, bool onLoadedTriggerBoth)
+ {
+ Debug.Log("Call to Appodeal.setTriggerOnLoadedOnPrecache on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void muteVideosIfCallsMuted(bool value)
+ {
+ Debug.Log("Call to Appodeal.muteVideosIfCallsMuted on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void showTestScreen()
+ {
+ Debug.Log("Call to Appodeal.showTestScreen on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public string getVersion()
+ {
+ return Appodeal.APPODEAL_PLUGIN_VERSION;
+ }
+
+ public long getSegmentId()
+ {
+ Debug.Log("Call to Appodeal.getSegmentId on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return -1;
+ }
+
+ public bool canShow(int adTypes)
+ {
+ Debug.Log("Call to Appodeal.canShow on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public bool canShow(int adTypes, string placement)
+ {
+ Debug.Log("Call to Appodeal.canShow on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public void setCustomFilter(string name, bool value)
+ {
+ Debug.Log("Call to Appodeal.setCustomFilter on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setCustomFilter(string name, int value)
+ {
+ Debug.Log("Call to Appodeal.setCustomFilter on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setCustomFilter(string name, double value)
+ {
+ Debug.Log("Call to Appodeal.setCustomFilter on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setCustomFilter(string name, string value)
+ {
+ Debug.Log("Call to Appodeal.setCustomFilter on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void resetCustomFilter(string name)
+ {
+ Debug.Log("Call to Appodeal.resetCustomFilter on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void trackInAppPurchase(double amount, string currency)
+ {
+ Debug.Log("Call to Appodeal.trackInAppPurchase on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public List getNetworks(int adTypes)
+ {
+ Debug.Log("Call to Appodeal.getNetworks on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return null;;
+ }
+
+ public string getRewardCurrency(string placement)
+ {
+ Debug.Log("Call to Appodeal.getRewardCurrency on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return "USD";
+ }
+
+ public double getRewardAmount(string placement)
+ {
+ Debug.Log("Call to Appodeal.getRewardAmount on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return 0;
+ }
+
+ public string getRewardCurrency()
+ {
+ Debug.Log("Call to Appodeal.getRewardCurrency on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return "USD";
+ }
+
+ public double getRewardAmount()
+ {
+ Debug.Log("Call to Appodeal.getRewardAmount on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return 0;
+ }
+
+ public double getPredictedEcpm(int adType)
+ {
+ Debug.Log("Call to Appodeal.getPredictedEcpm on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return 0;
+ }
+
+ public double getPredictedEcpmForPlacement(int adType, string placement)
+ {
+ Debug.Log("Call to Appodeal.getPredictedEcpmForPlacement on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return 0;
+ }
+
+ public void setExtraData(string key, bool value)
+ {
+ Debug.Log("Call to Appodeal.setExtraData(string key, bool value) on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setExtraData(string key, int value)
+ {
+ Debug.Log("Call to Appodeal.setExtraData(string key, int value) on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setExtraData(string key, double value)
+ {
+ Debug.Log("Call to Appodeal.setExtraDatastring key, double value) on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setExtraData(string key, string value)
+ {
+ Debug.Log("Call to Appodeal.setExtraData(string key, string value) on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void resetExtraData(string key)
+ {
+ Debug.Log("Call to Appodeal.resetExtraData(string key) on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setInterstitialCallbacks(IInterstitialAdListener listener)
+ {
+ Debug.Log("Call to Appodeal.setInterstitialCallbacks on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setRewardedVideoCallbacks(IRewardedVideoAdListener listener)
+ {
+ Debug.Log("Call to Appodeal.setRewardedVideoCallbacks on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setBannerCallbacks(IBannerAdListener listener)
+ {
+ Debug.Log("Call to Appodeal.setBannerCallbacks on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setMrecCallbacks(IMrecAdListener listener)
+ {
+ Debug.Log("Call to Appodeal.setMrecCallbacks on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setAdRevenueCallback(IAdRevenueListener listener)
+ {
+ Debug.Log("Call to Appodeal.setAdRevenueCallback on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void destroy(int adTypes)
+ {
+ Debug.Log("Call to Appodeal.destroy on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setSharedAdsInstanceAcrossActivities(bool value)
+ {
+ Debug.Log("Call to Appodeal.setSharedAdsInstanceAcrossActivities on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void setUseSafeArea(bool value)
+ {
+ Debug.Log("Call to Appodeal.setUseSafeArea on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public bool isAutoCacheEnabled(int adType)
+ {
+ Debug.Log("Call to Appodeal.isAutoCacheEnabled on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return false;
+ }
+
+ public void setUserId(string id)
+ {
+ Debug.Log("Call to Appodeal.setUserId on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public string getUserId()
+ {
+ Debug.Log("Call to Appodeal.getUserId on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ return string.Empty;
+ }
+
+ public void logEvent(string eventName, Dictionary eventParams)
+ {
+ Debug.Log("Call to Appodeal.logEvent on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void validatePlayStoreInAppPurchase(IPlayStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener)
+ {
+ Debug.Log("Call to Appodeal.validatePlayStoreInAppPurchase on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+
+ public void validateAppStoreInAppPurchase(IAppStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener)
+ {
+ Debug.Log("Call to Appodeal.validateAppStoreInAppPurchase on not supported platform. To test advertising, install your application on the Android/iOS device.");
+ }
+ }
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyClient.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyClient.cs.meta
new file mode 100644
index 0000000..bb03358
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyClient.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 70999c33cd0d74b86bed0055eca04081
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyPlayStoreInAppPurchaseBuilder.cs b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyPlayStoreInAppPurchaseBuilder.cs
new file mode 100644
index 0000000..737db95
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyPlayStoreInAppPurchaseBuilder.cs
@@ -0,0 +1,72 @@
+using UnityEngine;
+using System.Collections.Generic;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.Dummy
+{
+ public class DummyPlayStoreInAppPurchaseBuilder : IPlayStoreInAppPurchaseBuilder
+ {
+ private const string DummyMessage = " To test in-app purchases, install your application on the Android/iOS device.";
+
+ public void withPrice(string price)
+ {
+ Debug.Log("Call to withPrice on not supported platform." + DummyMessage);
+ }
+
+ public void withCurrency(string currency)
+ {
+ Debug.Log("Call to withCurrency on not supported platform." + DummyMessage);
+ }
+
+ public void withAdditionalParameters(Dictionary additionalParameters)
+ {
+ Debug.Log("Call to withAdditionalParameters on not supported platform." + DummyMessage);
+ }
+
+ public void withPublicKey(string publicKey)
+ {
+ Debug.Log("Call to withPublicKey on not supported platform." + DummyMessage);
+ }
+
+ public void withSignature(string signature)
+ {
+ Debug.Log("Call to withSignature on not supported platform." + DummyMessage);
+ }
+
+ public void withPurchaseData(string purchaseData)
+ {
+ Debug.Log("Call to withPurchaseData on not supported platform." + DummyMessage);
+ }
+
+ public void withSku(string sku)
+ {
+ Debug.Log("Call to withSku on not supported platform." + DummyMessage);
+ }
+
+ public void withOrderId(string orderId)
+ {
+ Debug.Log("Call to withOrderId on not supported platform." + DummyMessage);
+ }
+
+ public void withPurchaseToken(string purchaseToken)
+ {
+ Debug.Log("Call to withPurchaseToken on not supported platform." + DummyMessage);
+ }
+
+ public void withPurchaseTimestamp(long purchaseTimestamp)
+ {
+ Debug.Log("Call to withPurchaseTimestamp on not supported platform." + DummyMessage);
+ }
+
+ public void withDeveloperPayload(string developerPayload)
+ {
+ Debug.Log("Call to withDeveloperPayload on not supported platform." + DummyMessage);
+ }
+
+ public IPlayStoreInAppPurchase build()
+ {
+ Debug.Log("Call to build on not supported platform." + DummyMessage);
+ return null;
+ }
+ }
+}
diff --git a/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyPlayStoreInAppPurchaseBuilder.cs.meta b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyPlayStoreInAppPurchaseBuilder.cs.meta
new file mode 100644
index 0000000..d4649fb
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/Dummy/DummyPlayStoreInAppPurchaseBuilder.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5f73d4744ec114d4e94a7ac7a8fad386
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS.meta b/Assets/Appodeal/Platforms/Appodeal/iOS.meta
new file mode 100644
index 0000000..ecfa5bd
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 88fa8b9be0e2d42c1b2ec9c99a60637d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealAdsClient.cs b/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealAdsClient.cs
new file mode 100644
index 0000000..7b26560
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealAdsClient.cs
@@ -0,0 +1,835 @@
+#if UNITY_IPHONE
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using AOT;
+using UnityEngine;
+using ConsentManager;
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.iOS
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ShiftExpressionRealShiftCountIsZero")]
+ public class AppodealAdsClient : IAppodealAdsClient
+ {
+ private const int AppodealAdTypeInterstitial = 1 << 0;
+ private const int AppodealAdTypeBanner = 1 << 2;
+ private const int AppodealAdTypeRewardedVideo = 1 << 4;
+ private const int AppodealAdTypeMrec = 1 << 5;
+
+ private const int AppodealShowStyleInterstitial = 1;
+ private const int AppodealShowStyleBannerTop = 4;
+ private const int AppodealShowStyleBannerBottom = 8;
+ private const int AppodealShowStyleRewardedVideo = 16;
+ private const int AppodealShowStyleBannerLeft = 1 << 6;
+ private const int AppodealShowStyleBannerRight = 1 << 7;
+
+ private static IInAppPurchaseValidationListener inAppPurchaseValidationListener;
+ private static IAppodealInitializationListener initializationListener;
+
+ private static IInterstitialAdListener interstitialListener;
+ private static IRewardedVideoAdListener rewardedVideoListener;
+ private static IBannerAdListener bannerListener;
+ private static IMrecAdListener mrecListener;
+ private static IAdRevenueListener revenueListener;
+
+
+ #region AppodealInitialization delegate
+
+ [MonoPInvokeCallback(typeof(AppodealInitializationCallback))]
+ private static void appodealSdkDidInitialize()
+ {
+ initializationListener?.onInitializationFinished(null);
+ }
+
+ private void setAppodealInitializationCallback(IAppodealInitializationListener listener)
+ {
+ initializationListener = listener;
+
+ AppodealObjCBridge.AppodealSetInitializationDelegate(appodealSdkDidInitialize);
+ }
+
+ #endregion
+
+ #region Interstitial Delegate
+
+ [MonoPInvokeCallback(typeof(AppodealInterstitialDidLoadCallback))]
+ private static void interstitialDidLoad(bool isPrecache)
+ {
+ interstitialListener?.onInterstitialLoaded(isPrecache);
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealInterstitialCallbacks))]
+ private static void interstitialDidFailToLoad()
+ {
+ interstitialListener?.onInterstitialFailedToLoad();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealInterstitialCallbacks))]
+ private static void interstitialDidFailToPresent()
+ {
+ interstitialListener?.onInterstitialShowFailed();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealInterstitialCallbacks))]
+ private static void interstitialDidClick()
+ {
+ interstitialListener?.onInterstitialClicked();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealInterstitialCallbacks))]
+ public static void interstitialDidDismiss()
+ {
+ interstitialListener?.onInterstitialClosed();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealInterstitialCallbacks))]
+ private static void interstitialWillPresent()
+ {
+ interstitialListener?.onInterstitialShown();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealInterstitialCallbacks))]
+ private static void interstitialDidExpired()
+ {
+ interstitialListener?.onInterstitialExpired();
+ }
+
+ public void setInterstitialCallbacks(IInterstitialAdListener listener)
+ {
+ interstitialListener = listener;
+
+ AppodealObjCBridge.AppodealSetInterstitialDelegate(
+ interstitialDidLoad,
+ interstitialDidFailToLoad,
+ interstitialDidFailToPresent,
+ interstitialWillPresent,
+ interstitialDidDismiss,
+ interstitialDidClick,
+ interstitialDidExpired
+ );
+ }
+
+ #endregion
+
+ #region Rewarded Video Delegate
+
+ [MonoPInvokeCallback(typeof(AppodealRewardedVideoDidLoadCallback))]
+ private static void rewardedVideoDidLoadAd(bool isPrecache)
+ {
+ rewardedVideoListener?.onRewardedVideoLoaded(isPrecache);
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealRewardedVideoCallbacks))]
+ private static void rewardedVideoDidFailToLoadAd()
+ {
+ rewardedVideoListener?.onRewardedVideoFailedToLoad();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealRewardedVideoCallbacks))]
+ private static void rewardedVideoDidFailToPresentWithError()
+ {
+ rewardedVideoListener?.onRewardedVideoShowFailed();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealRewardedVideoDidDismissCallback))]
+ private static void rewardedVideoWillDismiss(bool isFinished)
+ {
+ rewardedVideoListener?.onRewardedVideoClosed(isFinished);
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealRewardedVideoDidFinishCallback))]
+ private static void rewardedVideoDidFinish(double amount, string name)
+ {
+ rewardedVideoListener?.onRewardedVideoFinished(amount, name);
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealRewardedVideoCallbacks))]
+ private static void rewardedVideoDidPresent()
+ {
+ rewardedVideoListener?.onRewardedVideoShown();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealRewardedVideoCallbacks))]
+ private static void rewardedVideoDidExpired()
+ {
+ rewardedVideoListener?.onRewardedVideoExpired();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealRewardedVideoCallbacks))]
+ private static void rewardedVideoDidReceiveTap()
+ {
+ rewardedVideoListener?.onRewardedVideoClicked();
+ }
+
+ public void setRewardedVideoCallbacks(IRewardedVideoAdListener listener)
+ {
+ rewardedVideoListener = listener;
+
+ AppodealObjCBridge.AppodealSetRewardedVideoDelegate(
+ rewardedVideoDidLoadAd,
+ rewardedVideoDidFailToLoadAd,
+ rewardedVideoDidFailToPresentWithError,
+ rewardedVideoWillDismiss,
+ rewardedVideoDidFinish,
+ rewardedVideoDidPresent,
+ rewardedVideoDidExpired,
+ rewardedVideoDidReceiveTap
+ );
+ }
+
+ #endregion
+
+ #region Banner Delegate
+
+ [MonoPInvokeCallback(typeof(AppodealBannerDidLoadCallback))]
+ private static void bannerDidLoadAd(int height, bool isPrecache)
+ {
+ bannerListener?.onBannerLoaded(height, isPrecache);
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerCallbacks))]
+ private static void bannerDidFailToLoadAd()
+ {
+ bannerListener?.onBannerFailedToLoad();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerCallbacks))]
+ private static void bannerDidClick()
+ {
+ bannerListener?.onBannerClicked();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerCallbacks))]
+ private static void bannerDidExpired()
+ {
+ bannerListener?.onBannerExpired();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerCallbacks))]
+ private static void bannerDidShow()
+ {
+ bannerListener?.onBannerShown();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerCallbacks))]
+ private static void bannerDidFailToPresent()
+ {
+ bannerListener?.onBannerShowFailed();
+ }
+
+
+ [MonoPInvokeCallback(typeof(AppodealBannerViewDidLoadCallback))]
+ private static void bannerViewDidLoadAd(int height, bool isPrecache)
+ {
+ bannerListener?.onBannerLoaded(height, isPrecache);
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerViewCallbacks))]
+ private static void bannerViewDidFailToLoadAd()
+ {
+ bannerListener?.onBannerFailedToLoad();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerViewCallbacks))]
+ private static void bannerViewDidClick()
+ {
+ bannerListener?.onBannerClicked();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerViewCallbacks))]
+ private static void bannerViewDidShow()
+ {
+ bannerListener?.onBannerShown();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerViewCallbacks))]
+ private static void bannerViewDidFailToPresent()
+ {
+ bannerListener?.onBannerShowFailed();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealBannerViewCallbacks))]
+ private static void bannerViewDidExpired()
+ {
+ bannerListener?.onBannerExpired();
+ }
+
+ public void setBannerCallbacks(IBannerAdListener listener)
+ {
+ bannerListener = listener;
+
+ AppodealObjCBridge.AppodealSetBannerDelegate(
+ bannerDidLoadAd,
+ bannerDidFailToLoadAd,
+ bannerDidClick,
+ bannerDidExpired,
+ bannerDidShow,
+ bannerDidFailToPresent);
+
+ AppodealObjCBridge.AppodealSetBannerViewDelegate(
+ bannerViewDidLoadAd,
+ bannerViewDidFailToLoadAd,
+ bannerViewDidClick,
+ bannerViewDidShow,
+ bannerViewDidFailToPresent,
+ bannerViewDidExpired);
+ }
+
+ #endregion
+
+ #region Mrec Delegate
+
+ [MonoPInvokeCallback(typeof(AppodealMrecViewDidLoadCallback))]
+ private static void mrecViewDidLoadAd(bool isPrecache)
+ {
+ mrecListener?.onMrecLoaded(isPrecache);
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealMrecViewCallbacks))]
+ private static void mrecViewDidFailToLoadAd()
+ {
+ mrecListener?.onMrecFailedToLoad();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealMrecViewCallbacks))]
+ private static void mrecViewDidClick()
+ {
+ mrecListener?.onMrecClicked();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealMrecViewCallbacks))]
+ private static void mrecViewDidShow()
+ {
+ mrecListener?.onMrecShown();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealMrecViewCallbacks))]
+ private static void mrecViewDidFailToPresent()
+ {
+ mrecListener?.onMrecShowFailed();
+ }
+
+ [MonoPInvokeCallback(typeof(AppodealMrecViewCallbacks))]
+ private static void mrecViewDidExpired()
+ {
+ mrecListener?.onMrecExpired();
+ }
+
+ public void setMrecCallbacks(IMrecAdListener listener)
+ {
+ mrecListener = listener;
+
+ AppodealObjCBridge.AppodealSetMrecViewDelegate(
+ mrecViewDidLoadAd,
+ mrecViewDidFailToLoadAd,
+ mrecViewDidClick,
+ mrecViewDidShow,
+ mrecViewDidFailToPresent,
+ mrecViewDidExpired);
+ }
+
+ #endregion
+
+ #region AdRevenue delegate
+
+ [MonoPInvokeCallback(typeof(AppodealAdRevenueCallback))]
+ private static void appodealSdkDidReceiveRevenue(string adType, string networkName, string adUnitName, string demandSource, string placement, double revenue, string currency, string revenuePrecision)
+ {
+ revenueListener?.onAdRevenueReceived(
+ new AppodealAdRevenue
+ {
+ AdType = adType,
+ NetworkName = networkName,
+ AdUnitName = adUnitName,
+ DemandSource = demandSource,
+ Placement = placement,
+ Revenue = revenue,
+ Currency = currency,
+ RevenuePrecision = revenuePrecision
+ }
+ );
+ }
+
+ public void setAdRevenueCallback(IAdRevenueListener listener)
+ {
+ revenueListener = listener;
+
+ AppodealObjCBridge.AppodealSetAdRevenueDelegate(appodealSdkDidReceiveRevenue);
+ }
+
+ #endregion
+
+ #region In-App Purchase Validation delegate
+
+ [MonoPInvokeCallback(typeof(InAppPurchaseValidationSucceededCallback))]
+ private static void inAppPurchaseValidationSucceeded(string json)
+ {
+ inAppPurchaseValidationListener?.onInAppPurchaseValidationSucceeded(json);
+ }
+
+ [MonoPInvokeCallback(typeof(InAppPurchaseValidationFailedCallback))]
+ private static void inAppPurchaseValidationFailed(string error)
+ {
+ inAppPurchaseValidationListener?.onInAppPurchaseValidationFailed(error);
+ }
+
+ #endregion
+
+ private static int nativeAdTypesForType(int adTypes)
+ {
+ var nativeAdTypes = 0;
+
+ if ((adTypes & Appodeal.INTERSTITIAL) > 0)
+ {
+ nativeAdTypes |= AppodealAdTypeInterstitial;
+ }
+
+ if ((adTypes & Appodeal.BANNER) > 0 ||
+ (adTypes & Appodeal.BANNER_VIEW) > 0 ||
+ (adTypes & Appodeal.BANNER_TOP) > 0 ||
+ (adTypes & Appodeal.BANNER_LEFT) > 0 ||
+ (adTypes & Appodeal.BANNER_RIGHT) > 0 ||
+ (adTypes & Appodeal.BANNER_BOTTOM) > 0)
+ {
+ nativeAdTypes |= AppodealAdTypeBanner;
+ }
+
+ if ((adTypes & Appodeal.MREC) > 0)
+ {
+ nativeAdTypes |= AppodealAdTypeMrec;
+ }
+
+ if ((adTypes & Appodeal.REWARDED_VIDEO) > 0)
+ {
+ nativeAdTypes |= AppodealAdTypeRewardedVideo;
+ }
+
+ return nativeAdTypes;
+ }
+
+ private static int nativeShowStyleForType(int adTypes)
+ {
+ if ((adTypes & Appodeal.INTERSTITIAL) > 0)
+ {
+ return AppodealShowStyleInterstitial;
+ }
+
+ if ((adTypes & Appodeal.BANNER_TOP) > 0)
+ {
+ return AppodealShowStyleBannerTop;
+ }
+
+ if ((adTypes & Appodeal.BANNER_BOTTOM) > 0)
+ {
+ return AppodealShowStyleBannerBottom;
+ }
+
+ if ((adTypes & Appodeal.BANNER_LEFT) > 0)
+ {
+ return AppodealShowStyleBannerLeft;
+ }
+
+ if ((adTypes & Appodeal.BANNER_RIGHT) > 0)
+ {
+ return AppodealShowStyleBannerRight;
+ }
+
+ if ((adTypes & Appodeal.REWARDED_VIDEO) > 0)
+ {
+ return AppodealShowStyleRewardedVideo;
+ }
+
+ return 0;
+ }
+
+ private static string dictionaryToString(Dictionary dictionary)
+ {
+ var dictionaryString = dictionary.Aggregate("", (current, keyValues)
+ => current + (keyValues.Key + "=" + keyValues.Value.GetType() + ":" + keyValues.Value + ","));
+ return dictionaryString.TrimEnd(',');
+ }
+
+ public void initialize(string appKey, int adTypes, IAppodealInitializationListener listener)
+ {
+ if (listener != null) setAppodealInitializationCallback(listener);
+
+ AppodealObjCBridge.AppodealInitialize(appKey, nativeAdTypesForType(adTypes),
+ Appodeal.getPluginVersion(), Appodeal.getUnityVersion());
+ }
+
+ public bool isInitialized(int adType)
+ {
+ return AppodealObjCBridge.AppodealIsInitialized(nativeAdTypesForType(adType));
+ }
+
+ public bool show(int adTypes)
+ {
+ return AppodealObjCBridge.AppodealShowAd(nativeShowStyleForType(adTypes));
+ }
+
+ public bool show(int adTypes, string placement)
+ {
+ return AppodealObjCBridge.AppodealShowAdforPlacement(nativeShowStyleForType(adTypes), placement);
+ }
+
+ public bool showBannerView(int YAxis, int XGravity, string Placement)
+ {
+ return AppodealObjCBridge.AppodealShowBannerAdViewforPlacement(YAxis, XGravity, Placement);
+ }
+
+ public bool showMrecView(int YAxis, int XGravity, string Placement)
+ {
+ return AppodealObjCBridge.AppodealShowMrecAdViewforPlacement(YAxis, XGravity, Placement);
+ }
+
+ public bool isLoaded(int adTypes)
+ {
+ return AppodealObjCBridge.AppodealIsReadyWithStyle(nativeShowStyleForType(adTypes));
+ }
+
+ public void cache(int adTypes)
+ {
+ AppodealObjCBridge.AppodealCacheAd(nativeAdTypesForType(adTypes));
+ }
+
+ public void setAutoCache(int adTypes, bool autoCache)
+ {
+ AppodealObjCBridge.AppodealSetAutocache(autoCache, nativeAdTypesForType(adTypes));
+ }
+
+ public void hide(int adTypes)
+ {
+ if ((nativeAdTypesForType(adTypes) & AppodealAdTypeBanner) > 0)
+ {
+ AppodealObjCBridge.AppodealHideBanner();
+ }
+ }
+
+ public void hideBannerView()
+ {
+ AppodealObjCBridge.AppodealHideBannerView();
+ }
+
+ public void hideMrecView()
+ {
+ AppodealObjCBridge.AppodealHideMrecView();
+ }
+
+ public bool isPrecache(int adTypes)
+ {
+ return AppodealObjCBridge.AppodealIsPrecacheAd(nativeAdTypesForType(adTypes));
+ }
+
+ public void setSmartBanners(bool value)
+ {
+ AppodealObjCBridge.AppodealSetSmartBanners(value);
+ }
+
+ public bool isSmartBannersEnabled()
+ {
+ return AppodealObjCBridge.AppodealIsSmartBannersEnabled();
+ }
+
+ public void setBannerAnimation(bool value)
+ {
+ AppodealObjCBridge.AppodealSetBannerAnimation(value);
+ }
+
+ public void setTabletBanners(bool value)
+ {
+ AppodealObjCBridge.AppodealSetTabletBanners(value);
+ }
+
+ public void setBannerRotation(int leftBannerRotation, int rightBannerRotation)
+ {
+ AppodealObjCBridge.AppodealSetBannerRotation(leftBannerRotation, rightBannerRotation);
+ }
+
+ public void setTesting(bool test)
+ {
+ AppodealObjCBridge.AppodealSetTestingEnabled(test);
+ }
+
+ public void setLogLevel(Appodeal.LogLevel level)
+ {
+ switch (level)
+ {
+ case Appodeal.LogLevel.None:
+ {
+ AppodealObjCBridge.AppodealSetLogLevel(1);
+ break;
+ }
+ case Appodeal.LogLevel.Debug:
+ {
+ AppodealObjCBridge.AppodealSetLogLevel(2);
+ break;
+ }
+ case Appodeal.LogLevel.Verbose:
+ {
+ AppodealObjCBridge.AppodealSetLogLevel(3);
+ break;
+ }
+ default:
+ throw new ArgumentOutOfRangeException(nameof(level), level, null);
+ }
+ }
+
+ public void setChildDirectedTreatment(bool value)
+ {
+ AppodealObjCBridge.AppodealSetChildDirectedTreatment(value);
+ }
+
+ public void updateConsent(Consent consent)
+ {
+ AppodealObjCBridge.AppodealUpdateConsentReport();
+ }
+
+ public void updateGdprConsent(Appodeal.GdprUserConsent consent)
+ {
+ switch (consent)
+ {
+ case Appodeal.GdprUserConsent.Unknown:
+ {
+ AppodealObjCBridge.AppodealUpdateGdprConsent(0);
+ break;
+ }
+ case Appodeal.GdprUserConsent.Personalized:
+ {
+ AppodealObjCBridge.AppodealUpdateGdprConsent(1);
+ break;
+ }
+ case Appodeal.GdprUserConsent.NonPersonalized:
+ {
+ AppodealObjCBridge.AppodealUpdateGdprConsent(2);
+ break;
+ }
+ default:
+ throw new ArgumentOutOfRangeException(nameof(consent), consent, null);
+ }
+ }
+
+ public void updateCcpaConsent(Appodeal.CcpaUserConsent consent)
+ {
+ switch (consent)
+ {
+ case Appodeal.CcpaUserConsent.Unknown:
+ {
+ AppodealObjCBridge.AppodealUpdateCcpaConsent(0);
+ break;
+ }
+ case Appodeal.CcpaUserConsent.OptIn:
+ {
+ AppodealObjCBridge.AppodealUpdateCcpaConsent(1);
+ break;
+ }
+ case Appodeal.CcpaUserConsent.OptOut:
+ {
+ AppodealObjCBridge.AppodealUpdateCcpaConsent(2);
+ break;
+ }
+ default:
+ throw new ArgumentOutOfRangeException(nameof(consent), consent, null);
+ }
+ }
+
+ public List getNetworks(int adTypes)
+ {
+ var networksList = new List();
+ string [] splitNetworkStrings = AppodealObjCBridge.AppodealGetNetworks(nativeAdTypesForType(adTypes)).Split(',');
+ splitNetworkStrings.ToList().ForEach(network => networksList.Add(network));
+ return networksList;
+ }
+
+ public void disableNetwork(string network)
+ {
+ AppodealObjCBridge.AppodealDisableNetwork(network);
+ }
+
+ public void disableNetwork(string network, int adTypes)
+ {
+ AppodealObjCBridge.AppodealDisableNetworkForAdTypes(network, adTypes);
+ }
+
+ public void disableLocationPermissionCheck()
+ {
+ AppodealObjCBridge.AppodealDisableLocationPermissionCheck();
+ }
+
+ public string getVersion()
+ {
+ return AppodealObjCBridge.AppodealGetVersion();
+ }
+
+ public long getSegmentId()
+ {
+ return AppodealObjCBridge.AppodealGetSegmentId();
+ }
+
+ public bool canShow(int adTypes, string placement)
+ {
+ return AppodealObjCBridge.AppodealCanShowWithPlacement(nativeAdTypesForType(adTypes), placement);
+ }
+
+ public bool canShow(int adTypes)
+ {
+ return AppodealObjCBridge.AppodealCanShow(nativeAdTypesForType(adTypes));
+ }
+
+ public string getRewardCurrency(string placement)
+ {
+ return AppodealObjCBridge.AppodealGetRewardCurrency(placement);
+ }
+
+ public double getRewardAmount(string placement)
+ {
+ return AppodealObjCBridge.AppodealGetRewardAmount(placement);
+ }
+
+ public string getRewardCurrency()
+ {
+ return AppodealObjCBridge.AppodealGetRewardCurrency("default");
+ }
+
+ public double getRewardAmount()
+ {
+ return AppodealObjCBridge.AppodealGetRewardAmount("default");
+ }
+
+ public double getPredictedEcpm(int adType)
+ {
+ return AppodealObjCBridge.AppodealGetPredictedEcpm(nativeAdTypesForType(adType));
+ }
+
+ public double getPredictedEcpmForPlacement(int adType, string placement)
+ {
+ if (String.IsNullOrEmpty(placement)) placement = "default";
+ return AppodealObjCBridge.AppodealGetPredictedEcpmForPlacement(nativeAdTypesForType(adType), placement);
+ }
+
+ public void setCustomFilter(string name, bool value)
+ {
+ AppodealObjCBridge.AppodealSetCustomFilterBool(name, value);
+ }
+
+ public void setCustomFilter(string name, int value)
+ {
+ AppodealObjCBridge.AppodealSetCustomFilterInt(name, value);
+ }
+
+ public void setCustomFilter(string name, double value)
+ {
+ AppodealObjCBridge.AppodealSetCustomFilterDouble(name, value);
+ }
+
+ public void setCustomFilter(string name, string value)
+ {
+ AppodealObjCBridge.AppodealSetCustomFilterString(name, value);
+ }
+
+ public void resetCustomFilter(string name)
+ {
+ AppodealObjCBridge.AppodealResetCustomFilter(name);
+ }
+
+ public void setExtraData(string key, bool value)
+ {
+ AppodealObjCBridge.AppodealSetExtraDataBool(key, value);
+ }
+
+ public void setExtraData(string key, int value)
+ {
+ AppodealObjCBridge.AppodealSetExtraDataInt(key, value);
+ }
+
+ public void setExtraData(string key, double value)
+ {
+ AppodealObjCBridge.AppodealSetExtraDataDouble(key, value);
+ }
+
+ public void setExtraData(string key, string value)
+ {
+ AppodealObjCBridge.AppodealSetExtraDataString(key, value);
+ }
+
+ public void resetExtraData(string key)
+ {
+ AppodealObjCBridge.AppodealResetExtraData(key);
+ }
+
+ public void setTriggerOnLoadedOnPrecache(int adTypes, bool onLoadedTriggerBoth)
+ {
+ AppodealObjCBridge.AppodealSetTriggerPrecacheCallbacks(nativeAdTypesForType(adTypes), onLoadedTriggerBoth);
+ }
+
+ public bool isAutoCacheEnabled(int adType)
+ {
+ return AppodealObjCBridge.AppodealIsAutoCacheEnabled(nativeAdTypesForType(adType));
+ }
+
+ public void setUserId(string id)
+ {
+ AppodealObjCBridge.AppodealSetUserId(id);
+ }
+
+ public string getUserId()
+ {
+ return AppodealObjCBridge.AppodealGetUserId();
+ }
+
+ public void trackInAppPurchase(double amount, string currency)
+ {
+ AppodealObjCBridge.AppodealTrackInAppPurchase(amount, currency);
+ }
+
+ public void logEvent(string eventName, Dictionary eventParams)
+ {
+ var paramsFiltered = new Dictionary();
+
+ eventParams?.Keys.Where(key => eventParams[key] is int || eventParams[key] is double || eventParams[key] is string)
+ .ToList().ForEach(key => paramsFiltered.Add(key, eventParams[key]));
+
+ AppodealObjCBridge.AppodealLogEvent(eventName, dictionaryToString(paramsFiltered));
+ }
+
+ public void validateAppStoreInAppPurchase(IAppStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener)
+ {
+ inAppPurchaseValidationListener = listener;
+ AppodealObjCBridge.AppodealValidateInAppPurchase(purchase.getProductId(), purchase.getPrice(), purchase.getCurrency(), purchase.getTransactionId(), purchase.getAdditionalParameters(), (int) purchase.getPurchaseType(), inAppPurchaseValidationSucceeded, inAppPurchaseValidationFailed);
+ }
+
+ public void destroy(int adType)
+ {
+ Debug.Log("Not Supported by iOS SDK");
+ }
+
+ public void setSharedAdsInstanceAcrossActivities(bool value)
+ {
+ Debug.Log("Not Supported by iOS SDK");
+ }
+
+ public void setUseSafeArea(bool value)
+ {
+ Debug.Log("Not Supported by iOS SDK");
+ }
+
+ public void validatePlayStoreInAppPurchase(IPlayStoreInAppPurchase purchase, IInAppPurchaseValidationListener listener)
+ {
+ Debug.Log("Not Supported by iOS SDK");
+ }
+
+ public void muteVideosIfCallsMuted(bool value)
+ {
+ Debug.Log("Not Supported by iOS SDK");
+ }
+
+ public void showTestScreen()
+ {
+ Debug.Log("Not Supported by iOS SDK");
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealAdsClient.cs.meta b/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealAdsClient.cs.meta
new file mode 100644
index 0000000..50c6bce
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealAdsClient.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e46fb7ccf38354dacba2110f211573fd
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealObjCBridge.cs b/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealObjCBridge.cs
new file mode 100644
index 0000000..48849ea
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealObjCBridge.cs
@@ -0,0 +1,271 @@
+#if UNITY_IPHONE
+using System.Runtime.InteropServices;
+
+namespace AppodealAds.Unity.iOS
+{
+ internal delegate void AppodealInitializationCallback();
+
+ internal delegate void AppodealInterstitialCallbacks();
+
+ internal delegate void AppodealInterstitialDidLoadCallback(bool isPrecache);
+
+ internal delegate void AppodealBannerCallbacks();
+
+ internal delegate void AppodealBannerDidLoadCallback(int height, bool isPrecache);
+
+ internal delegate void AppodealBannerViewCallbacks();
+
+ internal delegate void AppodealBannerViewDidLoadCallback(int height, bool isPrecache);
+
+ internal delegate void AppodealMrecViewCallbacks();
+
+ internal delegate void AppodealMrecViewDidLoadCallback(bool isPrecache);
+
+ internal delegate void AppodealRewardedVideoCallbacks();
+
+ internal delegate void AppodealRewardedVideoDidLoadCallback(bool isPrecache);
+
+ internal delegate void AppodealRewardedVideoDidDismissCallback(bool isFinished);
+
+ internal delegate void AppodealRewardedVideoDidFinishCallback(double amount, string name);
+
+ internal delegate void AppodealAdRevenueCallback(string adType, string networkName, string adUnitName, string demandSource, string placement, double revenue, string currency, string revenuePrecision);
+
+ internal delegate void InAppPurchaseValidationSucceededCallback(string json);
+
+ internal delegate void InAppPurchaseValidationFailedCallback(string error);
+
+ internal static class AppodealObjCBridge
+ {
+ [DllImport("__Internal")]
+ internal static extern void AppodealInitialize(string apiKey, int types, string pluginVer, string engineVersion);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealIsInitialized(int type);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealShowAd(int style);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealShowAdforPlacement(int style, string placement);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealShowBannerAdViewforPlacement(int style, int gravity, string placement);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealShowMrecAdViewforPlacement(int style, int gravity, string placement);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealIsReadyWithStyle(int style);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealHideBanner();
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealHideBannerView();
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealHideMrecView();
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealCacheAd(int types);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetAutocache(bool autocache, int types);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetSmartBanners(bool value);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealIsSmartBannersEnabled();
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetTabletBanners(bool value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetBannerAnimation(bool value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetBannerRotation(int leftBannerRotation, int rightBannerRotation);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetLogLevel(int loglevel);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetTestingEnabled(bool value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetChildDirectedTreatment(bool value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealUpdateConsentReport();
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealUpdateGdprConsent(int consent);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealUpdateCcpaConsent(int consent);
+
+ [DllImport("__Internal")]
+ internal static extern string AppodealGetNetworks(int types);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealDisableNetwork(string name);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetTriggerPrecacheCallbacks(int types, bool value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealDisableNetworkForAdTypes(string name, int type);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealDisableLocationPermissionCheck();
+
+ [DllImport("__Internal")]
+ internal static extern string AppodealGetVersion();
+
+ [DllImport("__Internal")]
+ internal static extern long AppodealGetSegmentId();
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealCanShow(int style);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealCanShowWithPlacement(int style, string placement);
+
+ [DllImport("__Internal")]
+ internal static extern string AppodealGetRewardCurrency(string placement);
+
+ [DllImport("__Internal")]
+ internal static extern double AppodealGetRewardAmount(string placement);
+
+ [DllImport("__Internal")]
+ internal static extern double AppodealGetPredictedEcpm(int adType);
+
+ [DllImport("__Internal")]
+ internal static extern double AppodealGetPredictedEcpmForPlacement(int adType, string placement);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetCustomFilterBool(string name, bool value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetCustomFilterString(string name, string value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetCustomFilterDouble(string name, double value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetCustomFilterInt(string name, int value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealResetCustomFilter(string name);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetExtraDataBool(string name, bool value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetExtraDataInt(string name, int value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetExtraDataDouble(string name, double value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetExtraDataString(string name, string value);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealResetExtraData(string name);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealTrackInAppPurchase(double amount, string currency);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetUserId(string id);
+
+ [DllImport("__Internal")]
+ internal static extern string AppodealGetUserId();
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealIsPrecacheAd(int adType);
+
+ [DllImport("__Internal")]
+ internal static extern bool AppodealIsAutoCacheEnabled(int adType);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealLogEvent(string eventName, string eventParams);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealValidateInAppPurchase(
+ string productIdentifier,
+ string price,
+ string currency,
+ string transactionId,
+ string additionalParams,
+ int type,
+ InAppPurchaseValidationSucceededCallback success,
+ InAppPurchaseValidationFailedCallback failure);
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetInitializationDelegate(
+ AppodealInitializationCallback appodealSDKDidInitialize
+ );
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetInterstitialDelegate(
+ AppodealInterstitialDidLoadCallback interstitialDidLoadAd,
+ AppodealInterstitialCallbacks interstitialDidFailToLoadAd,
+ AppodealInterstitialCallbacks interstitialDidFailToPresent,
+ AppodealInterstitialCallbacks interstitialWillPresent,
+ AppodealInterstitialCallbacks interstitialDidDismiss,
+ AppodealInterstitialCallbacks interstitialDidClick,
+ AppodealInterstitialCallbacks interstitialDidExpired
+ );
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetRewardedVideoDelegate(
+ AppodealRewardedVideoDidLoadCallback rewardedVideoDidLoadAd,
+ AppodealRewardedVideoCallbacks rewardedVideoDidFailToLoadAd,
+ AppodealRewardedVideoCallbacks rewardedVideoDidFailToPresentWithError,
+ AppodealRewardedVideoDidDismissCallback rewardedVideoWillDismiss,
+ AppodealRewardedVideoDidFinishCallback rewardedVideoDidFinish,
+ AppodealRewardedVideoCallbacks rewardedVideoDidPresent,
+ AppodealRewardedVideoCallbacks rewardedVideoDidExpired,
+ AppodealRewardedVideoCallbacks rewardedVideoDidReceiveTap
+ );
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetBannerDelegate(
+ AppodealBannerDidLoadCallback bannerDidLoadAd,
+ AppodealBannerCallbacks bannerDidFailToLoadAd,
+ AppodealBannerCallbacks bannerDidClick,
+ AppodealBannerCallbacks bannerDidExpired,
+ AppodealBannerCallbacks bannerDidShow,
+ AppodealBannerCallbacks bannerDidFailToPresent
+ );
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetBannerViewDelegate(
+ AppodealBannerViewDidLoadCallback bannerViewDidLoadAd,
+ AppodealBannerViewCallbacks bannerViewDidFailToLoadAd,
+ AppodealBannerViewCallbacks bannerViewDidClick,
+ AppodealBannerViewCallbacks bannerViewDidShow,
+ AppodealBannerViewCallbacks bannerViewDidFailToPresent,
+ AppodealBannerViewCallbacks bannerViewDidExpired
+ );
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetMrecViewDelegate(
+ AppodealMrecViewDidLoadCallback mrecDidLoadAd,
+ AppodealMrecViewCallbacks mrecDidFailToLoadAd,
+ AppodealMrecViewCallbacks mrecDidClick,
+ AppodealMrecViewCallbacks mrecDidShow,
+ AppodealMrecViewCallbacks mrecDidFailToPresent,
+ AppodealMrecViewCallbacks mrecDidExpired
+ );
+
+ [DllImport("__Internal")]
+ internal static extern void AppodealSetAdRevenueDelegate(
+ AppodealAdRevenueCallback didReceiveRevenue
+ );
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealObjCBridge.cs.meta b/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealObjCBridge.cs.meta
new file mode 100644
index 0000000..1893588
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS/AppodealObjCBridge.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 890d5065c318744029743f619cb4dcef
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchase.cs b/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchase.cs
new file mode 100644
index 0000000..8b32aad
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchase.cs
@@ -0,0 +1,58 @@
+#if UNITY_IPHONE
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.iOS
+{
+ public class IosAppStoreInAppPurchase : IAppStoreInAppPurchase
+ {
+ public IAppStoreInAppPurchase NativeInAppPurchase { get; }
+ private Appodeal.AppStorePurchaseType PurchaseType { get; }
+
+ public string Price { get; set; } = String.Empty;
+ public string Currency { get; set; } = String.Empty;
+ public string ProductId { get; set; } = String.Empty;
+ public string TransactionId { get; set; } = String.Empty;
+ public Dictionary AdditionalParameters { get; set; }
+
+ public IosAppStoreInAppPurchase(Appodeal.AppStorePurchaseType purchaseType)
+ {
+ PurchaseType = purchaseType;
+ NativeInAppPurchase = this;
+ }
+
+ public Appodeal.AppStorePurchaseType getPurchaseType()
+ {
+ return PurchaseType;
+ }
+
+ public string getProductId()
+ {
+ return ProductId;
+ }
+
+ public string getTransactionId()
+ {
+ return TransactionId;
+ }
+
+ public string getPrice()
+ {
+ return Price;
+ }
+
+ public string getCurrency()
+ {
+ return Currency;
+ }
+
+ public string getAdditionalParameters()
+ {
+ return AdditionalParameters?.Aggregate("", (current, keyValues) => current + (keyValues.Key + "=" + keyValues.Value + ",")).TrimEnd(',') ?? String.Empty;
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchase.cs.meta b/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchase.cs.meta
new file mode 100644
index 0000000..f5864a4
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ab6bd77eb130b4c2399acdc827c2e53c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchaseBuilder.cs b/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchaseBuilder.cs
new file mode 100644
index 0000000..e475c62
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchaseBuilder.cs
@@ -0,0 +1,50 @@
+#if UNITY_IPHONE
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using AppodealAds.Unity.Api;
+using AppodealAds.Unity.Common;
+
+namespace AppodealAds.Unity.iOS
+{
+ [SuppressMessage("ReSharper", "UnusedType.Global")]
+ public class IosAppStoreInAppPurchaseBuilder : IAppStoreInAppPurchaseBuilder
+ {
+ private readonly IosAppStoreInAppPurchase _purchase;
+
+ public IosAppStoreInAppPurchaseBuilder(Appodeal.AppStorePurchaseType purchaseType)
+ {
+ _purchase = new IosAppStoreInAppPurchase(purchaseType);
+ }
+
+ public IAppStoreInAppPurchase build()
+ {
+ return _purchase;
+ }
+
+ public void withProductId(string productId)
+ {
+ _purchase.ProductId = productId;
+ }
+
+ public void withTransactionId(string transactionId)
+ {
+ _purchase.TransactionId = transactionId;
+ }
+
+ public void withPrice(string price)
+ {
+ _purchase.Price = price;
+ }
+
+ public void withCurrency(string currency)
+ {
+ _purchase.Currency = currency;
+ }
+
+ public void withAdditionalParameters(Dictionary additionalParameters)
+ {
+ _purchase.AdditionalParameters = additionalParameters;
+ }
+ }
+}
+#endif
diff --git a/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchaseBuilder.cs.meta b/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchaseBuilder.cs.meta
new file mode 100644
index 0000000..69dd9d2
--- /dev/null
+++ b/Assets/Appodeal/Platforms/Appodeal/iOS/IosAppStoreInAppPurchaseBuilder.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 793062a86eadc494791a34e3e136c395
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager.meta b/Assets/Appodeal/Platforms/ConsentManager.meta
new file mode 100644
index 0000000..950d5cc
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e153177e77797492abcea3793f5d7f75
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Android.meta b/Assets/Appodeal/Platforms/ConsentManager/Android.meta
new file mode 100644
index 0000000..25841d7
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Android.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5de13a027fd2c4bfebb4b6911136a96b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Android/AndroidConsentManagerClient.cs b/Assets/Appodeal/Platforms/ConsentManager/Android/AndroidConsentManagerClient.cs
new file mode 100644
index 0000000..2444a38
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Android/AndroidConsentManagerClient.cs
@@ -0,0 +1,494 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using UnityEngine;
+using ConsentManager.Common;
+
+namespace ConsentManager.Platforms.Android
+{
+#if UNITY_ANDROID
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class AndroidConsentManager : IConsentManager
+ {
+ private AndroidJavaObject consentManagerInstance;
+ private AndroidJavaObject activity;
+
+ private AndroidJavaObject getInstance()
+ {
+ return consentManagerInstance ?? (consentManagerInstance = new AndroidJavaObject("com.appodeal.consent.ConsentManager"));
+ }
+
+ private AndroidJavaObject getActivity()
+ {
+ return activity ?? (activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity"));
+ }
+
+ public void requestConsentInfoUpdate(string appodealAppKey, IConsentInfoUpdateListener listener)
+ {
+ getInstance().CallStatic("requestConsentInfoUpdate", getActivity(), appodealAppKey, new ConsentInfoUpdateCallbacks(listener));
+ }
+
+ public void setCustomVendor(Vendor customVendor)
+ {
+ var androidVendor = (AndroidVendor) customVendor.getNativeVendor();
+ getInstance().CallStatic("getCustomVendors").Call("put", androidVendor.getBundle(), androidVendor.getVendor());
+ }
+
+ public Vendor getCustomVendor(string bundle)
+ {
+ return new Vendor(new AndroidVendor(getInstance().CallStatic("getCustomVendors").Call("get", Helper.getJavaObject(bundle))));
+ }
+
+ public ConsentManager.Storage getStorage()
+ {
+ var storage = ConsentManager.Storage.NONE;
+ switch (getInstance().CallStatic("getStorage").Call("name"))
+ {
+ case "NONE":
+ storage = ConsentManager.Storage.NONE;
+ break;
+ case "SHARED_PREFERENCE":
+ storage = ConsentManager.Storage.SHARED_PREFERENCE;
+ break;
+ }
+
+ return storage;
+ }
+
+ public void setStorage(ConsentManager.Storage iabStorage)
+ {
+ switch (iabStorage)
+ {
+ case ConsentManager.Storage.NONE:
+ getInstance().CallStatic("setStorage", new AndroidJavaClass("com.appodeal.consent.ConsentManager$Storage").GetStatic("NONE"));
+ break;
+ case ConsentManager.Storage.SHARED_PREFERENCE:
+ getInstance().CallStatic("setStorage", new AndroidJavaClass("com.appodeal.consent.ConsentManager$Storage").GetStatic("SHARED_PREFERENCE"));
+ break;
+ default:
+ throw new ArgumentOutOfRangeException(nameof(iabStorage), iabStorage, null);
+ }
+ }
+
+ public Consent.ShouldShow shouldShowConsentDialog()
+ {
+ var shouldShow = Consent.ShouldShow.UNKNOWN;
+
+ switch (getInstance().CallStatic("getShouldShow"))
+ {
+ case true:
+ shouldShow = Consent.ShouldShow.TRUE;
+ break;
+ case false:
+ shouldShow = Consent.ShouldShow.FALSE;
+ break;
+ }
+
+ return shouldShow;
+ }
+
+ public Consent.Zone getConsentZone()
+ {
+ var zone = Consent.Zone.UNKNOWN;
+ switch (getInstance().CallStatic("getConsentZone").Call("name"))
+ {
+ case "UNKNOWN":
+ zone = Consent.Zone.UNKNOWN;
+ break;
+ case "NONE":
+ zone = Consent.Zone.NONE;
+ break;
+ case "GDPR":
+ zone = Consent.Zone.GDPR;
+ break;
+ case "CCPA":
+ zone = Consent.Zone.CCPA;
+ break;
+ }
+
+ return zone;
+ }
+
+ public Consent.Status getConsentStatus()
+ {
+ var status = Consent.Status.UNKNOWN;
+ switch (getInstance().CallStatic("getConsentStatus").Call("name"))
+ {
+ case "UNKNOWN":
+ status = Consent.Status.UNKNOWN;
+ break;
+ case "PERSONALIZED":
+ status = Consent.Status.PERSONALIZED;
+ break;
+ case "NON_PERSONALIZED":
+ status = Consent.Status.NON_PERSONALIZED;
+ break;
+ case "PARTLY_PERSONALIZED":
+ status = Consent.Status.PARTLY_PERSONALIZED;
+ break;
+ }
+
+ return status;
+ }
+
+ public Consent getConsent()
+ {
+ return new Consent(new AndroidConsent(getInstance().CallStatic("getConsent")));
+ }
+
+ public void disableAppTrackingTransparencyRequest()
+ {
+ Debug.Log("Not supported on Android platform");
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class AndroidVendorBuilder : IVendorBuilder
+ {
+ private readonly AndroidJavaObject builder;
+ private AndroidJavaObject vendor;
+
+ public AndroidVendorBuilder(string name, string bundle, string policyUrl)
+ {
+ builder = new AndroidJavaObject("com.appodeal.consent.Vendor$Builder", name, bundle, policyUrl);
+ }
+
+ private AndroidJavaObject getBuilder()
+ {
+ return builder;
+ }
+
+ public IVendor build()
+ {
+ vendor = getBuilder().Call("build");
+ return new AndroidVendor(vendor);
+ }
+
+ public void setPurposeIds(IEnumerable purposeIds)
+ {
+ setNativeList(purposeIds, "purposeIds");
+ }
+
+ public void setFeatureIds(IEnumerable featureIds)
+ {
+ setNativeList(featureIds, "featureIds");
+ }
+
+ public void setLegitimateInterestPurposeIds(IEnumerable legitimateInterestPurposeIds)
+ {
+ setNativeList(legitimateInterestPurposeIds, "legitimateInterestPurposeIds");
+ }
+
+ private void setNativeList(IEnumerable list, string methodName)
+ {
+ var androidJavaObject = new AndroidJavaObject("java.util.ArrayList");
+ foreach (var obj in list)
+ {
+ androidJavaObject.Call("add", Helper.getJavaObject(obj));
+ }
+
+ getBuilder().Call(methodName, androidJavaObject);
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class AndroidVendor : IVendor
+ {
+ private readonly AndroidJavaObject vendor;
+
+ public AndroidVendor(AndroidJavaObject vendor)
+ {
+ this.vendor = vendor;
+ }
+
+ public AndroidJavaObject getVendor()
+ {
+ return vendor;
+ }
+
+ public string getName()
+ {
+ return getVendor().Call("getName");
+ }
+
+ public string getBundle()
+ {
+ return getVendor().Call("getBundle");
+ }
+
+ public string getPolicyUrl()
+ {
+ return getVendor().Call("getPolicyUrl");
+ }
+
+ public List getPurposeIds()
+ {
+ return getNativeList("getPurposeIds", getVendor());
+ }
+
+ public List getFeatureIds()
+ {
+ return getNativeList("getFeatureIds", getVendor());
+ }
+
+ public List getLegitimateInterestPurposeIds()
+ {
+ return getNativeList("getLegitimateInterestPurposeIds", getVendor());
+ }
+
+ private static List getNativeList(string methodName, AndroidJavaObject androidJavaObject)
+ {
+ var purposeIdsList = new List();
+ AndroidJNI.PushLocalFrame(100);
+ using (var joPurposeIdsList = androidJavaObject.Call(methodName))
+ {
+ for (var i = 0; i < joPurposeIdsList.Call("size"); i++)
+ {
+ using (var PurposeId = joPurposeIdsList.Call("get", i))
+ {
+ purposeIdsList.Add(PurposeId.Call("intValue"));
+ }
+ }
+ }
+
+ AndroidJNI.PopLocalFrame(IntPtr.Zero);
+ return purposeIdsList;
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class AndroidConsentForm : IConsentForm
+ {
+ private readonly AndroidJavaObject consentForm;
+
+ private AndroidJavaObject activity;
+
+ public AndroidConsentForm(AndroidJavaObject builder)
+ {
+ consentForm = builder;
+ }
+
+ public AndroidConsentForm(IConsentFormListener consentFormListener)
+ {
+ consentForm = new AndroidJavaObject("com.appodeal.consent.ConsentForm", getActivity(), new ConsentFormCallbacks(consentFormListener));
+ }
+
+ private AndroidJavaObject getConsentForm()
+ {
+ return consentForm;
+ }
+
+ private AndroidJavaObject getActivity()
+ {
+ return activity ?? (activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity"));
+ }
+
+ public void load()
+ {
+ getConsentForm().Call("load");
+ }
+
+ public void show()
+ {
+ getConsentForm().Call("show");
+ }
+
+ public bool isLoaded()
+ {
+ return getConsentForm().Call("isLoaded");
+ }
+
+ public bool isShowing()
+ {
+ return getConsentForm().Call("isShowing");
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class AndroidConsentManagerException : IConsentManagerException
+ {
+ private readonly AndroidJavaObject consentManagerException;
+
+ public AndroidConsentManagerException(AndroidJavaObject androidJavaObject)
+ {
+ consentManagerException = androidJavaObject;
+ }
+
+ public AndroidConsentManagerException()
+ {
+ consentManagerException = new AndroidJavaObject("com.appodeal.consent.ConsentManagerError");
+ }
+
+ private AndroidJavaObject getConsentManagerException()
+ {
+ return consentManagerException;
+ }
+
+ public string getReason()
+ {
+ return getConsentManagerException().Call("getMessage");
+ }
+
+ public int getCode()
+ {
+ string reason = getConsentManagerException().Call("getEvent");
+ return reason == "LoadingError" ? 2 : 1;
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Local")]
+ public class AndroidConsent : IConsent
+ {
+ private readonly AndroidJavaObject consent;
+
+ public AndroidConsent(AndroidJavaObject joConsent)
+ {
+ consent = joConsent;
+ }
+
+ public AndroidJavaObject getConsent()
+ {
+ return consent;
+ }
+
+ public Consent.Zone getZone()
+ {
+ var zone = Consent.Zone.UNKNOWN;
+
+ switch (getConsent().Call("getZone").Call("name"))
+ {
+ case "UNKNOWN":
+ zone = Consent.Zone.UNKNOWN;
+ break;
+ case "NONE":
+ zone = Consent.Zone.NONE;
+ break;
+ case "GDPR":
+ zone = Consent.Zone.GDPR;
+ break;
+ case "CCPA":
+ zone = Consent.Zone.CCPA;
+ break;
+ }
+
+ return zone;
+ }
+
+ public Consent.Status getStatus()
+ {
+ var status = Consent.Status.UNKNOWN;
+
+ switch (getConsent().Call("getStatus").Call("name"))
+ {
+ case "UNKNOWN":
+ status = Consent.Status.UNKNOWN;
+ break;
+ case "NON_PERSONALIZED":
+ status = Consent.Status.NON_PERSONALIZED;
+ break;
+ case "PARTLY_PERSONALIZED":
+ status = Consent.Status.PARTLY_PERSONALIZED;
+ break;
+ case "PERSONALIZED":
+ status = Consent.Status.PERSONALIZED;
+ break;
+ }
+
+ return status;
+ }
+
+ public Consent.AuthorizationStatus getAuthorizationStatus()
+ {
+ Debug.Log("Not supported on this platform");
+ return Consent.AuthorizationStatus.NOT_DETERMINED;
+ }
+
+ public Consent.HasConsent hasConsentForVendor(string bundle)
+ {
+ var hasConsent = Consent.HasConsent.UNKNOWN;
+ switch (getConsent().Call("hasConsentForVendor", Helper.getJavaObject(bundle)))
+ {
+ case true:
+ hasConsent = Consent.HasConsent.TRUE;
+ break;
+ case false:
+ hasConsent = Consent.HasConsent.FALSE;
+ break;
+ }
+
+ return hasConsent;
+ }
+
+ public List getAcceptedVendors()
+ {
+ var vendors = new List();
+ AndroidJNI.PushLocalFrame(100);
+ using (var joPurposeIdsList = getConsent().Call("getAcceptedVendors"))
+ {
+ for (var i = 0; i < joPurposeIdsList.Call("size"); i++)
+ {
+ using (var vendor = joPurposeIdsList.Call("get", i))
+ {
+ vendors.Add(new Vendor(new AndroidVendor(vendor)));
+ }
+ }
+ }
+
+ AndroidJNI.PopLocalFrame(IntPtr.Zero);
+ return vendors;
+ }
+
+ public string getIabConsentString()
+ {
+ return getConsent().Call("getIABConsentString");
+ }
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "ConstantNullCoalescingCondition")]
+ public static class Helper
+ {
+ public static object getJavaObject(object value)
+ {
+ if (value is string)
+ {
+ return value;
+ }
+
+ if (value is char)
+ {
+ return new AndroidJavaObject("java.lang.Character", value);
+ }
+
+ if ((value is bool))
+ {
+ return new AndroidJavaObject("java.lang.Boolean", value);
+ }
+
+ if (value is int)
+ {
+ return new AndroidJavaObject("java.lang.Integer", value);
+ }
+
+ if (value is long)
+ {
+ return new AndroidJavaObject("java.lang.Long", value);
+ }
+
+ if (value is float)
+ {
+ return new AndroidJavaObject("java.lang.Float", value);
+ }
+
+ if (value is double)
+ {
+ return new AndroidJavaObject("java.lang.Float", value);
+ }
+
+ return value ?? null;
+ }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Android/AndroidConsentManagerClient.cs.meta b/Assets/Appodeal/Platforms/ConsentManager/Android/AndroidConsentManagerClient.cs.meta
new file mode 100644
index 0000000..f321c85
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Android/AndroidConsentManagerClient.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: caa7a76d9b4554f62b7012e2bbe934fb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentFormCallbacks.cs b/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentFormCallbacks.cs
new file mode 100644
index 0000000..170f289
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentFormCallbacks.cs
@@ -0,0 +1,46 @@
+using System.Diagnostics.CodeAnalysis;
+using ConsentManager.Common;
+
+namespace ConsentManager.Platforms.Android
+{
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "UnusedParameter.Local")]
+ public class ConsentFormCallbacks
+#if UNITY_ANDROID
+ : UnityEngine.AndroidJavaProxy
+ {
+ private readonly IConsentFormListener listener;
+
+ internal ConsentFormCallbacks(IConsentFormListener listener) : base("com.appodeal.consent.IConsentFormListener")
+ {
+ this.listener = listener;
+ }
+
+ private void onConsentFormLoaded(UnityEngine.AndroidJavaObject consentForm)
+ {
+ listener.onConsentFormLoaded();
+ }
+
+ private void onConsentFormError(UnityEngine.AndroidJavaObject exception)
+ {
+ var consentManagerException = new ConsentManagerException(new AndroidConsentManagerException(exception));
+ listener.onConsentFormError(consentManagerException);
+ }
+
+ private void onConsentFormOpened()
+ {
+ listener.onConsentFormOpened();
+ }
+
+ private void onConsentFormClosed(UnityEngine.AndroidJavaObject joConsent)
+ {
+ var consent = new Consent(new AndroidConsent(joConsent));
+ listener.onConsentFormClosed(consent);
+ }
+ }
+#else
+ {
+ public ConsentFormCallbacks(IConsentFormListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentFormCallbacks.cs.meta b/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentFormCallbacks.cs.meta
new file mode 100644
index 0000000..73ec87d
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentFormCallbacks.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a9ebb99301f0a442c95da2afbe6ed184
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentInfoUpdateCallbacks.cs b/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentInfoUpdateCallbacks.cs
new file mode 100644
index 0000000..210efd5
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentInfoUpdateCallbacks.cs
@@ -0,0 +1,34 @@
+using System.Diagnostics.CodeAnalysis;
+using ConsentManager.Common;
+
+namespace ConsentManager.Platforms.Android
+{
+ [SuppressMessage("ReSharper", "UnusedParameter.Local")]
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ public class ConsentInfoUpdateCallbacks
+#if UNITY_ANDROID
+ : UnityEngine.AndroidJavaProxy
+ {
+ private readonly IConsentInfoUpdateListener listener;
+
+ internal ConsentInfoUpdateCallbacks(IConsentInfoUpdateListener listener) : base("com.appodeal.consent.IConsentInfoUpdateListener")
+ {
+ this.listener = listener;
+ }
+
+ private void onConsentInfoUpdated(UnityEngine.AndroidJavaObject joConsent)
+ {
+ listener.onConsentInfoUpdated(new Consent(new AndroidConsent(joConsent)));
+ }
+
+ private void onFailedToUpdateConsentInfo(UnityEngine.AndroidJavaObject error)
+ {
+ listener.onFailedToUpdateConsentInfo(new ConsentManagerException(new AndroidConsentManagerException(error)));
+ }
+ }
+#else
+ {
+ public ConsentInfoUpdateCallbacks(IConsentInfoUpdateListener listener) { }
+ }
+#endif
+}
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentInfoUpdateCallbacks.cs.meta b/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentInfoUpdateCallbacks.cs.meta
new file mode 100644
index 0000000..67a5aff
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Android/ConsentInfoUpdateCallbacks.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 61d84fc565072468099fc2e0675726e7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/ConsentManagerClientFactory.cs b/Assets/Appodeal/Platforms/ConsentManager/ConsentManagerClientFactory.cs
new file mode 100644
index 0000000..2880bda
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/ConsentManagerClientFactory.cs
@@ -0,0 +1,55 @@
+using ConsentManager.Common;
+using ConsentManager.Platforms.iOS;
+using ConsentManager.Platforms.Android;
+
+namespace ConsentManager.Platforms
+{
+ internal static class ConsentManagerClientFactory
+ {
+ internal static IConsentManager GetConsentManager()
+ {
+#if UNITY_ANDROID && !UNITY_EDITOR
+ return new AndroidConsentManager();
+#elif UNITY_IPHONE && !UNITY_EDITOR
+ return new iOSConsentManager();
+#else
+ return new Dummy.Dummy();
+#endif
+ }
+
+ internal static IVendorBuilder GetVendorBuilder(string name, string bundle, string policyUrl)
+ {
+#if UNITY_ANDROID && !UNITY_EDITOR
+ return new AndroidVendorBuilder(name, bundle, policyUrl);
+#elif UNITY_IPHONE && !UNITY_EDITOR
+ return new iOSVendorBuilder(name, bundle, policyUrl);
+#else
+ return new Dummy.Dummy();
+#endif
+ }
+
+ internal static IConsentForm GetConsentForm(IConsentFormListener listener)
+ {
+#if UNITY_ANDROID && !UNITY_EDITOR
+ return new AndroidConsentForm(listener);
+#elif UNITY_IPHONE && !UNITY_EDITOR
+ var builder = new iOSConsentFormBuilder();
+ builder.withListener(listener);
+ return builder.build();
+#else
+ return new Dummy.Dummy();
+#endif
+ }
+
+ internal static IConsentManagerException GetConsentManagerException()
+ {
+#if UNITY_ANDROID && !UNITY_EDITOR
+ return new AndroidConsentManagerException();
+#elif UNITY_IPHONE && !UNITY_EDITOR
+ return new iOSConsentManagerException();
+#else
+ return new Dummy.Dummy();
+#endif
+ }
+ }
+}
diff --git a/Assets/Appodeal/Platforms/ConsentManager/ConsentManagerClientFactory.cs.meta b/Assets/Appodeal/Platforms/ConsentManager/ConsentManagerClientFactory.cs.meta
new file mode 100644
index 0000000..b5ce124
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/ConsentManagerClientFactory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fc37bbeab211749929a26f159f45fadf
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Dummy.meta b/Assets/Appodeal/Platforms/ConsentManager/Dummy.meta
new file mode 100644
index 0000000..4d26ddc
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1d87b662a1ac44b64920b5684dc28302
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Dummy/Dummy.cs b/Assets/Appodeal/Platforms/ConsentManager/Dummy/Dummy.cs
new file mode 100644
index 0000000..8f77f99
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Dummy/Dummy.cs
@@ -0,0 +1,188 @@
+using UnityEngine;
+using System.Collections.Generic;
+using ConsentManager.Common;
+
+namespace ConsentManager.Platforms.Dummy
+{
+ public class Dummy : IConsentManager, IConsentForm, IConsent, IVendor, IVendorBuilder, IConsentManagerException
+ {
+ private const string DummyMessage = "Not supported on this platform";
+
+ public void requestConsentInfoUpdate(string appodealAppKey, IConsentInfoUpdateListener listener)
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public void setCustomVendor(Vendor customVendor)
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public Vendor getCustomVendor(string bundle)
+ {
+ Debug.Log(DummyMessage);
+ return null;
+ }
+
+ public ConsentManager.Storage getStorage()
+ {
+ Debug.Log(DummyMessage);
+ return ConsentManager.Storage.NONE;
+ }
+
+ public void setStorage(ConsentManager.Storage iabStorage)
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public Consent.ShouldShow shouldShowConsentDialog()
+ {
+ Debug.Log(DummyMessage);
+ return Consent.ShouldShow.UNKNOWN;
+ }
+
+ public Consent.Zone getConsentZone()
+ {
+ Debug.Log(DummyMessage);
+ return Consent.Zone.UNKNOWN;
+ }
+
+ public Consent.Status getConsentStatus()
+ {
+ Debug.Log(DummyMessage);
+ return Consent.Status.UNKNOWN;
+ }
+
+ public Consent getConsent()
+ {
+ Debug.Log(DummyMessage);
+ return null;
+ }
+
+ public void disableAppTrackingTransparencyRequest()
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public void load()
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public void show()
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public bool isLoaded()
+ {
+ Debug.Log(DummyMessage);
+ return false;
+ }
+
+ public bool isShowing()
+ {
+ Debug.Log(DummyMessage);
+ return false;
+ }
+
+ public string getName()
+ {
+ Debug.Log(DummyMessage);
+ return DummyMessage;
+ }
+
+ public string getBundle()
+ {
+ Debug.Log(DummyMessage);
+ return DummyMessage;
+ }
+
+ public string getPolicyUrl()
+ {
+ Debug.Log(DummyMessage);
+ return DummyMessage;
+ }
+
+ public List getPurposeIds()
+ {
+ Debug.Log(DummyMessage);
+ return new List();
+ }
+
+ public List getFeatureIds()
+ {
+ Debug.Log(DummyMessage);
+ return new List();
+ }
+
+ public List getLegitimateInterestPurposeIds()
+ {
+ Debug.Log(DummyMessage);
+ return new List();
+ }
+
+ IVendor IVendorBuilder.build()
+ {
+ Debug.Log(DummyMessage);
+ return null;
+ }
+
+ public void setPurposeIds(IEnumerable purposeIds)
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public void setFeatureIds(IEnumerable featureIds)
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public void setLegitimateInterestPurposeIds(IEnumerable legitimateInterestPurposeIds)
+ {
+ Debug.Log(DummyMessage);
+ }
+
+ public string getReason()
+ {
+ Debug.Log(DummyMessage);
+ return DummyMessage;
+ }
+
+ public int getCode()
+ {
+ Debug.Log(DummyMessage);
+ return 0;
+ }
+
+ public Consent.Zone getZone()
+ {
+ Debug.Log(DummyMessage);
+ return Consent.Zone.UNKNOWN;
+ }
+
+ public Consent.Status getStatus()
+ {
+ Debug.Log(DummyMessage);
+ return Consent.Status.UNKNOWN;
+ }
+
+ public Consent.AuthorizationStatus getAuthorizationStatus()
+ {
+ Debug.Log(DummyMessage);
+ return Consent.AuthorizationStatus.NOT_DETERMINED;
+ }
+
+ public Consent.HasConsent hasConsentForVendor(string bundle)
+ {
+ Debug.Log(DummyMessage);
+ return Consent.HasConsent.UNKNOWN;
+ }
+
+ public string getIabConsentString()
+ {
+ Debug.Log(DummyMessage);
+ return DummyMessage;
+ }
+ }
+}
diff --git a/Assets/Appodeal/Platforms/ConsentManager/Dummy/Dummy.cs.meta b/Assets/Appodeal/Platforms/ConsentManager/Dummy/Dummy.cs.meta
new file mode 100644
index 0000000..c4b6df2
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/Dummy/Dummy.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6c481a2e9b7c740a8af1a9795a0a8a34
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/iOS.meta b/Assets/Appodeal/Platforms/ConsentManager/iOS.meta
new file mode 100644
index 0000000..6479730
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/iOS.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6c54cf1e623b945438a2a63766b09321
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Appodeal/Platforms/ConsentManager/iOS/ConsentManagerObjCBridge.cs b/Assets/Appodeal/Platforms/ConsentManager/iOS/ConsentManagerObjCBridge.cs
new file mode 100644
index 0000000..487cc74
--- /dev/null
+++ b/Assets/Appodeal/Platforms/ConsentManager/iOS/ConsentManagerObjCBridge.cs
@@ -0,0 +1,450 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Runtime.InteropServices;
+
+namespace ConsentManager.Platforms.iOS
+{
+#if UNITY_IPHONE
+ internal delegate void ConsentInfoUpdatedCallback(IntPtr consent);
+ internal delegate void ConsentInfoUpdatedFailedCallback(IntPtr error);
+
+ internal delegate void ConsentFormCallback();
+
+ internal delegate void ConsentFormCallbackError(IntPtr error);
+
+ internal delegate void ConsentFormCallbackClosed(IntPtr consent);
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ [SuppressMessage("ReSharper", "MemberCanBeMadeStatic.Global")]
+ internal class ConsentManagerObjCBridge
+ {
+ private readonly IntPtr consentManager;
+
+ public ConsentManagerObjCBridge()
+ {
+ consentManager = GetConsentManager();
+ }
+
+ public ConsentManagerObjCBridge(IntPtr intPtr)
+ {
+ consentManager = intPtr;
+ }
+
+ public IntPtr getConsentManager()
+ {
+ return consentManager;
+ }
+
+ public static void requestConsentInfoUpdate(string appodealAppKey,
+ ConsentInfoUpdatedCallback onConsentInfoUpdated,
+ ConsentInfoUpdatedFailedCallback onFailedToUpdateConsentInfo)
+ {
+ RequestConsentInfoUpdate(appodealAppKey, onConsentInfoUpdated, onFailedToUpdateConsentInfo);
+ }
+
+ public static void disableAppTrackingTransparencyRequest()
+ {
+ DisableAppTrackingTransparencyRequest();
+ }
+
+ public void setCustomVendor(IntPtr customVendor)
+ {
+ SetCustomVendor(customVendor);
+ }
+
+ public IntPtr getCustomVendor(string bundle)
+ {
+ return GetCustomVendor(bundle);
+ }
+
+ public string getStorage()
+ {
+ return GetStorage();
+ }
+
+ public void setStorage(string storage)
+ {
+ SetStorage(storage);
+ }
+
+ public string getIabConsentString()
+ {
+ return GetIabConsentString();
+ }
+
+ public string shouldShowConsentDialog()
+ {
+ return ShouldShowConsentDialog();
+ }
+
+ public string getConsentZone()
+ {
+ return GetConsentZone();
+ }
+
+ public string getConsentStatus()
+ {
+ return GetConsentStatus();
+ }
+
+ public IntPtr getConsent()
+ {
+ return GetConsent();
+ }
+
+ [DllImport("__Internal")]
+ private static extern void RequestConsentInfoUpdate(string appodealAppKey,
+ ConsentInfoUpdatedCallback onConsentInfoUpdated,
+ ConsentInfoUpdatedFailedCallback onFailedToUpdateConsentInfo);
+
+ [DllImport("__Internal")]
+ private static extern void DisableAppTrackingTransparencyRequest();
+
+ [DllImport("__Internal")]
+ private static extern IntPtr GetConsentManager();
+
+ [DllImport("__Internal")]
+ private static extern void SetCustomVendor(IntPtr customVendor);
+
+ [DllImport("__Internal")]
+ private static extern IntPtr GetCustomVendor(string bundle);
+
+ [DllImport("__Internal")]
+ private static extern string GetStorage();
+
+ [DllImport("__Internal")]
+ private static extern void SetStorage(string storage);
+
+ [DllImport("__Internal")]
+ private static extern string GetIabConsentString();
+
+ [DllImport("__Internal")]
+ private static extern string ShouldShowConsentDialog();
+
+ [DllImport("__Internal")]
+ private static extern string GetConsentZone();
+
+ [DllImport("__Internal")]
+ private static extern string GetConsentStatus();
+
+ [DllImport("__Internal")]
+ private static extern IntPtr GetConsent();
+ }
+
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ internal class VendorBuilderObjCBridge
+ {
+ private readonly IntPtr nativeObject;
+
+ public VendorBuilderObjCBridge(string name, string bundle, string url)
+ {
+ nativeObject = GetVendor(name, bundle, url);
+ }
+
+ public IntPtr getNativeObject()
+ {
+ return nativeObject;
+ }
+
+ public static void setPurposeIds(IEnumerable purposeIds)
+ {
+ SetPurposeIds(CommaSeparatedStringFromList(purposeIds));
+ }
+
+ public static void setFeatureIds(IEnumerable