From 0f0c8bab431f27bb2bbe3d82174aafa394865777 Mon Sep 17 00:00:00 2001 From: ThomasCharester Date: Fri, 23 Jan 2026 20:39:55 +0300 Subject: [PATCH] UI Update, volumes --- .idea/.idea.Infra/.idea/workspace.xml | 96 +- .../AddressableAssetSettings.asset | 3 +- .../AssetGroups/Default Local Group.asset | 11 + .../ProfileDataSourceSettings.asset | 28 + .../ProfileDataSourceSettings.asset.meta | 8 + Assets/AddressableAssetsData/Windows.meta | 8 + .../Code/Infrastructure/App/PapaInstaller.cs | 115 +- .../Generators/ConfigGenerator.cs | 4 +- .../Generators/SceneLoaderGenerator.cs | 6 +- .../Generators/StateMachineGenerator.cs | 4 +- .../Code/Infrastructure/Loadings/Loading.cs | 3 +- .../Infrastructure/UI/Panels/LogoPanel.cs | 12 +- Assets/Code/Infrastructure/UI/UIFactory.cs | 6 + Assets/Code/Infrastructure/UI/UIService.cs | 12 +- Assets/Code/Infrastructure/Volume.meta | 3 + .../Infrastructure/Volume/VolumeFactory.cs | 81 + .../Volume/VolumeFactory.cs.meta | 3 + Assets/Code/Infrastructure/Volume/VolumeId.cs | 7 + .../Infrastructure/Volume/VolumeId.cs.meta | 3 + .../Infrastructure/Volume/VolumeService.cs | 50 + .../Volume/VolumeService.cs.meta | 3 + .../Infrastructure/Volume/VolumeSettings.cs | 13 + .../Volume/VolumeSettings.cs.meta | 3 + Assets/DOTween.meta | 8 + Assets/DOTween/DOTween.XML | 3107 +++++++++++++++++ Assets/DOTween/DOTween.XML.meta | 7 + Assets/DOTween/DOTween.dll | Bin 0 -> 177664 bytes Assets/DOTween/DOTween.dll.meta | 2 + Assets/DOTween/Editor.meta | 8 + Assets/DOTween/Editor/DOTweenEditor.XML | 144 + Assets/DOTween/Editor/DOTweenEditor.XML.meta | 7 + Assets/DOTween/Editor/DOTweenEditor.dll | Bin 0 -> 70656 bytes Assets/DOTween/Editor/DOTweenEditor.dll.meta | 2 + Assets/DOTween/Editor/Imgs.meta | 8 + Assets/DOTween/Editor/Imgs/DOTweenIcon.png | Bin 0 -> 1565 bytes .../DOTween/Editor/Imgs/DOTweenIcon.png.meta | 130 + .../DOTween/Editor/Imgs/DOTweenMiniIcon.png | Bin 0 -> 319 bytes .../Editor/Imgs/DOTweenMiniIcon.png.meta | 130 + Assets/DOTween/Editor/Imgs/Footer.png | Bin 0 -> 4409 bytes Assets/DOTween/Editor/Imgs/Footer.png.meta | 130 + Assets/DOTween/Editor/Imgs/Footer_dark.png | Bin 0 -> 4429 bytes .../DOTween/Editor/Imgs/Footer_dark.png.meta | 130 + Assets/DOTween/Editor/Imgs/Header.jpg | Bin 0 -> 22787 bytes Assets/DOTween/Editor/Imgs/Header.jpg.meta | 130 + Assets/DOTween/Modules.meta | 8 + Assets/DOTween/Modules/DOTweenModuleAudio.cs | 198 ++ .../Modules/DOTweenModuleAudio.cs.meta | 2 + .../Modules/DOTweenModuleEPOOutline.cs | 146 + .../Modules/DOTweenModuleEPOOutline.cs.meta | 2 + .../DOTween/Modules/DOTweenModulePhysics.cs | 216 ++ .../Modules/DOTweenModulePhysics.cs.meta | 2 + .../DOTween/Modules/DOTweenModulePhysics2D.cs | 193 + .../Modules/DOTweenModulePhysics2D.cs.meta | 2 + Assets/DOTween/Modules/DOTweenModuleSprite.cs | 93 + .../Modules/DOTweenModuleSprite.cs.meta | 2 + Assets/DOTween/Modules/DOTweenModuleUI.cs | 662 ++++ .../DOTween/Modules/DOTweenModuleUI.cs.meta | 2 + .../Modules/DOTweenModuleUnityVersion.cs | 389 +++ .../Modules/DOTweenModuleUnityVersion.cs.meta | 2 + Assets/DOTween/Modules/DOTweenModuleUtils.cs | 167 + .../Modules/DOTweenModuleUtils.cs.meta | 2 + Assets/DOTween/readme.txt | 29 + Assets/DOTween/readme.txt.meta | 7 + Assets/InputSystem_Actions.inputactions | 514 +-- Assets/Resources/DOTweenSettings.asset | 54 + Assets/Resources/DOTweenSettings.asset.meta | 8 + .../Resources/SystemConfigsReferences.asset | 7 +- .../Fonts/HussarWoodtypeUltrablack SDF.asset | 298 ++ .../HussarWoodtypeUltrablack SDF.asset.meta | 8 + .../UI/Fonts/HussarWoodtypeUltrablack.otf | Bin 0 -> 80236 bytes .../Fonts/HussarWoodtypeUltrablack.otf.meta | 21 + Assets/Resources/UI/Sprites/test.jpg | Bin 0 -> 191939 bytes Assets/Resources/UI/Sprites/test.jpg.meta | 130 + Assets/Resources_moved/Camera/Camera.prefab | 4 +- Assets/Resources_moved/Configs/Volumes.meta | 8 + .../Configs/Volumes/MenuRetro.asset | 22 + .../Configs/Volumes/MenuRetro.asset.meta | 8 + Assets/Resources_moved/UI/Canvas.prefab | 2 +- .../UI/Panels/LogoPanel.prefab | 33 +- Assets/Resources_moved/Volumes.meta | 8 + .../Resources_moved/Volumes/MenuRetro.prefab | 51 + .../Volumes/MenuRetro.prefab.meta | 7 + Assets/Scenes/Gameplay.unity | 2 +- Assets/Scenes/UITest.meta | 8 + Assets/Scenes/UITest.unity | 1146 ++++++ Assets/Scenes/UITest.unity.meta | 7 + .../Scenes/UITest/Global Volume Profile.asset | 208 ++ .../UITest/Global Volume Profile.asset.meta | 8 + Assets/Settings/DefaultVolumeProfile.asset | 8 +- Assets/Settings/PC_RPAsset.asset | 26 +- ...niversalRenderPipelineGlobalSettings.asset | 16 +- .../LiberationSans SDF - Fallback.asset | 2323 +++++++++++- ...structure.App.AppStateMachine.Generated.cs | 8 +- .../ConfigLocator.Generated.cs | 13 +- .../SystemConfigsReferences.Generated.cs | 12 +- .../VolumeSettingsConfig.Generated.cs | 20 + .../VolumeSettingsConfig.Generated.cs.meta | 2 + ProjectSettings/GraphicsSettings.asset | 4 +- ProjectSettings/ProjectSettings.asset | 36 +- ProjectSettings/QualitySettings.asset | 17 +- 100 files changed, 10862 insertions(+), 734 deletions(-) create mode 100644 Assets/AddressableAssetsData/ProfileDataSourceSettings.asset create mode 100644 Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta create mode 100644 Assets/AddressableAssetsData/Windows.meta create mode 100644 Assets/Code/Infrastructure/Volume.meta create mode 100644 Assets/Code/Infrastructure/Volume/VolumeFactory.cs create mode 100644 Assets/Code/Infrastructure/Volume/VolumeFactory.cs.meta create mode 100644 Assets/Code/Infrastructure/Volume/VolumeId.cs create mode 100644 Assets/Code/Infrastructure/Volume/VolumeId.cs.meta create mode 100644 Assets/Code/Infrastructure/Volume/VolumeService.cs create mode 100644 Assets/Code/Infrastructure/Volume/VolumeService.cs.meta create mode 100644 Assets/Code/Infrastructure/Volume/VolumeSettings.cs create mode 100644 Assets/Code/Infrastructure/Volume/VolumeSettings.cs.meta create mode 100644 Assets/DOTween.meta create mode 100644 Assets/DOTween/DOTween.XML create mode 100644 Assets/DOTween/DOTween.XML.meta create mode 100644 Assets/DOTween/DOTween.dll create mode 100644 Assets/DOTween/DOTween.dll.meta create mode 100644 Assets/DOTween/Editor.meta create mode 100644 Assets/DOTween/Editor/DOTweenEditor.XML create mode 100644 Assets/DOTween/Editor/DOTweenEditor.XML.meta create mode 100644 Assets/DOTween/Editor/DOTweenEditor.dll create mode 100644 Assets/DOTween/Editor/DOTweenEditor.dll.meta create mode 100644 Assets/DOTween/Editor/Imgs.meta create mode 100644 Assets/DOTween/Editor/Imgs/DOTweenIcon.png create mode 100644 Assets/DOTween/Editor/Imgs/DOTweenIcon.png.meta create mode 100644 Assets/DOTween/Editor/Imgs/DOTweenMiniIcon.png create mode 100644 Assets/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta create mode 100644 Assets/DOTween/Editor/Imgs/Footer.png create mode 100644 Assets/DOTween/Editor/Imgs/Footer.png.meta create mode 100644 Assets/DOTween/Editor/Imgs/Footer_dark.png create mode 100644 Assets/DOTween/Editor/Imgs/Footer_dark.png.meta create mode 100644 Assets/DOTween/Editor/Imgs/Header.jpg create mode 100644 Assets/DOTween/Editor/Imgs/Header.jpg.meta create mode 100644 Assets/DOTween/Modules.meta create mode 100644 Assets/DOTween/Modules/DOTweenModuleAudio.cs create mode 100644 Assets/DOTween/Modules/DOTweenModuleAudio.cs.meta create mode 100644 Assets/DOTween/Modules/DOTweenModuleEPOOutline.cs create mode 100644 Assets/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta create mode 100644 Assets/DOTween/Modules/DOTweenModulePhysics.cs create mode 100644 Assets/DOTween/Modules/DOTweenModulePhysics.cs.meta create mode 100644 Assets/DOTween/Modules/DOTweenModulePhysics2D.cs create mode 100644 Assets/DOTween/Modules/DOTweenModulePhysics2D.cs.meta create mode 100644 Assets/DOTween/Modules/DOTweenModuleSprite.cs create mode 100644 Assets/DOTween/Modules/DOTweenModuleSprite.cs.meta create mode 100644 Assets/DOTween/Modules/DOTweenModuleUI.cs create mode 100644 Assets/DOTween/Modules/DOTweenModuleUI.cs.meta create mode 100644 Assets/DOTween/Modules/DOTweenModuleUnityVersion.cs create mode 100644 Assets/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta create mode 100644 Assets/DOTween/Modules/DOTweenModuleUtils.cs create mode 100644 Assets/DOTween/Modules/DOTweenModuleUtils.cs.meta create mode 100644 Assets/DOTween/readme.txt create mode 100644 Assets/DOTween/readme.txt.meta create mode 100644 Assets/Resources/DOTweenSettings.asset create mode 100644 Assets/Resources/DOTweenSettings.asset.meta create mode 100644 Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack SDF.asset create mode 100644 Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack SDF.asset.meta create mode 100644 Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack.otf create mode 100644 Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack.otf.meta create mode 100644 Assets/Resources/UI/Sprites/test.jpg create mode 100644 Assets/Resources/UI/Sprites/test.jpg.meta create mode 100644 Assets/Resources_moved/Configs/Volumes.meta create mode 100644 Assets/Resources_moved/Configs/Volumes/MenuRetro.asset create mode 100644 Assets/Resources_moved/Configs/Volumes/MenuRetro.asset.meta create mode 100644 Assets/Resources_moved/Volumes.meta create mode 100644 Assets/Resources_moved/Volumes/MenuRetro.prefab create mode 100644 Assets/Resources_moved/Volumes/MenuRetro.prefab.meta create mode 100644 Assets/Scenes/UITest.meta create mode 100644 Assets/Scenes/UITest.unity create mode 100644 Assets/Scenes/UITest.unity.meta create mode 100644 Assets/Scenes/UITest/Global Volume Profile.asset create mode 100644 Assets/Scenes/UITest/Global Volume Profile.asset.meta create mode 100644 Assets/UnityCodeGen.Generated/VolumeSettingsConfig.Generated.cs create mode 100644 Assets/UnityCodeGen.Generated/VolumeSettingsConfig.Generated.cs.meta diff --git a/.idea/.idea.Infra/.idea/workspace.xml b/.idea/.idea.Infra/.idea/workspace.xml index b03d540..17e91e2 100644 --- a/.idea/.idea.Infra/.idea/workspace.xml +++ b/.idea/.idea.Infra/.idea/workspace.xml @@ -5,27 +5,42 @@ - - - - - + + + + + + + + + - - + + + + - + - - - + + + + + + + + + + + + + + + { "associatedIndex": 2 @@ -51,20 +69,28 @@ - { + "keyToString": { + "Attach to Unity Editor.Attach to Unity Editor.executor": "Debug", + "RunOnceActivity.ShowReadmeOnStart": "true", + "git-widget-placeholder": "NotLiminalPCG", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "vue.rearranger.settings.migration": "true" } -}]]> +} + + - + @@ -128,23 +155,4 @@ - - - - - file://$PROJECT_DIR$/Assets/Code/Infrastructure/UI/UIFactory.cs - 61 - - - - - - - - - - \ No newline at end of file diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset index 8de6c68..7fed698 100644 --- a/Assets/AddressableAssetsData/AddressableAssetSettings.asset +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -15,7 +15,7 @@ MonoBehaviour: m_DefaultGroup: d790534e015d692428ac5a9ce7d2ceb6 m_currentHash: serializedVersion: 2 - Hash: eca7c51e7f74c0fc63e5a8f984ad695f + Hash: 4373fbbf872dd1eb6fe127578e4c83de m_OptimizeCatalogSize: 0 m_BuildRemoteCatalog: 0 m_CatalogRequestsTimeout: 0 @@ -103,6 +103,7 @@ MonoBehaviour: - SceneConfig - CameraConfig - UIPanelConfig + - PostProccessVolume m_SchemaTemplates: [] m_GroupTemplateObjects: - {fileID: 11400000, guid: af0b5782a0090884db056705d7776701, type: 2} diff --git a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset index 681d7c9..7187e47 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset +++ b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset @@ -25,6 +25,12 @@ MonoBehaviour: m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 30778c5a4d5c3f74bac4e5340344cdad + m_Address: Assets/Resources_moved/Configs/Volumes/MenuRetro.asset + m_ReadOnly: 0 + m_SerializedLabels: + - PostProccessVolume + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 4a97987e3a94e0f43b1b57b6ddccac23 m_Address: Assets/Resources_moved/Configs/Camera/CameraSettingsConfig.asset m_ReadOnly: 0 @@ -47,6 +53,11 @@ MonoBehaviour: m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: ab3f2ccf1b11afd4a81cb222d4e4bc16 + m_Address: Assets/Resources_moved/Volumes/MenuRetro.prefab + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: becf493a34b841e4d8ea927261a05e9b m_Address: Camera/Camera m_ReadOnly: 0 diff --git a/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset new file mode 100644 index 0000000..b674867 --- /dev/null +++ b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e3976da977cb49238499ea3b4c237ae, type: 3} + m_Name: ProfileDataSourceSettings + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.ProfileDataSourceSettings + profileGroupTypes: + - m_GroupTypePrefix: Built-In + m_Variables: + - m_Suffix: BuildPath + m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]' + - m_Suffix: LoadPath + m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]' + environments: [] + currentEnvironment: + id: + projectId: + projectGenesisId: + name: + isDefault: 0 diff --git a/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta new file mode 100644 index 0000000..006ec8f --- /dev/null +++ b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5b15ef261c372546828bde22c50fbb3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/Windows.meta b/Assets/AddressableAssetsData/Windows.meta new file mode 100644 index 0000000..2261ace --- /dev/null +++ b/Assets/AddressableAssetsData/Windows.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5fd003c2e081890428485bfb959fa404 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Code/Infrastructure/App/PapaInstaller.cs b/Assets/Code/Infrastructure/App/PapaInstaller.cs index d4747d3..bf219c3 100644 --- a/Assets/Code/Infrastructure/App/PapaInstaller.cs +++ b/Assets/Code/Infrastructure/App/PapaInstaller.cs @@ -1,75 +1,101 @@ +using System; using Code.Infrastructure.Camera; using Code.Infrastructure.Configs; using Code.Infrastructure.Input; using Code.Infrastructure.Loadings; using Code.Infrastructure.SceneLoader; using Code.Infrastructure.UI; +using Code.Infrastructure.Volume; using Reflex.Core; using Reflex.Enums; using UnityEngine; +using UnityEngine.Rendering.Universal; using Resolution = Reflex.Enums.Resolution; namespace Code.Infrastructure.App { - public class PapaInstaller : MonoBehaviour, IInstaller, + public class PapaInstaller : MonoBehaviour, IInstaller, ISceneConfigsLoadedHandle, IInputServiceInitializedHandle, ICameraInitializedHandle, IUIInitializedHandle, - IUIPanelLoaded + IUIPanelLoaded, + IVolumesInitializedHandle, + IVolumeLoaded { public void InstallBindings(ContainerBuilder containerBuilder) { containerBuilder.RegisterType(typeof(EventBus.EventBus), Lifetime.Singleton, Resolution.Eager); - containerBuilder.RegisterType(typeof(ConfigLocator), new[] { typeof(IConfigLocator) }, Lifetime.Singleton, Resolution.Eager); + containerBuilder.RegisterType(typeof(ConfigLocator), new[] { typeof(IConfigLocator) }, Lifetime.Singleton, + Resolution.Eager); containerBuilder.RegisterType(typeof(SceneLoader.SceneLoader), Lifetime.Singleton, Resolution.Eager); - containerBuilder.RegisterType(typeof(InputService),new[] { typeof(IInputService) }, Lifetime.Singleton, Resolution.Eager); - + containerBuilder.RegisterType(typeof(InputService), new[] { typeof(IInputService) }, Lifetime.Singleton, + Resolution.Eager); + containerBuilder.OnContainerBuilt += Bootstrap; - - containerBuilder.RegisterType(typeof(AppStateMachine), Lifetime.Singleton, Resolution.Lazy); - containerBuilder.RegisterType(typeof(AppStateMachineContext), Lifetime.Singleton, Resolution.Lazy); - - containerBuilder.RegisterType(typeof(CameraFactory), Lifetime.Singleton, Resolution.Lazy); - containerBuilder.RegisterType(typeof(CameraStateMachine), Lifetime.Singleton, Resolution.Lazy); - containerBuilder.RegisterType(typeof(CameraStateMachineContext), Lifetime.Singleton, Resolution.Lazy); - - containerBuilder.RegisterType(typeof(UIFactory), new []{typeof(IUIFactory)}, Lifetime.Singleton, Resolution.Eager); - containerBuilder.RegisterType(typeof(UIService), new []{typeof(IUIService)}, Lifetime.Singleton, Resolution.Eager); - + + containerBuilder.RegisterType(typeof(AppStateMachine), Lifetime.Singleton, Resolution.Lazy); + containerBuilder.RegisterType(typeof(AppStateMachineContext), Lifetime.Singleton, Resolution.Lazy); + + containerBuilder.RegisterType(typeof(CameraFactory), Lifetime.Singleton, Resolution.Lazy); + containerBuilder.RegisterType(typeof(CameraStateMachine), Lifetime.Singleton, Resolution.Lazy); + containerBuilder.RegisterType(typeof(CameraStateMachineContext), Lifetime.Singleton, Resolution.Lazy); + + containerBuilder.RegisterType(typeof(UIFactory), new[] { typeof(IUIFactory) }, Lifetime.Singleton, + Resolution.Eager); + containerBuilder.RegisterType(typeof(UIService), new[] { typeof(IUIService) }, Lifetime.Singleton, + Resolution.Eager); + + containerBuilder.RegisterType(typeof(VolumeService), new[] { typeof(IVolumeService) }, Lifetime.Singleton, + Resolution.Lazy); + containerBuilder.RegisterType(typeof(VolumeFactory), new[] { typeof(IVolumeFactory) }, Lifetime.Singleton, + Resolution.Eager); + // UIFactory // Logo // Scene configs // Input service // Camera - _initialLoading = new Loading(5, () => EssentialLoadEnded(_thatRightContainer)); + // Volume Factory + // Loading volume + _initialLoading = new Loading(7, () => EssentialLoadEnded(_thatRightContainer)); + _ui2CamLoading = new Loading(2, + () => + { + _thatRightContainer.Resolve().SetCanvasCamera(_thatRightContainer + .Resolve().cameraLoadedData.Camera); + + }); } - + private Loading _initialLoading; + private Loading _ui2CamLoading; private Container _thatRightContainer; + private void Bootstrap(Container container) { _thatRightContainer = container; - + container.Resolve().Subscribe(this); - - container.Resolve().CreateCameraStateMachine(container.Resolve()).Forget(); - + + container.Resolve().CreateCameraStateMachine(container.Resolve()) + .Forget(); } private void EssentialLoadEnded(Container container) { container.Resolve().Unsubscribe(this); - container.Resolve().SwitchState(AppStates.Bootstrap).AllowStateTransition(AppStates.Gameplay); + container.Resolve().SwitchState(AppStates.Bootstrap) + .AllowStateTransition(AppStates.Gameplay); } public void SceneConfigsLoaded() - { + { _initialLoading.DoProgress(); } public void InputServiceInitialized() - { + { _initialLoading.DoProgress(); } @@ -77,34 +103,59 @@ namespace Code.Infrastructure.App { _thatRightContainer.Resolve().cameraLoadedData = data; _thatRightContainer.Resolve().SwitchState(CameraMode.None) - .AllowStateTransition(CameraMode.FirstPerson); - + .AllowStateTransition(CameraMode.FirstPerson); + + data.Camera.GetUniversalAdditionalCameraData().renderPostProcessing = true; + + _ui2CamLoading.DoProgress(); _initialLoading.DoProgress(); } public void UIInitialized() { + _ui2CamLoading.DoProgress(); _initialLoading.DoProgress(); - + _thatRightContainer.Resolve().TryLoadPanel(UIPanelType.Logo); _thatRightContainer.Resolve().TryLoadPanel(UIPanelType.Loading); } public void UILoaded(UIPanelType uiPanelType) { - if (_initialLoading.Completed) return; - switch (uiPanelType) { case UIPanelType.Logo: _thatRightContainer.Resolve().OpenPanel(UIPanelType.Logo); - + _initialLoading.DoProgress(); break; case UIPanelType.Loading: // _thatRightContainer.Resolve().OpenPanel(UIPanelType.Logo); break; + default: + Application.Quit(); + break; } } - } + + public void VolumesInitialized() + { + _initialLoading.DoProgress(); + + _thatRightContainer.Resolve().TryLoadVolume(VolumeId.MenuRetro); + } + + public void VolumeLoaded(VolumeId volumeId) + { + switch (volumeId) + { + case VolumeId.MenuRetro: + _initialLoading.DoProgress(); + break; + default: + Application.Quit(); + break; + } + } + } } \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs b/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs index ef22d79..37cc2aa 100644 --- a/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs +++ b/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs @@ -1,3 +1,4 @@ +#if UNITY_EDITOR using System.Linq; using Unity.VisualScripting; using UnityCodeGen; @@ -106,4 +107,5 @@ public class {cfg.Name}Config : ScriptableObject context.AddCode($"SystemConfigsReferences.Generated.cs", configOfConfigsCode); } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs b/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs index 3b4cd1e..44f9843 100644 --- a/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs +++ b/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs @@ -1,5 +1,4 @@ -using System.Linq; -using Unity.VisualScripting; +#if UNITY_EDITOR using UnityCodeGen; using UnityEditor; using UnityEngine; @@ -145,4 +144,5 @@ partial void SetupScenesInfo(){{ // context.AddCode($"SystemConfigsReferences.Generated.cs", configOfConfigsCode); } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs b/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs index aa9fcf9..648b56b 100644 --- a/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs +++ b/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs @@ -1,3 +1,4 @@ +#if UNITY_EDITOR using System.Linq; using Unity.VisualScripting; using UnityCodeGen; @@ -128,4 +129,5 @@ namespace {st.Namespace} } } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Loadings/Loading.cs b/Assets/Code/Infrastructure/Loadings/Loading.cs index da0eb5f..1991beb 100644 --- a/Assets/Code/Infrastructure/Loadings/Loading.cs +++ b/Assets/Code/Infrastructure/Loadings/Loading.cs @@ -1,4 +1,5 @@ -using System; +using System; +using UnityEngine; namespace Code.Infrastructure.Loadings { diff --git a/Assets/Code/Infrastructure/UI/Panels/LogoPanel.cs b/Assets/Code/Infrastructure/UI/Panels/LogoPanel.cs index 9bff46d..c46ef2a 100644 --- a/Assets/Code/Infrastructure/UI/Panels/LogoPanel.cs +++ b/Assets/Code/Infrastructure/UI/Panels/LogoPanel.cs @@ -1,16 +1,22 @@ +using DG.Tweening; using UnityEngine; +using UnityEngine.UI; namespace Code.Infrastructure.UI.Panels { public class LogoPanel : UIPanel - { + { + [SerializeField] private Image image; + [SerializeField] private Color shownColor; + [SerializeField] private Color hiddenColor; public override void Open() - { - Debug.Log("Logo panel opened"); + { + image.DOColor(shownColor, 1f); } public override void Close() { + image.DOColor(hiddenColor, 1f); } } } \ No newline at end of file diff --git a/Assets/Code/Infrastructure/UI/UIFactory.cs b/Assets/Code/Infrastructure/UI/UIFactory.cs index c97581f..79640e5 100644 --- a/Assets/Code/Infrastructure/UI/UIFactory.cs +++ b/Assets/Code/Infrastructure/UI/UIFactory.cs @@ -14,6 +14,7 @@ namespace Code.Infrastructure.UI { UniTaskVoid LoadPanel(UIPanelType panelType); void ReleasePanel(UIPanel panel); + Canvas Canvas { get; } } public class UIFactory : IDisposable, IUIFactory @@ -26,8 +27,11 @@ namespace Code.Infrastructure.UI private AsyncOperationHandle> _configsHandle; private AsyncOperationHandle _canvasSettingsHandle; private CanvasSettingsConfig _canvasConfig; + private GameObject _canvas; + public Canvas Canvas { get; private set; } + public UIFactory(IConfigLocator configLocator, EventBus.EventBus eventBus) { _eventBus = eventBus; @@ -63,6 +67,8 @@ namespace Code.Infrastructure.UI _canvas = await Addressables.InstantiateAsync(_canvasConfig.Prefab).ToUniTask(); UnityEngine.Object.DontDestroyOnLoad(_canvas); + + Canvas = _canvas.GetComponent(); _eventBus.RaiseEvent(ui => ui.UIInitialized()); } diff --git a/Assets/Code/Infrastructure/UI/UIService.cs b/Assets/Code/Infrastructure/UI/UIService.cs index 730d90f..5eed3cc 100644 --- a/Assets/Code/Infrastructure/UI/UIService.cs +++ b/Assets/Code/Infrastructure/UI/UIService.cs @@ -14,6 +14,7 @@ namespace Code.Infrastructure.UI void ClosePanel(UIPanelType uiPanelType); void TryLoadPanel(UIPanelType uiPanelType); void TryRemovePanel(UIPanelType panelType); + void SetCanvasCamera(UnityEngine.Camera camera); } public class UIService : IUIPanelLoadedHandle, IUIService @@ -30,15 +31,18 @@ namespace Code.Infrastructure.UI eventBus.Subscribe(this); } + public void SetCanvasCamera(UnityEngine.Camera camera) + { + _factory.Canvas.worldCamera = camera; + } + public void OpenPanel(UIPanelType uiPanelType) { - _loadedPanels[uiPanelType].gameObject.SetActive(true); // TODO Братуха реально реши надо вкл\выкл или это очередная хренооптимизация - _loadedPanels[uiPanelType].Open(); + _loadedPanels[uiPanelType].Open(); } public void ClosePanel(UIPanelType uiPanelType) - { - _loadedPanels[uiPanelType].gameObject.SetActive(false); + { _loadedPanels[uiPanelType].Close(); } diff --git a/Assets/Code/Infrastructure/Volume.meta b/Assets/Code/Infrastructure/Volume.meta new file mode 100644 index 0000000..4a099f9 --- /dev/null +++ b/Assets/Code/Infrastructure/Volume.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c53f6bd5c7a84002a173846cefd54093 +timeCreated: 1769169770 \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Volume/VolumeFactory.cs b/Assets/Code/Infrastructure/Volume/VolumeFactory.cs new file mode 100644 index 0000000..60f7aa2 --- /dev/null +++ b/Assets/Code/Infrastructure/Volume/VolumeFactory.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Code.Infrastructure.Configs; +using Code.Infrastructure.EventBus; +using Cysharp.Threading.Tasks; +using UnityEngine; +using UnityEngine.AddressableAssets; +using UnityEngine.ResourceManagement.AsyncOperations; +using Object = UnityEngine.Object; + +namespace Code.Infrastructure.Volume +{ + public interface IVolumeFactory + { + UniTaskVoid LoadVolume(VolumeId volumeId, Transform transform = null); + void ReleaseVolume(UnityEngine.Rendering.Volume volume); + } + + public class VolumeFactory : IDisposable, IVolumeFactory + { + private EventBus.EventBus _eventBus; + private Dictionary _configs; + + private AsyncOperationHandle> _configsHandle; + private string _configsLabel; + + public VolumeFactory(IConfigLocator configLocator, EventBus.EventBus eventBus) + { + _eventBus = eventBus; + _configsLabel = configLocator.TryGetManyConfigAssetReferences(); + + LoadConfigs().Forget(); + } + + private async UniTaskVoid LoadConfigs() + { + _configsHandle = Addressables.LoadAssetsAsync(_configsLabel); + + await _configsHandle.ToUniTask(); + + _configs = _configsHandle.Result.ToDictionary(c => c.id); + + _eventBus.RaiseEvent(ui => ui.VolumesInitialized()); + } + + public async UniTaskVoid LoadVolume(VolumeId volumeId, Transform transform = null) + { + UnityEngine.Rendering.Volume volume = transform == null + ? (await Addressables.InstantiateAsync(_configs[volumeId].prefab, transform).ToUniTask()) + .GetComponent() + : (await Addressables.InstantiateAsync(_configs[volumeId].prefab).ToUniTask()) + .GetComponent(); + + if(_configs[volumeId].doNotDestroyOnLoad) + Object.DontDestroyOnLoad(volume.gameObject); + + _eventBus.RaiseEvent(ui => ui.VolumeLoaded(volume, volumeId)); + } + + public void ReleaseVolume(UnityEngine.Rendering.Volume volume) + { + Addressables.ReleaseInstance(volume.gameObject); + } + + public void Dispose() + { + Addressables.Release(_configsHandle); + } + } + + internal interface IVolumesInitializedHandle : IGlobalSubscriber + { + void VolumesInitialized(); + } + + internal interface IVolumeLoadedHandle : IGlobalSubscriber + { + void VolumeLoaded(UnityEngine.Rendering.Volume volume, VolumeId volumeId); + } +} \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Volume/VolumeFactory.cs.meta b/Assets/Code/Infrastructure/Volume/VolumeFactory.cs.meta new file mode 100644 index 0000000..543dfed --- /dev/null +++ b/Assets/Code/Infrastructure/Volume/VolumeFactory.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c607472c188d483a8bb65a5b4a775e44 +timeCreated: 1769169793 \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Volume/VolumeId.cs b/Assets/Code/Infrastructure/Volume/VolumeId.cs new file mode 100644 index 0000000..8c6b6f8 --- /dev/null +++ b/Assets/Code/Infrastructure/Volume/VolumeId.cs @@ -0,0 +1,7 @@ +namespace Code.Infrastructure.Volume +{ + public enum VolumeId + { + MenuRetro + } +} \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Volume/VolumeId.cs.meta b/Assets/Code/Infrastructure/Volume/VolumeId.cs.meta new file mode 100644 index 0000000..8b0f17b --- /dev/null +++ b/Assets/Code/Infrastructure/Volume/VolumeId.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fc1ca5d8022249c58205c664b7ff628d +timeCreated: 1769169852 \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Volume/VolumeService.cs b/Assets/Code/Infrastructure/Volume/VolumeService.cs new file mode 100644 index 0000000..4c4a6d6 --- /dev/null +++ b/Assets/Code/Infrastructure/Volume/VolumeService.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using Code.Infrastructure.EventBus; + +namespace Code.Infrastructure.Volume +{ + public interface IVolumeService + { + void TryLoadVolume(VolumeId volumeId); + void TryRemoveVolume(VolumeId volumeId); + } + + public class VolumeService : IVolumeLoadedHandle, IVolumeService + { + private Dictionary _loadedVolumes = new(); + private EventBus.EventBus _eventBus; + private IVolumeFactory _factory; + + public VolumeService(EventBus.EventBus eventBus, IVolumeFactory factory) + { + _eventBus = eventBus; + _eventBus.Subscribe(this); + _factory = factory; + } + public void TryLoadVolume(VolumeId volumeId) => _factory.LoadVolume(volumeId); + + public void VolumeLoaded(UnityEngine.Rendering.Volume volume, VolumeId volumeId) + { + _loadedVolumes.Add(volumeId, volume); + + _eventBus.RaiseEvent(ui=> ui.VolumeLoaded(volumeId)); + } + + public void TryRemoveVolume(VolumeId volumeId) + { + // TODO Close it + RemoveVolume(volumeId); + } + + private void RemoveVolume(VolumeId volumeId) + { + _factory.ReleaseVolume(_loadedVolumes[volumeId]); + _loadedVolumes.Remove(volumeId); + } + } + + public interface IVolumeLoaded : IGlobalSubscriber + { + void VolumeLoaded(VolumeId volumeId); + } +} \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Volume/VolumeService.cs.meta b/Assets/Code/Infrastructure/Volume/VolumeService.cs.meta new file mode 100644 index 0000000..5c41793 --- /dev/null +++ b/Assets/Code/Infrastructure/Volume/VolumeService.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c301e693e9ef44d9b5395e9d9627f87b +timeCreated: 1769171742 \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Volume/VolumeSettings.cs b/Assets/Code/Infrastructure/Volume/VolumeSettings.cs new file mode 100644 index 0000000..74ec950 --- /dev/null +++ b/Assets/Code/Infrastructure/Volume/VolumeSettings.cs @@ -0,0 +1,13 @@ +using Code.Infrastructure.Generators; +using UnityEngine.AddressableAssets; + +namespace Code.Infrastructure.Volume +{ + [Config("Configs/PostProcessing/VolumeSetting", true)] + public class VolumeSettings + { + [ToConfig] public AssetReference prefab; + [ToConfig] public VolumeId id; + [ToConfig] public bool doNotDestroyOnLoad; + } +} \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Volume/VolumeSettings.cs.meta b/Assets/Code/Infrastructure/Volume/VolumeSettings.cs.meta new file mode 100644 index 0000000..41f40c8 --- /dev/null +++ b/Assets/Code/Infrastructure/Volume/VolumeSettings.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 765e27414fb74f3b9bd11835ae098f92 +timeCreated: 1769170079 \ No newline at end of file diff --git a/Assets/DOTween.meta b/Assets/DOTween.meta new file mode 100644 index 0000000..107ab7e --- /dev/null +++ b/Assets/DOTween.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f67d47da94dd9314dbba5ea80434dff0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/DOTween.XML b/Assets/DOTween/DOTween.XML new file mode 100644 index 0000000..f56085a --- /dev/null +++ b/Assets/DOTween/DOTween.XML @@ -0,0 +1,3107 @@ + + + + DOTween + + + + + Types of autoPlay behaviours + + + + No tween is automatically played + + + Only Sequences are automatically played + + + Only Tweeners are automatically played + + + All tweens are automatically played + + + + What axis to constrain in case of Vector tweens + + + + Called the first time the tween is set in a playing state, after any eventual delay + + + + Used in place of System.Func, which is not available in mscorlib. + + + + + Used in place of System.Action. + + + + + Public so it can be used by lose scripts related to DOTween (like DOTweenAnimation) + + + + + Used to separate DOTween class from the MonoBehaviour instance (in order to use static constructors on DOTween). + Contains all instance-based methods + + + + Used internally inside Unity Editor, as a trick to update DOTween's inspector at every frame + + + + Directly sets the current max capacity of Tweeners and Sequences + (meaning how many Tweeners and Sequences can be running at the same time), + so that DOTween doesn't need to automatically increase them in case the max is reached + (which might lead to hiccups when that happens). + Sequences capacity must be less or equal to Tweeners capacity + (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). + Beware: use this method only when there are no tweens running. + + Max Tweeners capacity. + Default: 200 + Max Sequences capacity. + Default: 50 + + + + This class contains a C# port of the easing equations created by Robert Penner (http://robertpenner.com/easing). + + + + + Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in: accelerating from zero velocity. + + + Current time (in frames or seconds). + + + Expected easing duration (in frames or seconds). + + Unused: here to keep same delegate for all ease types. + Unused: here to keep same delegate for all ease types. + + The eased value. + + + + + Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out: decelerating from zero velocity. + + + Current time (in frames or seconds). + + + Expected easing duration (in frames or seconds). + + Unused: here to keep same delegate for all ease types. + Unused: here to keep same delegate for all ease types. + + The eased value. + + + + + Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in/out: acceleration until halfway, then deceleration. + + + Current time (in frames or seconds). + + + Expected easing duration (in frames or seconds). + + Unused: here to keep same delegate for all ease types. + Unused: here to keep same delegate for all ease types. + + The eased value. + + + + + Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected. + Use this method if you don't care about , otherwise use + + + + + USE THIS FOR CUSTOM PLUGINS when you want to be able to use . + Returns a value that is from 0 to 1 if is not incremental, otherwise from 0 to (1 * completed loops) + + + + + Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected + + + + + Used to interpret AnimationCurves as eases. + Public so it can be used by external ease factories + + + + + Behaviour in case a tween nested inside a Sequence fails and is captured by safe mode + + + + If the Sequence contains other elements, kill the failed tween but preserve the rest + + + Kill the whole Sequence + + + + Log types thrown by errors captured and prevented by safe mode + + + + No logs. NOT RECOMMENDED + + + Throw a normal log + + + Throw a warning log (default) + + + Throw an error log + + + + Additional notices passed to plugins when updating. + Public so it can be used by custom plugins. Internally, only PathPlugin uses it + + + + + None + + + + + Lets the plugin know that we restarted or rewinded + + + + + OnRewind callback behaviour (can only be set via DOTween's Utility Panel) + + + + + When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will be fired only if the tween isn't already rewinded + + + + + When calling Rewind, OnRewind callbacks will always be fired, even if the tween is already rewinded. + When calling PlayBackwards/SmoothRewind instead, OnRewind callbacks will be fired only if the tween isn't already rewinded + + + + + When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will always be fired, even if the tween is already rewinded + + + + + Public only so custom shortcuts can access some of these methods + + + + + INTERNAL: used by DO shortcuts and Modules to set special startup mode + + + + + INTERNAL: used by DO shortcuts and Modules to set the tween as blendable + + + + + INTERNAL: used by DO shortcuts and Modules to prevent a tween from using a From setup even if passed + + + + + Used to dispatch commands that need to be captured externally, usually by Modules + + + + + Various utils + + + + + Returns a Vector3 with z = 0 + + + + + Returns the 2D angle between two vectors + + + + + Returns a point on a circle with the given center and radius, + using Unity's circle coordinates (0° points up and increases clockwise) + + + + + Uses approximate equality on each axis instead of Unity's Vector3 equality, + because the latter fails (in some cases) when assigning a Vector3 to a transform.position and then checking it. + + + + + Looks for the type within all possible project assembly names + + + + NO-GC METHOD: changes the start value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new start value + If bigger than 0 applies it as the new tween duration + + + NO-GC METHOD: changes the end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new end value + If TRUE the start value will become the current target's value, otherwise it will stay the same + + + NO-GC METHOD: changes the end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new end value + If bigger than 0 applies it as the new tween duration + If TRUE the start value will become the current target's value, otherwise it will stay the same + + + NO-GC METHOD: changes the start and end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new start value + The new end value + If bigger than 0 applies it as the new tween duration + + + + Struct that stores two colors (used for LineRenderer tweens) + + + + + Used for tween callbacks + + + + + Used for tween callbacks + + + + + Used for custom and animationCurve-based ease functions. Must return a value between 0 and 1. + + + + + Straight Quaternion plugin. Instead of using Vector3 values accepts Quaternion values directly. + Beware: doesn't work with LoopType.Incremental (neither directly nor if inside a LoopType.Incremental Sequence). + To use it, call DOTween.To with the plugin parameter overload, passing it PureQuaternionPlugin.Plug() as first parameter + (do not use any of the other public PureQuaternionPlugin methods): + DOTween.To(PureQuaternionPlugin.Plug(), ()=> myQuaternionProperty, x=> myQuaternionProperty = x, myQuaternionEndValue, duration); + + + + + Plug this plugin inside a DOTween.To call. + Example: + DOTween.To(PureQuaternionPlugin.Plug(), ()=> myQuaternionProperty, x=> myQuaternionProperty = x, myQuaternionEndValue, duration); + + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + + Extra non-tweening-related curve methods + + + + + Cubic bezier curve methods + + + + + Calculates a point along the given Cubic Bezier segment-curve. + + Segment start point + Start point's control point/handle + Segment end point + End point's control point/handle + 0-1 percentage along which to retrieve point + + + + Returns an array containing a series of points along the given Cubic Bezier segment-curve. + + Start point + Start point's control point/handle + End point + End point's control point/handle + Cloud resolution (min: 2) + + + + Calculates a series of points along the given Cubic Bezier segment-curve and adds them to the given list. + + Start point + Start point's control point/handle + End point + End point's control point/handle + Cloud resolution (min: 2) + + + + Main DOTween class. Contains static methods to create and control tweens in a generic way + + + + DOTween's version + + + If TRUE (default) makes tweens slightly slower but safer, automatically taking care of a series of things + (like targets becoming null while a tween is playing). + Default: TRUE + + + Log type when safe mode reports capturing an error and preventing it + + + Behaviour in case a tween nested inside a Sequence fails (and is caught by safe mode). + Default: NestedTweenFailureBehaviour.TryToPreserveSequence + + + If TRUE you will get a DOTween report when exiting play mode (only in the Editor). + Useful to know how many max Tweeners and Sequences you reached and optimize your final project accordingly. + Beware, this will slightly slow down your tweens while inside Unity Editor. + Default: FALSE + + + Global DOTween global timeScale (default: 1). + The final timeScale of a non-timeScaleIndependent tween is: + Unity's Time.timeScale * DOTween.timeScale * tween.timeScale + while the final timeScale of a timeScaleIndependent tween is: + DOTween.unscaledTimeScale * DOTween.timeScale * tween.timeScale + + + DOTween timeScale applied only to timeScaleIndependent tweens (default: 1). + The final timeScale of a timeScaleIndependent tween is: + DOTween.unscaledTimeScale * DOTween.timeScale * tween.timeScale + + + If TRUE, DOTween will use Time.smoothDeltaTime instead of Time.deltaTime for UpdateType.Normal and UpdateType.Late tweens + (unless they're set as timeScaleIndependent, in which case a value between the last timestep + and will be used instead). + Setting this to TRUE will lead to smoother animations. + Default: FALSE + + + If is TRUE, this indicates the max timeStep that an independent update call can last. + Setting this to TRUE will lead to smoother animations. + Default: FALSE + + + DOTween's log behaviour. + Default: LogBehaviour.ErrorsOnly + + + Used to intercept DOTween's logs. If this method isn't NULL, DOTween will call it before writing a log via Unity's own Debug log methods. + Return TRUE if you want DOTween to proceed with the log, FALSE otherwise. + This method must return a bool and accept two parameters: + - LogType: the type of Unity log that DOTween is trying to log + - object: the log message that DOTween wants to log + + + If TRUE draws path gizmos in Unity Editor (if the gizmos button is active). + Deactivate this if you want to avoid gizmos overhead while in Unity Editor + + + Gets/sets the max Tweeners capacity (automatically increased by DOTween when necessary). + You can also set both Tweeners and Sequences capacity via the static method + + + Gets/sets the max Sequences capacity (automatically increased by DOTween when necessary). + You can also set both Tweeners and Sequences capacity via the static method + + + If TRUE activates various debug options + + + Stores the target id so it can be used to give more info in case of safeMode error capturing. + Only active if both debugMode and useSafeMode are TRUE + + + Default updateType for new tweens. + Default: UpdateType.Normal + + + Sets whether Unity's timeScale should be taken into account by default or not. + Default: false + + + Default autoPlay behaviour for new tweens. + Default: AutoPlay.All + + + Default autoKillOnComplete behaviour for new tweens. + Default: TRUE + + + Default loopType applied to all new tweens. + Default: LoopType.Restart + + + If TRUE all newly created tweens are set as recyclable, otherwise not. + Default: FALSE + + + Default ease applied to all new Tweeners (not to Sequences which always have Ease.Linear as default). + Default: Ease.InOutQuad + + + Default overshoot/amplitude used for eases + Default: 1.70158f + + + Default period used for eases + Default: 0 + + + Used internally. Assigned/removed by DOTweenComponent.Create/DestroyInstance + + + + Must be called once, before the first ever DOTween call/reference, + otherwise it will be called automatically and will use default options. + Calling it a second time won't have any effect. + You can chain SetCapacity to this method, to directly set the max starting size of Tweeners and Sequences: + DOTween.Init(false, false, LogBehaviour.Default).SetCapacity(100, 20); + + If TRUE all new tweens will be set for recycling, meaning that when killed, + instead of being destroyed, they will be put in a pool and reused instead of creating new tweens. This option allows you to avoid + GC allocations by reusing tweens, but you will have to take care of tween references, since they might result active + even if they were killed (since they might have been respawned and are now being used for other tweens). + If you want to automatically set your tween references to NULL when a tween is killed + you can use the OnKill callback like this: + .OnKill(()=> myTweenReference = null) + You can change this setting at any time by changing the static property, + or you can set the recycling behaviour for each tween separately, using: + SetRecyclable(bool recyclable) + Default: FALSE + If TRUE makes tweens slightly slower but safer, automatically taking care of a series of things + (like targets becoming null while a tween is playing). + You can change this setting at any time by changing the static property. + Default: FALSE + Type of logging to use. + You can change this setting at any time by changing the static property. + Default: ErrorsOnly + + + + Directly sets the current max capacity of Tweeners and Sequences + (meaning how many Tweeners and Sequences can be running at the same time), + so that DOTween doesn't need to automatically increase them in case the max is reached + (which might lead to hiccups when that happens). + Sequences capacity must be less or equal to Tweeners capacity + (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). + Beware: use this method only when there are no tweens running. + + Max Tweeners capacity. + Default: 200 + Max Sequences capacity. + Default: 50 + + + + Kills all tweens, clears all cached tween pools and plugins and resets the max Tweeners/Sequences capacities to the default values. + + If TRUE also destroys DOTween's gameObject and resets its initializiation, default settings and everything else + (so that next time you use it it will need to be re-initialized) + + + + Clears all cached tween pools. + + + + + Checks all active tweens to find and remove eventually invalid ones (usually because their targets became NULL) + and returns the total number of invalid tweens found and removed. + IMPORTANT: this will cause an error on UWP platform, so don't use it there + BEWARE: this is a slightly expensive operation so use it with care + + + + + Updates all tweens that are set to . + + Manual deltaTime + Unscaled delta time (used with tweens set as timeScaleIndependent) + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using a custom plugin + The plugin to use. Each custom plugin implements a static Get() method + you'll need to call to assign the correct plugin in the correct way, like this: + CustomPlugin.Get() + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens only one axis of a Vector3 to the given value using default plugins. + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + The axis to tween + + + Tweens only the alpha of a Color to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a virtual property from the given start to the given end value + and implements a setter that allows to use that value with an external method or a lambda + Example: + To(MyMethod, 0, 12, 0.5f); + Where MyMethod is a function that accepts a float parameter (which will be the result of the virtual tween) + The action to perform with the tweened value + The value to start from + The end value to reach + The duration of the virtual tween + + + + Punches a Vector3 towards the given direction and then back to the starting one + as if it was connected to the starting position via an elastic. + This tween type generates some GC allocations at startup + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The direction and strength of the punch + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. + 1 creates a full oscillation between the direction and the opposite decaying direction, + while 0 oscillates only between the starting position and the decaying direction + + + Shakes a Vector3 with the given values. + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction and behave like a random punch. + If TRUE only shakes on the X Y axis (looks better with things like cameras). + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Vector3 with the given values. + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction and behave like a random punch. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Tweens a property or field to the given values using default plugins. + Ease is applied between each segment and not as a whole. + This tween type generates some GC allocations at startup + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end values to reach for each segment. This array must have the same length as durations + The duration of each segment. This array must have the same length as endValues + + + + Returns a new to be used for tween groups. + Mind that Sequences don't have a target applied automatically like Tweener creation shortcuts, + so if you want to be able to kill this Sequence when calling DOTween.Kill(target) you'll have to add + the target manually; you can do that directly by using the overload instead of this one + + + + + Returns a new to be used for tween groups, and allows to set a target + (because Sequences don't have their target set automatically like Tweener creation shortcuts). + That way killing/controlling tweens by target will apply to this Sequence too. + + The target of the Sequence. Relevant only for static target-based methods like DOTween.Kill(target), + useless otherwise + + + Completes all tweens and returns the number of actual tweens completed + (meaning tweens that don't have infinite loops and were not already complete) + For Sequences only: if TRUE also internal Sequence callbacks will be fired, + otherwise they will be ignored + + + Completes all tweens with the given ID or target and returns the number of actual tweens completed + (meaning the tweens that don't have infinite loops and were not already complete) + For Sequences only: if TRUE internal Sequence callbacks will be fired, + otherwise they will be ignored + + + Flips all tweens (changing their direction to forward if it was backwards and viceversa), + then returns the number of actual tweens flipped + + + Flips the tweens with the given ID or target (changing their direction to forward if it was backwards and viceversa), + then returns the number of actual tweens flipped + + + Sends all tweens to the given position (calculating also eventual loop cycles) and returns the actual tweens involved + + + Sends all tweens with the given ID or target to the given position (calculating also eventual loop cycles) + and returns the actual tweens involved + + + Kills all tweens and returns the number of actual tweens killed + If TRUE completes the tweens before killing them + + + Kills all tweens and returns the number of actual tweens killed + If TRUE completes the tweens before killing them + Eventual IDs or targets to exclude from the killing + + + Kills all tweens with the given ID or target and returns the number of actual tweens killed + If TRUE completes the tweens before killing them + + + Kills all tweens with the given target and the given ID, and returns the number of actual tweens killed + If TRUE completes the tweens before killing them + + + Pauses all tweens and returns the number of actual tweens paused + + + Pauses all tweens with the given ID or target and returns the number of actual tweens paused + (meaning the tweens that were actually playing and have been paused) + + + Plays all tweens and returns the number of actual tweens played + (meaning tweens that were not already playing or complete) + + + Plays all tweens with the given ID or target and returns the number of actual tweens played + (meaning the tweens that were not already playing or complete) + + + Plays all tweens with the given target and the given ID, and returns the number of actual tweens played + (meaning the tweens that were not already playing or complete) + + + Plays backwards all tweens and returns the number of actual tweens played + (meaning tweens that were not already started, playing backwards or rewinded) + + + Plays backwards all tweens with the given ID or target and returns the number of actual tweens played + (meaning the tweens that were not already started, playing backwards or rewinded) + + + Plays backwards all tweens with the given target and ID and returns the number of actual tweens played + (meaning the tweens that were not already started, playing backwards or rewinded) + + + Plays forward all tweens and returns the number of actual tweens played + (meaning tweens that were not already playing forward or complete) + + + Plays forward all tweens with the given ID or target and returns the number of actual tweens played + (meaning the tweens that were not already playing forward or complete) + + + Plays forward all tweens with the given target and ID and returns the number of actual tweens played + (meaning the tweens that were not already started, playing backwards or rewinded) + + + Restarts all tweens, then returns the number of actual tweens restarted + + + Restarts all tweens with the given ID or target, then returns the number of actual tweens restarted + If TRUE includes the eventual tweens delays, otherwise skips them + If >= 0 changes the startup delay of all involved tweens to this value, otherwise doesn't touch it + + + Restarts all tweens with the given target and the given ID, and returns the number of actual tweens played + (meaning the tweens that were not already playing or complete) + If TRUE includes the eventual tweens delays, otherwise skips them + If >= 0 changes the startup delay of all involved tweens to this value, otherwise doesn't touch it + + + Rewinds and pauses all tweens, then returns the number of actual tweens rewinded + (meaning tweens that were not already rewinded) + + + Rewinds and pauses all tweens with the given ID or target, then returns the number of actual tweens rewinded + (meaning the tweens that were not already rewinded) + + + Smoothly rewinds all tweens (delays excluded), then returns the number of actual tweens rewinding/rewinded + (meaning tweens that were not already rewinded). + A "smooth rewind" animates the tween to its start position, + skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. + Note that a tween that was smoothly rewinded will have its play direction flipped + + + Smoothly rewinds all tweens (delays excluded) with the given ID or target, then returns the number of actual tweens rewinding/rewinded + (meaning the tweens that were not already rewinded). + A "smooth rewind" animates the tween to its start position, + skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. + Note that a tween that was smoothly rewinded will have its play direction flipped + + + Toggles the play state of all tweens and returns the number of actual tweens toggled + (meaning tweens that could be played or paused, depending on the toggle state) + + + Toggles the play state of all tweens with the given ID or target and returns the number of actual tweens toggled + (meaning the tweens that could be played or paused, depending on the toggle state) + + + + Returns TRUE if a tween with the given ID or target is active. + You can also use this to know if a shortcut tween is active for a given target. + Example: + transform.DOMoveX(45, 1); // transform is automatically added as the tween target + DOTween.IsTweening(transform); // Returns true + + The target or ID to look for + If FALSE (default) returns TRUE as long as a tween for the given target/ID is active, + otherwise also requires it to be playing + + + + Returns the total number of active tweens (so both Tweeners and Sequences). + A tween is considered active if it wasn't killed, regardless if it's playing or paused + + + + + Returns the total number of active Tweeners. + A Tweener is considered active if it wasn't killed, regardless if it's playing or paused + + + + + Returns the total number of active Sequences. + A Sequence is considered active if it wasn't killed, regardless if it's playing or paused + + + + + Returns the total number of active and playing tweens. + A tween is considered as playing even if its delay is actually playing + + + + + Returns a the total number of active tweens with the given id. + + If TRUE returns only the tweens with the given ID that are currently playing + + + + Returns a list of all active tweens in a playing state. + Returns NULL if there are no active playing tweens. + Beware: each time you call this method a new list is generated, so use it for debug only + + If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) + + + + Returns a list of all active tweens in a paused state. + Returns NULL if there are no active paused tweens. + Beware: each time you call this method a new list is generated, so use it for debug only + + If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) + + + + Returns a list of all active tweens with the given id. + Returns NULL if there are no active tweens with the given id. + Beware: each time you call this method a new list is generated + + If TRUE returns only the tweens with the given ID that are currently playing + If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) + + + + Returns a list of all active tweens with the given target. + Returns NULL if there are no active tweens with the given target. + Beware: each time you call this method a new list is generated + If TRUE returns only the tweens with the given target that are currently playing + If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) + + + + + Creates virtual tweens that can be used to change other elements via their OnUpdate calls + + + + + Tweens a virtual float. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type float, called at each update + + + + Tweens a virtual int. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type int, called at each update + + + + Tweens a virtual Vector2. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type Vector3, called at each update + + + + Tweens a virtual Vector3. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type Vector3, called at each update + + + + Tweens a virtual Color. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type Color, called at each update + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + Eventual overshoot to use with Back ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + Eventual amplitude to use with Elastic easeType + Eventual period to use with Elastic easeType + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The AnimationCurve to use for ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + Eventual overshoot to use with Back ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + Eventual amplitude to use with Elastic easeType + Eventual period to use with Elastic easeType + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The AnimationCurve to use for ease + + + Fires the given callback after the given time. + Callback delay + Callback to fire when the delay has expired + If TRUE (default) ignores Unity's timeScale + + + + Don't assign this! It's assigned automatically when creating 0 duration tweens + + + + + Don't assign this! It's assigned automatically when setting the ease to an AnimationCurve or to a custom ease function + + + + + Allows to wrap ease method in special ways, adding extra features + + + + + Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS + + FPS at which the tween should be played + Ease type + + + + Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS + + FPS at which the tween should be played + AnimationCurve to use for the ease + + + + Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS + + FPS at which the tween should be played + Custom ease function to use + + + + Used to allow method chaining with DOTween.Init + + + + + Directly sets the current max capacity of Tweeners and Sequences + (meaning how many Tweeners and Sequences can be running at the same time), + so that DOTween doesn't need to automatically increase them in case the max is reached + (which might lead to hiccups when that happens). + Sequences capacity must be less or equal to Tweeners capacity + (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). + Beware: use this method only when there are no tweens running. + + Max Tweeners capacity. + Default: 200 + Max Sequences capacity. + Default: 50 + + + + Behaviour that can be assigned when chaining a SetLink to a tween + + + + Pauses the tween when the link target is disabled + + + Pauses the tween when the link target is disabled, plays it when it's enabled + + + Pauses the tween when the link target is disabled, restarts it when it's enabled + + + Plays the tween when the link target is enabled + + + Restarts the tween when the link target is enabled + + + Kills the tween when the link target is disabled + + + Kills the tween when the link target is destroyed (becomes NULL). This is always active even if another behaviour is chosen + + + Completes the tween when the link target is disabled + + + Completes and kills the tween when the link target is disabled + + + Rewinds the tween (delay excluded) when the link target is disabled + + + Rewinds and kills the tween when the link target is disabled + + + + Path mode (used to determine correct LookAt orientation) + + + + Ignores the path mode (and thus LookAt behaviour) + + + Regular 3D path + + + 2D top-down path + + + 2D side-scroller path + + + + Type of path to use with DOPath tweens + + + + Linear, composed of straight segments between each waypoint + + + Curved path (which uses Catmull-Rom curves) + + + EXPERIMENTAL: Curved path (which uses Cubic Bezier curves, where each point requires two extra control points) + + + + Tweens a Vector2 along a circle. + EndValue represents the center of the circle, start and end value degrees are inside options + ChangeValue x is changeValue°, y is unused + + + + + Path control point + + + + + Path waypoints (modified by PathPlugin when setting relative end/change value or by CubicBezierDecoder) and by DOTweenPathInspector + + + + + Minimum input points necessary to create the path (doesn't correspond to actual waypoints required) + + + + + Gets the point on the path at the given percentage (0 to 1) + + The percentage (0 to 1) at which to get the point + If TRUE constant speed is taken into account, otherwise not + + + + Base interface for all tween plugins options + + + + Resets the plugin + + + + This plugin generates some GC allocations at startup + + + + + Path plugin works exclusively with Transforms + + + + + Rotation mode used with DORotate methods + + + + + Fastest way that never rotates beyond 360° + + + + + Fastest way that rotates beyond 360° + + + + + Adds the given rotation to the transform using world axis and an advanced precision mode + (like when using transform.Rotate(Space.World)). + In this mode the end value is is always considered relative + + + + + Adds the given rotation to the transform's local axis + (like when rotating an object with the "local" switch enabled in Unity's editor or using transform.Rotate(Space.Self)). + In this mode the end value is is always considered relative + + + + + Type of scramble to apply to string tweens + + + + + No scrambling of characters + + + + + A-Z + a-z + 0-9 characters + + + + + A-Z characters + + + + + a-z characters + + + + + 0-9 characters + + + + + Custom characters + + + + + Type of randomness to apply to a shake tween + + + + Default, full randomness + + + Creates a more balanced randomness that looks more harmonic + + + + Methods that extend Tween objects and allow to control or get data from them + + + + Completes the tween + + + Completes the tween + For Sequences only: if TRUE also internal Sequence callbacks will be fired, + otherwise they will be ignored + + + Optional: indicates that the tween creation has ended, to be used (optionally) as the last element of tween chaining creation.
+ This method won't do anything except in case of 0-duration tweens, + where it will complete them immediately instead of waiting for the next internal update routine + (unless they're nested in a Sequence, in which case the Sequence will still be the one in control and this method will be ignored)
+
+ + Flips the direction of this tween (backwards if it was going forward or viceversa) + + + Forces the tween to initialize its settings immediately + + + Send the tween to the given position in time + Time position to reach + (if higher than the whole tween duration the tween will simply reach its end) + If TRUE will play the tween after reaching the given position, otherwise it will pause it + + + Send the tween to the given position in time while also executing any callback between the previous time position and the new one + Time position to reach + (if higher than the whole tween duration the tween will simply reach its end) + If TRUE will play the tween after reaching the given position, otherwise it will pause it + + + Kills the tween + If TRUE completes the tween before killing it + + + + Forces this tween to update manually, regardless of the set via SetUpdate. + Note that the tween will still be subject to normal tween rules, so if for example it's paused this method will do nothing. + Also note that if you only want to update this tween instance manually you'll have to set it to anyway, + so that it's not updated automatically. + + Manual deltaTime + Unscaled delta time (used with tweens set as timeScaleIndependent) + + + Pauses the tween + + + Plays the tween + + + Sets the tween in a backwards direction and plays it + + + Sets the tween in a forward direction and plays it + + + Restarts the tween from the beginning + Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it + Ignored in case of Sequences. If >= 0 changes the startup delay to this value, otherwise doesn't touch it + + + Rewinds and pauses the tween + Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it + + + Smoothly rewinds the tween (delays excluded). + A "smooth rewind" animates the tween to its start position, + skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. + If called on a tween who is still waiting for its delay to happen, it will simply set the delay to 0 and pause the tween. + Note that a tween that was smoothly rewinded will have its play direction flipped + + + Plays the tween if it was paused, pauses it if it was playing + + + Send a path tween to the given waypoint. + Has no effect if this is not a path tween. + BEWARE, this is a special utility method: + it works only with Linear eases. Also, the lookAt direction might be wrong after calling this and might need to be set manually + (because it relies on a smooth path movement and doesn't work well with jumps that encompass dramatic direction changes) + Waypoint index to reach + (if higher than the max waypoint index the tween will simply go to the last one) + If TRUE will play the tween after reaching the given waypoint, otherwise it will pause it + + + + Creates a yield instruction that waits until the tween is killed or complete. + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForCompletion(); + + + + + Creates a yield instruction that waits until the tween is killed or rewinded. + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForRewind(); + + + + + Creates a yield instruction that waits until the tween is killed. + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForKill(); + + + + + Creates a yield instruction that waits until the tween is killed or has gone through the given amount of loops. + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForElapsedLoops(2); + + Elapsed loops to wait for + + + + Creates a yield instruction that waits until the tween is killed or has reached the given position (loops included, delays excluded). + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForPosition(2.5f); + + Position (loops included, delays excluded) to wait for + + + + Creates a yield instruction that waits until the tween is killed or started + (meaning when the tween is set in a playing state the first time, after any eventual delay). + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForStart(); + + + + Returns the total number of loops completed by this tween + + + Returns the eventual delay set for this tween + + + Returns the eventual elapsed delay set for this tween + + + Returns the duration of this tween (delays excluded). + NOTE: when using settings like SpeedBased, the duration will be recalculated when the tween starts + If TRUE returns the full duration loops included, + otherwise the duration of a single loop cycle + + + Returns the elapsed time for this tween (delays exluded) + If TRUE returns the elapsed time since startup loops included, + otherwise the elapsed time within the current loop cycle + + + Returns the elapsed percentage (0 to 1) of this tween (delays exluded) + If TRUE returns the elapsed percentage since startup loops included, + otherwise the elapsed percentage within the current loop cycle + + + Returns the elapsed percentage (0 to 1) of this tween (delays exluded), + based on a single loop, and calculating eventual backwards Yoyo loops as 1 to 0 instead of 0 to 1 + + + Returns FALSE if this tween has been killed or is NULL, TRUE otherwise. + BEWARE: if this tween is recyclable it might have been spawned again for another use and thus return TRUE anyway. + When working with recyclable tweens you should take care to know when a tween has been killed and manually set your references to NULL. + If you want to be sure your references are set to NULL when a tween is killed you can use the OnKill callback like this: + .OnKill(()=> myTweenReference = null) + + + Returns TRUE if this tween was reversed and is set to go backwards + + + NOTE: To check if a tween was simply set to go backwards see . + Returns TRUE if this tween is going backwards for any of these reasons: + - The tween was reversed and is going backwards on a straight loop + - The tween was reversed and is going backwards on an odd Yoyo loop + - The tween is going forward but on an even Yoyo loop + IMPORTANT: if used inside a tween's callback, this will return a result concerning the exact frame when it's asked, + so for example in a callback at the end of a Yoyo loop step this method will never return FALSE + because the frame will never end exactly there and the tween will already be going backwards when the callback is fired + + + Returns TRUE if the tween is complete + (silently fails and returns FALSE if the tween has been killed) + + + Returns TRUE if this tween was set to be timeScale independent via the tween.SetUpdate method + + + Returns TRUE if this tween has been initialized + + + Returns TRUE if this tween is playing + + + Returns the total number of loops set for this tween + (returns -1 if the loops are infinite) + + + + Returns a point on a path based on the given path percentage. + Returns Vector3.zero if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. + A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). + You can force a path to be initialized by calling myTween.ForceInit(). + + Percentage of the path (0 to 1) on which to get the point + + + + Returns an array of points that can be used to draw the path. + Note that this method generates allocations, because it creates a new array. + Returns NULL if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. + A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). + You can force a path to be initialized by calling myTween.ForceInit(). + + How many points to create for each path segment (waypoint to waypoint). + Only used in case of non-Linear paths + + + + Returns the length of a path. + Returns -1 if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. + A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). + You can force a path to be initialized by calling myTween.ForceInit(). + + + + + Types of loop + + + + Each loop cycle restarts from the beginning + + + The tween moves forward and backwards at alternate cycles + + + Continuously increments the tween at the end of each loop cycle (A to B, B to B+(A-B), and so on), thus always moving "onward". + In case of String tweens works only if the tween is set as relative + + + + Controls other tweens as a group + + + + + Methods that extend known Unity objects and allow to directly create and control tweens from their instances + + + + Tweens a Camera's aspect to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's backgroundColor to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's farClipPlane to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's fieldOfView to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's nearClipPlane to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's orthographicSize to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's pixelRect to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's rect to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Shakes a Camera's localPosition along its relative X Y axes with the given values. + Also stores the camera as the tween's target so it can be used for filtered operations + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Camera's localPosition along its relative X Y axes with the given values. + Also stores the camera as the tween's target so it can be used for filtered operations + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Camera's localRotation. + Also stores the camera as the tween's target so it can be used for filtered operations + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Camera's localRotation. + Also stores the camera as the tween's target so it can be used for filtered operations + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Tweens a Light's color to the given value. + Also stores the light as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Light's intensity to the given value. + Also stores the light as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Light's shadowStrength to the given value. + Also stores the light as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a LineRenderer's color to the given value. + Also stores the LineRenderer as the tween's target so it can be used for filtered operations. + Note that this method requires to also insert the start colors for the tween, + since LineRenderers have no way to get them. + The start value to tween from + The end value to reachThe duration of the tween + + + Tweens a Material's color to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Material's named color property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween (like _Tint or _SpecColor) + The duration of the tween + + + Tweens a Material's named color property with the given ID to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a Material's alpha color to the given value + (will have no effect unless your material supports transparency). + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Material's alpha color to the given value + (will have no effect unless your material supports transparency). + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween (like _Tint or _SpecColor) + The duration of the tween + + + Tweens a Material's alpha color with the given ID to the given value + (will have no effect unless your material supports transparency). + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a Material's named float property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween + The duration of the tween + + + Tweens a Material's named float property with the given ID to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a Material's texture offset to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The duration of the tween + + + Tweens a Material's named texture offset property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween + The duration of the tween + + + Tweens a Material's texture scale to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The duration of the tween + + + Tweens a Material's named texture scale property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween + The duration of the tween + + + Tweens a Material's named Vector property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween + The duration of the tween + + + Tweens a Material's named Vector property with the given ID to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a TrailRenderer's startWidth/endWidth to the given value. + Also stores the TrailRenderer as the tween's target so it can be used for filtered operations + The end startWidth to reachThe end endWidth to reach + The duration of the tween + + + Tweens a TrailRenderer's time to the given value. + Also stores the TrailRenderer as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's position to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's X position to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's Y position to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's Z position to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's localPosition to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's X localPosition to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's Y localPosition to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's Z localPosition to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's rotation to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + Rotation mode + + + Tweens a Transform's rotation to the given value using pure quaternion values. + Also stores the transform as the tween's target so it can be used for filtered operations. + PLEASE NOTE: DORotate, which takes Vector3 values, is the preferred rotation method. + This method was implemented for very special cases, and doesn't support LoopType.Incremental loops + (neither for itself nor if placed inside a LoopType.Incremental Sequence) + + The end value to reachThe duration of the tween + + + Tweens a Transform's localRotation to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + Rotation mode + + + Tweens a Transform's rotation to the given value using pure quaternion values. + Also stores the transform as the tween's target so it can be used for filtered operations. + PLEASE NOTE: DOLocalRotate, which takes Vector3 values, is the preferred rotation method. + This method was implemented for very special cases, and doesn't support LoopType.Incremental loops + (neither for itself nor if placed inside a LoopType.Incremental Sequence) + + The end value to reachThe duration of the tween + + + Tweens a Transform's localScale to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's localScale uniformly to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's X localScale to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's Y localScale to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's Z localScale to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's rotation so that it will look towards the given world position. + Also stores the transform as the tween's target so it can be used for filtered operations + The position to look atThe duration of the tween + Eventual axis constraint for the rotation + The vector that defines in which direction up is (default: Vector3.up) + + + EXPERIMENTAL Tweens a Transform's rotation so that it will look towards the given world position, + while also updating the lookAt position every frame + (contrary to which calculates the lookAt rotation only once, when the tween starts). + Also stores the transform as the tween's target so it can be used for filtered operations + The position to look atThe duration of the tween + Eventual axis constraint for the rotation + The vector that defines in which direction up is (default: Vector3.up) + + + Punches a Transform's localPosition towards the given direction and then back to the starting one + as if it was connected to the starting position via an elastic. + The direction and strength of the punch (added to the Transform's current position) + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. + 1 creates a full oscillation between the punch direction and the opposite direction, + while 0 oscillates only between the punch and the start position + If TRUE the tween will smoothly snap all values to integers + + + Punches a Transform's localScale towards the given size and then back to the starting one + as if it was connected to the starting scale via an elastic. + The punch strength (added to the Transform's current scale) + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + 1 creates a full oscillation between the punch scale and the opposite scale, + while 0 oscillates only between the punch scale and the start scale + + + Punches a Transform's localRotation towards the given size and then back to the starting one + as if it was connected to the starting rotation via an elastic. + The punch strength (added to the Transform's current rotation) + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting rotation when bouncing backwards. + 1 creates a full oscillation between the punch rotation and the opposite rotation, + while 0 oscillates only between the punch and the start rotation + + + Shakes a Transform's localPosition with the given values. + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the tween will smoothly snap all values to integers + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localPosition with the given values. + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the tween will smoothly snap all values to integers + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localRotation. + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localRotation. + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localScale. + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localScale. + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Tweens a Transform's position to the given value, while also applying a jump effect along the Y axis. + Returns a Sequence instead of a Tweener. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reach + Power of the jump (the max height of the jump is represented by this plus the final Y offset) + Total number of jumps + The duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's localPosition to the given value, while also applying a jump effect along the Y axis. + Returns a Sequence instead of a Tweener. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reach + Power of the jump (the max height of the jump is represented by this plus the final Y offset) + Total number of jumps + The duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's position through the given path waypoints, using the chosen path algorithm. + Also stores the transform as the tween's target so it can be used for filtered operations + The waypoints to go through + The duration of the tween + The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + The path mode: 3D, side-scroller 2D, top-down 2D + The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. + Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + The color of the path (shown when gizmos are active in the Play panel and the tween is running) + + + Tweens a Transform's localPosition through the given path waypoints, using the chosen path algorithm. + Also stores the transform as the tween's target so it can be used for filtered operations + The waypoint to go through + The duration of the tween + The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + The path mode: 3D, side-scroller 2D, top-down 2D + The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. + Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + The color of the path (shown when gizmos are active in the Play panel and the tween is running) + + + IMPORTANT: Unless you really know what you're doing, you should use the overload that accepts a Vector3 array instead. + Tweens a Transform's position via the given path. + Also stores the transform as the tween's target so it can be used for filtered operations + The path to use + The duration of the tween + The path mode: 3D, side-scroller 2D, top-down 2D + + + IMPORTANT: Unless you really know what you're doing, you should use the overload that accepts a Vector3 array instead. + Tweens a Transform's localPosition via the given path. + Also stores the transform as the tween's target so it can be used for filtered operations + The path to use + The duration of the tween + The path mode: 3D, side-scroller 2D, top-down 2D + + + Tweens a Tween's timeScale to the given value. + Also stores the Tween as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Light's color to the given value, + in a way that allows other DOBlendableColor tweens to work together on the same target, + instead than fight each other as multiple DOColor would do. + Also stores the Light as the tween's target so it can be used for filtered operations + The value to tween toThe duration of the tween + + + Tweens a Material's color to the given value, + in a way that allows other DOBlendableColor tweens to work together on the same target, + instead than fight each other as multiple DOColor would do. + Also stores the Material as the tween's target so it can be used for filtered operations + The value to tween toThe duration of the tween + + + Tweens a Material's named color property to the given value, + in a way that allows other DOBlendableColor tweens to work together on the same target, + instead than fight each other as multiple DOColor would do. + Also stores the Material as the tween's target so it can be used for filtered operations + The value to tween to + The name of the material property to tween (like _Tint or _SpecColor) + The duration of the tween + + + Tweens a Material's named color property with the given ID to the given value, + in a way that allows other DOBlendableColor tweens to work together on the same target, + instead than fight each other as multiple DOColor would do. + Also stores the Material as the tween's target so it can be used for filtered operations + The value to tween to + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a Transform's position BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableMove tweens to work together on the same target, + instead than fight each other as multiple DOMove would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's localPosition BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableMove tweens to work together on the same target, + instead than fight each other as multiple DOMove would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + EXPERIMENTAL METHOD - Tweens a Transform's rotation BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableRotate tweens to work together on the same target, + instead than fight each other as multiple DORotate would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + Rotation mode + + + EXPERIMENTAL METHOD - Tweens a Transform's lcoalRotation BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableRotate tweens to work together on the same target, + instead than fight each other as multiple DORotate would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + Rotation mode + + + Punches a Transform's localRotation BY the given value and then back to the starting one + as if it was connected to the starting rotation via an elastic. Does it in a way that allows other + DOBlendableRotate tweens to work together on the same target + The punch strength (added to the Transform's current rotation) + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting rotation when bouncing backwards. + 1 creates a full oscillation between the punch rotation and the opposite rotation, + while 0 oscillates only between the punch and the start rotation + + + Tweens a Transform's localScale BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableScale tweens to work together on the same target, + instead than fight each other as multiple DOScale would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + + + + Completes all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens completed + (meaning the tweens that don't have infinite loops and were not already complete) + + For Sequences only: if TRUE also internal Sequence callbacks will be fired, + otherwise they will be ignored + + + + Completes all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens completed + (meaning the tweens that don't have infinite loops and were not already complete) + + For Sequences only: if TRUE also internal Sequence callbacks will be fired, + otherwise they will be ignored + + + + Kills all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens killed. + + If TRUE completes the tween before killing it + + + + Kills all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens killed. + + If TRUE completes the tween before killing it + + + + Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens flipped. + + + + + Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens flipped. + + + + + Sends to the given position all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens involved. + + Time position to reach + (if higher than the whole tween duration the tween will simply reach its end) + If TRUE will play the tween after reaching the given position, otherwise it will pause it + + + + Sends to the given position all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens involved. + + Time position to reach + (if higher than the whole tween duration the tween will simply reach its end) + If TRUE will play the tween after reaching the given position, otherwise it will pause it + + + + Pauses all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens paused. + + + + + Pauses all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens paused. + + + + + Plays all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays backwards all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays backwards all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays forward all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays forward all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Restarts all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens restarted. + + + + + Restarts all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens restarted. + + + + + Rewinds all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens rewinded. + + + + + Rewinds all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens rewinded. + + + + + Smoothly rewinds all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens rewinded. + + + + + Smoothly rewinds all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens rewinded. + + + + + Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens involved. + + + + + Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens involved. + + + + + This class serves only as a utility class to store tween settings to apply on multiple tweens. + It is in no way needed otherwise, since you can directly apply tween settings to a tween via chaining + + + + A variable you can eventually Clear and reuse when needed, + to avoid instantiating TweenParams objects + + + Creates a new TweenParams object, which you can use to store tween settings + to pass to multiple tweens via myTween.SetAs(myTweenParms) + + + Clears and resets this TweenParams instance using default values, + so it can be reused without instantiating another one + + + Sets the autoKill behaviour of the tween. + Has no effect if the tween has already started + If TRUE the tween will be automatically killed when complete + + + Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. + The ID to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. + The ID to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. + The ID to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets the target for the tween, which can then be used as a filter with DOTween's static methods. + IMPORTANT: use it with caution. If you just want to set an ID for the tween use SetId instead. + When using shorcuts the shortcut target is already assigned as the tween's target, + so using this method will overwrite it and prevent shortcut-operations like myTarget.DOPause from working correctly. + The target to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets the looping options for the tween. + Has no effect if the tween has already started + Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) + Loop behaviour type (default: LoopType.Restart) + + + Sets the ease of the tween. + If applied to Sequences eases the whole sequence animation + Eventual overshoot or amplitude to use with Back or Elastic easeType (default is 1.70158) + Eventual period to use with Elastic easeType (default is 0) + + + Sets the ease of the tween using an AnimationCurve. + If applied to Sequences eases the whole sequence animation + + + Sets the ease of the tween using a custom ease function. + If applied to Sequences eases the whole sequence animation + + + Sets the recycling behaviour for the tween. + If TRUE the tween will be recycled after being killed, otherwise it will be destroyed. + + + Sets the update type to the one defined in DOTween.defaultUpdateType (UpdateType.Normal unless changed) + and lets you choose if it should be independent from Unity's Time.timeScale + If TRUE the tween will ignore Unity's Time.timeScale + + + Sets the type of update (default or independent) for the tween + The type of update (default: UpdateType.Normal) + If TRUE the tween will ignore Unity's Time.timeScale + + + Sets the onStart callback for the tween. + Called the first time the tween is set in a playing state, after any eventual delay + + + Sets the onPlay callback for the tween. + Called when the tween is set in a playing state, after any eventual delay. + Also called each time the tween resumes playing from a paused state + + + Sets the onRewind callback for the tween. + Called when the tween is rewinded, + either by calling Rewind or by reaching the start position while playing backwards. + Rewinding a tween that is already rewinded will not fire this callback + + + Sets the onUpdate callback for the tween. + Called each time the tween updates + + + Sets the onStepComplete callback for the tween. + Called the moment the tween completes one loop cycle, even when going backwards + + + Sets the onComplete callback for the tween. + Called the moment the tween reaches its final forward position, loops included + + + Sets the onKill callback for the tween. + Called the moment the tween is killed + + + Sets the onWaypointChange callback for the tween. + Called when a path tween reaches a new waypoint + + + Sets a delayed startup for the tween. + Has no effect on Sequences or if the tween has already started + + + If isRelative is TRUE sets the tween as relative + (the endValue will be calculated as startValue + endValue instead than being used directly). + Has no effect on Sequences or if the tween has already started + + + If isSpeedBased is TRUE sets the tween as speed based + (the duration will represent the number of units the tween moves x second). + Has no effect on Sequences, nested tweens, or if the tween has already started + + + + Methods that extend Tween objects and allow to set their parameters + + + + Sets the autoKill behaviour of the tween to TRUE. + Has no effect if the tween has already started or if it's added to a Sequence + + + Sets the autoKill behaviour of the tween. + Has no effect if the tween has already started or if it's added to a Sequence + If TRUE the tween will be automatically killed when complete + + + Sets an ID for the tween (), which can then be used as a filter with DOTween's static methods. + The ID to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets a string ID for the tween (), which can then be used as a filter with DOTween's static methods. + Filtering via string is 2X faster than using an object as an ID (using the alternate obejct overload) + The string ID to assign to this tween. + + + Sets an int ID for the tween (), which can then be used as a filter with DOTween's static methods. + Filtering via int is 4X faster than via object, 2X faster than via string (using the alternate object/string overloads) + The int ID to assign to this tween. + + + Allows to link this tween to a GameObject + so that it will be automatically killed when the GameObject is destroyed. + Has no effect if the tween is added to a Sequence + The link target (unrelated to the target set via SetTarget) + + + Allows to link this tween to a GameObject and assign a behaviour depending on it. + This will also automatically kill the tween when the GameObject is destroyed. + Has no effect if the tween is added to a Sequence + The link target (unrelated to the target set via SetTarget) + The behaviour to use ( is always evaluated even if you choose another one) + + + Sets the target for the tween, which can then be used as a filter with DOTween's static methods. + IMPORTANT: use it with caution. If you just want to set an ID for the tween use SetId instead. + When using shorcuts the shortcut target is already assigned as the tween's target, + so using this method will overwrite it and prevent shortcut-operations like myTarget.DOPause from working correctly. + The target to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets the looping options for the tween. + Has no effect if the tween has already started + Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) + + + Sets the looping options for the tween. + Has no effect if the tween has already started + Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) + Loop behaviour type (default: LoopType.Restart) + + + Sets the ease of the tween. + If applied to Sequences eases the whole sequence animation + + + Sets the ease of the tween. + If applied to Sequences eases the whole sequence animation + + Eventual overshoot to use with Back or Flash ease (default is 1.70158 - 1 for Flash). + In case of Flash ease it must be an intenger and sets the total number of flashes that will happen. + Using an even number will complete the tween on the starting value, while an odd one will complete it on the end value. + + + + Sets the ease of the tween. + If applied to Sequences eases the whole sequence animation + Eventual amplitude to use with Elastic easeType or overshoot to use with Flash easeType (default is 1.70158 - 1 for Flash). + In case of Flash ease it must be an integer and sets the total number of flashes that will happen. + Using an even number will complete the tween on the starting value, while an odd one will complete it on the end value. + + Eventual period to use with Elastic or Flash easeType (default is 0). + In case of Flash ease it indicates the power in time of the ease, and must be between -1 and 1. + 0 is balanced, 1 weakens the ease with time, -1 starts the ease weakened and gives it power towards the end. + + + + Sets the ease of the tween using an AnimationCurve. + If applied to Sequences eases the whole sequence animation + + + Sets the ease of the tween using a custom ease function (which must return a value between 0 and 1). + If applied to Sequences eases the whole sequence animation + + + Allows the tween to be recycled after being killed. + + + Sets the recycling behaviour for the tween. + If TRUE the tween will be recycled after being killed, otherwise it will be destroyed. + + + Sets the update type to UpdateType.Normal and lets you choose if it should be independent from Unity's Time.timeScale + If TRUE the tween will ignore Unity's Time.timeScale + + + Sets the type of update for the tween + The type of update (defalt: UpdateType.Normal) + + + Sets the type of update for the tween and lets you choose if it should be independent from Unity's Time.timeScale + The type of update + If TRUE the tween will ignore Unity's Time.timeScale + + + EXPERIMENTAL: inverts this tween, so that it will play from the end to the beginning + (playing it backwards will actually play it from the beginning to the end). + Has no effect if the tween has already started or if it's added to a Sequence + + + EXPERIMENTAL: inverts this tween, so that it will play from the end to the beginning + (playing it backwards will actually play it from the beginning to the end). + Has no effect if the tween has already started or if it's added to a Sequence + If TRUE the tween will be inverted, otherwise it won't + + + Sets the onStart callback for the tween, clearing any previous onStart callback that was set. + Called the first time the tween is set in a playing state, after any eventual delay + + + Sets the onPlay callback for the tween, clearing any previous onPlay callback that was set. + Called when the tween is set in a playing state, after any eventual delay. + Also called each time the tween resumes playing from a paused state + + + Sets the onPause callback for the tween, clearing any previous onPause callback that was set. + Called when the tween state changes from playing to paused. + If the tween has autoKill set to FALSE, this is called also when the tween reaches completion. + + + Sets the onRewind callback for the tween, clearing any previous onRewind callback that was set. + Called when the tween is rewinded, + either by calling Rewind or by reaching the start position while playing backwards. + Rewinding a tween that is already rewinded will not fire this callback + + + Sets the onUpdate callback for the tween, clearing any previous onUpdate callback that was set. + Called each time the tween updates + + + Sets the onStepComplete callback for the tween, clearing any previous onStepComplete callback that was set. + Called the moment the tween completes one loop cycle, even when going backwards + + + Sets the onComplete callback for the tween, clearing any previous onComplete callback that was set. + Called the moment the tween reaches its final forward position, loops included + + + Sets the onKill callback for the tween, clearing any previous onKill callback that was set. + Called the moment the tween is killed + + + Sets the onWaypointChange callback for the tween, clearing any previous onWaypointChange callback that was set. + Called when a path tween's current waypoint changes + + + Sets the parameters of the tween (id, ease, loops, delay, timeScale, callbacks, etc) as the parameters of the given one. + Doesn't copy specific SetOptions settings: those will need to be applied manually each time. + Has no effect if the tween has already started. + NOTE: the tween's target will not be changed + Tween from which to copy the parameters + + + Sets the parameters of the tween (id, ease, loops, delay, timeScale, callbacks, etc) as the parameters of the given TweenParams. + Has no effect if the tween has already started. + TweenParams from which to copy the parameters + + + Adds the given tween to the end of the Sequence. + Has no effect if the Sequence has already started + The tween to append + + + Adds the given tween to the beginning of the Sequence, pushing forward the other nested content. + Has no effect if the Sequence has already started + The tween to prepend + + + Inserts the given tween at the same time position of the last tween, callback or interval added to the Sequence. + Note that, in case of a Join after an interval, the insertion time will be the time where the interval starts, not where it finishes. + Has no effect if the Sequence has already started + + + Inserts the given tween at the given time position in the Sequence, + automatically adding an interval if needed. + Has no effect if the Sequence has already started + The time position where the tween will be placed + The tween to insert + + + Adds the given interval to the end of the Sequence. + Has no effect if the Sequence has already started + The interval duration + + + Adds the given interval to the beginning of the Sequence, pushing forward the other nested content. + Has no effect if the Sequence has already started + The interval duration + + + Adds the given callback to the end of the Sequence. + Has no effect if the Sequence has already started + The callback to append + + + Adds the given callback to the beginning of the Sequence, pushing forward the other nested content. + Has no effect if the Sequence has already started + The callback to prepend + + + Inserts the given callback at the same time position of the last tween, callback or interval added to the Sequence. + Note that, in case of a Join after an interval, the insertion time will be the time where the interval starts, not where it finishes. + Has no effect if the Sequence has already started + /// <param name="callback">The callback to prepend</param> + + + Inserts the given callback at the given time position in the Sequence, + automatically adding an interval if needed. + Has no effect if the Sequence has already started + The time position where the callback will be placed + The callback to insert + + + Changes a TO tween into a FROM tween: sets the current target's position as the tween's endValue + then immediately sends the target to the previously set endValue. + + + Changes a TO tween into a FROM tween: sets the current target's position as the tween's endValue + then immediately sends the target to the previously set endValue. + If TRUE the FROM value will be calculated as relative to the current one + + + Changes a TO tween into a FROM tween: sets the current value of the target as the endValue, + and the previously passed endValue as the actual startValue. + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM value will be calculated as relative to the current one + + + Changes a TO tween into a FROM tween: sets the tween's starting value to the given one + and eventually sets the tween's target to that value immediately. + Value to start from + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM/TO values will be calculated as relative to the current ones + + + Changes a TO tween into a FROM tween: sets the tween's starting value to the given one + and eventually sets the tween's target to that value immediately. + Alpha value to start from (in case of Fade tweens) + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM/TO values will be calculated as relative to the current ones + + + Changes a TO tween into a FROM tween: sets the tween's starting value to the given one + and eventually sets the tween's target to that value immediately. + Value to start from (in case of Vector tweens that act on a single coordinate or scale tweens) + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM/TO values will be calculated as relative to the current ones + + + Changes a TO tween into a FROM tween: sets the tween's starting value to the given one + and eventually sets the tween's target to that value immediately. + Value to start from (in case of Vector tweens that act on a single coordinate or scale tweens) + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM/TO values will be calculated as relative to the current ones + + + Sets a delayed startup for the tween. + In case of Sequences behaves the same as , + which means the delay will repeat in case of loops (while with tweens it's ignored after the first loop cycle). + Has no effect if the tween has already started + + + EXPERIMENTAL: implemented in v1.2.340. + Sets a delayed startup for the tween with options to choose how the delay is applied in case of Sequences. + Has no effect if the tween has already started + Only used by types: If FALSE sets the delay as a one-time occurrence + (defaults to this for types), + otherwise as a Sequence interval which will repeat at the beginning of every loop cycle + + + Sets the tween as relative + (the endValue will be calculated as startValue + endValue instead than being used directly). + Has no effect on Sequences or if the tween has already started + + + If isRelative is TRUE sets the tween as relative + (the endValue will be calculated as startValue + endValue instead than being used directly). + Has no effect on Sequences or if the tween has already started + + + If isSpeedBased is TRUE sets the tween as speed based + (the duration will represent the number of units the tween moves x second). + Has no effect on Sequences, nested tweens, or if the tween has already started + + + If isSpeedBased is TRUE sets the tween as speed based + (the duration will represent the number of units the tween moves x second). + Has no effect on Sequences, nested tweens, or if the tween has already started + + + Options for float tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector2 tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector2 tweens + Selecting an axis will tween the vector only on that axis, leaving the others untouched + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector3 tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector3 tweens + Selecting an axis will tween the vector only on that axis, leaving the others untouched + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector4 tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector4 tweens + Selecting an axis will tween the vector only on that axis, leaving the others untouched + If TRUE the tween will smoothly snap all values to integers + + + Options for Quaternion tweens + If TRUE (default) the rotation will take the shortest route, and will not rotate more than 360°. + If FALSE the rotation will be fully accounted. Is always FALSE if the tween is set as relative + + + Options for Color tweens + If TRUE only the alpha value of the color will be tweened + + + Options for Vector4 tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector4 tweens + If TRUE, rich text will be interpreted correctly while animated, + otherwise all tags will be considered as normal text + The type of scramble to use, if any + A string containing the characters to use for scrambling. + Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. + Leave it to NULL to use default ones + + + Options for Vector3Array tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector3Array tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for ShapeCircle tweens + If TRUE the center you set in the DOTween.To method will be considered as relative + to the starting position of the target + If TRUE the tween will smoothly snap all values to integers + + + Options for Path tweens (created via the DOPath shortcut) + The eventual movement axis to lock. You can input multiple axis if you separate them like this: + AxisConstrain.X | AxisConstraint.Y + The eventual rotation axis to lock. You can input multiple axis if you separate them like this: + AxisConstrain.X | AxisConstraint.Y + + + Options for Path tweens (created via the DOPath shortcut) + If TRUE the path will be automatically closed + The eventual movement axis to lock. You can input multiple axis if you separate them like this: + AxisConstrain.X | AxisConstraint.Y + The eventual rotation axis to lock. You can input multiple axis if you separate them like this: + AxisConstrain.X | AxisConstraint.Y + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target towards the given position. + Must be chained directly to the tween creation method or to a SetOptions + The position to look at + The eventual direction to consider as "forward". + If left to NULL defaults to the regular forward side of the transform + The vector that defines in which direction up is (default: Vector3.up) + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target towards the given position with options to keep the Z rotation stable. + Must be chained directly to the tween creation method or to a SetOptions + The position to look at + If TRUE doesn't rotate the target along the Z axis + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target towards another transform. + Must be chained directly to the tween creation method or to a SetOptions + The transform to look at + The eventual direction to consider as "forward". + If left to NULL defaults to the regular forward side of the transform + The vector that defines in which direction up is (default: Vector3.up) + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target towards another transform with options to keep the Z rotation stable. + Must be chained directly to the tween creation method or to a SetOptions + The transform to look at + If TRUE doesn't rotate the target along the Z axis + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target to the path, with the given lookAhead. + Must be chained directly to the tween creation method or to a SetOptions + The percentage of lookAhead to use (0 to 1) + The eventual direction to consider as "forward". + If left to NULL defaults to the regular forward side of the transform + The vector that defines in which direction up is (default: Vector3.up) + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the path with options to keep the Z rotation stable. + Must be chained directly to the tween creation method or to a SetOptions + The percentage of lookAhead to use (0 to 1) + If TRUE doesn't rotate the target along the Z axis + + + + Types of log behaviours + + + + Log only warnings and errors + + + Log warnings, errors and additional infos + + + Log only errors + + + + Indicates either a Tweener or a Sequence + + + + TimeScale for the tween + + + If TRUE the tween will play backwards + + + If TRUE the tween is completely inverted but without playing it backwards + (play backwards will actually play the tween in the original direction) + + + Object ID (usable for filtering with DOTween static methods). Can be anything except a string or an int + (use or for those) + + + String ID (usable for filtering with DOTween static methods). 2X faster than using an object id + + + Int ID (usable for filtering with DOTween static methods). 4X faster than using an object id, 2X faster than using a string id. + Default is -999 so avoid using an ID like that or it will capture all unset intIds + + + Tween target (usable for filtering with DOTween static methods). Automatically set by tween creation shortcuts + + + Called when the tween is set in a playing state, after any eventual delay. + Also called each time the tween resumes playing from a paused state + + + Called when the tween state changes from playing to paused. + If the tween has autoKill set to FALSE, this is called also when the tween reaches completion. + + + Called when the tween is rewinded, + either by calling Rewind or by reaching the start position while playing backwards. + Rewinding a tween that is already rewinded will not fire this callback + + + Called each time the tween updates + + + Called the moment the tween completes one loop cycle + + + Called the moment the tween reaches completion (loops included) + + + Called the moment the tween is killed + + + Called when a path tween's current waypoint changes + + + Tweeners-only (ignored by Sequences), returns TRUE if the tween was set as relative + + + + Set by SetTarget if DOTween's Debug Mode is on (see DOTween Utility Panel -> "Store GameObject's ID" debug option + + + + FALSE when tween is (or should be) despawned - set only by TweenManager + + + Gets and sets the time position (loops included, delays excluded) of the tween + + + Returns TRUE if the tween is set to loop (either a set number of times or infinitely) + + + TRUE after the tween was set in a play state at least once, AFTER any delay is elapsed + + + Time position within a single loop cycle + + + + Animates a single value + + + + Changes the start value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new start value + If bigger than 0 applies it as the new tween duration + + + Changes the end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new end value + If bigger than 0 applies it as the new tween duration + If TRUE the start value will become the current target's value, otherwise it will stay the same + + + Changes the end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new end value + If TRUE the start value will become the current target's value, otherwise it will stay the same + + + Changes the start and end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new start value + The new end value + If bigger than 0 applies it as the new tween duration + + + + Used internally + + + + + Update type + + + + Updates every frame during Update calls + + + Updates every frame during LateUpdate calls + + + Updates using FixedUpdate calls + + + Updates using manual update calls + +
+
diff --git a/Assets/DOTween/DOTween.XML.meta b/Assets/DOTween/DOTween.XML.meta new file mode 100644 index 0000000..814057e --- /dev/null +++ b/Assets/DOTween/DOTween.XML.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 619a29c7459169344b7a685b0b9ada64 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/DOTween.dll b/Assets/DOTween/DOTween.dll new file mode 100644 index 0000000000000000000000000000000000000000..73235fc01a2d43cf393d9d7c897be3924bbbefeb GIT binary patch literal 177664 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�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 + + + DOTweenEditor + + + + + Contains compatibility methods taken from DemiEditor (for when DOTween is without it) + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Starts the update loop of tween in the editor. Has no effect during playMode. + + Eventual callback to call after every update + + + + Stops the update loop and clears the onPreviewUpdated callback. + + If TRUE also resets the tweened objects to their original state. + Note that this works by calling Rewind on all tweens, so it will work correctly + only if you have a single tween type per object and it wasn't killed + If TRUE also kills any cached tween + + + + Readies the tween for editor preview by setting its UpdateType to Manual plus eventual extra settings. + + The tween to ready + If TRUE (recommended) removes all callbacks (OnComplete/Rewind/etc) + If TRUE prevents the tween from being auto-killed at completion + If TRUE starts playing the tween immediately + + + Full major version + first minor version (ex: 2018.1f) + + + Major version + + + First minor version (ex: in 2018.1 it would be 1) + + + + Checks that the given editor texture use the correct import settings, + and applies them if they're incorrect. + + + + + Returns TRUE if setup is required + + + + + Returns TRUE if the file/directory at the given path exists. + + Path, relative to Unity's project folder + + + + + Converts the given project-relative path to a full path, + with backward (\) slashes). + + + + + Converts the given full path to a path usable with AssetDatabase methods + (relative to Unity's project folder, and with the correct Unity forward (/) slashes). + + + + + Connects to a asset. + If the asset already exists at the given path, loads it and returns it. + Otherwise, either returns NULL or automatically creates it before loading and returning it + (depending on the given parameters). + + Asset type + File path (relative to Unity's project folder) + If TRUE and the requested asset doesn't exist, forces its creation + + + + Full path for the given loaded assembly, assembly file included + + + + + Adds the given global define if it's not already present + + + + + Removes the given global define if it's present + + + + + Returns TRUE if the given global define is present in all the + or only in the given , depending on passed parameters. + + + to use. Leave NULL to check in all of them. + + + + Not used as menu item anymore, but as a utility function + + + + Full major version + first minor version (ex: 2018.1f) + + + Major version + + + First minor version (ex: in 2018.1 it would be 1) + + + diff --git a/Assets/DOTween/Editor/DOTweenEditor.XML.meta b/Assets/DOTween/Editor/DOTweenEditor.XML.meta new file mode 100644 index 0000000..2bf527a --- /dev/null +++ b/Assets/DOTween/Editor/DOTweenEditor.XML.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 349bac8e4773b584b822ab83d3f94fef +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/Editor/DOTweenEditor.dll b/Assets/DOTween/Editor/DOTweenEditor.dll new file mode 100644 index 0000000000000000000000000000000000000000..c2d87f934f951d96c83020e8dd51cc058c5ad46e GIT binary patch literal 70656 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 P00000NkvXXu0mjftl$Bl literal 0 HcmV?d00001 diff --git a/Assets/DOTween/Editor/Imgs/DOTweenIcon.png.meta b/Assets/DOTween/Editor/Imgs/DOTweenIcon.png.meta new file mode 100644 index 0000000..1d34582 --- /dev/null +++ b/Assets/DOTween/Editor/Imgs/DOTweenIcon.png.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 6b91addab459f7545ba3dcb7ca8ad792 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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: 4 + 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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/Editor/Imgs/DOTweenMiniIcon.png b/Assets/DOTween/Editor/Imgs/DOTweenMiniIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd74c1a26df1a45564c7a0e21c62d0ef3af2fd1 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{!3Opi<85sBugD~Uq{1quc!H=FU zjv*3LlT#WP(iF^Cl2R3(u|Mi}s1fft&-^joZ3WZ(2Ug1Y!S$8-a*li}_21XqSnvJ# z@Y+`2=i8W`Zfg*cV81TuZmqUr`JI~8M}9x(m1v%HMLo`ySuokJ?%Vq7{C4$+ST-HH z5`RuO<@s#=8XoVy+lF)YEaxg?4vAr1(jlM1>Tx0PF<0}pFUf679a{7Ee==}5`qQz? zuIUa#(3byge21?t-^6oqTDwHc&iz0s`zDdQwtGKbESsPtIM1KwqFB4+nW=frYn!|7 zvs(U9y->(A=TFZ3t)>6Hv^;B{u+A(fd3smW;eIaTDS0KOITHVv7#gf%Y$mkMJ`MCd NgQu&X%Q~loCICTRfS>>X literal 0 HcmV?d00001 diff --git a/Assets/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta b/Assets/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta new file mode 100644 index 0000000..920b453 --- /dev/null +++ b/Assets/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 0e5e0a6c3ba204c45903041a4f43808f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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: 4 + 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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/Editor/Imgs/Footer.png b/Assets/DOTween/Editor/Imgs/Footer.png new file mode 100644 index 0000000000000000000000000000000000000000..e29d02fe18b777b1d316feb647b339803c5126de GIT binary patch literal 4409 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 literal 0 HcmV?d00001 diff --git a/Assets/DOTween/Editor/Imgs/Footer.png.meta b/Assets/DOTween/Editor/Imgs/Footer.png.meta new file mode 100644 index 0000000..4eb3ac6 --- /dev/null +++ b/Assets/DOTween/Editor/Imgs/Footer.png.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: b675ca42bf0d83042b8553477e6b20b4 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + 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: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/Editor/Imgs/Footer_dark.png b/Assets/DOTween/Editor/Imgs/Footer_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e48db5ef7a2b83eff50d6e3b5fe9ba3bcd4a5015 GIT binary patch literal 4429 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 TqmFO~00000NkvXXu0mjf{EM6C literal 0 HcmV?d00001 diff --git a/Assets/DOTween/Editor/Imgs/Footer_dark.png.meta b/Assets/DOTween/Editor/Imgs/Footer_dark.png.meta new file mode 100644 index 0000000..308d024 --- /dev/null +++ b/Assets/DOTween/Editor/Imgs/Footer_dark.png.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: b744529a14333ff4aaf428f3586eb9d2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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: 4 + 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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/Editor/Imgs/Header.jpg b/Assets/DOTween/Editor/Imgs/Header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d710d719075150879b1ee76680af87791c4d3b3 GIT binary patch literal 22787 zcmeIa2|QH&+dqD!Qj&?1R7`~wAyJkvZAdEFcT*`#Dj~9;R!Wv4WSt60Vv;TEWZ#W_ ztl9T{8D>56|J1#H@89!#e&6kRUeEvadfcx&HRsGZpU<_vulIGG!|Gu5LtD+8UcOB)-Y6`qJI{C3sflyDh}?ka!jG-}+}Yo^v4{WE&VJw6AN%TpxY*f% z^4NJG3`EXjBv3ECS#zHgIspCSzn~ZEHP<{&TeAjr3f1fz)wAyJzk~>P0w?cRXwUMV z#ul^tm)K6MgSJ8cwKR`IFZvkDN7eKT3n2;eDSLZe8Z(a z=-yMByTTXl{v^>CzoXgEkT6Kp+jVZ+`&R~;2i&Z?b``odcMZsw3lBty*gTprcfWPO zu>90kqw|%hbxI$PbcB{?hp(va&CALPu6=UsmU(EvyHHY3+i2$A)BH+z+d^`N{rn$a zF{n5We>=9!+^X4p_cd91%WZd2fgm>AhaH02qz9I%T!c-J-=qv3b-2!SVQ_!AGNJo0 z_I4phR}Tea@Y*ChZsqpa4b4^enJN{Z0)v*+u&X1}v8skEo<7=3;<6=eUIp2Ql}{%W z1%C97)4lfOa}|YNiyO04#jKe(po)I%_1Nt)t|U9+x$A{FWxw6f6S@4@hGKOsE0G~O zd9ox;Tk*h02P_sjI~gz^;yMD8>T=V}D5o{@&FoW;T%FnR;-bo3$U4X(??;ou6!4VnKd3 zu_i4}%&sp7jP^eLiwSUO^&c0M)%}{6Nyy>V{H%PT;33E9M!Ns%5#?j(t%@zFyYej@ zmYCerd`d260Zqi-k`N#D(J7*dRrzdo!S7!rKGjXr_kqhQ>>Ba%U0+_39 zGq;R1Y!HpGz~TzsyJKGzh)-gaPy+Ya( z)Mht(lMIsN?c0)T)OL+T*XsqL-li$%A1H4sD@ho-RzRY@9+(fiVsK9D6pHs$4tmRZ z?jv8c*W@&Qv`(+H`xu!c-1!wb8*|1z-O!sfjv2hxKkKM za~c;|n3DN(1#h*~&Z`X!?995Zc=Orv9RIFf!{ZyLC7%Q|2k3b!$!@mMhRg7< zb9-qQA;V18*^H!D8ljbFx81P+Ov-4+LroEzbOD7*vGzjq+tB6jwVc93S z!dSV?gOr+0X1&{MvDpuQ(!P{*+RXcVX>%{d8-2N+7g^9VZ0S@=T1cPb8Jc(B@D7q8ni(M;dojb6iK%PH z&3;a^xOR0yX*ka{!u|3K;ne0ZDb00GU-7b=Ue|6ubywe^9x+r*zAC72ZsTpUd7)Uz z(Okib4Zf|^px%rQAGjv(i1MM7tNJtzBO3q1gfSh}r%8jg9dl%Q%G0MZvz(9baYDo) z|IvCGp0cY+3NtyqZ{x(@B^y)=Im}lgS6L95j2vC=xz2(P_W=VHF0EDVOYS6<#l87& z4FzQ>GQc2Op*JGR{9}G4&lni+qMqU&VyU=vce5yIp1K-a8robywTY z(Boh2j^U&Z-JkJtM4k@>3TuZxJE2?Ja^o_Riq(nrnOdj*yidE>jI5$;ldHbvpAR9J zfwC0Q@|EblRH@4isxjy$!nrh|s8^Gh!ke+AQRTwk8q`P0%Dv5U1nzD^O}*Q-(1{S# zcw3V|fgqQh(5w;cP1tXXOMjwJ#DYkpmS3ORIZ;A&ci%QJCeqIn7gN1H_Sx;smpf(QFA$F@JC=hE+Uz*Yt5e#3%d+?Qc-@`N;?5GqgDPlZ zaP@qd(CvW?d#QUi0bW@FvgTq(MoJ}?yBSY|#KYQ>r~B zN$?@*_z6-~O`(m_u}fdjX>hetGhym0qHACU59?@z@EKu?pXSOw}jqPhu1v2hH`JC5M_)hEv7+Q z;9*2;`O?}=KNchel4{0LI0uZG}G-4s>*yFMbVGnvm( z6pdx)050S<&~w~*OdjOlLrVhV@#L1Rl%?RP4Q?e?NLYal17vxjtd@@ zW# z3JdzsI79i&f}RvEup^J2v7q~4NekQHEB$cj0z8V=dE32k<*!#bfRuh?L1Kd}s7^Kh zbk1NYvVFA-MdKDj*h*PYnGVzM0isVLN(0r)Uq{=!lu;MkD)zr@sXmnfUelNS|%u~+2&#p*8t1c1(==5?cVx%L|^EQ5iaVw zvAHU*%fX6zvy|C_IvHbA{Ru_28y-pJ7%D)mGXt1Z?R9WfEz%3WUF=MnSG6&Ct5gxr zt61_O@Y%`^d~CAlZnMx%Ewai^?ixv|ASx(J;wRug=+)5ua>QL^EIHx?j{2wSzY` z2Wx9V+T3E^+eL`nG~Lx9tZ)Lw(PJek$W5N^Y@cWi@AMK#JSWvW>)EL{ z8n~hN5tWVF)?%X0YuTh(of@$mLa*d|oInlDZJ<0ij5cmHomA_%e=ATnHU&94IJ#rP zO2SjqHczT*2yfDklNC2Un~pWB8QTz&BC`yUR5l(k2#BkWSCC7HKBnyQp>xusz-YTJ zHT@IY#xA4SI!~sWhx>P_aPhoYF&BHELlYHkfu_&Omk+w#px&KvYM)i_-kH67NI~~7 z9P4zwBg_}nKiOt9*+VL77vF`-DLZ`Zx*@+(sr{nhaAk3q5tk+rTaxem>DHkO#(C0b z2)m-KB-9fk_E$A7_&vRObTjX9d&PTN5-APGcmhz4LOl!tzkCdw{yRLVN2NhNJu^_yqwL!44QfjrOw7T;Zd%D0>#xcpE`CEyT zlRABM1G_xTW|ZZ1x-pUXi(6`JTUQpMUE8EFUnl%aO3Wv*!W@R}`wK}yA0E|Scd>oN zf;L!&4PQ-P!u!)on(NI*(yI;gW3jeD4{2kiLVIMsTUuycxx4LCE*u_Snk@escl$wxt`_96d65cOP?@jD@LBOdG?6 z4r?2*ptZ_-lRNEJls*|b@Ay8rCw+6mtO9(pQb%1cAl@(0^r&D=I4+p#yFK$@#SLwk zBBp40uxuM!hnuuT%cte)n^~I2KGummKTtpJ$z8@yAvIs4h6@GqYi*(R+V+ifro@G# zwqD%g_~Ei!5aotaTYXoEl}(von(r!2ZxaRnmx&0P;nk|x2 zfiuOv?#9q5nd2wO(CYreo1p?vN?LGPVF`@5N=wcxaUCzB;n^k%-!tpHuOf?@yv{U( zufupFF$w@RGmmCj(AHRz(FKc>z9G{q`Rbc&6z51$3y!tiA6ZZa;T~<)v3aI9O4?wU{ijIVD5w%OIp$o3T`*RYQ{s+UiFY&D&t{TD&VP#%gzpRz9 z{H`-SGE`yq+OFFUvW8IH{f$-u6$8W zVWnS^VbqO;G<%~LcmG}za=lOCtz-+61P_bF&hsMc5)SN=cvPYKm66g^D=~1uz^S}t zEHJw;E044!gXatlOs=Vm@1NoH=9NhNnycma^@Zw)xseYX(^5Bbq2-akfA)I?Ww{Sx zb#u5QOb0WbmFQ)$`GHxV%L}k3*ua}iul^YjI|hsfg}8>kpJf4&Va-)BNL^)_x2+3^O348C!#%emV7Y z5pMzkfnYo75ftSTKVezcj0N@Y1^Ds<3o?1jf>irJV1Y215sQ9|1DpD20sx54Zvo&^ z|4+9@cWF^iBiq)^F}VPsrfh&IA2IE=FfnHp+zB-!$^aMo^Rm%Xa+tAhI=B-$3$i@Of`}16_w_fINB_J!hU5<~jWB_T*pV#<3FD$@CJi&Bv9gwcn@9b2<29R4 z7wdKz6YsjLb>zA^a^{*1yTX)7d-e5mF-gQPMV0DX1NJ_{bBc$W*Gtj~r$g{u^uuqs zpO+T#hnjr0&nz%L@#1}RqdItiV9kMZ(@{)Hz7R*Th2SE;X}gWo~5H4lY?I z&s-bNf(RN6dpvy&mPipYqAh46UOyH7r=zyWw}>T#4JiPuJ5KtCDWT^dTmZ2901KLH zVnI7GpG6tqQy33;#j)C-YGdrtgB#Cb=*w_L@bpF)(~q74IAjq4+Fy@;mMPXG@<3?B zdg-LHluQ5|=-x5CsYD@3qGxr{d{Xg~^$@qEnM={A${nGBDH{44y--gry_HmU>5SA& ze9Yb~ku>t=fY~ttd~|A=PNJ?pGp;_B?iH-${xBfM-Bk)MxnIbF-bMi>v4LWP&x8g2 z;RV{jpe}(zh|QA)ojyuH)}RsbU~&|CY38R^=$i0>zkXkXR*#~t{8&2Mzvw~|H*jn4 zhwj#|dw1=rI4fv;4{s$?s>SCUc0k1D{_o-c70dsc!{6fu%2Pwy z!I`*S`(Nci(Uf8dQm7YIxU>!vxTtcZK=$z;{a9{?!C*!xehW-`OrUK{>&aox z;y%ik!rN7os!gRCzBdU|gBa!pqsblEq0%-Vo76}+7i3i~!hTOd?*+=8UvL=P=9xT; z&U*X3mqYieOSG<$DYr3Y3$LIDmd6e4?>r#Zf{vG6w<17Pm5B!4jn(Z z8+Tb^%#mubTZLa&vag|U*yq8^1u2Qc73xon%lF4s_ov~>*`icdr~`k zYGXCz%HCWQz3GYX_T4XTcTf5_Mvl5Ti`Qi7hh}9GCi|S2cjMfC?&aDPZCzaEd{%4d z+oxNK%-BeRPN>8?gY(-KZYky@IZ&)RYclH84HG^jP*V$O9&+wu{>vS5vBq6y1wjw^ zGWM<=WaP9TskWxz5jAf!qyV6X#?21DbdBt^hb)uI!)Wfy#s5@Kn{Amm z-N}MPhLFDNh!%EJ8Dwvm@+3y#Bts;EuIEF4nr}n zae^>!LHsLVYX72*IX)TkR-ZfHEc`X&g~r~Py`m?FxICHb+;iXWdoSc4CT{~Tsrvak z(RMJ*5-lv8a`H`kUC9ariWYf}O2^Wd2?JOR6aO4>C`R8yK3<2H=6;Zn^AS^hODlxc z3AiM9#tXaTvjNj~9*=k<(u~T|!Csg5YV!6EzoC1jDSAN;{!Z)8%8y;=Lk#zD3=icV-TEQ3#`;aD_icVj1)wTqQ%4w#s1QnKbNtJRQr= z=zEAF>q!7G1%os#`)*z;C;3JMiN~@*^<1PBcS6jFpk;o>_i)aD=v#m+E*V&0LCp300DL}6phN{v zAL3sG5-%t3R0*2u_X{r28-#b%CfUnRINr>5IH0petWE$@yo7SLyyzT$2bk9gpI5iH|^C%VH}dIZQY7N-;6;lDIU z3`(2XpM^7g_AcsJU}fi30o}tIy~{^0RUf_+5)zbBA9(pg(p`TRwEnKQyu|`DE;_~Z zd9W#;zh*M7#(? zx7o#lFqn0S#!GTdU!5Bu(AEvaZYnhm3f=B^IonS8h};8O`mtAeVP4+zL&c^J53`=rB{>yt-i2@Dm5ex^&aa&gK^9 z&+k3hdn`|SQQTMj(?_*qUTxSro;Iln(P!H{=tRD256Vpv9mug=YnI^BonJ@n6>jt~ zSjt^FRwU4}qMJ2G6Y^2boN!t^e%m95Ax?nc#(aJNeIr0Ih>t@$D?s@|EQVi>F`aUj z(8s+DTMpfIc)Bw!`hE9v&$EJS9eqWltaRN);u1(**Ikm#Hf^l$B`n!w_(sQy9=vTs z+1Jp0X(2q&%6&`t_d(i@#8YQ`KK1jwB%U_25)*fGZ;;l<4O`eLw1ip&zlR45DD23S z4#FIRz%cNVUTKg=e0(-Bf>Bdpgx8qAIg0L9=%Z38(u=4xL*z05@J9V88vj*LzAXMM zHg68WV`KeLY{?dml4y@f=`wfPu?(m>Ge<+i(wA&>q@|!>FqDLSbw+Zb;I) zqG2yzVc~Mqnfswx23720aSw~8I283uOPoA13Bo<`V&aYt>A@EJ{oXRx&LhEtm>m`! zQ-)giZby06e6Wb%771WqeBmL(n5rPk9KF-wqI9ugg&|NGm?D0+<#~2e4qTEl&%xZ3 z4);+(%}d43#5gb*41TH*mLvfm{@bINY)8V<(mZw;ZJx>~1_d$x8+us^^jF}KALaJ% zs(IlJG$T-SkYdyCiQ&4DMj}Gxmv2k|I9_uRMM%~fp>$IZRv5TW=&uw%>}zx1YP}0qsyLy%u$) zp1m0$%hOeOGeV|pP)0fIx{FQ6RPms=ezKixiT#weKFDqVFQCQVsEVF)#ovfJ|7`cx zq#of1(k$pY*6O9TT;e*v8_j0!ET~u|fP0^mYCYfuWK;5Ud}ljnW`#}mIr{2-FY--2 zVEE{9TZ_s@wF^$QR&~n15tX2+GN-szwCwO2|4fwvK+b3PcWux8!)}tD%y{wyo~Wi4_{*(0`0sACRjt~ z)FW_S1WvkjWt5j1xbaKER0wQJ z<(guS4F|VOrGbgX?wpt>0Dz1f} z3FI)ex{ujey}$S6MsqwfF$r!w)dIqyG^LHc6IX)_EY^O8?dkxIF%XRm2)S-!5wvGBnz$$I}MoxEnb$TMH66FZdy!>w(%g?MY0+wUYBgoM&- z^g<@RGUjjZxUIV1_A`-JYu7pY%hn^f-keMJa~bXm{i7{NS}?r5D}H})ilp3(YV&E) z#K6@2mzkM5;vp(WII?`a#WSKZ6FQe>bv?hBJ&*Rhv$<^HbpHF*O}K_vR}S7x6N&D4 zPS*lsHgBFJF%j&-$Caa)FlOmU#AT$pg)qL?4ur@EhV9Q!i)*FI{mz6O(=fPu#aH*p z29-eT=!@fKLhcK-S}l@A+o!ggO|;*sDN-i|tusUu0`8o^+l!{^8h0Gj%)(>$yIvj> zGd)O{tmL5sd{$*<0qmCt9=~9T-wJc%Qj{{JeZ`85s)SCiC1u~KvWlAhE-z>>3?b^t zdNEm0u?|g=OKaiS zo`=fI&dGaTlb7S~wiNqi&lTL;M1dOa1y|l%H{EPzPFh{J;rBzTZ5$j5)8yTC9`^=I z3w*<;4CIAIC)ds8OnT(rjdsePb_?_VF$3T&OFsrzD}cGaPB?^AvVfwGRSOASVK}^; z2pfpmdxA5dsyNL5v*Oy_TWl{R-Ibg6@O$WDR;YJg^4_NPPiMATJ%edOh2AR{0#p3s zJ)YkNBwAWh;iFXX&#U3Rp3z2z^Sx$;g=O|47Z2BXl9CNyi5HjLn20^%A2kwQ8A1uF z*nHe5s=cdUduQB+Ny0SF5gTj0!}dx_O^oPW0&2h4%Dx!8R>$YLvF7R=@(UV>Cg~|= z3i#Su(rq(jRl9B10O2`WZ#b17IeiREUO*#{CCFUT3j>n`+4ed@&lK#74OIy$qA(Oj z5K*9=HPSRHmbosaf{5uQePl$Ed-#7?_&lLr$Pv5W=gl@YQ3AtD1EC-;mnbh|9R_Nf z;z-!HxQ8+ST9ts3SRgV2)iVO=dyQmsQpjy za8<5HMl@c8cK;1ZhZ#v2ehYx{5Y^*h4q;j1CLhdutQ&RSSe$NpF~o1#u^RRPo9gcsba%Joer@x<8o8yNsc8 zn1Sq*g|AD;&GBKt_=W6f3e0QyDe2E@ZI5)I_hR%7cTv*Gs;c;A?Rb^$6(BUdLFv_0 z!mF%BFYQ8U+_<|5u9J%R<&bLPbQbSbqNw5?eaySTAjFFLJPCz!^{B{A+HUmxRc{j; z79{inOynFz45-UR`@QHrqsSpUCEr|teD#|%^WjX(i^4pWg+{KT>dNWR9hApx%~Xl6 zIG^}&QMfvKAZdqzZg?e;F#iGB3pWy2Q0NPI!DR*0{Te;SKvRV(Nw%e@YnV9H#n@048RjVm8y%L{CG&vrk zOeu`^LM2LW>-*VQf`}U>xgyc%z_g1joD8pCxFcD|vv{u5ED z!l6o^v6aEZMdhUxBhZb^2D#lFRE>>Mg=zZ{L5!iRHI_@;3;#m-(FmbyD@e7VtaJiB zCbd-WmD9)w8aL|Mf$ondrgR+VCiTONunSv}JWUq#F0PKSZGwcQ(Z=f%>B-9rVnrJXGR)j!BG1W4b z5ir#8J&=FS#hcKNSSG~=R5*FQ=vi9SR1^~-Rm7cmwP6%F00gbHz`=9_zVs$)<|i76 z_mW?*n)C{L2f~+iEm8!qQR5Szx4%$H9-R^NScm!AMVoX|AKGs>p^QL<07AloRP-jx zt#gc?N5+P#=7Tb(Zv^3|#y3a|6I<8Z7s+8k!2mM$p&LG;d1X@>iXO6EQ_HgRdU2FT zASBiG%_S}2r9onFfrTgBv=DX2W%y<2d zSamP95g$c>&)%<2;%I9~<<^8bXDT2X9{FO1jkLyCP@*hv!P0k5XbRZ@S6!S#z6JwU zG9UQoc1yo;wR{~TLT#f``>@Z8dGAK)Eu_J@ziUKehG+e2{hn3WH8G&!&VC9 zks0X)pQkHd`UVJk)hXlJCl0VT!Zrk|_%SrO#sT=(&{*HBF4f0I=s4vNEu?7eyf!=Y zBW76gElk=7FN@;w1Gs@!vIah!aYWg)C}x?M;RPV(K1*P?m#2V(W>LdsnS)6b+^ARE z4?6JGU)0(n38H_}r2kKPwz7?;xonf~Q-hoIQbWi&i{VAu&sGzcm?#NZItJ6YLZj-{ zs9vND08Fb50%+Px5JVI3jb9vA#bHc6?(`#sOFIQX@S$cjZIn<$P>m=f;ygo|xBTQm zk2#Q~k%{*?JHaKyz$G+JgG=Cn19cHjHDG!^!WKHqJBa;Nv<8B*s@t!G@<5RaTrJj4 znDIk`g9^=qnKU$}I@V2ksB(-d`!+D3=IV}(mnrcn9^*e7tE8Hi>jv#6F4Uc~PVKznJ%`9a3=!WeQC8r`wsvAZqxXZZW2QEtwOt zcih539y`SJBP`OE#~WmWtvuwgg>5SUL{mK?{!d>$z#dJB2OR8F8JavGjXbo^`9-UN z^FOfrqTzFp6r-hS6p)in@zH$wDf47(exOqdb~IQ4ABwre35E0_s=|Q$hm}5foo&dO9~mdw;~R;^7d;12 zjOVg&5w4-2V2Ihq2u>W3rV3OxA?n&CMCvo}Oa?RV>k$;y9Z1hU2p*|q0)UnsTj(t? z&k;r$L)4@DKEmUhuzXQ0sE{~96<*=q0o>O@8i%~9JGVr1JHU>oTmf4-PM{5f=N>F) zPcuwB(0qXLnQa9bgC_ItQ;s`uh_%ab2Bwe# z7o#Y)0+?}qZ3YU^kayvfO^6SIo%rA(H8*b08AJmof>#W82NdJUr$kxeh4q>-^I`-SrAP!h4gDQAq5~@!JnplG zgM{GdZ|Qc;Qm>?uj%F?aMq#uo3;N<5+n4B(YiU9r6Ro#5OI)SKy4{q|DauYShD%RW z1Alo3_rom69*<=jW0zLvS3{`ebuzVQg$_yI>jv!JeVFc!woU@|cMek(Ss z1QZ2Cn$7HDOimD59snqj7EHbZ6Z=Y$4e+mDzd~6W+C)hziOAbHPwU!*mtHNI^XdH} zvD_iM>PRYdx$GqR1i!OqHH+qMmYd3j`VxgZI(-8HyvgEr5di4NMw(NHx+jTe1fZtjkG42+vo>=Z zd1MSbdsOwuxDxK$OY##R4=*ZEU6u_E#|_-jnFVF0On$ZUAV{~8o$5yxmBoublTY1O zjbuh+hGXFFX+pLAfSVt4X*d{l7?H19u9NKRZ_GjKILR*S2tFBLI9rk8^&VEKbolZOA2=P^E}2bXa)*B|!Y% z2*WtB+$1LSqCGh7Kzi>rLG(Ha0+O}EY73PV5d-HDUM?2^rxsSAVXCSrCM-xsntmM& zvXRz<^Q2X=$uo{b##d0!5>{Gr@bRipWvjA$Lf?1Id(P~cU#uK?c^a)~M(b|opiFN& zn-XNZOB}f|8`X3YMc!pMd4z#x!XFDZfvpDMhy@!BT4y8+QldvtIT(9s{0zD#h|gvW zTcolC+;gy$d9#iM#d_B=o_DGHCE4i~Wa}J}O=}me9$H8XP+cD+kgI1Fvx70l|N7*q zg0%2_5j&$RBXR$8@XbZ%3ZaejtIzl6M4M%W+{@8T4~qDW&35&{E3<8XR=FS=B2b3(g-ut4xs5qnrh3BZO7Sf4t!D=_9g7$cTxYt7w>$8 z*fA$9FKFh4IET;agzuNiy5u1jdq2!^tokQhAQ&(qZ zET*jt3nsgx-xAEN#j5*uV}_HbU~)5txh;&g{Q@$gJx0wKzXKOPBVWfcJV3TFCsB>Y znkkV>b58iDcRe?IYJ6>WQRp($y8lkiNc`fC!^6(4oGmCzHxK_rl_vesiQ1^+fR8^& zWP=-z46&d!!(f(a8JJr-p`Id~1jOL?mxGv}hxX9Ow}FpyI)B41a{=@GmW!zf{zZ1G zg=SwnRk`z&M~-tTvhha^-U#AL3c!BZ_>aGa+DR+S zBjG6}#yoY1y+R1pSYRApo!YIbkbUTCx5R#VD;1Q=I+p>Nw$BlFW7BS(E11AWBscs; ze|^8Kq5Gd)cy6ti5ygH0jiRvYwk_8Ryvu)7v)Gv?c)wTtV1LZr{e@h3`SPnWI!QX? zb4{)`>iqnMi3S2HTz#EbL;O7!m+-4Qankj>zY_b;(n<&_ zs$L*fbY(EL{owDp;BN+GbD2VH1mM1`7pX#gSYwa3C(!4Sdfehg%*+aQIBUM(G(ug} z@OusK8uqyEX0zds!PMP-1N6VuBKIdj;oyrL^41Q?#8SCBVNw}P+k$UB zOsMqx$RL^>VL{HRh=9-e6(#!6eE%@pweA z8GhLt))ILB)`1HaiXzBT%`ExWxmosg_0!E27tdu}Gb-0FC#49PRA>5>`qj+4xzo?- zw_@);op#yOEy#kbazi##dOr^-Ofc#%98xotUvbK+moeV0D)s$4r(qXj^UjTPc69ZO z`|Tw6gsop@okIh-B_YY0j0H&YXsNG9{O#vhP?!~)!s&Ver6#t z_I>Cli_Q}?r?XAv`x}j`_lQm1$B5JF{5Vb(3F#)U?PWn{JUVvDja|r`(n&NwNsqcLa(mA`;>hgW^?N+&#{zioK90d2}@?? z%xj3;Iw)Raz6O;oQB!%n!}!YNxx+@9h=!z>is;1)8gI#xUK{(L{CE=ryEO~a1wcH? z-Z6gA;uvk|LJ=6NAJnpc9b^?Q>#G-V$H$kTn|zV)>cG*v#H3gHVUg2)8GZgarX;x-6YEvs{pjs!lz`qtK%K`c_qgo5^FGEPOQoym{Nkw} zZ-8L;rI10@gEIwX1e&I*M0Ucgj(f47{Vx54U^H&neQX;4gATlhd{qN<;89QWpI~Xa zu4qRb6}!isqZZB-V}t=^(ne6ob5r`XAF~F7saySwDb~OleRdVZ1Jpznj}l|v1=gXa z;_gnO2Wm%*2ASK;i+Eqb#^F@m;29Gnsgy7Wv^OJ8OWW}sUrSao&v5q&=EQ$ex%6fu zubqx-LRx&I%(fW4Ud}3PW)Dnshvzc1LR21BskQ*VLS+PyKlQs`PH#WC5*5cPxFnsamM`8rlwo@wi1mp;!l< zUD>q9ZtSwb`xlQ|x63(|-`%uNrnu_kj=3Y+)bYMpBiUJv48O}upxBKIq&C&j{r-`E zUEvB+-;|CvH79;;-IupH;nF4cuwHe(*C?wC$FfB$r0+^ciZPZQ8gR0+(l*@1qX3+! z>{^PCTt)ro|04junZLe0a$S4=p%Zezv@2&>LivA+iN^94iX=7Swl%443iWat-x&Q&=WWfyza!2o=e>2S+?!q00r>})* z%8Z_!3yKc1O9(H`^3{XhY`!H?+7*{%zY=}6DZa-@^xLqJD_R==)K7W4UtkdNv)j(1 znhd)x`Z2&9Jw6WnC5{K~YchkauI5V@0Qh3&L>z^kQIykJMCt%Plez7eBbfG{3@Wat z6xlN4jJN?uhQULW9ci_5D00pr#AfyIpRcB|a!le2y_9*Y78A*=!whhfFk_FgtIImf zK>z6?kcj`un;bcg=d?f8-rS?bbyeX-KF=OywopAi@v@fZG2zea+WoeUkS8l%iOlT} zX(AuVoKl>d6VA-O)Lb3=CWd=Goam?%FWz#=cbdH5mglB)B-MbP0vA;f8GF0N81v5& z#D5N{D0juW15}opYqNyO_50%xCOzFE;yZfkwh4ncdj&kT1@@)9CuD zAFVqamZiUjO9azk;s(OpcszX{`pFM7=M4C=J@bfNi@PB@f>yp@0 zt#?20+E+E{blZ0IF9ncP#n{X?^NBxKzc)htzV&eQll9%_=*AYpCtF?2T;m$#t{HV` zDeML_^4gp4r#^cgcJxgK*V4v_R{g2$XrnF`)Lu^fU9EhCpE_zl|2L}dKe3UDR>}S8 z1tHD->%xz)LrzLIG}5{oN8;r-&IaGx=%4gFerGE#Z{-+&F>UC;z8#;{;dcKy6V-#u zKv}AXYV~q};0gbrfd8FJd}%>3GS12hAGNjODNF2l#@4T|Uz0A^KPLKa>FC?CPH&I& z#Er+RJ8fx^w2QGWA1!v-s~NsH=(Ne|LGVJFx$4gM`@CMQswn$hInAckMRGODaW?vs zrvZxOr+Y2{9sUn+!~aB&|5sm^xjkc@1r&UFZF+VEG;Cc!dzEUFFn{uH;fskCeoN14Lz>(|v^ zMTahW^VM{zzVu9ydw$Ko;_#;1mz4krOWA#lH%&C_!cCV^#k5^gIxfBV>}xK{2N=thnz2|U16ZSAW*$K=5pVwI*Owh|dybsg>Bsa0FzHRy z2q3caTR~@Q9Mti1%WyfmUdW~2fx7c%5rDC8j(WW}Kvq$>VPXpfhp4&uU}?H4x<#!F zuip!V5DK8H_e5i9bAZ{5nqTVcuOuz25+B0fCt*MG=_0_NR`CuYMcT;2%th&bEz?psG66DeRP!>lLsl_U?=V*e@IR)ckeg%$xJ``y zuBhR-@FFK}D_Z~TuS5H|K`fP@jH0c=!}bw^$P7l^!$h7D09uL9d~8tjBt)G9)UK|G zJy!803o0OJ(9m!NyeR#n;!@dHl*#z|+h%?sI_2mx+@hQ%Oe#iP<|%!vxis9D;l4$Q zL}Y8b{Vb~D;VyQup56oFLKU}c-ol|Kva_OF6#|BnS%vM|T+C&53) zA=(Ri`k2jF>3a0(62hWf(vN21#GzsefGlXxPoEWAIy!m{y$#W5a;%&mrx6-wrzW(C zzrK%-TVgPRmWp9cU{*}2(_k74#x&9!)>Bg8ZbEVisUG(hOoSPg22=UrnGEZB0WEHf_8?52ajcuf>0y4)l89}#kQ>=jDXo1%lVQ8E!RfGr9*e0F|!rW)T5-~d4NZDS$JjnnI zgyR*Z8v!qqS&aY>(D5ypB++|77w;+4&zJC{s|sF!13-*EZq}c!FdbYa?seW{$b+&L3u$K%cSlC>LHbi^m+G?l;S(ab&U(vm!rA?Im|t1F$%#Ju#bQYC>F1x6O` zE7izKX4I+vm!0|8J|$c?)lp{c<%eTY7e9RuO#gIrNB#%tT%PzZhp$;1g396O!OYn} z(H-@s=f)#`TkFvu8<3U$*odgD?x9s&=>Ng94PY=^lQNvg#R8}uctm|8yZ<@IQ z%cA}*X9^rzItPW=?dE>)Ix6y_Zf^vq+(drKL61E_?(Zzp>-Vj3esc9dz=+`1jZH~9 z-*vRxP=74V=!YDG|1Hb-`?t2w)#hqL`D?PsaFlQNJ?r#FS7+Z84Ifby3CvNS_It12-&%1|>Am?x#f@eokv}Ae{UJf(f3to5{oe63GV*nX z%pvetz>QtEdZQ0~ND+N2-8D-X8+D*lZZLsVtug-&0seo2eAOJi~K&uY* zu?c&{yXu+X%SXaTK98R){s4v@?GOAA=o!NAN=;eG!bC=T8~QCu=W_hEQrjON`nB1@ z`{*yc)20v~z{(MPgYEUGum90AH-`)ks);Yv)Oh$hsfp>{GWimJ>XqQoHr$(z#PEIR zb(L(=+J)uf4{BKJPn=4s2qphX*+1RozfjrNGPIwqj=GCN6DTSW+ QE#Li`lK-oJv9mh=KQ4fgsQ>@~ literal 0 HcmV?d00001 diff --git a/Assets/DOTween/Editor/Imgs/Header.jpg.meta b/Assets/DOTween/Editor/Imgs/Header.jpg.meta new file mode 100644 index 0000000..6976723 --- /dev/null +++ b/Assets/DOTween/Editor/Imgs/Header.jpg.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 6eb35f05a57f0f84eaf9071b132cfdd7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + 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: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/Modules.meta b/Assets/DOTween/Modules.meta new file mode 100644 index 0000000..3df8528 --- /dev/null +++ b/Assets/DOTween/Modules.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4238dd9a40574e74b8edf32491eb0a91 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DOTween/Modules/DOTweenModuleAudio.cs b/Assets/DOTween/Modules/DOTweenModuleAudio.cs new file mode 100644 index 0000000..d958ae0 --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleAudio.cs @@ -0,0 +1,198 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER +using System; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; +using UnityEngine; +using UnityEngine.Audio; // Required for AudioMixer + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModuleAudio + { + #region Shortcuts + + #region Audio + + /// Tweens an AudioSource's volume to the given value. + /// Also stores the AudioSource as the tween's target so it can be used for filtered operations + /// The end value to reach (0 to 1)The duration of the tween + public static TweenerCore DOFade(this AudioSource target, float endValue, float duration) + { + if (endValue < 0) endValue = 0; + else if (endValue > 1) endValue = 1; + TweenerCore t = DOTween.To(() => target.volume, x => target.volume = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an AudioSource's pitch to the given value. + /// Also stores the AudioSource as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOPitch(this AudioSource target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.pitch, x => target.pitch = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region AudioMixer + + /// Tweens an AudioMixer's exposed float to the given value. + /// Also stores the AudioMixer as the tween's target so it can be used for filtered operations. + /// Note that you need to manually expose a float in an AudioMixerGroup in order to be able to tween it from an AudioMixer. + /// Name given to the exposed float to set + /// The end value to reachThe duration of the tween + public static TweenerCore DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration) + { + TweenerCore t = DOTween.To(()=> { + float currVal; + target.GetFloat(floatName, out currVal); + return currVal; + }, x=> target.SetFloat(floatName, x), endValue, duration); + t.SetTarget(target); + return t; + } + + #region Operation Shortcuts + + /// + /// Completes all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens completed + /// (meaning the tweens that don't have infinite loops and were not already complete) + /// + /// For Sequences only: if TRUE also internal Sequence callbacks will be fired, + /// otherwise they will be ignored + public static int DOComplete(this AudioMixer target, bool withCallbacks = false) + { + return DOTween.Complete(target, withCallbacks); + } + + /// + /// Kills all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens killed. + /// + /// If TRUE completes the tween before killing it + public static int DOKill(this AudioMixer target, bool complete = false) + { + return DOTween.Kill(target, complete); + } + + /// + /// Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens flipped. + /// + public static int DOFlip(this AudioMixer target) + { + return DOTween.Flip(target); + } + + /// + /// Sends to the given position all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens involved. + /// + /// Time position to reach + /// (if higher than the whole tween duration the tween will simply reach its end) + /// If TRUE will play the tween after reaching the given position, otherwise it will pause it + public static int DOGoto(this AudioMixer target, float to, bool andPlay = false) + { + return DOTween.Goto(target, to, andPlay); + } + + /// + /// Pauses all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens paused. + /// + public static int DOPause(this AudioMixer target) + { + return DOTween.Pause(target); + } + + /// + /// Plays all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens played. + /// + public static int DOPlay(this AudioMixer target) + { + return DOTween.Play(target); + } + + /// + /// Plays backwards all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens played. + /// + public static int DOPlayBackwards(this AudioMixer target) + { + return DOTween.PlayBackwards(target); + } + + /// + /// Plays forward all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens played. + /// + public static int DOPlayForward(this AudioMixer target) + { + return DOTween.PlayForward(target); + } + + /// + /// Restarts all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens restarted. + /// + public static int DORestart(this AudioMixer target) + { + return DOTween.Restart(target); + } + + /// + /// Rewinds all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens rewinded. + /// + public static int DORewind(this AudioMixer target) + { + return DOTween.Rewind(target); + } + + /// + /// Smoothly rewinds all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens rewinded. + /// + public static int DOSmoothRewind(this AudioMixer target) + { + return DOTween.SmoothRewind(target); + } + + /// + /// Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens involved. + /// + public static int DOTogglePause(this AudioMixer target) + { + return DOTween.TogglePause(target); + } + + #endregion + + #endregion + + #endregion + } +} +#endif diff --git a/Assets/DOTween/Modules/DOTweenModuleAudio.cs.meta b/Assets/DOTween/Modules/DOTweenModuleAudio.cs.meta new file mode 100644 index 0000000..518bdc7 --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleAudio.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4702391d9345d634681a92c11ea2ca42 \ No newline at end of file diff --git a/Assets/DOTween/Modules/DOTweenModuleEPOOutline.cs b/Assets/DOTween/Modules/DOTweenModuleEPOOutline.cs new file mode 100644 index 0000000..2ab3775 --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleEPOOutline.cs @@ -0,0 +1,146 @@ +using UnityEngine; + +#if false || EPO_DOTWEEN // MODULE_MARKER + +using EPOOutline; +using DG.Tweening.Plugins.Options; +using DG.Tweening; +using DG.Tweening.Core; + +namespace DG.Tweening +{ + public static class DOTweenModuleEPOOutline + { + public static int DOKill(this SerializedPass target, bool complete) + { + return DOTween.Kill(target, complete); + } + + public static TweenerCore DOFloat(this SerializedPass target, string propertyName, float endValue, float duration) + { + var tweener = DOTween.To(() => target.GetFloat(propertyName), x => target.SetFloat(propertyName, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFade(this SerializedPass target, string propertyName, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOColor(this SerializedPass target, string propertyName, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOVector(this SerializedPass target, string propertyName, Vector4 endValue, float duration) + { + var tweener = DOTween.To(() => target.GetVector(propertyName), x => target.SetVector(propertyName, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFloat(this SerializedPass target, int propertyId, float endValue, float duration) + { + var tweener = DOTween.To(() => target.GetFloat(propertyId), x => target.SetFloat(propertyId, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFade(this SerializedPass target, int propertyId, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOColor(this SerializedPass target, int propertyId, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOVector(this SerializedPass target, int propertyId, Vector4 endValue, float duration) + { + var tweener = DOTween.To(() => target.GetVector(propertyId), x => target.SetVector(propertyId, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static int DOKill(this Outlinable.OutlineProperties target, bool complete = false) + { + return DOTween.Kill(target, complete); + } + + public static int DOKill(this Outliner target, bool complete = false) + { + return DOTween.Kill(target, complete); + } + + /// + /// Controls the alpha (transparency) of the outline + /// + public static TweenerCore DOFade(this Outlinable.OutlineProperties target, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.Color, x => target.Color = x, endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + /// + /// Controls the color of the outline + /// + public static TweenerCore DOColor(this Outlinable.OutlineProperties target, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.Color, x => target.Color = x, endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + /// + /// Controls the amount of blur applied to the outline + /// + public static TweenerCore DOBlurShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + /// + /// Controls the amount of blur applied to the outline + /// + public static TweenerCore DOBlurShift(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + /// + /// Controls the amount of dilation applied to the outline + /// + public static TweenerCore DODilateShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + /// + /// Controls the amount of dilation applied to the outline + /// + public static TweenerCore DODilateShift(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + } +} +#endif diff --git a/Assets/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta b/Assets/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta new file mode 100644 index 0000000..ff5fa1d --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 216b83d657d96d44487cfbf4354eb0b7 \ No newline at end of file diff --git a/Assets/DOTween/Modules/DOTweenModulePhysics.cs b/Assets/DOTween/Modules/DOTweenModulePhysics.cs new file mode 100644 index 0000000..08b0700 --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModulePhysics.cs @@ -0,0 +1,216 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER +using System; +using DG.Tweening.Core; +using DG.Tweening.Core.Enums; +using DG.Tweening.Plugins; +using DG.Tweening.Plugins.Core.PathCore; +using DG.Tweening.Plugins.Options; +using UnityEngine; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModulePhysics + { + #region Shortcuts + + #region Rigidbody + + /// Tweens a Rigidbody's position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMove(this Rigidbody target, Vector3 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody's X position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveX(this Rigidbody target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue, 0, 0), duration); + t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody's Y position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveY(this Rigidbody target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, endValue, 0), duration); + t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody's Z position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveZ(this Rigidbody target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue), duration); + t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody's rotation to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// Rotation mode + public static TweenerCore DORotate(this Rigidbody target, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast) + { + TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); + t.SetTarget(target); + t.plugOptions.rotateMode = mode; + return t; + } + + /// Tweens a Rigidbody's rotation so that it will look towards the given position. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The position to look atThe duration of the tween + /// Eventual axis constraint for the rotation + /// The vector that defines in which direction up is (default: Vector3.up) + public static TweenerCore DOLookAt(this Rigidbody target, Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null) + { + TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, towards, duration) + .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetLookAt); + t.plugOptions.axisConstraint = axisConstraint; + t.plugOptions.up = (up == null) ? Vector3.up : (Vector3)up; + return t; + } + + #region Special + + /// Tweens a Rigidbody's position to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reach + /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) + /// Total number of jumps + /// The duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Sequence DOJump(this Rigidbody target, Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) + { + if (numJumps < 1) numJumps = 1; + float startPosY = 0; + float offsetY = -1; + bool offsetYSet = false; + Sequence s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, jumpPower, 0), duration / (numJumps * 2)) + .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetLoops(numJumps * 2, LoopType.Yoyo) + .OnStart(() => startPosY = target.position.y); + s.Append(DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue.x, 0, 0), duration) + .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) + ).Join(DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue.z), duration) + .SetOptions(AxisConstraint.Z, snapping).SetEase(Ease.Linear) + ).Join(yTween) + .SetTarget(target).SetEase(DOTween.defaultEaseType); + yTween.OnUpdate(() => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + Vector3 pos = target.position; + pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); + target.MovePosition(pos); + }); + return s; + } + + /// Tweens a Rigidbody's position through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations. + /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOPath. + /// The waypoints to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOPath( + this Rigidbody target, Vector3[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, target.MovePosition, new Path(pathType, path, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody = true; + t.plugOptions.mode = pathMode; + return t; + } + /// Tweens a Rigidbody's localPosition through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations + /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOLocalPath. + /// The waypoint to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOLocalPath( + this Rigidbody target, Vector3[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), new Path(pathType, path, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + // Used by path editor when creating the actual tween, so it can pass a pre-compiled path + internal static TweenerCore DOPath( + this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, target.MovePosition, path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody = true; + t.plugOptions.mode = pathMode; + return t; + } + internal static TweenerCore DOLocalPath( + this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + + #endregion + + #endregion + + #endregion + } +} +#endif diff --git a/Assets/DOTween/Modules/DOTweenModulePhysics.cs.meta b/Assets/DOTween/Modules/DOTweenModulePhysics.cs.meta new file mode 100644 index 0000000..377a5af --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModulePhysics.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7fbfab74b660bc54aa30fcfedeffea6d \ No newline at end of file diff --git a/Assets/DOTween/Modules/DOTweenModulePhysics2D.cs b/Assets/DOTween/Modules/DOTweenModulePhysics2D.cs new file mode 100644 index 0000000..8ce2b56 --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModulePhysics2D.cs @@ -0,0 +1,193 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER +using System; +using DG.Tweening.Core; +using DG.Tweening.Plugins; +using DG.Tweening.Plugins.Core.PathCore; +using DG.Tweening.Plugins.Options; +using UnityEngine; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModulePhysics2D + { + #region Shortcuts + + #region Rigidbody2D Shortcuts + + /// Tweens a Rigidbody2D's position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMove(this Rigidbody2D target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody2D's X position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveX(this Rigidbody2D target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector2(endValue, 0), duration); + t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody2D's Y position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveY(this Rigidbody2D target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector2(0, endValue), duration); + t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody2D's rotation to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DORotate(this Rigidbody2D target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); + t.SetTarget(target); + return t; + } + + #region Special + + /// Tweens a Rigidbody2D's position to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. + /// IMPORTANT: a rigidbody2D can't be animated in a jump arc using MovePosition, so the tween will directly set the position + /// The end value to reach + /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) + /// Total number of jumps + /// The duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Sequence DOJump(this Rigidbody2D target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) + { + if (numJumps < 1) numJumps = 1; + float startPosY = 0; + float offsetY = -1; + bool offsetYSet = false; + Sequence s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.position, x => target.position = x, new Vector2(0, jumpPower), duration / (numJumps * 2)) + .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetLoops(numJumps * 2, LoopType.Yoyo) + .OnStart(() => startPosY = target.position.y); + s.Append(DOTween.To(() => target.position, x => target.position = x, new Vector2(endValue.x, 0), duration) + .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) + ).Join(yTween) + .SetTarget(target).SetEase(DOTween.defaultEaseType); + yTween.OnUpdate(() => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + Vector3 pos = target.position; + pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); + target.MovePosition(pos); + }); + return s; + } + + /// Tweens a Rigidbody2D's position through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. + /// NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOPath. + /// The waypoints to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOPath( + this Rigidbody2D target, Vector2[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + int len = path.Length; + Vector3[] path3D = new Vector3[len]; + for (int i = 0; i < len; ++i) path3D[i] = path[i]; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, x => target.MovePosition(x), new Path(pathType, path3D, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + return t; + } + /// Tweens a Rigidbody2D's localPosition through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOLocalPath. + /// The waypoint to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOLocalPath( + this Rigidbody2D target, Vector2[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + int len = path.Length; + Vector3[] path3D = new Vector3[len]; + for (int i = 0; i < len; ++i) path3D[i] = path[i]; + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), new Path(pathType, path3D, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + // Used by path editor when creating the actual tween, so it can pass a pre-compiled path + internal static TweenerCore DOPath( + this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, x => target.MovePosition(x), path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + return t; + } + internal static TweenerCore DOLocalPath( + this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + + #endregion + + #endregion + + #endregion + } +} +#endif diff --git a/Assets/DOTween/Modules/DOTweenModulePhysics2D.cs.meta b/Assets/DOTween/Modules/DOTweenModulePhysics2D.cs.meta new file mode 100644 index 0000000..1d51b6e --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModulePhysics2D.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: eea29b5b6af205e4ba70a656a6fbd3df \ No newline at end of file diff --git a/Assets/DOTween/Modules/DOTweenModuleSprite.cs b/Assets/DOTween/Modules/DOTweenModuleSprite.cs new file mode 100644 index 0000000..72afb7b --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleSprite.cs @@ -0,0 +1,93 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER +using System; +using UnityEngine; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModuleSprite + { + #region Shortcuts + + #region SpriteRenderer + + /// Tweens a SpriteRenderer's color to the given value. + /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this SpriteRenderer target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Material's alpha color to the given value. + /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this SpriteRenderer target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a SpriteRenderer's color using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to useThe duration of the tween + public static Sequence DOGradientColor(this SpriteRenderer target, Gradient gradient, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.color = c.color; + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + + #endregion + + #region Blendables + + #region SpriteRenderer + + /// Tweens a SpriteRenderer's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the SpriteRenderer as the tween's target so it can be used for filtered operations + /// The value to tween toThe duration of the tween + public static Tweener DOBlendableColor(this SpriteRenderer target, Color endValue, float duration) + { + endValue = endValue - target.color; + Color to = new Color(0, 0, 0, 0); + return DOTween.To(() => to, x => { + Color diff = x - to; + to = x; + target.color += diff; + }, endValue, duration) + .Blendable().SetTarget(target); + } + + #endregion + + #endregion + + #endregion + } +} +#endif diff --git a/Assets/DOTween/Modules/DOTweenModuleSprite.cs.meta b/Assets/DOTween/Modules/DOTweenModuleSprite.cs.meta new file mode 100644 index 0000000..3b1de1b --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleSprite.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c4f6bf0d0071f80429b63a9ac8c664bb \ No newline at end of file diff --git a/Assets/DOTween/Modules/DOTweenModuleUI.cs b/Assets/DOTween/Modules/DOTweenModuleUI.cs new file mode 100644 index 0000000..2381f4c --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleUI.cs @@ -0,0 +1,662 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER + +using System; +using System.Globalization; +using UnityEngine; +using UnityEngine.UI; +using DG.Tweening.Core; +using DG.Tweening.Core.Enums; +using DG.Tweening.Plugins; +using DG.Tweening.Plugins.Options; +using Outline = UnityEngine.UI.Outline; +using Text = UnityEngine.UI.Text; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModuleUI + { + #region Shortcuts + + #region CanvasGroup + + /// Tweens a CanvasGroup's alpha color to the given value. + /// Also stores the canvasGroup as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this CanvasGroup target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region Graphic + + /// Tweens an Graphic's color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this Graphic target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an Graphic's alpha color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this Graphic target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region Image + + /// Tweens an Image's color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this Image target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an Image's alpha color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this Image target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an Image's fillAmount to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reach (0 to 1)The duration of the tween + public static TweenerCore DOFillAmount(this Image target, float endValue, float duration) + { + if (endValue > 1) endValue = 1; + else if (endValue < 0) endValue = 0; + TweenerCore t = DOTween.To(() => target.fillAmount, x => target.fillAmount = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an Image's colors using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to useThe duration of the tween + public static Sequence DOGradientColor(this Image target, Gradient gradient, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.color = c.color; + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + + #endregion + + #region LayoutElement + + /// Tweens an LayoutElement's flexibleWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => new Vector2(target.flexibleWidth, target.flexibleHeight), x => { + target.flexibleWidth = x.x; + target.flexibleHeight = x.y; + }, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens an LayoutElement's minWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => new Vector2(target.minWidth, target.minHeight), x => { + target.minWidth = x.x; + target.minHeight = x.y; + }, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens an LayoutElement's preferredWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => new Vector2(target.preferredWidth, target.preferredHeight), x => { + target.preferredWidth = x.x; + target.preferredHeight = x.y; + }, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + #endregion + + #region Outline + + /// Tweens a Outline's effectColor to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this Outline target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.effectColor, x => target.effectColor = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Outline's effectColor alpha to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this Outline target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.effectColor, x => target.effectColor = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Outline's effectDistance to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScale(this Outline target, Vector2 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.effectDistance, x => target.effectDistance = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region RectTransform + + /// Tweens a RectTransform's anchoredPosition to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPosX(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue, 0), duration); + t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPosY(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, endValue), duration); + t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's anchoredPosition3D to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos3D(this RectTransform target, Vector3 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition3D X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos3DX(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(endValue, 0, 0), duration); + t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition3D Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos3DY(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, endValue, 0), duration); + t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition3D Z to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos3DZ(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, 0, endValue), duration); + t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's anchorMax to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorMax(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchorMax, x => target.anchorMax = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's anchorMin to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorMin(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchorMin, x => target.anchorMin = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's pivot to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOPivot(this RectTransform target, Vector2 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, endValue, duration); + t.SetTarget(target); + return t; + } + /// Tweens a RectTransform's pivot X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOPivotX(this RectTransform target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(endValue, 0), duration); + t.SetOptions(AxisConstraint.X).SetTarget(target); + return t; + } + /// Tweens a RectTransform's pivot Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOPivotY(this RectTransform target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(0, endValue), duration); + t.SetOptions(AxisConstraint.Y).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's sizeDelta to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOSizeDelta(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.sizeDelta, x => target.sizeDelta = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Punches a RectTransform's anchoredPosition towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The direction and strength of the punch (added to the RectTransform's current position) + /// The duration of the tween + /// Indicates how much will the punch vibrate + /// Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. + /// 1 creates a full oscillation between the punch direction and the opposite direction, + /// while 0 oscillates only between the punch and the start position + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DOPunchAnchorPos(this RectTransform target, Vector2 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false) + { + return DOTween.Punch(() => target.anchoredPosition, x => target.anchoredPosition = x, punch, duration, vibrato, elasticity) + .SetTarget(target).SetOptions(snapping); + } + + /// Shakes a RectTransform's anchoredPosition with the given values. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the tween will smoothly snap all values to integers + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + /// Randomness mode + public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, float strength = 100, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true, ShakeRandomnessMode randomnessMode = ShakeRandomnessMode.Full) + { + return DOTween.Shake(() => target.anchoredPosition, x => target.anchoredPosition = x, duration, strength, vibrato, randomness, true, fadeOut, randomnessMode) + .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping); + } + /// Shakes a RectTransform's anchoredPosition with the given values. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The duration of the tween + /// The shake strength on each axis + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the tween will smoothly snap all values to integers + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + /// Randomness mode + public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, Vector2 strength, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true, ShakeRandomnessMode randomnessMode = ShakeRandomnessMode.Full) + { + return DOTween.Shake(() => target.anchoredPosition, x => target.anchoredPosition = x, duration, strength, vibrato, randomness, fadeOut, randomnessMode) + .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping); + } + + #region Special + + /// Tweens a RectTransform's anchoredPosition to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reach + /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) + /// Total number of jumps + /// The duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Sequence DOJumpAnchorPos(this RectTransform target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) + { + if (numJumps < 1) numJumps = 1; + float startPosY = 0; + float offsetY = -1; + bool offsetYSet = false; + + // Separate Y Tween so we can elaborate elapsedPercentage on that insted of on the Sequence + // (in case users add a delay or other elements to the Sequence) + Sequence s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, jumpPower), duration / (numJumps * 2)) + .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetLoops(numJumps * 2, LoopType.Yoyo) + .OnStart(()=> startPosY = target.anchoredPosition.y); + s.Append(DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue.x, 0), duration) + .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) + ).Join(yTween) + .SetTarget(target).SetEase(DOTween.defaultEaseType); + s.OnUpdate(() => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + Vector2 pos = target.anchoredPosition; + pos.y += DOVirtual.EasedValue(0, offsetY, s.ElapsedDirectionalPercentage(), Ease.OutQuad); + target.anchoredPosition = pos; + }); + return s; + } + + #endregion + + #endregion + + #region ScrollRect + + /// Tweens a ScrollRect's horizontal/verticalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DONormalizedPos(this ScrollRect target, Vector2 endValue, float duration, bool snapping = false) + { + return DOTween.To(() => new Vector2(target.horizontalNormalizedPosition, target.verticalNormalizedPosition), + x => { + target.horizontalNormalizedPosition = x.x; + target.verticalNormalizedPosition = x.y; + }, endValue, duration) + .SetOptions(snapping).SetTarget(target); + } + /// Tweens a ScrollRect's horizontalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DOHorizontalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) + { + return DOTween.To(() => target.horizontalNormalizedPosition, x => target.horizontalNormalizedPosition = x, endValue, duration) + .SetOptions(snapping).SetTarget(target); + } + /// Tweens a ScrollRect's verticalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DOVerticalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) + { + return DOTween.To(() => target.verticalNormalizedPosition, x => target.verticalNormalizedPosition = x, endValue, duration) + .SetOptions(snapping).SetTarget(target); + } + + #endregion + + #region Slider + + /// Tweens a Slider's value to the given value. + /// Also stores the Slider as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOValue(this Slider target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.value, x => target.value = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + #endregion + + #region Text + + /// Tweens a Text's color to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this Text target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// + /// Tweens a Text's text from one integer to another, with options for thousands separators + /// + /// The value to start from + /// The end value to reach + /// The duration of the tween + /// If TRUE (default) also adds thousands separators + /// The to use (InvariantCulture if NULL) + public static TweenerCore DOCounter( + this Text target, int fromValue, int endValue, float duration, bool addThousandsSeparator = true, CultureInfo culture = null + ){ + int v = fromValue; + CultureInfo cInfo = !addThousandsSeparator ? null : culture ?? CultureInfo.InvariantCulture; + TweenerCore t = DOTween.To(() => v, x => { + v = x; + target.text = addThousandsSeparator + ? v.ToString("N0", cInfo) + : v.ToString(); + }, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Text's alpha color to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this Text target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Text's text to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// The end string to tween toThe duration of the tween + /// If TRUE (default), rich text will be interpreted correctly while animated, + /// otherwise all tags will be considered as normal text + /// The type of scramble mode to use, if any + /// A string containing the characters to use for scrambling. + /// Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. + /// Leave it to NULL (default) to use default ones + public static TweenerCore DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) + { + if (endValue == null) { + if (Debugger.logPriority > 0) Debugger.LogWarning("You can't pass a NULL string to DOText: an empty string will be used instead to avoid errors"); + endValue = ""; + } + TweenerCore t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); + t.SetOptions(richTextEnabled, scrambleMode, scrambleChars) + .SetTarget(target); + return t; + } + + #endregion + + #region Blendables + + #region Graphic + + /// Tweens a Graphic's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Graphic as the tween's target so it can be used for filtered operations + /// The value to tween toThe duration of the tween + public static Tweener DOBlendableColor(this Graphic target, Color endValue, float duration) + { + endValue = endValue - target.color; + Color to = new Color(0, 0, 0, 0); + return DOTween.To(() => to, x => { + Color diff = x - to; + to = x; + target.color += diff; + }, endValue, duration) + .Blendable().SetTarget(target); + } + + #endregion + + #region Image + + /// Tweens a Image's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Image as the tween's target so it can be used for filtered operations + /// The value to tween toThe duration of the tween + public static Tweener DOBlendableColor(this Image target, Color endValue, float duration) + { + endValue = endValue - target.color; + Color to = new Color(0, 0, 0, 0); + return DOTween.To(() => to, x => { + Color diff = x - to; + to = x; + target.color += diff; + }, endValue, duration) + .Blendable().SetTarget(target); + } + + #endregion + + #region Text + + /// Tweens a Text's color BY the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// The value to tween toThe duration of the tween + public static Tweener DOBlendableColor(this Text target, Color endValue, float duration) + { + endValue = endValue - target.color; + Color to = new Color(0, 0, 0, 0); + return DOTween.To(() => to, x => { + Color diff = x - to; + to = x; + target.color += diff; + }, endValue, duration) + .Blendable().SetTarget(target); + } + + #endregion + + #endregion + + #region Shapes + + /// Tweens a RectTransform's anchoredPosition so that it draws a circle around the given center. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations. + /// IMPORTANT: SetFrom(value) requires a instead of a float, where the X property represents the "from degrees value" + /// Circle-center/pivot around which to rotate (in UI anchoredPosition coordinates) + /// The end value degrees to reach (to rotate counter-clockwise pass a negative value) + /// The duration of the tween + /// If TRUE the coordinates will be considered as relative to the target's current anchoredPosition + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOShapeCircle( + this RectTransform target, Vector2 center, float endValueDegrees, float duration, bool relativeCenter = false, bool snapping = false + ) + { + TweenerCore t = DOTween.To( + CirclePlugin.Get(), () => target.anchoredPosition, x => target.anchoredPosition = x, center, duration + ); + t.SetOptions(endValueDegrees, relativeCenter, snapping).SetTarget(target); + return t; + } + + #endregion + + #endregion + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + public static class Utils + { + /// + /// Converts the anchoredPosition of the first RectTransform to the second RectTransform, + /// taking into consideration offset, anchors and pivot, and returns the new anchoredPosition + /// + public static Vector2 SwitchToRectTransform(RectTransform from, RectTransform to) + { + Vector2 localPoint; + Vector2 fromPivotDerivedOffset = new Vector2(from.rect.width * 0.5f + from.rect.xMin, from.rect.height * 0.5f + from.rect.yMin); + Vector2 screenP = RectTransformUtility.WorldToScreenPoint(null, from.position); + screenP += fromPivotDerivedOffset; + RectTransformUtility.ScreenPointToLocalPointInRectangle(to, screenP, null, out localPoint); + Vector2 pivotDerivedOffset = new Vector2(to.rect.width * 0.5f + to.rect.xMin, to.rect.height * 0.5f + to.rect.yMin); + return to.anchoredPosition + localPoint - pivotDerivedOffset; + } + } + } +} +#endif diff --git a/Assets/DOTween/Modules/DOTweenModuleUI.cs.meta b/Assets/DOTween/Modules/DOTweenModuleUI.cs.meta new file mode 100644 index 0000000..495b519 --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleUI.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a7655e50a1228954492ba06913483c38 \ No newline at end of file diff --git a/Assets/DOTween/Modules/DOTweenModuleUnityVersion.cs b/Assets/DOTween/Modules/DOTweenModuleUnityVersion.cs new file mode 100644 index 0000000..8f818ba --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleUnityVersion.cs @@ -0,0 +1,389 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +using System; +using UnityEngine; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; +//#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0) +//using Task = System.Threading.Tasks.Task; +//#endif + +#pragma warning disable 1591 +namespace DG.Tweening +{ + /// + /// Shortcuts/functions that are not strictly related to specific Modules + /// but are available only on some Unity versions + /// + public static class DOTweenModuleUnityVersion + { + #region Material + + /// Tweens a Material's color using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to useThe duration of the tween + public static Sequence DOGradientColor(this Material target, Gradient gradient, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.color = c.color; + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + /// Tweens a Material's named color property using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to use + /// The name of the material property to tween (like _Tint or _SpecColor) + /// The duration of the tween + public static Sequence DOGradientColor(this Material target, Gradient gradient, string property, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.SetColor(property, c.color); + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, property, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + + #endregion + + #region CustomYieldInstructions + + /// + /// Returns a that waits until the tween is killed or complete. + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForCompletion(true); + /// + public static CustomYieldInstruction WaitForCompletion(this Tween t, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForCompletion(t); + } + + /// + /// Returns a that waits until the tween is killed or rewinded. + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForRewind(); + /// + public static CustomYieldInstruction WaitForRewind(this Tween t, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForRewind(t); + } + + /// + /// Returns a that waits until the tween is killed. + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForKill(); + /// + public static CustomYieldInstruction WaitForKill(this Tween t, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForKill(t); + } + + /// + /// Returns a that waits until the tween is killed or has gone through the given amount of loops. + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForElapsedLoops(2); + /// + /// Elapsed loops to wait for + public static CustomYieldInstruction WaitForElapsedLoops(this Tween t, int elapsedLoops, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForElapsedLoops(t, elapsedLoops); + } + + /// + /// Returns a that waits until the tween is killed + /// or has reached the given time position (loops included, delays excluded). + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForPosition(2.5f); + /// + /// Position (loops included, delays excluded) to wait for + public static CustomYieldInstruction WaitForPosition(this Tween t, float position, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForPosition(t, position); + } + + /// + /// Returns a that waits until the tween is killed or started + /// (meaning when the tween is set in a playing state the first time, after any eventual delay). + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForStart(); + /// + public static CustomYieldInstruction WaitForStart(this Tween t, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForStart(t); + } + + #endregion + +#if UNITY_2018_1_OR_NEWER + #region Unity 2018.1 or Newer + + #region Material + + /// Tweens a Material's named texture offset property with the given ID to the given value. + /// Also stores the material as the tween's target so it can be used for filtered operations + /// The end value to reach + /// The ID of the material property to tween (also called nameID in Unity's manual) + /// The duration of the tween + public static TweenerCore DOOffset(this Material target, Vector2 endValue, int propertyID, float duration) + { + if (!target.HasProperty(propertyID)) { + if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID); + return null; + } + TweenerCore t = DOTween.To(() => target.GetTextureOffset(propertyID), x => target.SetTextureOffset(propertyID, x), endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Material's named texture scale property with the given ID to the given value. + /// Also stores the material as the tween's target so it can be used for filtered operations + /// The end value to reach + /// The ID of the material property to tween (also called nameID in Unity's manual) + /// The duration of the tween + public static TweenerCore DOTiling(this Material target, Vector2 endValue, int propertyID, float duration) + { + if (!target.HasProperty(propertyID)) { + if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID); + return null; + } + TweenerCore t = DOTween.To(() => target.GetTextureScale(propertyID), x => target.SetTextureScale(propertyID, x), endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region .NET 4.6 or Newer + +#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0) + + #region Async Instructions + + /// + /// Returns an async that waits until the tween is killed or complete. + /// It can be used inside an async operation. + /// Example usage:await myTween.WaitForCompletion(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForCompletion(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && !t.IsComplete()) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or rewinded. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForRewind(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForRewind(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0)) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForKill(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForKill(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or has gone through the given amount of loops. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForElapsedLoops(); + /// + /// Elapsed loops to wait for + public static async System.Threading.Tasks.Task AsyncWaitForElapsedLoops(this Tween t, int elapsedLoops) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && t.CompletedLoops() < elapsedLoops) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or started + /// (meaning when the tween is set in a playing state the first time, after any eventual delay). + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForPosition(); + /// + /// Position (loops included, delays excluded) to wait for + public static async System.Threading.Tasks.Task AsyncWaitForPosition(this Tween t, float position) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && t.position * (t.CompletedLoops() + 1) < position) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForKill(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForStart(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && !t.playedOnce) await System.Threading.Tasks.Task.Yield(); + } + + #endregion +#endif + + #endregion + + #endregion +#endif + } + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ CLASSES █████████████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + public static class DOTweenCYInstruction + { + public class WaitForCompletion : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && !t.IsComplete(); + }} + readonly Tween t; + public WaitForCompletion(Tween tween) + { + t = tween; + } + } + + public class WaitForRewind : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0); + }} + readonly Tween t; + public WaitForRewind(Tween tween) + { + t = tween; + } + } + + public class WaitForKill : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active; + }} + readonly Tween t; + public WaitForKill(Tween tween) + { + t = tween; + } + } + + public class WaitForElapsedLoops : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && t.CompletedLoops() < elapsedLoops; + }} + readonly Tween t; + readonly int elapsedLoops; + public WaitForElapsedLoops(Tween tween, int elapsedLoops) + { + t = tween; + this.elapsedLoops = elapsedLoops; + } + } + + public class WaitForPosition : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && t.position * (t.CompletedLoops() + 1) < position; + }} + readonly Tween t; + readonly float position; + public WaitForPosition(Tween tween, float position) + { + t = tween; + this.position = position; + } + } + + public class WaitForStart : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && !t.playedOnce; + }} + readonly Tween t; + public WaitForStart(Tween tween) + { + t = tween; + } + } + } +} diff --git a/Assets/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta b/Assets/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta new file mode 100644 index 0000000..78d2f44 --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c30601d6122da714ea28a9d7b1f1370c \ No newline at end of file diff --git a/Assets/DOTween/Modules/DOTweenModuleUtils.cs b/Assets/DOTween/Modules/DOTweenModuleUtils.cs new file mode 100644 index 0000000..12a365d --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleUtils.cs @@ -0,0 +1,167 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +using System; +using System.Reflection; +using UnityEngine; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Core.PathCore; +using DG.Tweening.Plugins.Options; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + /// + /// Utility functions that deal with available Modules. + /// Modules defines: + /// - DOTAUDIO + /// - DOTPHYSICS + /// - DOTPHYSICS2D + /// - DOTSPRITE + /// - DOTUI + /// Extra defines set and used for implementation of external assets: + /// - DOTWEEN_TMP ► TextMesh Pro + /// - DOTWEEN_TK2D ► 2D Toolkit + /// + public static class DOTweenModuleUtils + { + static bool _initialized; + + #region Reflection + + /// + /// Called via Reflection by DOTweenComponent on Awake + /// +#if UNITY_2018_1_OR_NEWER + [UnityEngine.Scripting.Preserve] +#endif + public static void Init() + { + if (_initialized) return; + + _initialized = true; + DOTweenExternalCommand.SetOrientationOnPath += Physics.SetOrientationOnPath; + +#if UNITY_EDITOR +#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1 + UnityEditor.EditorApplication.playmodeStateChanged += PlaymodeStateChanged; +#else + UnityEditor.EditorApplication.playModeStateChanged += PlaymodeStateChanged; +#endif +#endif + } + +#if UNITY_2018_1_OR_NEWER +#pragma warning disable + [UnityEngine.Scripting.Preserve] + // Just used to preserve methods when building, never called + static void Preserver() + { + Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + MethodInfo mi = typeof(MonoBehaviour).GetMethod("Stub"); + } +#pragma warning restore +#endif + + #endregion + +#if UNITY_EDITOR + // Fires OnApplicationPause in DOTweenComponent even when Editor is paused (otherwise it's only fired at runtime) +#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1 + static void PlaymodeStateChanged() + #else + static void PlaymodeStateChanged(UnityEditor.PlayModeStateChange state) +#endif + { + if (DOTween.instance == null) return; + DOTween.instance.OnApplicationPause(UnityEditor.EditorApplication.isPaused); + } +#endif + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + public static class Physics + { + // Called via DOTweenExternalCommand callback + public static void SetOrientationOnPath(PathOptions options, Tween t, Quaternion newRot, Transform trans) + { +#if true // PHYSICS_MARKER + if (options.isRigidbody) ((Rigidbody)t.target).rotation = newRot; + else trans.rotation = newRot; +#else + trans.rotation = newRot; +#endif + } + + // Returns FALSE if the DOTween's Physics2D Module is disabled, or if there's no Rigidbody2D attached + public static bool HasRigidbody2D(Component target) + { +#if true // PHYSICS2D_MARKER + return target.GetComponent() != null; +#else + return false; +#endif + } + + #region Called via Reflection + + + // Called via Reflection by DOTweenPathInspector + // Returns FALSE if the DOTween's Physics Module is disabled, or if there's no rigidbody attached +#if UNITY_2018_1_OR_NEWER + [UnityEngine.Scripting.Preserve] +#endif + public static bool HasRigidbody(Component target) + { +#if true // PHYSICS_MARKER + return target.GetComponent() != null; +#else + return false; +#endif + } + + // Called via Reflection by DOTweenPath +#if UNITY_2018_1_OR_NEWER + [UnityEngine.Scripting.Preserve] +#endif + public static TweenerCore CreateDOTweenPathTween( + MonoBehaviour target, bool tweenRigidbody, bool isLocal, Path path, float duration, PathMode pathMode + ){ + TweenerCore t = null; + bool rBodyFoundAndTweened = false; +#if true // PHYSICS_MARKER + if (tweenRigidbody) { + Rigidbody rBody = target.GetComponent(); + if (rBody != null) { + rBodyFoundAndTweened = true; + t = isLocal + ? rBody.DOLocalPath(path, duration, pathMode) + : rBody.DOPath(path, duration, pathMode); + } + } +#endif +#if true // PHYSICS2D_MARKER + if (!rBodyFoundAndTweened && tweenRigidbody) { + Rigidbody2D rBody2D = target.GetComponent(); + if (rBody2D != null) { + rBodyFoundAndTweened = true; + t = isLocal + ? rBody2D.DOLocalPath(path, duration, pathMode) + : rBody2D.DOPath(path, duration, pathMode); + } + } +#endif + if (!rBodyFoundAndTweened) { + t = isLocal + ? target.transform.DOLocalPath(path, duration, pathMode) + : target.transform.DOPath(path, duration, pathMode); + } + return t; + } + + #endregion + } + } +} diff --git a/Assets/DOTween/Modules/DOTweenModuleUtils.cs.meta b/Assets/DOTween/Modules/DOTweenModuleUtils.cs.meta new file mode 100644 index 0000000..94ca152 --- /dev/null +++ b/Assets/DOTween/Modules/DOTweenModuleUtils.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1c73d7d121d6d754baf7637129fc5f53 \ No newline at end of file diff --git a/Assets/DOTween/readme.txt b/Assets/DOTween/readme.txt new file mode 100644 index 0000000..37ff7ef --- /dev/null +++ b/Assets/DOTween/readme.txt @@ -0,0 +1,29 @@ +DOTween and DOTween Pro are copyright (c) 2014-2018 Daniele Giardini - Demigiant + +// IMPORTANT!!! ///////////////////////////////////////////// +// Upgrading DOTween from versions older than 1.2.000 /////// +// (or DOTween Pro older than 1.0.000) ////////////////////// +------------------------------------------------------------- +If you're upgrading your project from a version of DOTween older than 1.2.000 (or DOTween Pro older than 1.0.000) please follow these instructions carefully. +1) Import the new version in the same folder as the previous one, overwriting old files. A lot of errors will appear but don't worry +2) Close and reopen Unity (and your project). This is fundamental: skipping this step will cause a bloodbath +3) Open DOTween's Utility Panel (Tools > Demigiant > DOTween Utility Panel) if it doesn't open automatically, then press "Setup DOTween...": this will run the upgrade setup +4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (Pro version only) + +// GET STARTED ////////////////////////////////////////////// + +- After importing a new DOTween update, select DOTween's Utility Panel from the "Tools/Demigiant" menu (if it doesn't open automatically) and press the "Setup DOTween..." button to activate/deactivate Modules. You can also access a Preferences Tab from there to choose default settings for DOTween. +- In your code, add "using DG.Tweening" to each class where you want to use DOTween. +- You're ready to tween. Check out the links below for full documentation and license info. + + +// LINKS /////////////////////////////////////////////////////// + +DOTween website (documentation, examples, etc): http://dotween.demigiant.com +DOTween license: http://dotween.demigiant.com/license.php +DOTween repository (Google Code): https://code.google.com/p/dotween/ +Demigiant website (documentation, examples, etc): http://www.demigiant.com + +// NOTES ////////////////////////////////////////////////////// + +- DOTween's Utility Panel can be found under "Tools > Demigiant > DOTween Utility Panel" and also contains other useful options, plus a tab to set DOTween's preferences \ No newline at end of file diff --git a/Assets/DOTween/readme.txt.meta b/Assets/DOTween/readme.txt.meta new file mode 100644 index 0000000..83c40ab --- /dev/null +++ b/Assets/DOTween/readme.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c2248aea0ebe1cf4b8f32453c9692fc5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/InputSystem_Actions.inputactions b/Assets/InputSystem_Actions.inputactions index 89ea999..7271d6d 100644 --- a/Assets/InputSystem_Actions.inputactions +++ b/Assets/InputSystem_Actions.inputactions @@ -479,518 +479,8 @@ { "name": "UI", "id": "272f6d14-89ba-496f-b7ff-215263d3219f", - "actions": [ - { - "name": "Navigate", - "type": "PassThrough", - "id": "c95b2375-e6d9-4b88-9c4c-c5e76515df4b", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Submit", - "type": "Button", - "id": "7607c7b6-cd76-4816-beef-bd0341cfe950", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Cancel", - "type": "Button", - "id": "15cef263-9014-4fd5-94d9-4e4a6234a6ef", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "Point", - "type": "PassThrough", - "id": "32b35790-4ed0-4e9a-aa41-69ac6d629449", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "Click", - "type": "PassThrough", - "id": "3c7022bf-7922-4f7c-a998-c437916075ad", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": true - }, - { - "name": "RightClick", - "type": "PassThrough", - "id": "44b200b1-1557-4083-816c-b22cbdf77ddf", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "MiddleClick", - "type": "PassThrough", - "id": "dad70c86-b58c-4b17-88ad-f5e53adf419e", - "expectedControlType": "Button", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "ScrollWheel", - "type": "PassThrough", - "id": "0489e84a-4833-4c40-bfae-cea84b696689", - "expectedControlType": "Vector2", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "TrackedDevicePosition", - "type": "PassThrough", - "id": "24908448-c609-4bc3-a128-ea258674378a", - "expectedControlType": "Vector3", - "processors": "", - "interactions": "", - "initialStateCheck": false - }, - { - "name": "TrackedDeviceOrientation", - "type": "PassThrough", - "id": "9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be", - "expectedControlType": "Quaternion", - "processors": "", - "interactions": "", - "initialStateCheck": false - } - ], - "bindings": [ - { - "name": "Gamepad", - "id": "809f371f-c5e2-4e7a-83a1-d867598f40dd", - "path": "2DVector", - "interactions": "", - "processors": "", - "groups": "", - "action": "Navigate", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "up", - "id": "14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf", - "path": "/leftStick/up", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "up", - "id": "9144cbe6-05e1-4687-a6d7-24f99d23dd81", - "path": "/rightStick/up", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "down", - "id": "2db08d65-c5fb-421b-983f-c71163608d67", - "path": "/leftStick/down", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "down", - "id": "58748904-2ea9-4a80-8579-b500e6a76df8", - "path": "/rightStick/down", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "left", - "id": "8ba04515-75aa-45de-966d-393d9bbd1c14", - "path": "/leftStick/left", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "left", - "id": "712e721c-bdfb-4b23-a86c-a0d9fcfea921", - "path": "/rightStick/left", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "right", - "id": "fcd248ae-a788-4676-a12e-f4d81205600b", - "path": "/leftStick/right", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "right", - "id": "1f04d9bc-c50b-41a1-bfcc-afb75475ec20", - "path": "/rightStick/right", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "", - "id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90", - "path": "/dpad", - "interactions": "", - "processors": "", - "groups": ";Gamepad", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "Joystick", - "id": "e25d9774-381c-4a61-b47c-7b6b299ad9f9", - "path": "2DVector", - "interactions": "", - "processors": "", - "groups": "", - "action": "Navigate", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "up", - "id": "3db53b26-6601-41be-9887-63ac74e79d19", - "path": "/stick/up", - "interactions": "", - "processors": "", - "groups": "Joystick", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "down", - "id": "0cb3e13e-3d90-4178-8ae6-d9c5501d653f", - "path": "/stick/down", - "interactions": "", - "processors": "", - "groups": "Joystick", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "left", - "id": "0392d399-f6dd-4c82-8062-c1e9c0d34835", - "path": "/stick/left", - "interactions": "", - "processors": "", - "groups": "Joystick", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "right", - "id": "942a66d9-d42f-43d6-8d70-ecb4ba5363bc", - "path": "/stick/right", - "interactions": "", - "processors": "", - "groups": "Joystick", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "Keyboard", - "id": "ff527021-f211-4c02-933e-5976594c46ed", - "path": "2DVector", - "interactions": "", - "processors": "", - "groups": "", - "action": "Navigate", - "isComposite": true, - "isPartOfComposite": false - }, - { - "name": "up", - "id": "563fbfdd-0f09-408d-aa75-8642c4f08ef0", - "path": "/w", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "up", - "id": "eb480147-c587-4a33-85ed-eb0ab9942c43", - "path": "/upArrow", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "down", - "id": "2bf42165-60bc-42ca-8072-8c13ab40239b", - "path": "/s", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "down", - "id": "85d264ad-e0a0-4565-b7ff-1a37edde51ac", - "path": "/downArrow", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "left", - "id": "74214943-c580-44e4-98eb-ad7eebe17902", - "path": "/a", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "left", - "id": "cea9b045-a000-445b-95b8-0c171af70a3b", - "path": "/leftArrow", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "right", - "id": "8607c725-d935-4808-84b1-8354e29bab63", - "path": "/d", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "right", - "id": "4cda81dc-9edd-4e03-9d7c-a71a14345d0b", - "path": "/rightArrow", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Navigate", - "isComposite": false, - "isPartOfComposite": true - }, - { - "name": "", - "id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc", - "path": "*/{Submit}", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", - "action": "Submit", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "82627dcc-3b13-4ba9-841d-e4b746d6553e", - "path": "*/{Cancel}", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", - "action": "Cancel", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86", - "path": "/position", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Point", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7", - "path": "/position", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "Point", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "5693e57a-238a-46ed-b5ae-e64e6e574302", - "path": "/touch*/position", - "interactions": "", - "processors": "", - "groups": "Touch", - "action": "Point", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5", - "path": "/leftButton", - "interactions": "", - "processors": "", - "groups": ";Keyboard&Mouse", - "action": "Click", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace", - "path": "/tip", - "interactions": "", - "processors": "", - "groups": ";Keyboard&Mouse", - "action": "Click", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "47c2a644-3ebc-4dae-a106-589b7ca75b59", - "path": "/touch*/press", - "interactions": "", - "processors": "", - "groups": "Touch", - "action": "Click", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677", - "path": "/trigger", - "interactions": "", - "processors": "", - "groups": "XR", - "action": "Click", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "38c99815-14ea-4617-8627-164d27641299", - "path": "/scroll", - "interactions": "", - "processors": "", - "groups": ";Keyboard&Mouse", - "action": "ScrollWheel", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "4c191405-5738-4d4b-a523-c6a301dbf754", - "path": "/rightButton", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "RightClick", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "24066f69-da47-44f3-a07e-0015fb02eb2e", - "path": "/middleButton", - "interactions": "", - "processors": "", - "groups": "Keyboard&Mouse", - "action": "MiddleClick", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77", - "path": "/devicePosition", - "interactions": "", - "processors": "", - "groups": "XR", - "action": "TrackedDevicePosition", - "isComposite": false, - "isPartOfComposite": false - }, - { - "name": "", - "id": "23e01e3a-f935-4948-8d8b-9bcac77714fb", - "path": "/deviceRotation", - "interactions": "", - "processors": "", - "groups": "XR", - "action": "TrackedDeviceOrientation", - "isComposite": false, - "isPartOfComposite": false - } - ] + "actions": [], + "bindings": [] } ], "controlSchemes": [ diff --git a/Assets/Resources/DOTweenSettings.asset b/Assets/Resources/DOTweenSettings.asset new file mode 100644 index 0000000..a71509b --- /dev/null +++ b/Assets/Resources/DOTweenSettings.asset @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 16995157, guid: b1830ce43b03605458c19d07b1aacb50, type: 3} + m_Name: DOTweenSettings + m_EditorClassIdentifier: DOTween.dll::DG.Tweening.Core.DOTweenSettings + useSafeMode: 1 + safeModeOptions: + logBehaviour: 2 + nestedTweenFailureBehaviour: 0 + timeScale: 1 + unscaledTimeScale: 1 + useSmoothDeltaTime: 0 + maxSmoothUnscaledTime: 0.15 + rewindCallbackMode: 0 + showUnityEditorReport: 0 + logBehaviour: 0 + drawGizmos: 1 + defaultRecyclable: 0 + defaultAutoPlay: 3 + defaultUpdateType: 0 + defaultTimeScaleIndependent: 0 + defaultEaseType: 6 + defaultEaseOvershootOrAmplitude: 1.70158 + defaultEasePeriod: 0 + defaultAutoKill: 1 + defaultLoopType: 0 + debugMode: 0 + debugStoreTargetId: 1 + showPreviewPanel: 1 + storeSettingsLocation: 0 + modules: + showPanel: 0 + audioEnabled: 1 + physicsEnabled: 1 + physics2DEnabled: 1 + spriteEnabled: 1 + uiEnabled: 1 + textMeshProEnabled: 0 + tk2DEnabled: 0 + deAudioEnabled: 0 + deUnityExtendedEnabled: 0 + epoOutlineEnabled: 0 + createASMDEF: 0 + showPlayingTweens: 0 + showPausedTweens: 0 diff --git a/Assets/Resources/DOTweenSettings.asset.meta b/Assets/Resources/DOTweenSettings.asset.meta new file mode 100644 index 0000000..43af929 --- /dev/null +++ b/Assets/Resources/DOTweenSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d160ba318d869064fb92b135b6692807 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/SystemConfigsReferences.asset b/Assets/Resources/SystemConfigsReferences.asset index c892453..3dbe40b 100644 --- a/Assets/Resources/SystemConfigsReferences.asset +++ b/Assets/Resources/SystemConfigsReferences.asset @@ -18,15 +18,14 @@ MonoBehaviour: m_SubObjectType: m_SubObjectGUID: m_EditorAssetChanged: 0 + CameraSettings: CameraConfig + UIPanelSettings: UIPanelConfig GameCamera: m_AssetGUID: c42e39e2fb64cdd45b2ebc4b723d9d0c m_SubObjectName: m_SubObjectType: m_SubObjectGUID: m_EditorAssetChanged: 1 - CameraSettings: CameraConfig - UIPanelSettings: UIPanelConfig - SceneInfo: SceneConfig CanvasSettings: m_AssetGUID: 17c5e56eb6c99db40b6093c9d543bb4f m_SubObjectName: @@ -39,3 +38,5 @@ MonoBehaviour: m_SubObjectType: m_SubObjectGUID: m_EditorAssetChanged: 0 + VolumeSettings: PostProccessVolume + SceneInfo: SceneConfig diff --git a/Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack SDF.asset b/Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack SDF.asset new file mode 100644 index 0000000..63a3379 --- /dev/null +++ b/Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack SDF.asset @@ -0,0 +1,298 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!28 &-6854079014176788074 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HussarWoodtypeUltrablack Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_IsAlphaChannelOptional: 0 + serializedVersion: 4 + m_Width: 1 + m_Height: 1 + m_CompleteImageSize: 1 + m_MipsStripped: 0 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 1 + m_IsPreProcessed: 0 + m_IgnoreMipmapLimit: 1 + m_MipmapLimitGroupName: + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 1 + m_PlatformBlob: + image data: 1 + _typelessdata: 00 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!21 &-1182882205018512723 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HussarWoodtypeUltrablack Atlas Material + m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: -6854079014176788074} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _CullMode: 0 + - _Diffuse: 0.5 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 10 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.9 + - _ScaleRatioB: 0.73125 + - _ScaleRatioC: 0.73125 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: HussarWoodtypeUltrablack SDF + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TMP_FontAsset + m_Version: 1.1.0 + m_FaceInfo: + m_FaceIndex: 0 + m_FamilyName: Hussar Woodtype + m_StyleName: Ultra + m_PointSize: 90 + m_Scale: 1 + m_UnitsPerEM: 1000 + m_LineHeight: 98.100006 + m_AscentLine: 72 + m_CapLine: 75 + m_MeanLine: 47 + m_Baseline: 0 + m_DescentLine: -18 + m_SuperscriptOffset: 72 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -18 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -13.500001 + m_UnderlineThickness: 4.5 + m_StrikethroughOffset: 18.8 + m_StrikethroughThickness: 4.5 + m_TabWidth: 15 + m_Material: {fileID: -1182882205018512723} + m_SourceFontFileGUID: 020e0a6093841264396d5ab0a8cfbc02 + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: 020e0a6093841264396d5ab0a8cfbc02 + faceIndex: 0 + pointSizeSamplingMode: 0 + pointSize: 90 + padding: 9 + paddingMode: 2 + packingMode: 0 + atlasWidth: 1024 + atlasHeight: 1024 + characterSetSelectionMode: 7 + characterSequence: + referencedFontAssetGUID: + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4165 + includeFontFeatures: 0 + m_SourceFontFile: {fileID: 12800000, guid: 020e0a6093841264396d5ab0a8cfbc02, type: 3} + m_SourceFontFilePath: + m_AtlasPopulationMode: 1 + InternalDynamicOS: 0 + m_GlyphTable: [] + m_CharacterTable: [] + m_AtlasTextures: + - {fileID: -6854079014176788074} + m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 0 + m_GetFontFeatures: 1 + m_ClearDynamicDataOnBuild: 1 + m_AtlasWidth: 1024 + m_AtlasHeight: 1024 + m_AtlasPadding: 9 + m_AtlasRenderMode: 4165 + m_UsedGlyphRects: [] + m_FreeGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 1023 + m_Height: 1023 + m_FontFeatureTable: + m_MultipleSubstitutionRecords: [] + m_LigatureSubstitutionRecords: [] + m_GlyphPairAdjustmentRecords: [] + m_MarkToBaseAdjustmentRecords: [] + m_MarkToMarkAdjustmentRecords: [] + m_ShouldReimportFontFeatures: 0 + m_FallbackFontAssetTable: [] + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: [] + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 + m_fontInfo: + Name: + PointSize: 0 + Scale: 0 + CharacterCount: 0 + LineHeight: 0 + Baseline: 0 + Ascender: 0 + CapHeight: 0 + Descender: 0 + CenterLine: 0 + SuperscriptOffset: 0 + SubscriptOffset: 0 + SubSize: 0 + Underline: 0 + UnderlineThickness: 0 + strikethrough: 0 + strikethroughThickness: 0 + TabWidth: 0 + Padding: 0 + AtlasWidth: 0 + AtlasHeight: 0 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + fallbackFontAssets: [] + atlas: {fileID: 0} diff --git a/Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack SDF.asset.meta b/Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack SDF.asset.meta new file mode 100644 index 0000000..1ba5fc2 --- /dev/null +++ b/Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4bc70c8644cefd749b39fa820d619319 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack.otf b/Assets/Resources/UI/Fonts/HussarWoodtypeUltrablack.otf new file mode 100644 index 0000000000000000000000000000000000000000..c8e6bdc05c5814b12a50c7df8e57acb44c010630 GIT binary patch literal 80236 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 opP`A*T^a8D2a)$vt6fSWMa9& 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≻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 z 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 literal 0 HcmV?d00001 diff --git a/Assets/Resources/UI/Sprites/test.jpg.meta b/Assets/Resources/UI/Sprites/test.jpg.meta new file mode 100644 index 0000000..9b849e6 --- /dev/null +++ b/Assets/Resources/UI/Sprites/test.jpg.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: a57a119c24ac97d42a6546bb075b0319 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 0 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources_moved/Camera/Camera.prefab b/Assets/Resources_moved/Camera/Camera.prefab index 625098c..d6061c0 100644 --- a/Assets/Resources_moved/Camera/Camera.prefab +++ b/Assets/Resources_moved/Camera/Camera.prefab @@ -44,8 +44,8 @@ Camera: m_GameObject: {fileID: 7661451179723545133} m_Enabled: 1 serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.101960786, g: 0.09411765, b: 0.09019608, a: 0} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 diff --git a/Assets/Resources_moved/Configs/Volumes.meta b/Assets/Resources_moved/Configs/Volumes.meta new file mode 100644 index 0000000..66c04c0 --- /dev/null +++ b/Assets/Resources_moved/Configs/Volumes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 633e576f5d703e14c9966cd8c46862a5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources_moved/Configs/Volumes/MenuRetro.asset b/Assets/Resources_moved/Configs/Volumes/MenuRetro.asset new file mode 100644 index 0000000..69f0e16 --- /dev/null +++ b/Assets/Resources_moved/Configs/Volumes/MenuRetro.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4143befaaaf88d342b271958c7526c65, type: 3} + m_Name: MenuRetro + m_EditorClassIdentifier: Assembly-CSharp::Code.Infrastructure.Volume.VolumeSettingsConfig + prefab: + m_AssetGUID: ab3f2ccf1b11afd4a81cb222d4e4bc16 + m_SubObjectName: + m_SubObjectType: + m_SubObjectGUID: + m_EditorAssetChanged: 0 + id: 0 + doNotDestroyOnLoad: 1 diff --git a/Assets/Resources_moved/Configs/Volumes/MenuRetro.asset.meta b/Assets/Resources_moved/Configs/Volumes/MenuRetro.asset.meta new file mode 100644 index 0000000..dc31b23 --- /dev/null +++ b/Assets/Resources_moved/Configs/Volumes/MenuRetro.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 30778c5a4d5c3f74bac4e5340344cdad +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources_moved/UI/Canvas.prefab b/Assets/Resources_moved/UI/Canvas.prefab index 5dc6529..1e7bead 100644 --- a/Assets/Resources_moved/UI/Canvas.prefab +++ b/Assets/Resources_moved/UI/Canvas.prefab @@ -47,7 +47,7 @@ Canvas: m_GameObject: {fileID: 3093252495306112961} m_Enabled: 1 serializedVersion: 3 - m_RenderMode: 0 + m_RenderMode: 1 m_Camera: {fileID: 0} m_PlaneDistance: 100 m_PixelPerfect: 0 diff --git a/Assets/Resources_moved/UI/Panels/LogoPanel.prefab b/Assets/Resources_moved/UI/Panels/LogoPanel.prefab index 02cbfc6..11d4ef0 100644 --- a/Assets/Resources_moved/UI/Panels/LogoPanel.prefab +++ b/Assets/Resources_moved/UI/Panels/LogoPanel.prefab @@ -10,8 +10,8 @@ GameObject: m_Component: - component: {fileID: 2931552674433344788} - component: {fileID: 538597035855631831} - - component: {fileID: 6344482707200828920} - component: {fileID: -7669160445001710514} + - component: {fileID: 3829589007743304365} m_Layer: 5 m_Name: LogoPanel m_TagString: Untagged @@ -46,7 +46,22 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 892732023062486793} m_CullTransparentMesh: 1 ---- !u!114 &6344482707200828920 +--- !u!114 &-7669160445001710514 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892732023062486793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4adfc2a9c5ae4354a32b651c09840b40, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Code.Infrastructure.UI.Panels.LogoPanel + image: {fileID: 3829589007743304365} + shownColor: {r: 1, g: 1, b: 1, a: 1} + hiddenColor: {r: 1, g: 1, b: 1, a: 0} +--- !u!114 &3829589007743304365 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -59,7 +74,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 0 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -76,15 +91,3 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!114 &-7669160445001710514 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 892732023062486793} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4adfc2a9c5ae4354a32b651c09840b40, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::Code.Infrastructure.UI.Panels.LogoPanel diff --git a/Assets/Resources_moved/Volumes.meta b/Assets/Resources_moved/Volumes.meta new file mode 100644 index 0000000..c14eaaa --- /dev/null +++ b/Assets/Resources_moved/Volumes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08c80cd083d9506468a8165bd3fbddad +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources_moved/Volumes/MenuRetro.prefab b/Assets/Resources_moved/Volumes/MenuRetro.prefab new file mode 100644 index 0000000..aeba5ae --- /dev/null +++ b/Assets/Resources_moved/Volumes/MenuRetro.prefab @@ -0,0 +1,51 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1255719612706459894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6294453988084446976} + - component: {fileID: 501932632056058521} + m_Layer: 0 + m_Name: MenuRetro + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6294453988084446976 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1255719612706459894} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 690.9564, y: 389.0473, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &501932632056058521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1255719612706459894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Core.Runtime::UnityEngine.Rendering.Volume + m_IsGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: 432e456f19fb8a14a96cccaf49704702, type: 2} diff --git a/Assets/Resources_moved/Volumes/MenuRetro.prefab.meta b/Assets/Resources_moved/Volumes/MenuRetro.prefab.meta new file mode 100644 index 0000000..2ba7efd --- /dev/null +++ b/Assets/Resources_moved/Volumes/MenuRetro.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ab3f2ccf1b11afd4a81cb222d4e4bc16 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Gameplay.unity b/Assets/Scenes/Gameplay.unity index 60854b5..68333d4 100644 --- a/Assets/Scenes/Gameplay.unity +++ b/Assets/Scenes/Gameplay.unity @@ -26,7 +26,7 @@ RenderSettings: m_AmbientIntensity: 1 m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_SkyboxMaterial: {fileID: 0} m_HaloStrength: 0.5 m_FlareStrength: 1 m_FlareFadeSpeed: 3 diff --git a/Assets/Scenes/UITest.meta b/Assets/Scenes/UITest.meta new file mode 100644 index 0000000..894d6d3 --- /dev/null +++ b/Assets/Scenes/UITest.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ee009780147ce284bb2edde426d3c340 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/UITest.unity b/Assets/Scenes/UITest.unity new file mode 100644 index 0000000..26d7d45 --- /dev/null +++ b/Assets/Scenes/UITest.unity @@ -0,0 +1,1146 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &80982826 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalScale.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalScale.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalScale.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3093252495306112961, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_Name + value: Canvas + objectReference: {fileID: 0} + - target: {fileID: 4522556149065460202, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_UiScaleMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4522556149065460202, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_MatchWidthOrHeight + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4522556149065460202, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_ReferenceResolution.x + value: 1280 + objectReference: {fileID: 0} + - target: {fileID: 4522556149065460202, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_ReferenceResolution.y + value: 720 + objectReference: {fileID: 0} + - target: {fileID: 5474172051638134131, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_Camera + value: + objectReference: {fileID: 601294104} + - target: {fileID: 5474172051638134131, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + propertyPath: m_AdditionalShaderChannelsFlag + value: 25 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + insertIndex: -1 + addedObject: {fileID: 1442698073} + - targetCorrespondingSourceObject: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + insertIndex: -1 + addedObject: {fileID: 1758276701} + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} +--- !u!224 &80982827 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 85526656748497033, guid: e1fbe5b2798657342b569f723d16c9de, type: 3} + m_PrefabInstance: {fileID: 80982826} + m_PrefabAsset: {fileID: 0} +--- !u!1 &144423470 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 144423471} + - component: {fileID: 144423473} + - component: {fileID: 144423472} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &144423471 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 144423470} + 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: 1052606864} + 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 &144423472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 144423470} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI + 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_text: BIJXOD + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 4bc70c8644cefd749b39fa820d619319, type: 2} + m_sharedMaterial: {fileID: -1182882205018512723, guid: 4bc70c8644cefd749b39fa820d619319, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 109.55 + m_fontSizeBase: 28.13 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: -0 + m_fontSizeMax: 930.7 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_characterHorizontalScale: 1 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &144423473 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 144423470} + m_CullTransparentMesh: 1 +--- !u!1 &193857976 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 193857977} + - component: {fileID: 193857980} + - component: {fileID: 193857979} + - component: {fileID: 193857978} + m_Layer: 5 + m_Name: ENTER + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &193857977 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193857976} + 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: 888848675} + m_Father: {fileID: 1758276701} + 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 &193857978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193857976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button + m_Navigation: + m_Mode: 0 + 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: 0.8962264, g: 0.8962264, b: 0.8962264, a: 1} + m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} + m_PressedColor: {r: 0.6762638, g: 0.70029366, b: 0.8584906, a: 1} + m_SelectedColor: {r: 0.8980393, g: 0.8980393, b: 0.8980393, a: 1} + m_DisabledColor: {r: 0.5188679, g: 0.30593628, b: 0.30593628, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.2 + 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: 888848676} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &193857979 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193857976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 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 &193857980 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193857976} + m_CullTransparentMesh: 1 +--- !u!1 &364140638 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 364140641} + - component: {fileID: 364140640} + - component: {fileID: 364140639} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &364140639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 364140638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.InputSystem::UnityEngine.InputSystem.UI.InputSystemUIInputModule + m_SendPointerHoverToParent: 1 + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_DeselectOnBackgroundClick: 1 + m_PointerBehavior: 0 + m_CursorLockBehavior: 0 + m_ScrollDeltaPerTick: 6 +--- !u!114 &364140640 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 364140638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.EventSystems.EventSystem + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &364140641 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 364140638} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &601294103 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6247459588119928826, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_RenderPostProcessing + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7065855883322946083, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_ClearFlags + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7065855883322946083, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_BackGroundColor.b + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7065855883322946083, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_BackGroundColor.g + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7065855883322946083, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_BackGroundColor.r + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7661451179723545133, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_Name + value: Camera + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalPosition.x + value: 690.9564 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalPosition.y + value: 389.0473 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9054228107781461040, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} +--- !u!20 &601294104 stripped +Camera: + m_CorrespondingSourceObject: {fileID: 7065855883322946083, guid: becf493a34b841e4d8ea927261a05e9b, type: 3} + m_PrefabInstance: {fileID: 601294103} + m_PrefabAsset: {fileID: 0} +--- !u!1 &888848674 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 888848675} + - component: {fileID: 888848677} + - component: {fileID: 888848676} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &888848675 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888848674} + 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: 193857977} + 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 &888848676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888848674} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI + 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_text: NLPATJ + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 4bc70c8644cefd749b39fa820d619319, type: 2} + m_sharedMaterial: {fileID: -1182882205018512723, guid: 4bc70c8644cefd749b39fa820d619319, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 108.6 + m_fontSizeBase: 28.13 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: -0 + m_fontSizeMax: 930.7 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_characterHorizontalScale: 1 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &888848677 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888848674} + m_CullTransparentMesh: 1 +--- !u!1 &1052606863 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1052606864} + - component: {fileID: 1052606867} + - component: {fileID: 1052606866} + - component: {fileID: 1052606865} + m_Layer: 5 + m_Name: EXIT + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1052606864 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052606863} + 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: 144423471} + m_Father: {fileID: 1758276701} + 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 &1052606865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052606863} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button + m_Navigation: + m_Mode: 0 + 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: 1052606866} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1052606866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052606863} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 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 &1052606867 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052606863} + m_CullTransparentMesh: 1 +--- !u!1 &1442698072 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1442698073} + - component: {fileID: 1442698075} + - component: {fileID: 1442698074} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1442698073 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1442698072} + 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: 80982827} + 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 &1442698074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1442698072} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + 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: 21300000, guid: a57a119c24ac97d42a6546bb075b0319, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1442698075 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1442698072} + m_CullTransparentMesh: 1 +--- !u!1 &1758276700 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1758276701} + - component: {fileID: 1758276702} + m_Layer: 5 + m_Name: MenuButtons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1758276701 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758276700} + 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: 1052606864} + - {fileID: 193857977} + m_Father: {fileID: 80982827} + 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: -299.91107} + m_SizeDelta: {x: 0, y: -599.822} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1758276702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758276700} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup + m_Padding: + m_Left: 100 + m_Right: 100 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 7 + m_Spacing: 100 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &3214159445549734620 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1255719612706459894, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_Name + value: Global Volume + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalPosition.x + value: 690.9564 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalPosition.y + value: 389.0473 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6294453988084446976, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ab3f2ccf1b11afd4a81cb222d4e4bc16, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 364140641} + - {fileID: 80982826} + - {fileID: 601294103} + - {fileID: 3214159445549734620} diff --git a/Assets/Scenes/UITest.unity.meta b/Assets/Scenes/UITest.unity.meta new file mode 100644 index 0000000..ecaf017 --- /dev/null +++ b/Assets/Scenes/UITest.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9cc9b0a9ec9fd294182f7ec7d3143185 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/UITest/Global Volume Profile.asset b/Assets/Scenes/UITest/Global Volume Profile.asset new file mode 100644 index 0000000..b61041b --- /dev/null +++ b/Assets/Scenes/UITest/Global Volume Profile.asset @@ -0,0 +1,208 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9163558610240855771 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29fa0085f50d5e54f8144f766051a691, type: 3} + m_Name: FilmGrain + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.FilmGrain + active: 1 + type: + m_OverrideState: 1 + m_Value: 2 + intensity: + m_OverrideState: 1 + m_Value: 0.33 + response: + m_OverrideState: 1 + m_Value: 0.723 + texture: + m_OverrideState: 0 + m_Value: {fileID: 0} +--- !u!114 &-4999755316152643443 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 899c54efeace73346a0a16faa3afe726, type: 3} + m_Name: Vignette + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.Vignette + active: 1 + color: + m_OverrideState: 1 + m_Value: {r: 0, g: 0, b: 0, a: 1} + center: + m_OverrideState: 0 + m_Value: {x: 0.5, y: 0.5} + intensity: + m_OverrideState: 1 + m_Value: 0.342 + smoothness: + m_OverrideState: 1 + m_Value: 1 + rounded: + m_OverrideState: 0 + m_Value: 0 +--- !u!114 &-4777236608679231089 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c5e1dc532bcb41949b58bc4f2abfbb7e, type: 3} + m_Name: LensDistortion + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.LensDistortion + active: 1 + intensity: + m_OverrideState: 1 + m_Value: 0.19 + xMultiplier: + m_OverrideState: 1 + m_Value: 1 + yMultiplier: + m_OverrideState: 1 + m_Value: 0.768 + center: + m_OverrideState: 0 + m_Value: {x: 0.5, y: 0.5} + scale: + m_OverrideState: 0 + m_Value: 1 +--- !u!114 &-1231861248893724251 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cdfbdbb87d3286943a057f7791b43141, type: 3} + m_Name: ChannelMixer + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.ChannelMixer + active: 0 + redOutRedIn: + m_OverrideState: 1 + m_Value: -72 + redOutGreenIn: + m_OverrideState: 0 + m_Value: 0 + redOutBlueIn: + m_OverrideState: 0 + m_Value: 0 + greenOutRedIn: + m_OverrideState: 0 + m_Value: 0 + greenOutGreenIn: + m_OverrideState: 0 + m_Value: 100 + greenOutBlueIn: + m_OverrideState: 0 + m_Value: 0 + blueOutRedIn: + m_OverrideState: 0 + m_Value: 0 + blueOutGreenIn: + m_OverrideState: 0 + m_Value: 0 + blueOutBlueIn: + m_OverrideState: 0 + m_Value: 100 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: Global Volume Profile + m_EditorClassIdentifier: Unity.RenderPipelines.Core.Runtime::UnityEngine.Rendering.VolumeProfile + components: + - {fileID: -1231861248893724251} + - {fileID: 3932044700894043789} + - {fileID: 6536997891226101513} + - {fileID: -9163558610240855771} + - {fileID: -4999755316152643443} + - {fileID: -4777236608679231089} +--- !u!114 &3932044700894043789 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} + m_Name: Bloom + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.Bloom + active: 1 + skipIterations: + m_OverrideState: 0 + m_Value: 1 + threshold: + m_OverrideState: 1 + m_Value: 0.69 + intensity: + m_OverrideState: 1 + m_Value: 2.93 + scatter: + m_OverrideState: 1 + m_Value: 0.008 + clamp: + m_OverrideState: 0 + m_Value: 65468.68 + tint: + m_OverrideState: 0 + m_Value: {r: 1, g: 0.96256304, b: 0.7122642, a: 1} + highQualityFiltering: + m_OverrideState: 0 + m_Value: 0 + filter: + m_OverrideState: 0 + m_Value: 0 + downscale: + m_OverrideState: 0 + m_Value: 0 + maxIterations: + m_OverrideState: 0 + m_Value: 6 + dirtTexture: + m_OverrideState: 0 + m_Value: {fileID: 0} + dimension: 1 + dirtIntensity: + m_OverrideState: 0 + m_Value: 0 +--- !u!114 &6536997891226101513 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81180773991d8724ab7f2d216912b564, type: 3} + m_Name: ChromaticAberration + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.ChromaticAberration + active: 1 + intensity: + m_OverrideState: 1 + m_Value: 0.235 diff --git a/Assets/Scenes/UITest/Global Volume Profile.asset.meta b/Assets/Scenes/UITest/Global Volume Profile.asset.meta new file mode 100644 index 0000000..a174f59 --- /dev/null +++ b/Assets/Scenes/UITest/Global Volume Profile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 432e456f19fb8a14a96cccaf49704702 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/DefaultVolumeProfile.asset b/Assets/Settings/DefaultVolumeProfile.asset index 6fb1822..66d98de 100644 --- a/Assets/Settings/DefaultVolumeProfile.asset +++ b/Assets/Settings/DefaultVolumeProfile.asset @@ -342,6 +342,9 @@ MonoBehaviour: skyOcclusionIntensityMultiplier: m_OverrideState: 1 m_Value: 1 + worldOffset: + m_OverrideState: 1 + m_Value: {x: 0, y: 0, z: 0} --- !u!114 &-1216621516061285780 MonoBehaviour: m_ObjectHideFlags: 3 @@ -376,6 +379,9 @@ MonoBehaviour: highQualityFiltering: m_OverrideState: 1 m_Value: 0 + filter: + m_OverrideState: 1 + m_Value: 0 downscale: m_OverrideState: 1 m_Value: 0 @@ -462,8 +468,6 @@ MonoBehaviour: - {fileID: -6288072647309666549} - {fileID: 7518938298396184218} - {fileID: -1410297666881709256} - - {fileID: -7750755424749557576} - - {fileID: -5139089513906902183} --- !u!114 &853819529557874667 MonoBehaviour: m_ObjectHideFlags: 3 diff --git a/Assets/Settings/PC_RPAsset.asset b/Assets/Settings/PC_RPAsset.asset index 9b2b046..a47a07c 100644 --- a/Assets/Settings/PC_RPAsset.asset +++ b/Assets/Settings/PC_RPAsset.asset @@ -101,16 +101,16 @@ MonoBehaviour: m_Keys: [] m_Values: m_PrefilteringModeMainLightShadows: 3 - m_PrefilteringModeAdditionalLight: 4 - m_PrefilteringModeAdditionalLightShadows: 0 + m_PrefilteringModeAdditionalLight: 0 + m_PrefilteringModeAdditionalLightShadows: 2 m_PrefilterXRKeywords: 1 - m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeForwardPlus: 2 m_PrefilteringModeDeferredRendering: 0 - m_PrefilteringModeScreenSpaceOcclusion: 1 + m_PrefilteringModeScreenSpaceOcclusion: 2 m_PrefilterDebugKeywords: 1 - m_PrefilterWriteRenderingLayers: 0 + m_PrefilterWriteRenderingLayers: 1 m_PrefilterHDROutput: 1 - m_PrefilterAlphaOutput: 0 + m_PrefilterAlphaOutput: 1 m_PrefilterSSAODepthNormals: 0 m_PrefilterSSAOSourceDepthLow: 1 m_PrefilterSSAOSourceDepthMedium: 1 @@ -122,17 +122,17 @@ MonoBehaviour: m_PrefilterSSAOSampleCountHigh: 1 m_PrefilterDBufferMRT1: 1 m_PrefilterDBufferMRT2: 1 - m_PrefilterDBufferMRT3: 0 - m_PrefilterSoftShadowsQualityLow: 0 - m_PrefilterSoftShadowsQualityMedium: 0 - m_PrefilterSoftShadowsQualityHigh: 0 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 1 + m_PrefilterSoftShadowsQualityHigh: 1 m_PrefilterSoftShadows: 0 m_PrefilterScreenCoord: 1 - m_PrefilterScreenSpaceIrradiance: 0 + m_PrefilterScreenSpaceIrradiance: 1 m_PrefilterNativeRenderPass: 1 m_PrefilterUseLegacyLightmaps: 0 - m_PrefilterBicubicLightmapSampling: 0 - m_PrefilterReflectionProbeRotation: 0 + m_PrefilterBicubicLightmapSampling: 1 + m_PrefilterReflectionProbeRotation: 1 m_PrefilterReflectionProbeBlending: 0 m_PrefilterReflectionProbeBoxProjection: 0 m_PrefilterReflectionProbeAtlas: 0 diff --git a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset index ca4bede..6c08d35 100644 --- a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset +++ b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset @@ -66,7 +66,21 @@ MonoBehaviour: - rid: 5565511524147789834 - rid: 5565511524147789835 m_RuntimeSettings: - m_List: [] + m_List: + - rid: 6852985685364965378 + - rid: 6852985685364965379 + - rid: 6852985685364965380 + - rid: 6852985685364965381 + - rid: 6852985685364965384 + - rid: 6852985685364965385 + - rid: 6852985685364965392 + - rid: 6852985685364965394 + - rid: 8712630790384254976 + - rid: 5565511524147789825 + - rid: 5565511524147789826 + - rid: 5565511524147789829 + - rid: 5565511524147789833 + - rid: 5565511524147789835 m_AssetVersion: 9 m_ObsoleteDefaultVolumeProfile: {fileID: 0} m_RenderingLayerNames: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset index dc7e8e5..2752d82 100644 --- a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset @@ -2,20 +2,24 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2180264 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: LiberationSans SDF Material m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 1 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -67,6 +71,7 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _Ambient: 0.5 - _Bevel: 0.5 @@ -148,6 +153,8 @@ Material: - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -161,11 +168,6 @@ MonoBehaviour: m_Name: LiberationSans SDF - Fallback m_EditorClassIdentifier: m_Version: 1.1.0 - m_Material: {fileID: 2180264} - m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 - m_SourceFontFile: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3} - m_AtlasPopulationMode: 1 - InternalDynamicOS: 0 m_FaceInfo: m_FaceIndex: 0 m_FamilyName: Liberation Sans @@ -188,57 +190,8 @@ MonoBehaviour: m_StrikethroughOffset: 18 m_StrikethroughThickness: 6.298828 m_TabWidth: 24 - m_GlyphTable: [] - m_CharacterTable: [] - m_AtlasTextures: - - {fileID: 28268798066460806} - m_AtlasTextureIndex: 0 - m_IsMultiAtlasTexturesEnabled: 1 - m_ClearDynamicDataOnBuild: 1 - m_UsedGlyphRects: [] - m_FreeGlyphRects: - - m_X: 0 - m_Y: 0 - m_Width: 511 - m_Height: 511 - m_fontInfo: - Name: Liberation Sans - PointSize: 86 - Scale: 1 - CharacterCount: 250 - LineHeight: 98.90625 - Baseline: 0 - Ascender: 77.84375 - CapHeight: 59.1875 - Descender: -18.21875 - CenterLine: 0 - SuperscriptOffset: 77.84375 - SubscriptOffset: -12.261719 - SubSize: 0.5 - Underline: -12.261719 - UnderlineThickness: 6.298828 - strikethrough: 23.675 - strikethroughThickness: 0 - TabWidth: 239.0625 - Padding: 9 - AtlasWidth: 1024 - AtlasHeight: 1024 - atlas: {fileID: 0} - m_AtlasWidth: 512 - m_AtlasHeight: 512 - m_AtlasPadding: 9 - m_AtlasRenderMode: 4169 - m_glyphInfoList: [] - m_KerningTable: - kerningPairs: [] - m_FontFeatureTable: - m_MultipleSubstitutionRecords: [] - m_LigatureSubstitutionRecords: [] - m_GlyphPairAdjustmentRecords: [] - m_MarkToBaseAdjustmentRecords: [] - m_MarkToMarkAdjustmentRecords: [] - fallbackFontAssets: [] - m_FallbackFontAssetTable: [] + m_Material: {fileID: 2180264} + m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 m_CreationSettings: sourceFontFileName: sourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 @@ -258,6 +211,2211 @@ MonoBehaviour: fontStyleModifier: 0 renderMode: 4169 includeFontFeatures: 1 + m_SourceFontFile: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3} + m_SourceFontFilePath: + m_AtlasPopulationMode: 1 + InternalDynamicOS: 0 + m_GlyphTable: [] + m_CharacterTable: [] + m_AtlasTextures: + - {fileID: 28268798066460806} + m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 1 + m_GetFontFeatures: 1 + m_ClearDynamicDataOnBuild: 1 + m_AtlasWidth: 512 + m_AtlasHeight: 512 + m_AtlasPadding: 9 + m_AtlasRenderMode: 4169 + m_UsedGlyphRects: [] + m_FreeGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 511 + m_Height: 511 + m_FontFeatureTable: + m_MultipleSubstitutionRecords: [] + m_LigatureSubstitutionRecords: [] + m_GlyphPairAdjustmentRecords: + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -10.498047 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -10.498047 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 109 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 125 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 965 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 968 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 972 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.9736328 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 975 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 978 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 992 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 993 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 995 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 997 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 998 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1001 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1004 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1005 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1006 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1007 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1009 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1012 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1021 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1023 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1024 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 964 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2015 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -16.250977 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -16.250977 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 29 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 30 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 125 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 965 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 967 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 968 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 972 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 975 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 978 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 980 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 981 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 982 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 992 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 993 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.71875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 997 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 998 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1007 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1022 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 977 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1024 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 976 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 965 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 968 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 972 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 975 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 978 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.71875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 980 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 981 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.71875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 984 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 990 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 993 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1011 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1012 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1013 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1022 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 109 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 125 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 965 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 967 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 968 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 972 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 975 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 981 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 992 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 993 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 995 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 998 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1001 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1003 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1004 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1005 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.71875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1007 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1008 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1009 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1010 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1012 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1014 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1018 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1021 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1023 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1024 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2015 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 965 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 967 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 968 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.9394531 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 972 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 975 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 978 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -8.608398 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 982 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.71875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 984 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 990 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 992 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 989 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.71875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 980 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1001 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 981 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 984 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 993 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 998 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1007 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1010 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1012 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1016 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 973 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1022 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 961 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 965 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8896484 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 967 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 968 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 972 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 975 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 978 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.7529297 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 979 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 980 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 981 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.7792969 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 982 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.8632812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 984 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.8291016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 987 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 992 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 997 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1005 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1011 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1012 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1014 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.8554688 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1016 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 963 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.9658203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 1024 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + m_MarkToBaseAdjustmentRecords: [] + m_MarkToMarkAdjustmentRecords: [] + m_ShouldReimportFontFeatures: 0 + m_FallbackFontAssetTable: [] m_FontWeightTable: - regularTypeface: {fileID: 0} italicTypeface: {fileID: 0} @@ -306,6 +2464,33 @@ MonoBehaviour: boldSpacing: 7 italicStyle: 35 tabSize: 10 + m_fontInfo: + Name: Liberation Sans + PointSize: 86 + Scale: 1 + CharacterCount: 250 + LineHeight: 98.90625 + Baseline: 0 + Ascender: 77.84375 + CapHeight: 59.1875 + Descender: -18.21875 + CenterLine: 0 + SuperscriptOffset: 77.84375 + SubscriptOffset: -12.261719 + SubSize: 0.5 + Underline: -12.261719 + UnderlineThickness: 6.298828 + strikethrough: 23.675 + strikethroughThickness: 0 + TabWidth: 239.0625 + Padding: 9 + AtlasWidth: 1024 + AtlasHeight: 1024 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + fallbackFontAssets: [] + atlas: {fileID: 0} --- !u!28 &28268798066460806 Texture2D: m_ObjectHideFlags: 0 @@ -316,17 +2501,21 @@ Texture2D: m_ImageContentsHash: serializedVersion: 2 Hash: 00000000000000000000000000000000 - m_ForcedFallbackFormat: 4 - m_DownscaleFallback: 0 - serializedVersion: 2 - m_Width: 0 - m_Height: 0 - m_CompleteImageSize: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 4 + m_Width: 1 + m_Height: 1 + m_CompleteImageSize: 1 + m_MipsStripped: 0 m_TextureFormat: 1 m_MipCount: 1 m_IsReadable: 1 + m_IsPreProcessed: 0 + m_IgnoreMipmapLimit: 0 + m_MipmapLimitGroupName: m_StreamingMipmaps: 0 m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 m_AlphaIsTransparency: 0 m_ImageCount: 1 m_TextureDimension: 2 @@ -340,9 +2529,11 @@ Texture2D: m_WrapW: 0 m_LightmapFormat: 0 m_ColorSpace: 0 - image data: 0 - _typelessdata: + m_PlatformBlob: + image data: 1 + _typelessdata: 00 m_StreamData: + serializedVersion: 2 offset: 0 size: 0 path: diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs index 79d8132..660f016 100644 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs +++ b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs @@ -19,14 +19,14 @@ public partial class AppStateMachine : AbstractStateMachine("SystemConfigsReferences"); - _singleConfigReferences.Add(typeof(Code.Infrastructure.Camera.GameCameraConfig), systemConfigsReferences.GameCamera); - _multipleConfigReferences.Add(typeof(Code.Infrastructure.Camera.CameraSettingsConfig), systemConfigsReferences.CameraSettings); _multipleConfigReferences.Add(typeof(Code.Infrastructure.UI.UIPanelSettingsConfig), systemConfigsReferences.UIPanelSettings); - _multipleConfigReferences.Add(typeof(Code.Infrastructure.SceneLoader.SceneInfoConfig), systemConfigsReferences.SceneInfo); + _singleConfigReferences.Add(typeof(Code.Infrastructure.Camera.GameCameraConfig), systemConfigsReferences.GameCamera); _singleConfigReferences.Add(typeof(Code.Infrastructure.UI.CanvasSettingsConfig), systemConfigsReferences.CanvasSettings); _singleConfigReferences.Add(typeof(Code.Infrastructure.Input.InputServiceConfig), systemConfigsReferences.InputService); + _multipleConfigReferences.Add(typeof(Code.Infrastructure.Volume.VolumeSettingsConfig), systemConfigsReferences.VolumeSettings); + + _multipleConfigReferences.Add(typeof(Code.Infrastructure.SceneLoader.SceneInfoConfig), systemConfigsReferences.SceneInfo); + //_singleConfigReferences.Add(typeof(ScenesAssetReferences), systemConfigsReferences.scenesAssetReferences); } } diff --git a/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs b/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs index a504ecf..3ab161d 100644 --- a/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs +++ b/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs @@ -1,11 +1,12 @@ #pragma warning disable CS0105 using Code.Infrastructure.Camera; +using Code.Infrastructure.UI; using Code.Infrastructure.Camera; using Code.Infrastructure.UI; -using Code.Infrastructure.SceneLoader; -using Code.Infrastructure.UI; using Code.Infrastructure.Input; +using Code.Infrastructure.Volume; +using Code.Infrastructure.SceneLoader; using UnityEngine.AddressableAssets; #pragma warning restore CS0105 @@ -13,12 +14,13 @@ using Code.Infrastructure.Input; namespace Code.Infrastructure.Configs{ public partial class SystemConfigsReferences { - public AssetReference GameCamera; -public string CameraSettings; + public string CameraSettings; public string UIPanelSettings; -public string SceneInfo; +public AssetReference GameCamera; public AssetReference CanvasSettings; public AssetReference InputService; +public string VolumeSettings; +public string SceneInfo; } } diff --git a/Assets/UnityCodeGen.Generated/VolumeSettingsConfig.Generated.cs b/Assets/UnityCodeGen.Generated/VolumeSettingsConfig.Generated.cs new file mode 100644 index 0000000..925ebe9 --- /dev/null +++ b/Assets/UnityCodeGen.Generated/VolumeSettingsConfig.Generated.cs @@ -0,0 +1,20 @@ + +#pragma warning disable CS0105 +using UnityEngine.AddressableAssets; +using Code.Infrastructure.Volume; +using System; + +using UnityEngine; +using UnityEngine.AddressableAssets; + +namespace Code.Infrastructure.Volume{ +#pragma warning restore CS0105 +[CreateAssetMenu(fileName = "VolumeSettingsConfig", menuName = "Configs/PostProcessing/VolumeSetting")] +public class VolumeSettingsConfig : ScriptableObject +{ + public UnityEngine.AddressableAssets.AssetReference prefab; +public Code.Infrastructure.Volume.VolumeId id; +public System.Boolean doNotDestroyOnLoad; + +} +} diff --git a/Assets/UnityCodeGen.Generated/VolumeSettingsConfig.Generated.cs.meta b/Assets/UnityCodeGen.Generated/VolumeSettingsConfig.Generated.cs.meta new file mode 100644 index 0000000..44273d3 --- /dev/null +++ b/Assets/UnityCodeGen.Generated/VolumeSettingsConfig.Generated.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4143befaaaf88d342b271958c7526c65 \ No newline at end of file diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 84b2182..644b823 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -45,8 +45,8 @@ GraphicsSettings: m_TierSettings: [] m_LightmapStripping: 0 m_FogStripping: 0 - m_InstancingStripping: 0 - m_BrgStripping: 0 + m_InstancingStripping: 1 + m_BrgStripping: 1 m_LightmapKeepPlain: 1 m_LightmapKeepDirCombined: 1 m_LightmapKeepDynamicPlain: 1 diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 9cb3f08..e4e69f2 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -17,7 +17,7 @@ PlayerSettings: defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} - m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashScreen: 0 m_ShowUnitySplashLogo: 1 m_SplashScreenOverlayOpacity: 1 m_SplashScreenAnimation: 1 @@ -296,7 +296,14 @@ PlayerSettings: AndroidAppBundleSizeToValidate: 150 AndroidReportGooglePlayAppDependencies: 1 androidSymbolsSizeThreshold: 800 - m_BuildTargetIcons: [] + m_BuildTargetIcons: + - m_BuildTarget: + m_Icons: + - serializedVersion: 2 + m_Icon: {fileID: 0} + m_Width: 128 + m_Height: 128 + m_Kind: 0 m_BuildTargetPlatformIcons: - m_BuildTarget: iPhone m_Icons: @@ -524,7 +531,10 @@ PlayerSettings: m_Height: 720 m_Kind: 1 m_SubKind: - m_BuildTargetBatching: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: [] m_BuildTargetGraphicsJobMode: [] @@ -825,7 +835,25 @@ PlayerSettings: webGLCloseOnQuit: 0 webWasm2023: 0 webEnableSubmoduleStrippingCompatibility: 0 - scriptingDefineSymbols: {} + scriptingDefineSymbols: + Android: DOTWEEN + EmbeddedLinux: DOTWEEN + GameCoreScarlett: DOTWEEN + GameCoreXboxOne: DOTWEEN + Kepler: DOTWEEN + LinuxHeadlessSimulation: DOTWEEN + Nintendo Switch: DOTWEEN + Nintendo Switch 2: DOTWEEN + PS4: DOTWEEN + PS5: DOTWEEN + QNX: DOTWEEN + Standalone: DOTWEEN + VisionOS: DOTWEEN + WebGL: DOTWEEN + Windows Store Apps: DOTWEEN + XboxOne: DOTWEEN + iPhone: DOTWEEN + tvOS: DOTWEEN additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset index f55198a..48fe4ef 100644 --- a/ProjectSettings/QualitySettings.asset +++ b/ProjectSettings/QualitySettings.asset @@ -6,7 +6,7 @@ QualitySettings: serializedVersion: 5 m_CurrentQuality: 1 m_QualitySettings: - - serializedVersion: 4 + - serializedVersion: 5 name: Mobile pixelLightCount: 2 shadows: 2 @@ -34,6 +34,7 @@ QualitySettings: adaptiveVsyncExtraA: 0 adaptiveVsyncExtraB: 0 lodBias: 1 + meshLodThreshold: 1 maximumLODLevel: 0 enableLODCrossFade: 1 streamingMipmapsActive: 0 @@ -47,8 +48,7 @@ QualitySettings: asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 11400000, guid: 5e6cbd92db86f4b18aec3ed561671858, - type: 2} + customRenderPipeline: {fileID: 11400000, guid: 5e6cbd92db86f4b18aec3ed561671858, type: 2} terrainQualityOverrides: 0 terrainPixelError: 1 terrainDetailDensityScale: 1 @@ -60,7 +60,7 @@ QualitySettings: terrainMaxTrees: 50 excludedTargetPlatforms: - Standalone - - serializedVersion: 4 + - serializedVersion: 5 name: PC pixelLightCount: 2 shadows: 2 @@ -83,11 +83,12 @@ QualitySettings: billboardsFaceCameraPosition: 1 useLegacyDetailDistribution: 1 adaptiveVsync: 0 - vSyncCount: 0 - realtimeGICPUUsage: 100 + vSyncCount: 1 + realtimeGICPUUsage: 25 adaptiveVsyncExtraA: 0 adaptiveVsyncExtraB: 0 lodBias: 2 + meshLodThreshold: 1 maximumLODLevel: 0 enableLODCrossFade: 1 streamingMipmapsActive: 0 @@ -101,8 +102,7 @@ QualitySettings: asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, - type: 2} + customRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, type: 2} terrainQualityOverrides: 0 terrainPixelError: 1 terrainDetailDensityScale: 1 @@ -122,6 +122,7 @@ QualitySettings: GameCoreXboxOne: 1 Lumin: 0 Nintendo Switch: 1 + Nintendo Switch 2: 1 PS4: 1 PS5: 1 Server: 0