From 435b5d46ce926f37eb30c4aa842899e80aa6e8a4 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Thu, 30 May 2024 09:37:14 -0400 Subject: [PATCH 1/3] Push to Start Live Activities --- OneSignalExample/Assets/App.meta | 8 + OneSignalExample/Assets/App/Editor.meta | 8 + OneSignalExample/Assets/App/Editor/iOS.meta | 8 + .../App/Editor/iOS/BuildPostProcessor.cs | 169 ++ .../App/Editor/iOS/BuildPostProcessor.cs.meta | 11 + .../Example/OneSignalExampleBehaviour.cs | 56 +- .../Example/OneSignalExampleScene.unity | 1720 ++++++++++++++++- .../ProjectSettings/QualitySettings.asset | 104 +- .../ProjectSettings/TimelineSettings.asset | 1 + OneSignalExample/iOS/ExampleWidget.meta | 8 + .../iOS/ExampleWidget/Assets.xcassets.meta | 8 + .../Assets.xcassets/AccentColor.colorset.meta | 8 + .../AccentColor.colorset/Contents.json | 11 + .../AccentColor.colorset/Contents.json.meta | 7 + .../Assets.xcassets/AppIcon.appiconset.meta | 8 + .../AppIcon.appiconset/Contents.json | 13 + .../AppIcon.appiconset/Contents.json.meta | 7 + .../Assets.xcassets/Contents.json | 6 + .../Assets.xcassets/Contents.json.meta | 7 + .../WidgetBackground.colorset.meta | 8 + .../WidgetBackground.colorset/Contents.json | 11 + .../Contents.json.meta | 7 + .../onesignaldemo.imageset.meta | 8 + .../onesignaldemo.imageset/Contents.json | 21 + .../onesignaldemo.imageset/Contents.json.meta | 7 + .../onesignaldemo.imageset/onesignal-logo.png | Bin 0 -> 20552 bytes .../onesignal-logo.png.meta | 153 ++ .../ExampleWidget/ExampleWidgetBundle.swift | 16 + .../ExampleWidgetBundle.swift.meta | 37 + .../ExampleWidgetLiveActivity.swift | 66 + .../ExampleWidgetLiveActivity.swift.meta | 37 + OneSignalExample/iOS/ExampleWidget/Info.plist | 29 + .../iOS/ExampleWidget/Info.plist.meta | 7 + .../Runtime/AndroidLiveActivitiesManager.cs | 20 + .../Editor/Platform/LiveActivitiesManager.cs | 21 + .../LiveActivities/ILiveActivitiesManager.cs | 50 + .../LiveActivitiesSetupOptions.cs | 47 + .../LiveActivitiesSetupOptions.cs.meta | 11 + .../Samples~/OneSignalExampleBehaviour.cs | 54 +- .../iOS/OneSignalUnityBridgeLiveActivities.mm | 58 + .../Runtime/iOSLiveActivitiesManager.cs | 36 + 41 files changed, 2785 insertions(+), 87 deletions(-) create mode 100644 OneSignalExample/Assets/App.meta create mode 100644 OneSignalExample/Assets/App/Editor.meta create mode 100644 OneSignalExample/Assets/App/Editor/iOS.meta create mode 100644 OneSignalExample/Assets/App/Editor/iOS/BuildPostProcessor.cs create mode 100644 OneSignalExample/Assets/App/Editor/iOS/BuildPostProcessor.cs.meta create mode 100644 OneSignalExample/iOS/ExampleWidget.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset/Contents.json.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset/Contents.json.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/Contents.json create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/Contents.json.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png create mode 100644 OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/ExampleWidgetBundle.swift create mode 100644 OneSignalExample/iOS/ExampleWidget/ExampleWidgetBundle.swift.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/ExampleWidgetLiveActivity.swift create mode 100644 OneSignalExample/iOS/ExampleWidget/ExampleWidgetLiveActivity.swift.meta create mode 100644 OneSignalExample/iOS/ExampleWidget/Info.plist create mode 100644 OneSignalExample/iOS/ExampleWidget/Info.plist.meta create mode 100644 com.onesignal.unity.core/Runtime/LiveActivities/LiveActivitiesSetupOptions.cs create mode 100644 com.onesignal.unity.core/Runtime/LiveActivities/LiveActivitiesSetupOptions.cs.meta diff --git a/OneSignalExample/Assets/App.meta b/OneSignalExample/Assets/App.meta new file mode 100644 index 000000000..14b58f42a --- /dev/null +++ b/OneSignalExample/Assets/App.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 03e30dbab49644940aa7de596b4fe137 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/Assets/App/Editor.meta b/OneSignalExample/Assets/App/Editor.meta new file mode 100644 index 000000000..e8883018e --- /dev/null +++ b/OneSignalExample/Assets/App/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fce1d5f4292be422690936555d4aa766 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/Assets/App/Editor/iOS.meta b/OneSignalExample/Assets/App/Editor/iOS.meta new file mode 100644 index 000000000..a18460467 --- /dev/null +++ b/OneSignalExample/Assets/App/Editor/iOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f22549c14f32496aaabc5750dfdc433 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/Assets/App/Editor/iOS/BuildPostProcessor.cs b/OneSignalExample/Assets/App/Editor/iOS/BuildPostProcessor.cs new file mode 100644 index 000000000..fd90164d4 --- /dev/null +++ b/OneSignalExample/Assets/App/Editor/iOS/BuildPostProcessor.cs @@ -0,0 +1,169 @@ +/* + * Modified MIT License + * + * Copyright 2023 OneSignal + * + * 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: + * + * 1. The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 2. All copies of substantial portions of the Software may only be used in connection + * with services provided by OneSignal. + * + * 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. + */ +#if UNITY_IOS + +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEngine; +using UnityEditor.iOS.Xcode; +using UnityEditor.iOS.Xcode.Extensions; +using System.IO; +using System.Linq; + +namespace App.Editor.iOS { + /// + /// Adds the ExampleWidgetExtension to the iOS project frameworks to the iOS project and enables the main target + /// for Live Activities. + /// + public class BuildPostProcessor : IPostprocessBuildWithReport { + + private static readonly string WdigetExtensionTargetRelativePath = "ExampleWidget"; + private static readonly string WidgetExtensionTargetName = "ExampleWidgetExtension"; + private static readonly string WidgetExtensionPath = Path.Combine("iOS", "ExampleWidget"); + private static readonly string[] WidgetExtensionFiles = new string[] { "Assets.xcassets", "ExampleWidgetBundle.swift", "ExampleWidgetLiveActivity.swift" }; + + /// + /// must be between 40 and 50 to ensure that it's not overriden by Podfile generation (40) and that it's + /// added before "pod install" (50) + /// https://github.com/googlesamples/unity-jar-resolver#appending-text-to-generated-podfile + /// + public int callbackOrder => 45; + + public void OnPostprocessBuild(BuildReport report) { + if (report.summary.platform != BuildTarget.iOS) + return; + + Debug.Log("BuildPostProcessor.OnPostprocessBuild for target " + report.summary.platform + " at path " + report.summary.outputPath + " with CWD " + Directory.GetCurrentDirectory()); + + EnableAppForLiveActivities(report.summary.outputPath); + CreateWidgetExtension(report.summary.outputPath); + + Debug.Log("BuildPostProcessor.OnPostprocessBuild complete"); + } + + static void EnableAppForLiveActivities(string outputPath) { + var plistPath = Path.Combine(outputPath, "Info.plist"); + + if (!File.Exists(plistPath)) { + Debug.LogError($"Could not find PList {plistPath}!"); + return; + } + + var mainPlist = new PlistDocument(); + mainPlist.ReadFromFile(plistPath); + mainPlist.root.SetBoolean("NSSupportsLiveActivities", true); + mainPlist.WriteToFile(plistPath); + } + + static void CreateWidgetExtension(string outputPath) { + AddWidgetExtensionToProject(outputPath); + AddWidgetExtensionToPodFile(outputPath); + } + + static void AddWidgetExtensionToProject(string outputPath) { + var project = new PBXProject(); + var projectPath = PBXProject.GetPBXProjectPath(outputPath); + project.ReadFromString(File.ReadAllText(projectPath)); + + var extensionGuid = project.TargetGuidByName(WidgetExtensionTargetName); + + // skip target setup if already present + if (!string.IsNullOrEmpty(extensionGuid)) + return; + + var widgetDestPath = Path.Combine(outputPath, WdigetExtensionTargetRelativePath); + + Directory.CreateDirectory(widgetDestPath); + CopyFileOrDirectory(Path.Combine(WidgetExtensionPath, "Info.plist"), Path.Combine(widgetDestPath, "Info.plist")); + + extensionGuid = project.AddAppExtension(project.GetUnityMainTargetGuid(), + WidgetExtensionTargetName, + $"{PlayerSettings.GetApplicationIdentifier(BuildTargetGroup.iOS)}.{WidgetExtensionTargetName}", + $"{WdigetExtensionTargetRelativePath}/Info.plist" + ); + + var buildPhaseID = project.AddSourcesBuildPhase(extensionGuid); + + foreach (var file in WidgetExtensionFiles) { + var destPathRelative = Path.Combine(WdigetExtensionTargetRelativePath, file); + var sourceFileGuid = project.AddFile(destPathRelative, destPathRelative); + project.AddFileToBuildSection(extensionGuid, buildPhaseID, sourceFileGuid); + CopyFileOrDirectory(Path.Combine(WidgetExtensionPath, file), Path.Combine(outputPath, destPathRelative)); + } + + project.SetBuildProperty(extensionGuid, "TARGETED_DEVICE_FAMILY", "1,2"); + project.SetBuildProperty(extensionGuid, "IPHONEOS_DEPLOYMENT_TARGET", "17.0"); + project.SetBuildProperty(extensionGuid, "SWIFT_VERSION", "5.0"); + + project.WriteToFile(projectPath); + } + + static void AddWidgetExtensionToPodFile(string outputPath) { + var podfilePath = Path.Combine(outputPath, "Podfile"); + + if (!File.Exists(podfilePath)) { + Debug.LogError($"Could not find Podfile {podfilePath}!"); + return; + } + + var podfile = File.ReadAllText(podfilePath); + podfile += $"target '{WidgetExtensionTargetName}' do\n pod 'OneSignalXCFramework', '>= 5.0.2', '< 6.0.0'\nend\n"; + File.WriteAllText(podfilePath, podfile); + } + + static void CopyFileOrDirectory(string sourcePath, string destinationPath) + { + var file = new FileInfo(sourcePath); + var dir = new DirectoryInfo(sourcePath); + + if (!file.Exists && !dir.Exists) + { + return; + } + + if (file.Exists) + { + file.CopyTo(destinationPath, true); + } + else { + Directory.CreateDirectory(destinationPath); + + foreach (FileInfo childFile in dir.EnumerateFiles().Where(f => !f.Name.EndsWith(".meta"))) + { + CopyFileOrDirectory(childFile.FullName, Path.Combine(destinationPath, childFile.Name)); + } + + foreach (DirectoryInfo subDir in dir.GetDirectories()) + { + CopyFileOrDirectory(subDir.FullName, Path.Combine(destinationPath, subDir.Name)); + } + } + } + } +} +#endif \ No newline at end of file diff --git a/OneSignalExample/Assets/App/Editor/iOS/BuildPostProcessor.cs.meta b/OneSignalExample/Assets/App/Editor/iOS/BuildPostProcessor.cs.meta new file mode 100644 index 000000000..893d37690 --- /dev/null +++ b/OneSignalExample/Assets/App/Editor/iOS/BuildPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43d89292bb7c543f6bbb20d0aa464790 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleBehaviour.cs b/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleBehaviour.cs index 2a56c541b..9df95bfd2 100644 --- a/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleBehaviour.cs +++ b/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleBehaviour.cs @@ -128,7 +128,17 @@ public class OneSignalExampleBehaviour : MonoBehaviour { /// /// /// - public string liveActivityToken; + public string liveActivityIdToken; + + /// + /// + /// + public string liveActivityType; + + /// + /// + /// + public string liveActivityTypeToken; /// /// we recommend initializing OneSignal early in your application's lifecycle such as in the Start method of a @@ -136,12 +146,15 @@ public class OneSignalExampleBehaviour : MonoBehaviour { /// private void Start() { // Enable lines below to debug issues with OneSignal - OneSignal.Debug.LogLevel = LogLevel.Info; + OneSignal.Debug.LogLevel = LogLevel.Verbose; OneSignal.Debug.AlertLevel = LogLevel.Fatal; _log($"Initializing with appId {appId}"); OneSignal.Initialize(appId); + // Setup the default live activity + OneSignal.LiveActivities.SetupDefault(); + // Setting ConsentRequired to true will prevent the OneSignalSDK from operating until // PrivacyConsent is also set to true OneSignal.ConsentRequired = consentRequired; @@ -437,10 +450,28 @@ public void ToggleShareLocation() { * iOS */ + public void StartDefaultLiveActivity() { + _log($"Start Default Live Activity with id: {liveActivityId}..."); + + OneSignal.LiveActivities.StartDefault( + liveActivityId, + new Dictionary() { + { "title", "Welcome!" } + }, + new Dictionary() { + { "message", new Dictionary() { + { "en", "Hello World!"} + }}, + { "intValue", 3 }, + { "doubleValue", 3.14 }, + { "boolValue", true } + }); + } + public async void EnterLiveActivityAsync() { - _log($"Entering Live Activity with id: {liveActivityId} and token: {liveActivityToken} and awaiting result..."); + _log($"Entering Live Activity with id: {liveActivityId} and token: {liveActivityIdToken} and awaiting result..."); - var result = await OneSignal.LiveActivities.EnterAsync(liveActivityId, liveActivityToken); + var result = await OneSignal.LiveActivities.EnterAsync(liveActivityId, liveActivityIdToken); if (result) _log("Live Activity enter success"); @@ -459,6 +490,18 @@ public async void ExitLiveActivityAsync() { _log("Live Activity exit failed"); } + public void SetPushToStartToken() { + _log($"Set Push To Start Token for type: {liveActivityType} with token: {liveActivityTypeToken}..."); + + OneSignal.LiveActivities.SetPushToStartToken(liveActivityType, liveActivityTypeToken); + } + + public void RemovePushToStartToken() { + _log($"Remove Push To Start Token for type: {liveActivityType}..."); + + OneSignal.LiveActivities.RemovePushToStartToken(liveActivityType); + } + #region Rendering /* * You can safely ignore everything in this region and below @@ -487,7 +530,10 @@ public async void ExitLiveActivityAsync() { public void SetOutcomeValue(string newVal) => outcomeValue = Convert.ToSingle(newVal); public void SetLiveActivityId(string newVal) => liveActivityId = newVal; - public void SetLiveActivityToken(string newVal) => liveActivityToken = newVal; + public void SetLiveActivityIdToken(string newVal) => liveActivityIdToken = newVal; + + public void SetLiveActivityType(string newVal) => liveActivityType = newVal; + public void SetLiveActivityTypeToken(string newVal) => liveActivityTypeToken = newVal; private void Awake() { SDKDebug.LogIntercept += _log; diff --git a/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity b/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity index 1edc6e35b..f12b574f7 100644 --- a/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity +++ b/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481676, a: 1} + m_IndirectSpecularColor: {r: 0.44657886, g: 0.49641275, b: 0.5748176, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -973,6 +973,85 @@ MonoBehaviour: m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 m_ReverseArrangement: 0 +--- !u!1 &143676678 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 143676679} + - component: {fileID: 143676681} + - component: {fileID: 143676680} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &143676679 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143676678} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9, y: 0.9, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1626037429} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &143676680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143676678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &143676681 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143676678} + m_CullTransparentMesh: 1 --- !u!1 &154112645 GameObject: m_ObjectHideFlags: 0 @@ -1217,7 +1296,7 @@ GameObject: - component: {fileID: 180036057} - component: {fileID: 180036056} m_Layer: 5 - m_Name: input_liveActivityToken + m_Name: input_liveActivityIdToken m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1306,7 +1385,7 @@ MonoBehaviour: m_Calls: - m_Target: {fileID: 307684281} m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example - m_MethodName: SetLiveActivityToken + m_MethodName: SetLiveActivityIdToken m_Mode: 0 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -2449,6 +2528,139 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 290692422} m_CullTransparentMesh: 1 +--- !u!1 &291492896 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 291492897} + - component: {fileID: 291492900} + - component: {fileID: 291492899} + - component: {fileID: 291492898} + m_Layer: 5 + m_Name: button_startDefaultLiveActivity + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &291492897 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291492896} + 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: 385546170} + m_Father: {fileID: 348492214} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &291492898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291492896} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 291492899} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 307684281} + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_MethodName: StartDefaultLiveActivity + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &291492899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291492896} + 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 &291492900 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291492896} + m_CullTransparentMesh: 1 --- !u!1 &307684279 GameObject: m_ObjectHideFlags: 0 @@ -2496,7 +2708,7 @@ MonoBehaviour: email: externalId: phoneNumber: - appId: + appId: 77e32082-ea27-42e3-a898-c72e141824ef consentRequired: 0 consentGiven: 0 language: @@ -2509,7 +2721,9 @@ MonoBehaviour: outcomeKey: outcomeValue: 0 liveActivityId: - liveActivityToken: + liveActivityIdToken: + liveActivityType: + liveActivityTypeToken: console: {fileID: 315627971} appIdText: {fileID: 582279389} --- !u!1 &314101966 @@ -2694,6 +2908,85 @@ MonoBehaviour: m_FlexibleWidth: -1 m_FlexibleHeight: -1 m_LayoutPriority: 1 +--- !u!1 &315728430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 315728431} + - component: {fileID: 315728433} + - component: {fileID: 315728432} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &315728431 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315728430} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9, y: 0.9, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1183349607} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &315728432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315728430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Type +--- !u!222 &315728433 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315728430} + m_CullTransparentMesh: 1 --- !u!1 &318325085 GameObject: m_ObjectHideFlags: 0 @@ -2960,6 +3253,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 291492897} - {fileID: 1225464264} - {fileID: 729372536} m_Father: {fileID: 1969667766} @@ -3232,7 +3526,7 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 382041257} m_CullTransparentMesh: 1 ---- !u!1 &387581479 +--- !u!1 &385546169 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3240,10 +3534,89 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 387581480} - - component: {fileID: 387581483} - - component: {fileID: 387581482} - - component: {fileID: 387581481} + - component: {fileID: 385546170} + - component: {fileID: 385546172} + - component: {fileID: 385546171} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &385546170 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 385546169} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9, y: 0.9, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 291492897} + 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 &385546171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 385546169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + 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: Start Default +--- !u!222 &385546172 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 385546169} + m_CullTransparentMesh: 1 +--- !u!1 &387581479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 387581480} + - component: {fileID: 387581483} + - component: {fileID: 387581482} + - component: {fileID: 387581481} m_Layer: 5 m_Name: log_container m_TagString: Untagged @@ -3494,6 +3867,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 395336053} m_CullTransparentMesh: 1 +--- !u!1 &409205825 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 409205826} + - component: {fileID: 409205828} + - component: {fileID: 409205827} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &409205826 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409205825} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9, y: 0.9, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1183349607} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &409205827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409205825} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &409205828 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409205825} + m_CullTransparentMesh: 1 --- !u!1 &422316396 GameObject: m_ObjectHideFlags: 0 @@ -4105,6 +4557,110 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 499047144} m_CullTransparentMesh: 1 +--- !u!1 &508352400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 508352401} + - component: {fileID: 508352404} + - component: {fileID: 508352403} + - component: {fileID: 508352402} + m_Layer: 5 + m_Name: container_container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &508352401 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 508352400} + 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: 1439751355} + - {fileID: 2092728832} + m_Father: {fileID: 1620490981} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &508352402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 508352400} + 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.9607844, g: 0.47450984, b: 0.47450984, 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: 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 &508352403 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 508352400} + m_CullTransparentMesh: 1 +--- !u!114 &508352404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 508352400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!1 &511368275 GameObject: m_ObjectHideFlags: 0 @@ -5498,7 +6054,7 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 731561686} m_CullTransparentMesh: 1 ---- !u!1 &735447848 +--- !u!1 &733996628 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5506,49 +6062,49 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 735447849} - - component: {fileID: 735447851} - - component: {fileID: 735447850} + - component: {fileID: 733996629} + - component: {fileID: 733996631} + - component: {fileID: 733996630} m_Layer: 5 - m_Name: desc + m_Name: Placeholder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &735447849 +--- !u!224 &733996629 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 735447848} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 733996628} + 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_LocalScale: {x: 0.9, y: 0.9, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1221267384} + m_Father: {fileID: 1626037429} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!114 &735447850 + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &733996630 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 735447848} + m_GameObject: {fileID: 733996628} 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.8490566, g: 0.74542975, b: 0.4285333, a: 1} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -5557,9 +6113,88 @@ MonoBehaviour: m_Calls: [] m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 20 - m_FontStyle: 1 - m_BestFit: 0 + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: token +--- !u!222 &733996631 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 733996628} + m_CullTransparentMesh: 1 +--- !u!1 &735447848 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 735447849} + - component: {fileID: 735447851} + - component: {fileID: 735447850} + m_Layer: 5 + m_Name: desc + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &735447849 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735447848} + 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: 1221267384} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &735447850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735447848} + 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.8490566, g: 0.74542975, b: 0.4285333, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 1 + m_BestFit: 0 m_MinSize: 2 m_MaxSize: 40 m_Alignment: 0 @@ -6695,7 +7330,7 @@ GameObject: - component: {fileID: 907083753} - component: {fileID: 907083754} m_Layer: 5 - m_Name: control_container + m_Name: push_to_update_container m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -9804,6 +10439,164 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1175679466} m_CullTransparentMesh: 1 +--- !u!1 &1183349606 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1183349607} + - component: {fileID: 1183349610} + - component: {fileID: 1183349609} + - component: {fileID: 1183349608} + m_Layer: 5 + m_Name: input_liveActivityType + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1183349607 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183349606} + 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: 315728431} + - {fileID: 409205826} + m_Father: {fileID: 2092728832} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1183349608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183349606} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1183349609} + m_TextComponent: {fileID: 409205827} + m_Placeholder: {fileID: 315728432} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 307684281} + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_MethodName: SetLiveActivityType + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1183349609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183349606} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1183349610 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183349606} + m_CullTransparentMesh: 1 --- !u!1 &1221267383 GameObject: m_ObjectHideFlags: 0 @@ -13211,7 +14004,7 @@ MonoBehaviour: m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 m_ReverseArrangement: 0 ---- !u!1 &1444481349 +--- !u!1 &1439751354 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -13219,64 +14012,128 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1444481350} - - component: {fileID: 1444481352} - - component: {fileID: 1444481351} + - component: {fileID: 1439751355} + - component: {fileID: 1439751356} m_Layer: 5 - m_Name: Text + m_Name: inputcontrols_container m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &1444481350 +--- !u!224 &1439751355 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1444481349} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 1439751354} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.9, y: 0.9, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1682907141} + m_Children: + - {fileID: 2040017992} + - {fileID: 1692788295} + m_Father: {fileID: 508352401} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1444481351 +--- !u!114 &1439751356 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1444481349} + m_GameObject: {fileID: 1439751354} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 10 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1444481349 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1444481350} + - component: {fileID: 1444481352} + - component: {fileID: 1444481351} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1444481350 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444481349} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9, y: 0.9, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1682907141} + 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 &1444481351 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444481349} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 m_RichText: 1 m_HorizontalOverflow: 0 m_VerticalOverflow: 0 @@ -13818,6 +14675,7 @@ RectTransform: m_Children: - {fileID: 1449350197} - {fileID: 907083753} + - {fileID: 1620490981} m_Father: {fileID: 185876438} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -14274,7 +15132,7 @@ MonoBehaviour: m_HandleRect: {fileID: 916273502} m_Direction: 2 m_Value: 1 - m_Size: 0.50223213 + m_Size: 0.3125 m_NumberOfSteps: 0 m_OnValueChanged: m_PersistentCalls: @@ -14396,6 +15254,69 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1613721664} m_CullTransparentMesh: 1 +--- !u!1 &1620490980 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1620490981} + - component: {fileID: 1620490982} + m_Layer: 5 + m_Name: push_to_start_container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1620490981 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1620490980} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 0.99999994} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 508352401} + m_Father: {fileID: 1504821450} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1620490982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1620490980} + 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: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!1 &1625319360 GameObject: m_ObjectHideFlags: 0 @@ -14529,6 +15450,243 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1625319360} m_CullTransparentMesh: 1 +--- !u!1 &1626037428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1626037429} + - component: {fileID: 1626037432} + - component: {fileID: 1626037431} + - component: {fileID: 1626037430} + m_Layer: 5 + m_Name: input_liveActivityTypeToken + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1626037429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1626037428} + 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: 733996629} + - {fileID: 143676679} + m_Father: {fileID: 2092728832} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1626037430 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1626037428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1626037431} + m_TextComponent: {fileID: 143676680} + m_Placeholder: {fileID: 733996630} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 307684281} + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_MethodName: SetLiveActivityTypeToken + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1626037431 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1626037428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1626037432 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1626037428} + m_CullTransparentMesh: 1 +--- !u!1 &1639183095 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1639183096} + - component: {fileID: 1639183098} + - component: {fileID: 1639183097} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1639183096 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639183095} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9, y: 0.9, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2040017992} + 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 &1639183097 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639183095} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + 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 Push To Start +--- !u!222 &1639183098 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639183095} + m_CullTransparentMesh: 1 --- !u!1 &1650436504 GameObject: m_ObjectHideFlags: 0 @@ -14803,13 +15961,146 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1682907144 +--- !u!222 &1682907144 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1682907140} + m_CullTransparentMesh: 1 +--- !u!1 &1692788294 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1692788295} + - component: {fileID: 1692788298} + - component: {fileID: 1692788297} + - component: {fileID: 1692788296} + m_Layer: 5 + m_Name: button_removePushToStartToken + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1692788295 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692788294} + 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: 2067463134} + m_Father: {fileID: 1439751355} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1692788296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692788294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1692788297} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 307684281} + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_MethodName: RemovePushToStartToken + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &1692788297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692788294} + 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 &1692788298 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1682907140} + m_GameObject: {fileID: 1692788294} m_CullTransparentMesh: 1 --- !u!1 &1720197315 GameObject: @@ -17100,6 +18391,139 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2018806146} m_CullTransparentMesh: 1 +--- !u!1 &2040017991 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2040017992} + - component: {fileID: 2040017995} + - component: {fileID: 2040017994} + - component: {fileID: 2040017993} + m_Layer: 5 + m_Name: button_setPushToStartToken + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2040017992 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040017991} + 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: 1639183096} + m_Father: {fileID: 1439751355} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2040017993 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040017991} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2040017994} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 307684281} + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_MethodName: SetPushToStartToken + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 +--- !u!114 &2040017994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040017991} + 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 &2040017995 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040017991} + m_CullTransparentMesh: 1 --- !u!1 &2042661922 GameObject: m_ObjectHideFlags: 0 @@ -17470,6 +18894,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2064913293} m_CullTransparentMesh: 1 +--- !u!1 &2067463133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2067463134} + - component: {fileID: 2067463136} + - component: {fileID: 2067463135} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2067463134 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067463133} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9, y: 0.9, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1692788295} + 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 &2067463135 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067463133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + 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: Remove Push To Start +--- !u!222 &2067463136 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067463133} + m_CullTransparentMesh: 1 --- !u!1 &2086638412 GameObject: m_ObjectHideFlags: 0 @@ -17574,6 +19077,91 @@ MonoBehaviour: m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 m_ReverseArrangement: 0 +--- !u!1 &2092728831 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2092728832} + - component: {fileID: 2092728834} + - component: {fileID: 2092728833} + m_Layer: 5 + m_Name: kv_container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2092728832 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2092728831} + 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: 1183349607} + - {fileID: 1626037429} + m_Father: {fileID: 508352401} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2092728833 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2092728831} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 200 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &2092728834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2092728831} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!1 &2110721982 GameObject: m_ObjectHideFlags: 0 diff --git a/OneSignalExample/ProjectSettings/QualitySettings.asset b/OneSignalExample/ProjectSettings/QualitySettings.asset index adeabdb4e..3a0ad6803 100644 --- a/OneSignalExample/ProjectSettings/QualitySettings.asset +++ b/OneSignalExample/ProjectSettings/QualitySettings.asset @@ -6,7 +6,7 @@ QualitySettings: serializedVersion: 5 m_CurrentQuality: 5 m_QualitySettings: - - serializedVersion: 2 + - serializedVersion: 3 name: Very Low pixelLightCount: 0 shadows: 0 @@ -19,16 +19,20 @@ QualitySettings: shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 skinWeights: 1 - textureQuality: 1 + globalTextureMipmapLimit: 1 + textureMipmapLimitSettings: [] anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 + useLegacyDetailDistribution: 1 vSyncCount: 0 + realtimeGICPUUsage: 25 lodBias: 0.3 maximumLODLevel: 0 + enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 @@ -41,8 +45,17 @@ QualitySettings: asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} + terrainQualityOverrides: 0 + terrainPixelError: 1 + terrainDetailDensityScale: 1 + terrainBasemapDistance: 1000 + terrainDetailDistance: 80 + terrainTreeDistance: 5000 + terrainBillboardStart: 50 + terrainFadeLength: 5 + terrainMaxTrees: 50 excludedTargetPlatforms: [] - - serializedVersion: 2 + - serializedVersion: 3 name: Low pixelLightCount: 0 shadows: 0 @@ -55,16 +68,20 @@ QualitySettings: shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 skinWeights: 2 - textureQuality: 0 + globalTextureMipmapLimit: 0 + textureMipmapLimitSettings: [] anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 + useLegacyDetailDistribution: 1 vSyncCount: 0 + realtimeGICPUUsage: 25 lodBias: 0.4 maximumLODLevel: 0 + enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 @@ -77,8 +94,17 @@ QualitySettings: asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} + terrainQualityOverrides: 0 + terrainPixelError: 1 + terrainDetailDensityScale: 1 + terrainBasemapDistance: 1000 + terrainDetailDistance: 80 + terrainTreeDistance: 5000 + terrainBillboardStart: 50 + terrainFadeLength: 5 + terrainMaxTrees: 50 excludedTargetPlatforms: [] - - serializedVersion: 2 + - serializedVersion: 3 name: Medium pixelLightCount: 1 shadows: 1 @@ -91,16 +117,20 @@ QualitySettings: shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 skinWeights: 2 - textureQuality: 0 + globalTextureMipmapLimit: 0 + textureMipmapLimitSettings: [] anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 + useLegacyDetailDistribution: 1 vSyncCount: 1 + realtimeGICPUUsage: 25 lodBias: 0.7 maximumLODLevel: 0 + enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 @@ -113,8 +143,17 @@ QualitySettings: asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} + terrainQualityOverrides: 0 + terrainPixelError: 1 + terrainDetailDensityScale: 1 + terrainBasemapDistance: 1000 + terrainDetailDistance: 80 + terrainTreeDistance: 5000 + terrainBillboardStart: 50 + terrainFadeLength: 5 + terrainMaxTrees: 50 excludedTargetPlatforms: [] - - serializedVersion: 2 + - serializedVersion: 3 name: High pixelLightCount: 2 shadows: 2 @@ -127,16 +166,20 @@ QualitySettings: shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 skinWeights: 2 - textureQuality: 0 + globalTextureMipmapLimit: 0 + textureMipmapLimitSettings: [] anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 + useLegacyDetailDistribution: 1 vSyncCount: 1 + realtimeGICPUUsage: 50 lodBias: 1 maximumLODLevel: 0 + enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 @@ -149,8 +192,17 @@ QualitySettings: asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} + terrainQualityOverrides: 0 + terrainPixelError: 1 + terrainDetailDensityScale: 1 + terrainBasemapDistance: 1000 + terrainDetailDistance: 80 + terrainTreeDistance: 5000 + terrainBillboardStart: 50 + terrainFadeLength: 5 + terrainMaxTrees: 50 excludedTargetPlatforms: [] - - serializedVersion: 2 + - serializedVersion: 3 name: Very High pixelLightCount: 3 shadows: 2 @@ -163,16 +215,20 @@ QualitySettings: shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 skinWeights: 4 - textureQuality: 0 + globalTextureMipmapLimit: 0 + textureMipmapLimitSettings: [] anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 + useLegacyDetailDistribution: 1 vSyncCount: 1 + realtimeGICPUUsage: 50 lodBias: 1.5 maximumLODLevel: 0 + enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 @@ -185,8 +241,17 @@ QualitySettings: asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} + terrainQualityOverrides: 0 + terrainPixelError: 1 + terrainDetailDensityScale: 1 + terrainBasemapDistance: 1000 + terrainDetailDistance: 80 + terrainTreeDistance: 5000 + terrainBillboardStart: 50 + terrainFadeLength: 5 + terrainMaxTrees: 50 excludedTargetPlatforms: [] - - serializedVersion: 2 + - serializedVersion: 3 name: Ultra pixelLightCount: 4 shadows: 2 @@ -199,16 +264,20 @@ QualitySettings: shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 skinWeights: 255 - textureQuality: 0 + globalTextureMipmapLimit: 0 + textureMipmapLimitSettings: [] anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 + useLegacyDetailDistribution: 1 vSyncCount: 1 + realtimeGICPUUsage: 100 lodBias: 2 maximumLODLevel: 0 + enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 @@ -221,7 +290,17 @@ QualitySettings: asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} + terrainQualityOverrides: 0 + terrainPixelError: 1 + terrainDetailDensityScale: 1 + terrainBasemapDistance: 1000 + terrainDetailDistance: 80 + terrainTreeDistance: 5000 + terrainBillboardStart: 50 + terrainFadeLength: 5 + terrainMaxTrees: 50 excludedTargetPlatforms: [] + m_TextureMipmapLimitGroupNames: [] m_PerPlatformDefaultQuality: Android: 2 CloudRendering: 5 @@ -230,6 +309,7 @@ QualitySettings: Lumin: 5 Nintendo Switch: 5 PS4: 5 + Server: 0 Stadia: 5 Standalone: 5 WebGL: 3 diff --git a/OneSignalExample/ProjectSettings/TimelineSettings.asset b/OneSignalExample/ProjectSettings/TimelineSettings.asset index b4fbdb097..cfaebd7a3 100644 --- a/OneSignalExample/ProjectSettings/TimelineSettings.asset +++ b/OneSignalExample/ProjectSettings/TimelineSettings.asset @@ -13,3 +13,4 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: assetDefaultFramerate: 60 + m_DefaultFrameRate: 60 diff --git a/OneSignalExample/iOS/ExampleWidget.meta b/OneSignalExample/iOS/ExampleWidget.meta new file mode 100644 index 000000000..7438ef232 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3f8d68f5b39d4661836851ec84da540 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets.meta new file mode 100644 index 000000000..093f943d8 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 215e54614514e46eb8905fbedac7fd7b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset.meta new file mode 100644 index 000000000..53b87bcda --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44dda4393d1e2438a86fa45972f5ce53 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset/Contents.json b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 000000000..eb8789700 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset/Contents.json.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset/Contents.json.meta new file mode 100644 index 000000000..a58282bb7 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AccentColor.colorset/Contents.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d537a94897b99467e839f88704e75d1b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset.meta new file mode 100644 index 000000000..6b7e4d48d --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 287302ef599b4485e82d15204aa6e732 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset/Contents.json b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..13613e3ee --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset/Contents.json.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset/Contents.json.meta new file mode 100644 index 000000000..eea13a944 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/AppIcon.appiconset/Contents.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eb0ba19ad2dac4087b39eaec7b6d3e17 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/Contents.json b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/Contents.json.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/Contents.json.meta new file mode 100644 index 000000000..1c6e92683 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/Contents.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 656526a6c7a7d4688bdfb19393374c22 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset.meta new file mode 100644 index 000000000..34ea6dcc8 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c19bc81950e014289b508c198da1ce9c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json new file mode 100644 index 000000000..eb8789700 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json.meta new file mode 100644 index 000000000..77831ac1b --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 985b8e7a1550742b19219123072b33dc +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset.meta new file mode 100644 index 000000000..29d125de9 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed7b74885d1c34afb9e0d0db03f68819 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json new file mode 100644 index 000000000..0eddeb7c8 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "onesignal-logo.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json.meta new file mode 100644 index 000000000..b88cfcc31 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b44dea63ecffa475aa5f236f8a24bfea +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ba97c7a7dd4f08b2eee34231c4a115f376acc115 GIT binary patch literal 20552 zcmV*+Kr_FIP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>DPu)pGK~#8N?R^QH zTt&5hd`|^;ABu|GQ*l9D<5LkOi6k?9>r~y&BxL;S6OB&=7kp0;agRR5-3RVIQE^uU z6%-XgSw#VXfFLmm*=G9oz1=-C*%K17z4@Q-_GuDks+U=M`u4r`{eItXl9}#%t4>v& zI_K1>s#y*Whhn2rj|hpLRaEM@qES@T-WwvNPA`)Bd{L{P6p4NvYPymCy*ebdj=3+= zG|Ing%E)N^+{0WO@%Q=nyNPN>u?(h){0$9*F1Qd0Q9eqY_w}%C=sd9 z^PW9ADgtnDa7Zo&J?{yDQgc~Bu?t5R^MJmC2lf^W_8n}wKtaJuf)ap2Xw{WV8c}Xo zcpGCyR<+Pjzm04WvO*r=dM^*P{>hNm?}R0}&RJp(4xLA#r{^fPEavc_Je&DP9>^Qu zPHp1>94jXt%=mw|DyE4NmKo{`1&#Vc4zSW9t=AT{`VA}b4?=;JJnyk0LI($jb|F}@ zwFm5ELpRO-36&Yt~1 z5wU}V!&ESm&p*6k%!1I+XUkgO%!6?6W*&fWf#BL*^!GogV$|z-*1ZWG83~;(fSwK3(ogVn*qAGr{TD4>{7=#~ z92}AZ1YmJA%8;R(;PN52$GLskBqk_KROkmozW!55nI%qfIV1vAMWx@so%H6~9yX__ z96|I0#JFSy`1(+(e(5$24l|FkGW`{w{^~3$$40CvF02e!jQKrJaGrD_2Z#2fXuNr4 zL%&BBIy$0LRF16>{bYMz^#lpF$bV5F`ZwuP4i3`~o*9p+`1%KI-tR+tf>TtElObYU z@v5=W+lTVz%WHGFCrcM|aF{yQFIe!%VMEJCj2=c-I#z*f9nsNoB7~)d{i5t921CAo z+JMWPcbFXy^-9-saA+OzL3uYuHn zIXX@kaashFR%G;nP^)ik&?i1sx}t+aeIQLCG<0T3>y7bFedqo;&L9zPKzwV+=nX@@ zeuH#N2Z!+}ncPdbqg=IvXFBKpId+mrfxwykWn+H1-W_S%*D1cj8Lg}3>!TH zW#z0Y$0QRuf09yDC@Qr?y0AkQu+sCMP&V{aY^TBHo3;+(=$J%e8`!Wxro1_K#k_g$ zhM%;fK-9xl)k@4(E>qpH8;O;~YX7C1*11Ci(~D56_i|(JMZSxzBRD#C3lYM=5jNO; zfzv{yi#wzN>w0^SKBBC!YpFR5_(&Zhx6@#8XyJF~e z?AdZIpkvyI$+zYrRTzGj;*t%w91-Bidw%~hLl6Q z5D>jk!jHT>BkKF|N&fp_5400ejOTs$A|!TX@poTZ&C#w&-KZeEqoKU{`x z_E7S?$Cfnx4IP#{u~krx?d74$2?_%W1f8=;w4asBa7c7FE2FEJ-ww3;ScT}Vu!zfA zzdF?VMT1H`x2V*U*7q-XWWkt6*W*Cn+((7E+>`P7LEoFr&p)xG_2S6TDg5t`GtcMp zT*F+$+=z13$|5HV#O1{AYh`zwS)x4x<^4d0Z}w0i^-~DJCLG815Cb083lsp9!S=p5 z*KIE=j4~8cM076y`;<_r`9n%Q5mkvr0toVe9eoP?Q(s0JqU5C&#G~i!aE8mnKLrSTp|w zv%XCTj*}y-39PO`uIys(W*Pr+$e4Gq>-1C+d!_*8#R~d#md*9d1F*V~df}|D=_5ip zm=pq~-YH^F9|nm|amk_6N5~OY1Xj_?TCb@X`aD+dMBEOHvN11X*?fs*GZ4$l^}lH& zCIOb^)}m4`5OJpmSk7j1ebXivx0*8H_Q7fx;-73qUBgQ1O+haAFCyw00RrJG=FNN9 zYTtiM*q3`UIN;}=Qz3eOa0v1L(DR;+l!nOfc}m!~;D~Z>??bCknK=x4-V;j7oEj0` zgxDSyA0S7Yd>vaSR+)KR|7l?9(!)g5-4E>eW;6Y2=L$}Z7+{cLS<}7j@?FSo&jJx~ zTM#Tc?(jhCC&EezwD&q5?C&d*_jPs$eufl?qNdx5L~Hox5VOMEgEGQ`sZo@|?jk9q zCGh9eYX01Ee4jh|1w1={mH++T0@42)V(YN5aN$t{bLOLc6&SS%pQiP*+i;`g=B#F_I?^ZJPXgk^Z7mdS+Q;A zciza#_z3tP)=JhXrUYrRV4Tw%F?c& zHJ*#-<2^OS2xW$H;P=?h!`9t(Y@PiNTXZLFWUEiAFfD-M;xhaW15Z|0t>tvIlP%_I z0y4YX!ICA1i&(o4D==#lU4xE?O4%ywXeWZhP#FC0YXjruM5I$j+2mdpYVWKl-flx1 zF_G+A)OSDSl#~IBa-cj=B#;M`m{?*XNMDGPUWxuqsy1b?RhN&nz7a|bmY}Unj&`E0 zV%LzZa}j6vfoH>a$F9tn$~o321}9`TWXwMhOrH){sHD_OhYWp?EtS8PHQiI)z?_fY z6aj>3(;y{z@8rn>5fcvMO2x51L)LB0!v8?F{C z6x;i|m9Y!Cuo_!q<-3D_cR9PcZ${ipL@_B87WN#)itEe6#@vf|o11i7BPQDdsmrm7 z+*JrjU5LWlD&=^PaFyYf!D3)5;i|xxmx%}`g_1EZ;eqxQW`KbP4*A)z5}>^9tFtj1 zSW%y|!I&3{XeNcC)~{x(;RcyZtnYO^NOslZz8osGR79A3RE(F$AcXmDtCVAvn6;tQ z*`nGK61@j8KM~=CfUPN!_7?KwW)mBEsZiRsQ&gv(<1{tYs~gajX*700tEQyn3?P>C0xZqB3ex z$|vgCjV;j6GW%lY>ACsqM5njJs5^&3Wp-ZfEc02{zr>3t8A2%hBxg`BHd_K$B1V%jCrk2`&AtsDzi)@-02`CF(!j+4$llJfb%lrd5A`*g~xJBfBf`(YD%pwv0iv`w+0xA*1zy&(khv)uL=H*96y zjzv2WO?$yJ%Vk*(B-UnGBzA7lx}}>!up1!K`aHOgF1Vf!q8%l5;fvK)ZjKE~^$r`e z1Dn^gsNpI5MHySKsuw-qMsL?^>CH*;6Pw07dc=(1%GV9V-T zajeTJt5gx~8LyOU^@HUtS_}c@{zE1_>oc=J7(7LyD{=Uwh^0N?mwYG7D<0^eFlpJ! z{7(@{Ltr)4DXVl7?YetWA11T!OS3mcK=er{x~zs(ATzG}{-RRHiAbg&Jn)`clB=O? zg~$T$SrjL~ohKq`ijY5x93H2v(oHBHS@CVzJ>*I67nsP#J}WDP;Zq>*J0gzh2U}Mk z+EHzkOcDZ)3|-giQ5gkNXT$V$$|@T~JEOgMLTgEBMZW(SHURF(YPtjBcwGPCwYl7r zMI_UQq5l4d6-nKNl@Z&^(@eyzu(DIuIwky*Zu`GdQ*|sRyKPMQ*2vV|u`Y_2*ekWvFc@V2kO0L=+8y zRaBlaw_z2?_Pi_*GQ-4%pSHiJov_GZG4X`89ow&@YcvE~89%^YRNM2?OepCgU+*0- zrX@MGgdmqYnmga-EC$=Rv9e-U_|{gE+@hYIr-X(E;>0-1v(i8)A#^ghKCrk^S4?DB zjKE46h~L3tz$#encUXA9=kPat58uag(yG+Z{-|q6G}y{6h;4m+N3bkbrMd6aBMgFx zEMzrBQR_3RzNYi3yB-6D#HC=z`Eoihys4(=Qj2`nOUZMSm0plHtHdcHgI)vLn3z9$dN?RymR%tQn& z0VmWJjCpjNBBRvYqEe@`;`=T?{|0{ccD%3l-ZaEZ(I4RIaoxTmB4~($QeVwlsskpj z*s^Rf=GPFR*2lBP-(wW3g+pUxTLym0pyI(L&ccav;4nb(sVbQ0+~>e+esU?x;9t0|tK=MX z>+{k`N$vQ#h+*=Gh&~CEee4U;Ol+Cp0lT+gyc0wWb%8quxkHAqNV>6uVK8BK16fI| zFB$qusMP#UUl@QKCGLAYT%PZ683$`+?AD1BlR-u6;mFTDN2*vCSdC@{cOXkf0w$*- zsV(IRoO&`2!EwhO&Vz83xCNOZOmeRGH$)6|fqhVcR=?>+6CR2RE^OJ*exA{)k`f{G{Zo zxl*03Kv8SW7Vst9FXJ1qyD83veo|FJ&67$8a=GVl9W%8JZX1s!oCJfDO(q4_c3;Yp zJ6O~51(j=h>0?Q$=knm+(k&edb%RS)@iolvi-xp5UaHcS7-mIVG4%UQc@x(Q^|RGG zX@rHyifB7B+@&gY!GrgsSqi`p^W?*p<+ec2f1-$>b&Q^R>I2!Q{Ck$%L3Dind2_Qs zJ66Vcmi&#F_=)F69@KE7*!}wpyH%c4BNeC^vuMaSx1lYd3~cpJ65-<2T*DPj_N1;~ zu;7vWxiyH79{P;55*BDx-{?1q2wDebV1B^9thj>^)(8*mR?fHzwf81iVo7&LP$wv= zVPncXuuosne@si8wp+#EV($rqI(K|gsU@LN?$wDpZ!kHwa!hbU-dnrLf}AR2mzn4S zsebF=&h`n+1X&Rj26lne)y@3pa&PaEJWCEHdDg=$4r>ESmD}%kh=)k=Ck@=47%BBC zRzB~*Jt&!mTY>5|G0hrJf|kw<1nRCi-hNAZ>qEnurh!PkP0z#yna?&>V1i zLQ>adMM#+OFzAqJEF!22>?y?Hvppv%+{%Mt*yx=I?p`#(#Lh#pt#82*JXlUbYC)v+ zYF2)GF^QpHKw+bEAqAvWOB0{N=kYy!AJ2g-`MLLoM0c^W`35V+-p%X^Nf9QD8;@IZ zI6vz%*nFP!R1?I93rc-Uie48bwqQ}0q+9gU!P;0X5h&nV};Q6(6kXV za-h{!QvJH9DD?ss==P+>N?;8`p>VscMlO{Ud%}R*#+J`l`8jJ~3Dgu+yZQs3i|3;q zpv>6vSjjHzXNtMp3#CXCMp1i^U@h%dWp=hK<2v?xn-=LJNGf%pMMq0 zCxLATSy!#f#^H!t*~;Q}x+4n*Xo@AjYuK3Phh<_fQ<2oVETl7F6%DgF;xtnIx(G=9 z5rf(GoK6yhdUHOH(@X>Xy{m8-p4Ohs%0^Eu{+vv_3|v&=L^P z$3nr*ss(C&M<)r{v-N)EXp>nJtBTtfrhg#}^^GNiMFt^3bg*H6tyMXc-(P^mkcdqg}n`mAc=$6M${MX9se9*i}x&89a5#H zz(Nwcm*>DjNm_kT9vrQM3yP(Vv zidy|I(l3%WA;+N!O;_Uh9Vx06Ji&e@X??LBgboU{cSqBMGx@_8qce|vK-!4G${l2w z2YkbA02_4g%h?jyBYt%vh{1;2i-Hz5XdjAz=rpd!_Sn6$Jhz(|%Yf^_^{KGs)b!Yv z8lVv19wto&H7hIh8?WwSOBnaZ#I96N7m-I78QM|Ed&f%E$0LqkXjH<%C2dASd5WZdx~#=Bs+Rk+AHtUNH{k+fr3tH3w&!*uQK#5aH1yeK)=3Qr0ThX@ zOj=A5eUc}Yre{KN`(2v$6bDQu@ooU4UMtlek0M(W{K5U*64RJ0Q9quc_7|!5M5($J z<$V5WtQfXQhIS%|K~^;CFDv@{A11|Yh;_ZaM^=1&Ig%99*sf5%hs3si*6J!Lj?!Vv z>@E!aq$qH#hO$+$yKKz!q?lHOTEAv9m%H1otjf2?~qUGo*+OvBC46&7Z#ot7B^%kQof?l({q%FpdljPo6T<6rcKrG zfc3dE&8n5vV30Ca`*R<|pIx7JPe}5yu9a$!2W#$cXCa#wN~olD!?W5E>{@6h!Kr4?y)%imkvK+D$lc}Y?1XzMt3 zL-g-bJS!?hJ=KI$`*YGjOd@4X`wE`rsB(02o^6J^b*Z~m#;E{AH>^0Ou{&5)>SsyV zhXz+gtlsMfmNwt2fV0r~vp3@OghQW`HHred9H&f(XzBvD_^_f_0Y#An*RUG9q2EgJ ztk|g3Blt6S!#cD*BQ1Kq4NJc@4@Kk$TPA%D@%l>0yzXq{Qzh0i-_tX@>MU(IuYqBXmc+A_GTAW zL|T6>X)B%6O(^f8R$r4U9|U*w)6yRAfQiW+a&M{0;AeN@ElF8?h}}BXnk&d{_{FL_ zWPeuHh{+cNy7jvyz3(Jt44~cFi1;rlniaTnK_)coGt$5~hD>ygRQVv-qWDJI1MaAN zQG2)HHXy0C6>NfDmIPT~>6(A8!8PVmw7Njd11F{?!9qw9F`!{N;hZfIRb9ZcW@R5H zVfC%LLZ+^kqFFI8ckZJCO@)yZyM@vg8%FZ^`=_h$FaMO36|r^@RtIJ+ww}hDmxmzo zd!E9|dkBNy_MDj_X3co7qf)PzqSZyw^gOeyX*dfBzY`^5Qs~z#&kbQN_hb=ST@;i$ zquNjG&zmVi(H2Qc zw_{>U!fJLqh>07@yP)+#sWQ70ruTW=>9^t!wlAfD@jfk0TY~wGuMlE6e81DHgIKDr zZlUoOOR?%A@VwJvi@>>p4T<)NmkElYkVO?A)h}sq-5=N zoo>c)SwruVDnm;vKhEh$aiwudW2n_tjVzX-{(hcaJAW1!tgC>nD_BobG%Mh~^5>l^ z*aB;=ArJ2LNc|8IT7lJ8c0*QnI%NQpR-h?>2P8!s2f3so)z|S=7a-I*Qe^~ez0;t@ zY#&Yw;Sxkz{f|`HiiqfyY~AeXFN{D-oea1|37px1S4@$AD zNP=>0Cov}2LcUF^3k|J*CR!|&gn!Sj-n~(i`}x>ixTwqDC;6JbZ)07a`Z=5M8B3IS-}(WT<+id(i+D?+6LDzTJv9WGB6L2zjoSR zZzrn(Y_+=4>4iACf#t9cpS3+>CMb&@+lPC48XmqMdERX7hfLyy7~Q~{oC``dJoN&{ zg|ia4x08xMEW%)19?~Hg=$rc}wg$^--ByS8!lK{?ed1H&6Bv264mvqd+s%0U0$Weg zzE&XnorTg-B~T5v)9<86b-^ycchVfQm<;FCpG*tK2sZUGWTEVmF$+)1PQ@h_0e~5Fhn%oqEZLQxVMY19w`es_=&{%vJ_VpbY!L z>`H6!76Es02~U=`wSxctiB4`B76r7m*yJuYo=M*Wi!rSM)|n#YhY2cba*RtMmwO2- zjgGp7am-Dt&qoZC2n@-{ytsy#hP7Tu5zdbZqYEsi!`WKikpdyQn}xW|x{#aB8xNmTo#y0hHd`%o#;I7Gfbn-%L$+0l_YRwoyA_N=v>-i>7hh5Z22Up42-f zcUVsBC2ScWdb|{A9O8o;iK4Ww6vh^=Qs2TLcz2o=R&|9({XyE*3M^l<_U@SF635s` z6$=X+Sb@xd=!ztqf|@4A@+A6cRmye@8}m$7R@*wY0|IUyE3DB$&zmhpvI2Jyq%}RM zx=6zAdtm6ZX+E_O9g;iS_oYp(V1=~=ouX6zzqlLMHi}VT(>5!$)aKfBit)|@QmfV| z^#~F5IE*e`dKk<8)=tH-5U#;w$`e+f6v+ynm@iAhDHH7=`aQS7b+gzU{!W^++>s65 zY=s3o!8?`G05<~)i)W99w>TGY=>V6pQ*KFG8BbK2_5{YfOhj!(Xy~F&r469XVPRm; zuN21$?&sf4>w*mOBe{O7k%V|@CxgxHCRP{Niab-=)C!)NK84TOzTa-5Gh$W@w0fr$ z#|oZZ--pjRg*Cl|JY%=esHGxmDCzU`Pa&bGDvZ(KtE2aw^UVFv?|pKD{g3R zKvo9hZ{0WqA$jL@>eK_2QT+3Uw@~wEe~j~y#(v*%>VzT+G<{J-ZADS*lRIhQBF@Zx zq~ZR@km$^`CXeF0H+BiPLt*`WnEzw@P`9&oN<*_#Mgvk8b!uipY=Q^Du5vzqtQ2P) zaO(><)?dVuxMpk6&8}{xPH4zzF&9aC=^yebakf` zR=f<&R_^8od)i7`9}|*lTb>wOZ~OV@9{#y6an!Vzf1-TWvQGzP>sDdVb|tz1DJNWx zuv58uP*^g~HO> zgC*t^R{IndWQzeWue5?K;Y&NUn(P!-l}=$fh2<1hiwY|=^ed;ZI!jy;Wc@=LC^8k0mp^QE5`w=b6keo zJEgFyiKC5AN6kc912@7y(wv9IKko@tgTzrBJ4|$4r%Zjxueqbq@g@P$^SPb2w`0IM zg+=kbcl8$&Cg$v;#k2-_uu38w0ytY3E6WW7-p@ku4>23odhB& z7KwhW4BjAZY6T8H>r_J{ND3Obe_DeddmE zX1ns7ni21m8UD*s94o@SeoZ?DOx6`v?Z%?A@#e|vtl-c7xKq{(+)%hgg(iDG*#h}~ z)e^Hmr<*AX`*J9(&!tr>gOa~=zO<D8;b?CkgQ2+Bw}RD6zs) zs$X7{NVHR7#fu)A2Fty@N6PEQq0<-GLRkf*4is~_7fO+=-~s*nPVIGUH{k`s8=Mts z^?^>sZ)Sq9O1QH(R0e^s=JIFubt)eXjlmsqVBO;SgJxjP(!+RQEuU_;Fm8L3U4?~X zr}^2xmseR)_Pl>Zo>rW%WqC%sDfQmk=)5j~%b410zR>S^()iz5Ji9LKRQzTp7;9!t zs~TkpulN0@aHrkYsSX*hW*WUO(0Yy($%=@)ukYXiHl1!E1_RgqcJA!IV%PbyvD~)M z|9w$=4Hqrijdm(5SWSUa@0C|sfvr*KN1X^6fTD!{7Ww`|q)6ki#`7KSAei0B*ibcOqb_N5Z)N0r zslKZIUN)-Yg{h*>y}HbmMB~{$*zLq^y*w!Q3=+Lk+IAe!5!nC#Z97)sT4nrhQdd_? zWXAvw8zi+33dZ(~b}*jVNS!T3=m^@Suwv_q)D3K%JXl^e4oEEKiQ>9WDy&_L7LKy@ z^m!?g6@gEEn4Hr%j$zrtbuVCX2!T8d=rkvfRV%B3Z%i`+Gat zf7?lnVOWj@<1Ltl+gey*ZRu3}W+oWl>88~uq;0JTlzKC)oKD3l@Ls&12WLaYI;hlq zEDp@nOqy1OCH;L{!I-DZYph^J@Skvv$9{jNh_>eOxwowK%cV$GU?M|X*`CqutjPeo z4G^q*Fwg9vYyeFqrNcEmBro*5SFjbfr&BA1V7wC2WW@^YRV44`nQ~v#s<0>l>R> z0NnJMlC_Oh%bUsw2S|~|A-<}P)Ja~e{x*|wk(p+kbf#%#qg9rX zeE#9A#S8M;jt~t4_k-KxSyC)3ib|adB|H-gC23Sxuuj>{IKVE(3GxanaE=;s-#QsC zf!i8s-S9rb^*BjF(@0vqq}pj3154$`posLPX-zl-W0R89p5Z2nAk_M@PR^!aY}OMk zlOkDxqiEO~Ts0Fr6w;`$P^W!s=KaVY>;- zk=y@vsV)Yp`cj&+-Qzr`*m}{glPX&gkhiSU9Tb)>52m$^tU(|&>K!v-Wu;AFVbz!i zcGH}Jrd%miz}_hOS1CgK65)aq(u+MhKYOq;@rt*a(CC<92Sj`I^O z&zLD9=Z@<=JVf+(DV7!d*&la$qHQP9X6$tw9J@#!#mwHxf!c1yc{HT1zG(5{f0AmC z!)o7u40n)Xr?Z7?`9Y%%$_f;SRgtpH|&;@)=!mcTftV#C7tf5P(YYK zij+G^id7d}rz>KmVtLMVFii?8KDp!2nYs>Gp)G;}Xy-)G3h!COmIb?eQY+S72Ydj4K3(CBDkfT~1E?97cJl2X^XP^2&miu2iJ!wG!ai85CnEKb}1Kj?n zqpzfOYn>PxJD`}Q%2lwhezRPNkXni_{7tE{6=l==JeI|dsm|t8Wn`+ZVL_==rD%1* zo%a2xTRY+{X;4@g{QTVmMeS*MWL>ZY_8+lw>#zc-9_pz6hNEqyXjZUXex2s{RlEqr z#uUOeQspWlQs3+Jl773nd11Uf`u7#{<~>ZRJr0OputvW&39^v5;^4XlXEgyh^PS6l zc{>(Px?N#GiDN()$!mBXI#4j?(LAB8Ny5a9G6&>+R*Gf?j+*|w92nV2_a$WZp{Q4KW0*G-YA=cJT!pkUX^=+y0LEz{T zR6eb~aE-AdBKnL}+lql)?m2OWa{^{AZ2BDW&8}vbQ~=m#IAruLta475(&}b~g%#8x zL&F0~y;vSq7lE%{%Fpk3C;+TZI_ef!&Qd%p*v0*R+Kmj_whvWHSRXv`oPw3tARbinYGxrV> zHC<_4?)wknN$fgIX47e%PL}9*tgzlM#j~R1d5`6?7CL!`Tf2!gt5_cyvp}kS5Ce1O z9L68IBkh5AnA^;KgU#GRt=|OY*2%=dLkY!EAl2}qiW=A&`zXqe0Y23M*o_Jc+3ZmA zY;iU`NwkK7R-cGxa?7)3no`FdMPr^R#j_&vsSg$;7H7sjBQ1ai=1<%eu z?euc)Oi)huZ0Hu27xx~?pN*1|>VcIm%r=DbbU{~qgP*_Q^D%!>B zW=dLFKDqayQgtiXQuz`(knI^WO;}1;HRORcv|i1BffTVJ3gmqp?FmIUSxc*%6c&`# z&P9ErMWwzfUu}r6ukXo2zFv=&sHs|_(?JB!<9s?IBSo}gWZ}Z2*aH}9SMFU>h`!6N z@pq-#;}PiIIq2MJUUdNB8?)tfpxh)cC-S`6th_sVM%JOkpn?M7^8XDn3@K(qgj&6q z2l|0HbAHV8T4A>+EGVnkJ5cHejV>Ii0q6L$Vz?$rIZSbURnzkOj!~%tY*UFhzFVG= z7NTxwPxgfBUoZ?eC?GYM6gQ}ythxx1WEl>+@;hq zjx}rASKzjns@oA6`fbt%Xgdf?k~_)Pp?vOWsk#+7+G8ZoR;T3|ogz|CVx`4{Zgg24 z|9%XDT<&E>(Nx&h*Vk~{O$~!ueGGkkB64UqVyR2)zhJ>5rTSJNm#5vw zxJ-taWn;3tUV=Lnv=1wT3dKPtB6c#M2Br2<#brrT^T`B$P>SyiGN(<4a z**Mrg?u3SV;LiWcESQ~OtguMk+H@NPtStU)l44mkqJgW62x-A3t9IZs;5|} zuVM8KF{`At8^%{`wKqAW58!&dABmz_7?WZ}{#dHs97DJbnrMI8S0ZYxSy_#)EC)ht zF6Kd#RJout@8C|&6VBZOTEAL~-4qqye;j|mm?njVqgRHEiBnRN+FsJ{{?3ZE;YkuW zbdbkm0hWjDIcXv$Uc`%etTnvp`hGxC9c%Pk(!Q^-Mhx^=NJhO@L{Jyp!7fa?yNrRr z%4d67>x1WDHvld<;O~Xqtgw(j2)7BJFB)%NMeCKwdQYlF0wr2iw9PkXM?~*KJ7mGS z!ah*8gm(-n^$e+gYhZXFi&AD+{c}wRixpFB!E|ia!qBuCRCl z!76EqKl3L9rBRP0#u;lw`MAv6SYbV1s#q6Ar9PL1l|c{|WOYNgZn|PR4x>w#9)?Ig z%vRgO)5z+kXti#jukTSJ1}hMxjz>Yr2SBorrfcuQTWkEN01#x6E zkGtF9#&=u4nk=E1*)U=S?adQ0Ob+Z8o|`4J6ol}wDpN3~>FJ(9ynEj4#_VZ(R?>;d zNLCZAe|HLNdMK0N70q^300r_sxP4(Z(im#Q6@2W`-G;*kL=2Nd=*Ks)WXd!Ju?>ei z%(_+%$}13k2puwwuCr5EQ)hK21(mURS*lbQfichHew3L&dyQ}hS)n&PIi)4Y_J%v5 z0c|fzGhtb>319z+Rsl{*h=_iT<6dmf>1H~GH8rBlY<=%VJXoqz7uf#A?)g=6v`S`( zZBr#fyV;{@ZL@PTgj#<%Yi=P3s}eI^E1j*V)RTA?U7xnNgHu?OCoFEn35(?Yw^XGe zxSySgcxaXuxj-2+*NYgYjy|{x=_ahpfYdLm(r651 z$|GQJTXE|~I)ybkLT>El{AEj%BxC>=;^i8)f(?pR=(acNOYnUy&-Ug6%W|WSviSeED>TVkau${xoML^ zNc1cou-m&SmN4DK0LE2l%?|qma6S`TST}aFx$hKKb3$1`=?v%n-Ryqpvg3aA>nx9>c)K5|5;oq8SlWY(*a4JIC&|kW(qdJ9EpUBa}$sU1Gi=?Pc!OH6Wh=pc(!jCiC zHSH>R`C~;a?M2b3B`|}tJVVr6fr`=F1Km4EMAHyB!nb0~b(mecMRrbM*@^f|S?lsZ zuJsizw#eT&Y~rmt)@Npg=>IH>3q&mK2QH~7kotS8*PW-8P+D8qHLMsag`W2c5l=%P zJ%k6~uh3}SFv~iHb$?=_LEEvFaMyque|l>@gi7@z&XvVX_Ctw2U)Hq0NT}wvyj(;xbHME~{Nl`8Sv5+I*2-3u7Em&@3^OiV%cOQ> zr?9G%650t9bfoq9tByau<=eFfds$f-J%VwPb!7$XDz-55WJEkOi$JM2R~yk@z^oC2 zyQKBXbv-=+d=G>0&lC|gML_iL+=v^KdZdU`Sk-vdu+cklBf1o+B_M&6zc+%(EbGb& zghx>%@7iS(y~1m{fV02@Qg=Bk>mcDC4jZ$ImHA6WOii&t>zA`%|2M=&lICJ(Sz)0q zaK>51r+=*XyaiI6mQd8*VrN+$q*zx61}WDW>#By3=s%p5b$`Z6%QvM#t(#spP(zT* z{Yypb@1uh!>3Eu~DlE9^ICZvc=tmWQ{^O)5EupB?$vgq=b1|!fgpOcYTq`2#9D?JP z9L}A|#j*||I%&Lm=+mZva!n8aI}~i0y%TN(T*M?y0$Ed7u&PjJwvtN)rB0P1w2aWu znLOd_L9E6pt14k#VG{1RbyY*8)ax-Ll`MtLD$!Xn!;ToelRN%9L{u$-XXqCU8FLi| zP8_5h^X!>qmJ}A+3-P9k(Z3k%?QM9y|5)IJj-sJ2U^u-}Xaz=yEe97>~8v8^m9EIb$SLsnE9 z5aN*6wv5dS7Cf@z>kD@9z~pB*WpxN459YooPp=elB?H{46lNBff3|{WmFT><9lEM? z=t7*}AR=oCq1G?r2EP<8H!J|#JKD)KD=hR?)Q^Ae=E>pfVea5<*sWq6(eq1M|21AP zvAiSegk0Fe_=$)sSqMnQ8QivlXPx)0I2pP<$mL!pB5N5HtzS1}^ePOnnRFA=sIbr$ zaQz@hOa`If+Af8$z)Ijo-$b}W(Dt6J69x=V)>}(TJy%4QEQCtEm^;AstnZa-#Oey7 z-c&MXsfev*gbVtPh>ZC-%XlLuhMACaniLik6~Y#` z3uveGozIKdk_i+rtLIapMb3*D}`dj1{p9!vkguWZh21l?H_c z*AEj#981)6L&c|mZ{+|+8wz>v*db%Cgj`S_r>yKmN(gS7TJ6uBPzYqkft!-Kz#BRd zZ|N4IlVcF!P(M~Ww-vRX)S1>;O)MGu9zSC<22eX(#cozukO#`omeqd#{}n9f#gkQ3 zKt%Lbe%3}j)8!r3Cu9?6_nV2Qg>(em!QO}52;|Z9p z|KmiA-2qvS&)jX%lV#0}W|{4)82UOl_@pnE#Em^X$WLOo^OCZm%?Qxr+2~9Yb!ECi zVZpuTzwcqWeHrfc=(1T;-du}Yyi1z?xRtFc#2jt!bsSGzZ5L>Dj)<|l5D+axhj;#d z>x4^#K>CoO0k)VUc=xQE-J7IN!82qhR4Beox;HL542iCl7axV3u zV7L4k>_&c#mEdl82rjp(HNsPfFIpzLd-Vi!4HJWMZ|_67GRtM-qqU-rc4AhCRWxk$ zpG(G&h;-6GmVG(z9m|&QSrx4>=XY#HP#Ve+9c}FUYwRY4HI*A!)-ULPB)gICXGIml zB5mY;I*uo-+>O3D5UAGAw@)Mr#yf!r#xA%cwu(B|Cua9pY4PA;YwH)0F(-&vr;M;K z_hcla7Ky&W*4M2(p&YPT!ri2>hCS~I@|BjcBA5FYmg~FOs#;k~eXza5u`y#;P^lk? zSi2kS(|+1zz)zl-y`VVQUEITp>%yUF-j~IL^{K3|Dzqa$O(j`A-z_b~oe<^W|>UaB4(+tERZveYu#eBQ+hTH*Vv>%g-;`^0?Bb zu*&(~r(q?PzqhuQ_3jka_(C%qRa%0vA#T5t6O)Sgn%Rc=F z4geHUPZ)^(@N>enDlDYgL`1JF8}oJKsv$=UgUl(asS}=4f#`e@b-KV>_yZVdE}vz3 zh}jKR0!(rqh^u&Df2L^63q{;5BP|N6GXMT3gW~iBR_gCycjZqJlswnPO_f}(XpYY!{Vo*V;L%EOrp5x?MT?o?qiqw0eG*ddU&h$JpGOC0DW)pInkfC?+3<513~mN&KatM`YXbusGUxx_8xq~kKYtu5_2x+H zg>0FWyEU!Bab}2#0hT*Y4#9xu{i`%jHn5`qm(@! ztg!akKI;^gV~v>5n0o`QJ!zV3q0CykY-kW#8`|3@B**p=7B1YWdX}zJSdJjv?CRu3 zACzXvCJIXR4jH}2=8iaao=#yof^pnR(~moL&3uwDXy{#7es)XG$)i(P*(N+6^Z~ZO zZz~w{XlW9Mkm#E@Ilu+slSQYnvddbKeaP3v0o`+qG=~Ea?>8j6+-;Ih7M;S%E|DTK zjMGDjlr)9Ip%@@~e97oL<3VB(pySNbDXeS~E6MSeC)FhvNpuPU(eqhYA@;{PrPX;l zg_S*4R|FBBQJ;_|aA*WJK~F4e+9`X)tU`6189IfPEh2_|&!RqzyYolgieT#qwD&qB zskwBAnImRaxB`e>V6uRfJG$hg(Wt|>_d10&Gla6*xd`DH^&7;LMf?t}0v9nN-2rxBME3e;#o|l&<=?F?ny)@Knms42n zCHe%n`watqeUB2+J4_Tstv`T)gaKz0vg3FjYANC5hWPduqj$3+`bSZzOZYQiWCid! zR!C|*Y8}rqhe`<&GIVCo6ViMp9Zq?dc?r0IY!&Jf6z*iwy zr?d{bc!)7UCb&W!a*4EBUDEpeqW0ca&gYL!t7*T26>sGGj|p||cvf7eu!VSTNzUylirGtST#(-Q5GZ+;c>{4%3B@ysu!~vWLlLM>No70 ze{Ar)XNwpdW(sV1oLyVuwlz-D33mkXsQ6$sO(R3bd^6Pgc&VPl3?f*v)76x}(+(t}_m=Jla{H0*b)1}%DGYwW+@577;3&qw@NhCTC6crS0#n4TWR{t6K zeoI$!IkX@D$5w4*OfJ&;9B!+%HR~6Nt7to0n`w^WSD-#R-v37QV$F_OrTnUbcoFf-TE5m>R_HRSv6T<*_yd$qa@aHSAi}=13ra1OVmc%lYdr63V3FF_fWq}?92+VRS4UJB2qWia=T_aH3EH5Qe)N?jCX<*&7m8B zU^aK4FTgE>dEBnJ7G_ht1B!|}%5Y%lv+MmHx8j#kAXdZ{*Fv_ef5VgI0a;+N_MPcu zEx68o@XEVg+CujtH0m8gM(==`Y-{ML5UwATRY}ubMMEDd=Upbc!$GjpS}<(%rL3^_ zwA0#$WnT?JsBf>zAMaKIyB#>=X~;LLPeW<+3!C@RC zqE|**U%-9mKx~OmqvDcy)%G&cY4SRUGyrZ|$PJi#-zyvQqjkNDkCewcq!l=$oIA;SnW3zm z0)!QI-%O@yU8wbIu<_c#VX7GA$ulJSf84K@L-`;cYU_iC5{eCpphL!NVK?(#@+gNa zV9@iPQ1SK8(OEEK**XZ$qCzHfS?lxG`}5r%EQe`FxwrSBMWap+4Gmyov}MlMvexl; zb|G_IYJJv5-@h|bs#kvP;Ls5uhl`cgttG8Ly<*-xw__s4 btXcmbTG6qQZ0LMh00000NkvXXu0mjfx4I7T literal 0 HcmV?d00001 diff --git a/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png.meta b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png.meta new file mode 100644 index 000000000..21b191a4f --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png.meta @@ -0,0 +1,153 @@ +fileFormatVersion: 2 +guid: 5330de67d64a34e109f6a3acb6986814 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/ExampleWidgetBundle.swift b/OneSignalExample/iOS/ExampleWidget/ExampleWidgetBundle.swift new file mode 100644 index 000000000..2edbef044 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/ExampleWidgetBundle.swift @@ -0,0 +1,16 @@ +// +// ExampleWidgetBundle.swift +// ExampleWidget +// +// Created by Brian Smith on 5/29/24. +// + +import WidgetKit +import SwiftUI + +@main +struct ExampleWidgetBundle: WidgetBundle { + var body: some Widget { + ExampleWidgetLiveActivity() + } +} diff --git a/OneSignalExample/iOS/ExampleWidget/ExampleWidgetBundle.swift.meta b/OneSignalExample/iOS/ExampleWidget/ExampleWidgetBundle.swift.meta new file mode 100644 index 000000000..c11dd5bac --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/ExampleWidgetBundle.swift.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: 5b4b5ae244087446083c871541cf53b3 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/ExampleWidgetLiveActivity.swift b/OneSignalExample/iOS/ExampleWidget/ExampleWidgetLiveActivity.swift new file mode 100644 index 000000000..5291428c7 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/ExampleWidgetLiveActivity.swift @@ -0,0 +1,66 @@ +// +// ExampleWidgetLiveActivity.swift +// ExampleWidget +// +// Created by Brian Smith on 4/30/24. +// Copyright © 2024 The Chromium Authors. All rights reserved. +// + +import ActivityKit +import WidgetKit +import SwiftUI +import OneSignalLiveActivities + +struct ExampleWidgetLiveActivity: Widget { + var body: some WidgetConfiguration { + ActivityConfiguration(for: DefaultLiveActivityAttributes.self) { context in + // Lock screen/banner UI goes here\VStack(alignment: .leading) { + VStack { + Spacer() + Text("UNITY: " + (context.attributes.data["title"]?.asString() ?? "")).font(.headline) + Spacer() + HStack { + Spacer() + Label { + Text(context.state.data["message"]?.asDict()?["en"]?.asString() ?? "") + } icon: { + Image("onesignaldemo") + .resizable() + .scaledToFit() + .frame(width: 40.0, height: 40.0) + } + Spacer() + } + Text("INT: " + String(context.state.data["intValue"]?.asInt() ?? 0)) + Text("DBL: " + String(context.state.data["doubleValue"]?.asDouble() ?? 0.0)) + Text("BOL: " + String(context.state.data["boolValue"]?.asBool() ?? false)) + Spacer() + } + .activitySystemActionForegroundColor(.black) + .activityBackgroundTint(.white) + } dynamicIsland: { _ in + DynamicIsland { + // Expanded UI goes here. Compose the expanded UI through + // various regions, like leading/trailing/center/bottom + DynamicIslandExpandedRegion(.leading) { + Text("Leading") + } + DynamicIslandExpandedRegion(.trailing) { + Text("Trailing") + } + DynamicIslandExpandedRegion(.bottom) { + Text("Bottom") + // more content + } + } compactLeading: { + Text("L") + } compactTrailing: { + Text("T") + } minimal: { + Text("Min") + } + .widgetURL(URL(string: "http://www.apple.com")) + .keylineTint(Color.red) + } + } +} diff --git a/OneSignalExample/iOS/ExampleWidget/ExampleWidgetLiveActivity.swift.meta b/OneSignalExample/iOS/ExampleWidget/ExampleWidgetLiveActivity.swift.meta new file mode 100644 index 000000000..7ba061680 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/ExampleWidgetLiveActivity.swift.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: eee3df79e4a3b45208880907b672c964 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/OneSignalExample/iOS/ExampleWidget/Info.plist b/OneSignalExample/iOS/ExampleWidget/Info.plist new file mode 100644 index 000000000..f42024eb2 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Info.plist @@ -0,0 +1,29 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + ExampleWidget + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 5.1.6 + CFBundleVersion + 2 + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + + + diff --git a/OneSignalExample/iOS/ExampleWidget/Info.plist.meta b/OneSignalExample/iOS/ExampleWidget/Info.plist.meta new file mode 100644 index 000000000..3098607f2 --- /dev/null +++ b/OneSignalExample/iOS/ExampleWidget/Info.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fd871a90f3ce4bf3875c717afe6ef95 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.onesignal.unity.android/Runtime/AndroidLiveActivitiesManager.cs b/com.onesignal.unity.android/Runtime/AndroidLiveActivitiesManager.cs index 33311e0e1..a97f7de5b 100644 --- a/com.onesignal.unity.android/Runtime/AndroidLiveActivitiesManager.cs +++ b/com.onesignal.unity.android/Runtime/AndroidLiveActivitiesManager.cs @@ -40,5 +40,25 @@ public Task ExitAsync(string activityId) { SDKDebug.Warn("This feature is only available for iOS."); return Task.FromResult(false); } + + public void RemovePushToStartToken(string activityType) + { + SDKDebug.Warn("This feature is only available for iOS."); + } + + public void SetPushToStartToken(string activityType, string token) + { + SDKDebug.Warn("This feature is only available for iOS."); + } + + public void SetupDefault(LiveActivitySetupOptions options = null) + { + SDKDebug.Warn("This feature is only available for iOS."); + } + + public void StartDefault(string activityId, IDictionary attributes, IDictionary content) + { + SDKDebug.Warn("This feature is only available for iOS."); + } } } \ No newline at end of file diff --git a/com.onesignal.unity.core/Editor/Platform/LiveActivitiesManager.cs b/com.onesignal.unity.core/Editor/Platform/LiveActivitiesManager.cs index 60a8bfb01..a1034dc86 100644 --- a/com.onesignal.unity.core/Editor/Platform/LiveActivitiesManager.cs +++ b/com.onesignal.unity.core/Editor/Platform/LiveActivitiesManager.cs @@ -25,6 +25,7 @@ * THE SOFTWARE. */ +using System.Collections.Generic; using System.Threading.Tasks; namespace OneSignalSDK.LiveActivities { @@ -36,5 +37,25 @@ public Task EnterAsync(string activityId, string token) { public Task ExitAsync(string activityId) { return Task.FromResult(false); } + + public void RemovePushToStartToken(string activityType) + { + + } + + public void SetPushToStartToken(string activityType, string token) + { + + } + + public void SetupDefault(LiveActivitySetupOptions options = null) + { + + } + + public void StartDefault(string activityId, IDictionary attributes, IDictionary content) + { + + } } } \ No newline at end of file diff --git a/com.onesignal.unity.core/Runtime/LiveActivities/ILiveActivitiesManager.cs b/com.onesignal.unity.core/Runtime/LiveActivities/ILiveActivitiesManager.cs index c4b7b8389..61a8f02ef 100644 --- a/com.onesignal.unity.core/Runtime/LiveActivities/ILiveActivitiesManager.cs +++ b/com.onesignal.unity.core/Runtime/LiveActivities/ILiveActivitiesManager.cs @@ -25,6 +25,7 @@ * THE SOFTWARE. */ +using System.Collections.Generic; using System.Threading.Tasks; namespace OneSignalSDK.LiveActivities { @@ -43,5 +44,54 @@ public interface ILiveActivitiesManager { /// iOS Only /// Awaitable boolean of whether the operation succeeded or failed Task ExitAsync(string activityId); + + /// + /// Enable the OneSignalSDK to setup the default`DefaultLiveActivityAttributes` structure, + /// which conforms to the `OneSignalLiveActivityAttributes`. When using this function, the + /// widget attributes are owned by the OneSignal SDK, which will allow the SDK to handle the + /// entire lifecycle of the live activity. All that is needed from an app-perspective is to + /// create a Live Activity widget in a widget extension, with a `ActivityConfiguration` for + /// `DefaultLiveActivityAttributes`. This is most useful for users that (1) only have one Live + /// Activity widget and (2) are using a cross-platform framework and do not want to create the + /// cross-platform <-> iOS native bindings to manage ActivityKit. + /// + /// Only applies to iOS. + /// + /// An optional structure to provide for more granular setup options. + void SetupDefault(LiveActivitySetupOptions options = null); + + /// + /// Start a new LiveActivity that is modelled by the default`DefaultLiveActivityAttributes` + /// structure. The `DefaultLiveActivityAttributes` is initialized with the dynamic `attributes` + /// and `content` passed in. + /// + /// Only applies to iOS. + /// + /// The activity identifier the live activity on this device will be started + /// and eligible to receive updates for. + /// A dynamic type containing the static attributes passed into `DefaultLiveActivityAttributes`. + /// A dynamic type containing the content attributes passed into `DefaultLiveActivityAttributes`. + void StartDefault(string activityId, IDictionary attributes, IDictionary content); + + /// + /// Indicate this device is capable of receiving pushToStart live activities for the `activityType`. + /// The `activityType` **must** be the name of the struct conforming to `ActivityAttributes` that will be used + /// to start the live activity. + /// + /// Only applies to iOS. + /// + /// The name of the specific `ActivityAttributes` structure tied to the live activity. + /// The (OS-provided) token that will be used to start a live activity of this `activityType` on this device. + void SetPushToStartToken(string activityType, string token); + + /// + /// Indicate this device is no longer capable of receiving pushToStart live activities for the `activityType`. + /// The `activityType` **must** be the name of the struct conforming to `ActivityAttributes` that will be used + /// to start the live activity. + /// + /// Only applies to iOS. + /// + /// The name of the specific `ActivityAttributes` structure tied to the live activity. + void RemovePushToStartToken(string activityType); } } \ No newline at end of file diff --git a/com.onesignal.unity.core/Runtime/LiveActivities/LiveActivitiesSetupOptions.cs b/com.onesignal.unity.core/Runtime/LiveActivities/LiveActivitiesSetupOptions.cs new file mode 100644 index 000000000..ae2a5fb31 --- /dev/null +++ b/com.onesignal.unity.core/Runtime/LiveActivities/LiveActivitiesSetupOptions.cs @@ -0,0 +1,47 @@ +/* + * Modified MIT License + * + * Copyright 2023 OneSignal + * + * 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: + * + * 1. The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 2. All copies of substantial portions of the Software may only be used in connection + * with services provided by OneSignal. + * + * 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.Threading.Tasks; + +namespace OneSignalSDK.LiveActivities { + /// + /// The setup options for . + /// + public class LiveActivitySetupOptions + { + /// + /// When true, OneSignal will listen for pushToStart tokens for the `OneSignalLiveActivityAttributes` structure. + /// + public bool EnablePushToStart { get; set; } + + /// + /// When true, OneSignal will listen for pushToUpdate tokens for each start live activity that uses the + /// `OneSignalLiveActivityAttributes` structure. + /// + public bool EnablePushToUpdate { get; set; } + } +} \ No newline at end of file diff --git a/com.onesignal.unity.core/Runtime/LiveActivities/LiveActivitiesSetupOptions.cs.meta b/com.onesignal.unity.core/Runtime/LiveActivities/LiveActivitiesSetupOptions.cs.meta new file mode 100644 index 000000000..e495f73b6 --- /dev/null +++ b/com.onesignal.unity.core/Runtime/LiveActivities/LiveActivitiesSetupOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 193ac3457a1c944a39943c880026f1a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs b/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs index f2a0c64c5..a868cee9a 100644 --- a/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs +++ b/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs @@ -127,7 +127,17 @@ public class OneSignalExampleBehaviour : MonoBehaviour { /// /// /// - public string liveActivityToken; + public string liveActivityIdToken; + + /// + /// + /// + public string liveActivityType; + + /// + /// + /// + public string liveActivityTypeToken; /// /// we recommend initializing OneSignal early in your application's lifecycle such as in the Start method of a @@ -141,6 +151,9 @@ private void Start() { _log($"Initializing with appId {appId}"); OneSignal.Initialize(appId); + // Setup the default live activity + OneSignal.LiveActivities.SetupDefault(); + // Setting ConsentRequired to true will prevent the OneSignalSDK from operating until // PrivacyConsent is also set to true OneSignal.ConsentRequired = consentRequired; @@ -416,10 +429,28 @@ public void ToggleShareLocation() { * iOS */ + public void StartDefaultLiveActivity() { + _log($"Start Default Live Activity with id: {liveActivityId}..."); + + OneSignal.LiveActivities.StartDefault( + liveActivityId, + new Dictionary() { + { "title", "Welcome!" } + }, + new Dictionary() { + { "message", new Dictionary() { + { "en", "Hello World!"} + }}, + { "intValue", 3 }, + { "doubleValue", 3.14 }, + { "boolValue", true } + }); + } + public async void EnterLiveActivityAsync() { - _log($"Entering Live Activity with id: {liveActivityId} and token: {liveActivityToken} and awaiting result..."); + _log($"Entering Live Activity with id: {liveActivityId} and token: {liveActivityIdToken} and awaiting result..."); - var result = await OneSignal.LiveActivities.EnterAsync(liveActivityId, liveActivityToken); + var result = await OneSignal.LiveActivities.EnterAsync(liveActivityId, liveActivityIdToken); if (result) _log("Live Activity enter success"); @@ -438,6 +469,18 @@ public async void ExitLiveActivityAsync() { _log("Live Activity exit failed"); } + public void SetPushToStartToken() { + _log($"Set Push To Start Token for type: {liveActivityType} with token: {liveActivityTypeToken}..."); + + OneSignal.LiveActivities.SetPushToStartToken(liveActivityType, liveActivityTypeToken); + } + + public void RemovePushToStartToken() { + _log($"Remove Push To Start Token for type: {liveActivityType}..."); + + OneSignal.LiveActivities.RemovePushToStartToken(liveActivityType); + } + #region Rendering /* * You can safely ignore everything in this region and below @@ -466,7 +509,10 @@ public async void ExitLiveActivityAsync() { public void SetOutcomeValue(string newVal) => outcomeValue = Convert.ToSingle(newVal); public void SetLiveActivityId(string newVal) => liveActivityId = newVal; - public void SetLiveActivityToken(string newVal) => liveActivityToken = newVal; + public void SetLiveActivityIdToken(string newVal) => liveActivityIdToken = newVal; + + public void SetLiveActivityType(string newVal) => liveActivityType = newVal; + public void SetLiveActivityTypeToken(string newVal) => liveActivityTypeToken = newVal; private void Awake() { SDKDebug.LogIntercept += _log; diff --git a/com.onesignal.unity.ios/Runtime/Plugins/iOS/OneSignalUnityBridgeLiveActivities.mm b/com.onesignal.unity.ios/Runtime/Plugins/iOS/OneSignalUnityBridgeLiveActivities.mm index b46a72b45..c6273fb1c 100644 --- a/com.onesignal.unity.ios/Runtime/Plugins/iOS/OneSignalUnityBridgeLiveActivities.mm +++ b/com.onesignal.unity.ios/Runtime/Plugins/iOS/OneSignalUnityBridgeLiveActivities.mm @@ -29,7 +29,9 @@ #import #import #import +#import "OneSignalLiveActivities/OneSignalLiveActivities-Swift.h" #import +#import "OneSignalBridgeUtil.h" typedef void (*BooleanResponseDelegate)(int hashCode, bool response); @@ -57,4 +59,60 @@ void _oneSignalExitLiveActivity(const char* activityId, int hashCode, BooleanRes withSuccess:^(NSDictionary *result) { CALLBACK(YES); } withFailure:^(NSError *error) { CALLBACK(NO); }]; } + + + void _oneSignalSetupDefaultLiveActivity(const char* optionsJson) { + LiveActivitySetupOptions *laOptions = nil; + + if (optionsJson) { + NSDictionary *optionsDict = oneSignalDictionaryFromJsonString(optionsJson); + + laOptions = [LiveActivitySetupOptions alloc]; + [laOptions setEnablePushToStart:[optionsDict[@"enablePushToStart"] boolValue]]; + [laOptions setEnablePushToUpdate:[optionsDict[@"enablePushToUpdate"] boolValue]]; + } + + if (@available(iOS 16.1, *)) { + [OneSignalLiveActivitiesManagerImpl setupDefaultWithOptions:laOptions]; + } else { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"cannot setupDefault on iOS < 16.1"]]; + } + } + + void _oneSignalStartDefaultLiveActivity(const char* activityId, const char* attributesJson, const char* contentJson) { + if (@available(iOS 16.1, *)) { + NSDictionary *attributes = oneSignalDictionaryFromJsonString(attributesJson); + NSDictionary *content = oneSignalDictionaryFromJsonString(contentJson); + + [OneSignalLiveActivitiesManagerImpl startDefault:TO_NSSTRING(activityId) attributes:attributes content:content]; + } else { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"cannot startDefault on iOS < 16.1"]]; + } + } + + void _oneSignalSetPushToStartToken(const char* activityType, const char* token) { + NSError* err=nil; + + if (@available(iOS 17.2, *)) { + [OneSignalLiveActivitiesManagerImpl setPushToStartToken:TO_NSSTRING(activityType) withToken:TO_NSSTRING(token) error:&err]; + if (err) { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"activityType must be the name of your ActivityAttributes struct"]]; + } + } else { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"cannot setPushToStartToken on iOS < 17.2"]]; + } + } + + void _oneSignalRemovePushToStartToken(const char* activityType) { + NSError* err=nil; + if (@available(iOS 17.2, *)) { + [OneSignalLiveActivitiesManagerImpl removePushToStartToken:TO_NSSTRING(activityType) error:&err]; + + if (err) { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"activityType must be the name of your ActivityAttributes struct"]]; + } + } else { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"cannot removePushToStartToken on iOS < 17.2"]]; + } + } } \ No newline at end of file diff --git a/com.onesignal.unity.ios/Runtime/iOSLiveActivitiesManager.cs b/com.onesignal.unity.ios/Runtime/iOSLiveActivitiesManager.cs index e58f9f3ae..41415f7b8 100644 --- a/com.onesignal.unity.ios/Runtime/iOSLiveActivitiesManager.cs +++ b/com.onesignal.unity.ios/Runtime/iOSLiveActivitiesManager.cs @@ -25,6 +25,7 @@ * THE SOFTWARE. */ +using System.Collections.Generic; using System.Threading.Tasks; using System.Runtime.InteropServices; using OneSignalSDK.LiveActivities; @@ -32,9 +33,14 @@ namespace OneSignalSDK.iOS.LiveActivities { internal sealed class iOSLiveActivitiesManager : ILiveActivitiesManager { + [DllImport("__Internal")] private static extern void _oneSignalSetupDefaultLiveActivity(string optionsJson); + [DllImport("__Internal")] private static extern void _oneSignalStartDefaultLiveActivity(string activityId, string attributesJson, string contentJson); [DllImport("__Internal")] private static extern void _oneSignalEnterLiveActivity(string activityId, string token, int hashCode, BooleanResponseDelegate callback); [DllImport("__Internal")] private static extern void _oneSignalExitLiveActivity(string activityId, int hashCode, BooleanResponseDelegate callback); + [DllImport("__Internal")] private static extern void _oneSignalSetPushToStartToken(string activityType, string token); + [DllImport("__Internal")] private static extern void _oneSignalRemovePushToStartToken(string activityType); + private delegate void BooleanResponseDelegate(int hashCode, bool response); public async Task EnterAsync(string activityId, string token) { @@ -49,6 +55,36 @@ public async Task ExitAsync(string activityId) { return await proxy; } + public void RemovePushToStartToken(string activityType) + { + _oneSignalRemovePushToStartToken(activityType); + } + + public void SetPushToStartToken(string activityType, string token) + { + _oneSignalSetPushToStartToken(activityType, token); + } + + public void SetupDefault(LiveActivitySetupOptions options = null) + { + string optionsJson = null; + if (options != null) + { + optionsJson = Json.Serialize(new Dictionary + { + { "enablePushToStart", options.EnablePushToStart }, + { "enablePushToUpdate", options.EnablePushToUpdate } + }); + } + + _oneSignalSetupDefaultLiveActivity(optionsJson); + } + + public void StartDefault(string activityId, IDictionary attributes, IDictionary content) + { + _oneSignalStartDefaultLiveActivity(activityId, Json.Serialize(attributes), Json.Serialize(content)); + } + [AOT.MonoPInvokeCallback(typeof(BooleanResponseDelegate))] private static void BooleanCallbackProxy(int hashCode, bool response) => WaitingProxy.ResolveCallbackProxy(hashCode, response); From cec20009fecdf33a9f113118996c2ad5d75d95c6 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Fri, 31 May 2024 14:21:38 -0400 Subject: [PATCH 2/3] Remove testing app_id from example scene --- .../Assets/OneSignal/Example/OneSignalExampleScene.unity | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity b/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity index f12b574f7..fe91ab5ba 100644 --- a/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity +++ b/OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity @@ -2708,7 +2708,7 @@ MonoBehaviour: email: externalId: phoneNumber: - appId: 77e32082-ea27-42e3-a898-c72e141824ef + appId: consentRequired: 0 consentGiven: 0 language: From 6ee05c2cbf0ecbc31e1eaab9914905e3b9fe7b0d Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 4 Jun 2024 09:06:07 -0400 Subject: [PATCH 3/3] Add missing using for Android compilation --- .../Runtime/AndroidLiveActivitiesManager.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/com.onesignal.unity.android/Runtime/AndroidLiveActivitiesManager.cs b/com.onesignal.unity.android/Runtime/AndroidLiveActivitiesManager.cs index a97f7de5b..c22b317e4 100644 --- a/com.onesignal.unity.android/Runtime/AndroidLiveActivitiesManager.cs +++ b/com.onesignal.unity.android/Runtime/AndroidLiveActivitiesManager.cs @@ -25,6 +25,7 @@ * THE SOFTWARE. */ using UnityEngine; +using System.Collections.Generic; using System.Threading.Tasks; using OneSignalSDK.LiveActivities; using OneSignalSDK.Debug.Utilities;