三国卡牌客户端基础资源仓库
yyl
2025-04-23 7816f15f2e98a0faa2bdbc50307c7506cbb9a6b7
UI管理 UI界面 dotween and so on
5个文件已修改
92个文件已添加
8652 ■■■■■ 已修改文件
Assets/Launch.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Common.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Common/Singleton.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Common/Singleton.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Common/SingletonMonobehaviour.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Common/SingletonMonobehaviour.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/FirstPackLang.cs 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/FirstPackLang.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Launch.asmdef 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Launch.asmdef.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Launch.cs 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Launch.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UI.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UI/LaunchWins.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UI/LaunchWins/LaunchLoadingWin.cs 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UI/LaunchWins/LaunchLoadingWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/ILaunchState.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/ILaunchState.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/LaunchStateMachine.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/LaunchStateMachine.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/CheckVersionState.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/CheckVersionState.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/EnterHotUpdateAssemblyState.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/EnterHotUpdateAssemblyState.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/ExtractResourcesState.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/ExtractResourcesState.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/HotUpdateState.cs 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/HotUpdateState.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/InitSDKState.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/UpdateStateMechine/States/InitSDKState.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Utility.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Utility/LaunchUtility.cs 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Utility/LaunchUtility.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/DOTween.XML 3089 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/DOTween.XML.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/DOTween.dll 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/DOTween.dll.mdb 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/DOTween.dll.mdb.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/DOTween.dll.meta 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/DOTweenEditor.XML 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/DOTweenEditor.XML.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/DOTweenEditor.dll 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/DOTweenEditor.dll.mdb 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/DOTweenEditor.dll.mdb.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/DOTweenEditor.dll.meta 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/DOTweenIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/DOTweenIcon.png.meta 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/DOTweenMiniIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/Footer.png 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/Footer.png.meta 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/Footer_dark.png 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/Footer_dark.png.meta 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/Header.jpg 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Editor/Imgs/Header.jpg.meta 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleAudio.cs 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleAudio.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleEPOOutline.cs 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModulePhysics.cs 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModulePhysics.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModulePhysics2D.cs 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModulePhysics2D.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleSprite.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleSprite.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleUI.cs 662 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleUI.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleUnityVersion.cs 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleUtils.cs 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/Modules/DOTweenModuleUtils.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/readme.txt 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/DOTween/readme.txt.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/DOTweenSettings.asset 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/DOTweenSettings.asset.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/Scenes.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/Scenes/Launch.unity 327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/Scenes/Launch.unity.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/UIRoot.prefab 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/UIRoot.prefab.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/firstpackLang.txt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/firstpackLang.txt.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/version.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/version.txt.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Packages/manifest.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Packages/packages-lock.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ProjectSettings/EditorBuildSettings.asset 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ProjectSettings/ProjectSettings.asset 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ProjectSettings/TagManager.asset 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d1bff6ab0c0b19a42ab296f355e10c6e
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/Common.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 12bcaf3bc3aa4a241be030c65827dd40
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/Common/Singleton.cs
New file
@@ -0,0 +1,33 @@

public class Singleton<T> where T : class, new()
{
    private static T m_Instance;
    public static T Instance
    {
        get
        {
            if (m_Instance == null)
            {
                m_Instance = new T();
            }
            return m_Instance;
        }
    }
    ~Singleton()
    {
        m_Instance = null;
    }
    public static bool IsValid()
    {
        return m_Instance != null;
    }
    public static void Destroy()
    {
        m_Instance = null;
    }
}
Assets/Launch/Common/Singleton.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f5f321dae5fa7a84983c7e3db16e8ae0
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/Common/SingletonMonobehaviour.cs
New file
@@ -0,0 +1,50 @@
using UnityEngine;
public class SingletonMonobehaviour<T> : MonoBehaviour where T : MonoBehaviour
{
    private static volatile T s_Instance = null;
    private static object s_Root = new object();
    public static T Instance
    {
        get
        {
            if (s_Instance == null)
            {
                lock (s_Root)
                {
                    T[] _instances = (T[])FindObjectsOfType(typeof(T));
                    string _name = typeof(T).Name;
                    if (_instances != null)
                    {
                        for (var i = 0; i < _instances.Length; i++)
                        {
                            Destroy(_instances[i].gameObject);
                            //Debug.Log("销毁了: " + _name);
                        }
                    }
                    //Debug.Log("创建了: " + _name);
                    GameObject _go = new GameObject();
                    _go.name = _name;
                    s_Instance = _go.AddComponent<T>();
                    //DontDestroyOnLoad(_go);
                }
            }
            return s_Instance;
        }
    }
    public static bool IsValid()
    {
        return s_Instance != null;
    }
    protected virtual void OnDestroy()
    {
        // Debug.Log("执行了销毁");
        s_Instance = null;
    }
}
Assets/Launch/Common/SingletonMonobehaviour.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 64b2c4393da6c624ba1cf2ab5e4dffbd
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/FirstPackLang.cs
New file
@@ -0,0 +1,111 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Text;
/// <summary>
/// 首包语言管理类
/// </summary>
public class FirstPackLang
{
    private static FirstPackLang _instance;
    private Dictionary<string, string> _langDict = new Dictionary<string, string>();
    private List<string> _langList = new List<string>();
    // 语言文本索引
    public static class TextIndex
    {
        public const int HotUpdate = 0;
        public const int InitSDK = 1;
        public const int ExtractResources = 2;
        public const int CheckVersion = 3;
        public const int EnterHotUpdateAssembly = 4;
        public const int PrepareUpdate = 5;
        public const int SkipHotUpdate = 6;
        public const int LatestVersion = 7;
        public const int DownloadingUpdate = 8;
        public const int ApplyingUpdate = 9;
        public const int RestartRequired = 10;
        public const int InitializingSDK = 11;
        public const int CheckingResources = 12;
        public const int ExtractingResources = 13;
        public const int ResourceCheckComplete = 14;
        public const int CheckingVersion = 15;
        public const int MinorUpdateDetected = 16;
        public const int MediumUpdateDetected = 17;
        public const int MajorUpdateDetected = 18;
        public const int EnteringGame = 19;
        // LaunchLoadingWin 相关文本
        public const int LoadingResources = 20;     // 正在加载游戏资源...
        public const int CheckingVersionUpdate = 21; // 正在检查版本更新...
        public const int InitializingGame = 22;     // 正在初始化游戏...
        public const int EnteringGameWorld = 23;    // 准备进入游戏世界...
    }
    public static FirstPackLang Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new FirstPackLang();
                _instance.Init();
            }
            return _instance;
        }
    }
    private void Init()
    {
        LoadLanguageFile();
    }
    private void LoadLanguageFile()
    {
        TextAsset textAsset = Resources.Load<TextAsset>("firstpackLang");
        if (textAsset == null)
        {
            Debug.LogError("无法加载语言文件: firstpackLang.txt");
            return;
        }
        string[] lines = textAsset.text.Split('\n');
        for (int i = 0; i < lines.Length; i++)
        {
            string line = lines[i].Trim();
            if (!string.IsNullOrEmpty(line))
            {
                _langList.Add(line);
                _langDict[line] = i.ToString();
            }
        }
        Debug.Log($"已加载 {_langList.Count} 条语言条目");
    }
    /// <summary>
    /// 通过索引获取文本
    /// </summary>
    public string GetText(int index)
    {
        if (index >= 0 && index < _langList.Count)
        {
            return _langList[index];
        }
        return $"[Missing Text: {index}]";
    }
    /// <summary>
    /// 通过原始中文获取索引
    /// </summary>
    public int GetIndex(string originalText)
    {
        if (_langDict.TryGetValue(originalText, out string indexStr))
        {
            return int.Parse(indexStr);
        }
        return -1;
    }
}
Assets/Launch/FirstPackLang.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2024c0ab267b19244a4f367fbab5523b
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/Launch.asmdef
New file
@@ -0,0 +1,19 @@
{
    "name": "Launch",
    "rootNamespace": "",
    "references": [
        "GUID:2373f786d14518f44b0f475db77ba4de",
        "GUID:13ba8ce62aa80c74598530029cb2d649",
        "GUID:f51ebe6a0ceec4240a699833d6309b23",
        "GUID:4129704b5a1a13841ba16f230bf24a57"
    ],
    "includePlatforms": [],
    "excludePlatforms": [],
    "allowUnsafeCode": false,
    "overrideReferences": false,
    "precompiledReferences": [],
    "autoReferenced": true,
    "defineConstraints": [],
    "versionDefines": [],
    "noEngineReferences": false
}
Assets/Launch/Launch.asmdef.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3ffa07c58a98b0445a7a34376b165fd1
AssemblyDefinitionImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/Launch.cs
New file
@@ -0,0 +1,90 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading;
using Cysharp.Threading.Tasks;
using System;
using DG.Tweening;
public class Launch : MonoBehaviour
{
    public string versionUrl;
    // 是否开启热更
    public bool IsHotupdate = false;
    public bool IsUseSDK = false;
    // 状态机
    private LaunchStateMachine stateMachine;
    public static Launch Instance
    {
        get
        {
            return m_Instance;
        }
    }
    private static Launch m_Instance;
    private void Awake()
    {
        if (m_Instance != null)
        {
            Debug.LogError("Launch Instance is not null");
            return;
        }
        m_Instance = this;
    }
    // 启动入口
    async void Start()
    {
        Debug.Log("Launch Start");
        DOTween.Init();
        // 1. 打开加载界面
        LaunchLoadingWin.OpenWindow();
        // 2. 初始化状态机
        InitStateMachine();
        // 3. 启动状态机
        await stateMachine.Start();
    }
    // 初始化状态机
    private void InitStateMachine()
    {
        stateMachine = new LaunchStateMachine();
        // 添加状态
        // 1. 初始化SDK
        stateMachine.AddState(new InitSDKState());
        // 2. 资源解压
        stateMachine.AddState(new ExtractResourcesState());
        // 3. 版本检查
        CheckVersionState checkVersionState = new CheckVersionState(versionUrl);
        stateMachine.AddState(checkVersionState);
        // 4. 热更新
        stateMachine.AddState(new HotUpdateState(IsHotupdate, LaunchUtility.UpdateType.None));
        // 5. 进入热更新程序集
        stateMachine.AddState(new EnterHotUpdateAssemblyState());
        // 注册状态机完成事件
        stateMachine.OnCompleted += () => {
            Debug.Log("启动流程完成");
        };
    }
}
Assets/Launch/Launch.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b3c8dbd062ed4d5459217dccb0ee389f
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UI.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e439091a709cfb24eb48a924b5f14539
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UI/LaunchWins.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 05797a7057316e5459273a7d1119f62b
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UI/LaunchWins/LaunchLoadingWin.cs
New file
@@ -0,0 +1,206 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Cysharp.Threading.Tasks;
/// <summary>
/// 启动加载窗口
/// </summary>
public class LaunchLoadingWin : MonoBehaviour
{
    // 单例实例
    private static LaunchLoadingWin _instance;
    public static LaunchLoadingWin Instance
    {
        get
        {
            if (_instance == null)
            {
                Debug.Log("LaunchLoadingWin 界面未打开");
                return null;
            }
            return _instance;
        }
    }
    // UI组件引用
    [SerializeField] public Text titleText;
    [SerializeField] public Text tipsText;
    [SerializeField] public Image progressBar;
    [SerializeField] public Text progressText;
    // 提示文本列表
    [SerializeField] private List<string> tipsList = new List<string>();
    // 当前提示索引
    private int currentTipIndex = 0;
    // 是否正在显示
    // 计时器
    private float tipChangeTimer = 0f;
    private const float TIP_CHANGE_INTERVAL = 3f; // 提示切换间隔时间
    private void Awake()
    {
        _instance = this;
        // 初始化提示列表
        InitTipsList();
        // 初始化进度条
        SetProgress(0f);
    }
    /// <summary>
    /// 初始化提示列表
    /// </summary>
    private void InitTipsList()
    {
        tipsList.Clear();
        tipsList.Add(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.LoadingResources));
        tipsList.Add(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.CheckingVersionUpdate));
        tipsList.Add(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.InitializingGame));
        tipsList.Add(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.EnteringGameWorld));
    }
    /// <summary>
    /// 打开窗口
    /// </summary>
    public static void OpenWindow()
    {
        if (null != _instance)
        {
            DestroyImmediate(_instance.gameObject);
            _instance = null;
        }
        _instance = GameObject.Instantiate(Resources.Load<GameObject>("LaunchLoadingWin")).GetComponent<LaunchLoadingWin>();
        _instance.gameObject.SetActive(true);
    }
    /// <summary>
    /// 关闭窗口
    /// </summary>
    public void CloseWindow()
    {
        // 隐藏窗口而不是销毁
        DestroyImmediate(gameObject);
        _instance = null;
        Debug.Log("关闭加载窗口");
    }
    /// <summary>
    /// 设置进度
    /// </summary>
    /// <param name="progress">进度值(0-1)</param>
    public void SetProgress(float progress)
    {
        // 限制进度值范围
        progress = Mathf.Clamp01(progress);
        // 更新进度条
        if (progressBar != null)
        {
            progressBar.fillAmount = progress;
        }
        // 更新进度文本
        if (progressText != null)
        {
            progressText.text = $"{(int)(progress * 100)}%";
        }
    }
    /// <summary>
    /// 设置提示文本
    /// </summary>
    /// <param name="tip">提示文本</param>
    public void SetTip(string tip)
    {
        if (tipsText != null)
        {
            tipsText.text = tip;
        }
    }
    /// <summary>
    /// 异步显示加载进度
    /// </summary>
    /// <param name="duration">加载持续时间</param>
    /// <param name="targetProgress">目标进度</param>
    public async UniTask ShowProgressAsync(float duration, float targetProgress = 1.0f)
    {
        float startProgress = progressBar != null ? progressBar.fillAmount : 0f;
        float currentProgress = startProgress;
        float elapsedTime = 0f;
        while (elapsedTime < duration)
        {
            elapsedTime += Time.deltaTime;
            currentProgress = Mathf.Lerp(startProgress, targetProgress, elapsedTime / duration);
            SetProgress(currentProgress);
            await UniTask.Yield();
        }
        // 确保最终进度正确
        SetProgress(targetProgress);
    }
    /// <summary>
    /// 当前状态索引
    /// </summary>
    private int currentStateIndex = -1;
    /// <summary>
    /// 设置当前状态
    /// </summary>
    /// <param name="stateIndex">状态索引</param>
    public void SetCurrentState(int stateIndex)
    {
        currentStateIndex = stateIndex;
        // 根据状态索引更新提示文本
        UpdateTipsByState();
    }
    /// <summary>
    /// 根据当前状态更新提示文本
    /// </summary>
    private void UpdateTipsByState()
    {
        string tip = "";
        // 根据状态索引设置对应的提示文本
        switch (currentStateIndex)
        {
            case FirstPackLang.TextIndex.InitSDK:
                tip = FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.InitializingSDK);
                break;
            case FirstPackLang.TextIndex.ExtractResources:
                tip = FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.CheckingResources);
                break;
            case FirstPackLang.TextIndex.CheckVersion:
                tip = FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.CheckingVersion);
                break;
            case FirstPackLang.TextIndex.HotUpdate:
                tip = FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.PrepareUpdate);
                break;
            case FirstPackLang.TextIndex.EnterHotUpdateAssembly:
                tip = FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.EnteringGame);
                break;
        }
        // 设置提示文本
        if (!string.IsNullOrEmpty(tip))
        {
            SetTip(tip);
        }
    }
}
Assets/Launch/UI/LaunchWins/LaunchLoadingWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4e5954ab54de61446ae4cc3efbba3b10
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 99ed9eeb5165b1f488e4cd30a85caf3a
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine/ILaunchState.cs
New file
@@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
/// <summary>
/// 启动状态接口
/// </summary>
public interface ILaunchState
{
    /// <summary>
    /// 状态名称
    /// </summary>
    string StateName { get; }
    /// <summary>
    /// 进入状态
    /// </summary>
    UniTask OnEnter();
    /// <summary>
    /// 执行状态
    /// </summary>
    UniTask<bool> OnExecute();
    /// <summary>
    /// 退出状态
    /// </summary>
    UniTask OnExit();
}
Assets/Launch/UpdateStateMechine/ILaunchState.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 99b187194d74c4940a75750b0357f5f9
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine/LaunchStateMachine.cs
New file
@@ -0,0 +1,145 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
using System;
/// <summary>
/// 启动状态机
/// </summary>
public class LaunchStateMachine
{
    // 状态列表
    private List<ILaunchState> states = new List<ILaunchState>();
    // 当前状态索引
    private int currentStateIndex = -1;
    // 当前状态
    private ILaunchState CurrentState => currentStateIndex >= 0 && currentStateIndex < states.Count ? states[currentStateIndex] : null;
    // 状态机是否正在运行
    private bool isRunning = false;
    // 状态机是否已完成
    private bool isCompleted = false;
    // 状态机完成事件
    public event Action OnCompleted;
    /// <summary>
    /// 添加状态
    /// </summary>
    /// <param name="state">状态</param>
    public void AddState(ILaunchState state)
    {
        if (state == null)
        {
            Debug.LogError("添加的状态为空");
            return;
        }
        states.Add(state);
        Debug.Log($"添加状态: {state.StateName}");
    }
    /// <summary>
    /// 启动状态机
    /// </summary>
    public async UniTask Start()
    {
        if (isRunning)
        {
            Debug.LogWarning("状态机已经在运行中");
            return;
        }
        if (states.Count == 0)
        {
            Debug.LogError("状态机中没有状态");
            return;
        }
        isRunning = true;
        isCompleted = false;
        currentStateIndex = 0;
        Debug.Log("启动状态机");
        // 进入第一个状态
        await EnterCurrentState();
        // 开始执行状态机
        await ExecuteStateMachine();
    }
    /// <summary>
    /// 停止状态机
    /// </summary>
    public async UniTask Stop()
    {
        if (!isRunning)
        {
            return;
        }
        // 退出当前状态
        if (CurrentState != null)
        {
            await CurrentState.OnExit();
        }
        isRunning = false;
        Debug.Log("停止状态机");
    }
    /// <summary>
    /// 进入当前状态
    /// </summary>
    private async UniTask EnterCurrentState()
    {
        if (CurrentState != null)
        {
            Debug.Log($"进入状态: {CurrentState.StateName}");
            await CurrentState.OnEnter();
        }
    }
    /// <summary>
    /// 执行状态机
    /// </summary>
    private async UniTask ExecuteStateMachine()
    {
        while (isRunning && currentStateIndex < states.Count)
        {
            // 执行当前状态
            bool moveToNext = await CurrentState.OnExecute();
            if (moveToNext)
            {
                // 退出当前状态
                await CurrentState.OnExit();
                // 移动到下一个状态
                currentStateIndex++;
                // 如果还有下一个状态,则进入
                if (currentStateIndex < states.Count)
                {
                    await EnterCurrentState();
                }
                else
                {
                    // 所有状态已执行完毕
                    isRunning = false;
                    isCompleted = true;
                    Debug.Log("状态机执行完毕");
                    OnCompleted?.Invoke();
                }
            }
            // 等待一帧,避免卡死
            await UniTask.Yield();
        }
    }
}
Assets/Launch/UpdateStateMechine/LaunchStateMachine.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ce2b27daa60bcd64ea41bd1d168917c0
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine/States.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3efacc53e3cd5d448a6cad477833ab05
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine/States/CheckVersionState.cs
New file
@@ -0,0 +1,76 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
/// <summary>
/// 版本检查状态
/// </summary>
public class CheckVersionState : ILaunchState
{
    private string versionUrl;
    // 版本检查结果
    private LaunchUtility.UpdateType updateType;
    public string StateName => FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.CheckVersion);
    public CheckVersionState(string versionUrl)
    {
        this.versionUrl = versionUrl;
    }
    public async UniTask OnEnter()
    {
        Debug.Log("进入版本检查状态");
        // 使用硬编码索引设置当前状态
        LaunchLoadingWin.Instance.SetCurrentState(FirstPackLang.TextIndex.CheckVersion);
        await LaunchLoadingWin.Instance.ShowProgressAsync(0.3f, 0.6f);
    }
    public async UniTask<bool> OnExecute()
    {
        Debug.Log("执行版本检查");
        // 使用LaunchUtility检查版本更新
        updateType = await LaunchUtility.CheckVersionUpdateAsync(versionUrl);
        // 根据版本检查结果更新提示
        switch (updateType)
        {
            case LaunchUtility.UpdateType.None:
                LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.LatestVersion));
                break;
            case LaunchUtility.UpdateType.PatchUpdate:
                LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.MinorUpdateDetected));
                break;
            case LaunchUtility.UpdateType.MinorUpdate:
                LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.MediumUpdateDetected));
                break;
            case LaunchUtility.UpdateType.MajorUpdate:
                LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.MajorUpdateDetected));
                break;
        }
        await LaunchLoadingWin.Instance.ShowProgressAsync(0.3f, 0.7f);
        // 返回true表示该状态已完成,可以进入下一个状态
        return true;
    }
    public async UniTask OnExit()
    {
        Debug.Log("退出版本检查状态");
        await UniTask.CompletedTask;
    }
    /// <summary>
    /// 获取版本检查结果
    /// </summary>
    public LaunchUtility.UpdateType GetUpdateType()
    {
        return updateType;
    }
}
Assets/Launch/UpdateStateMechine/States/CheckVersionState.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f023e37d2da91624c90a2d042ccabb48
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine/States/EnterHotUpdateAssemblyState.cs
New file
@@ -0,0 +1,69 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
using System;
    /// <summary>
    /// 进入热更新程序集状态
    /// </summary>
    public class EnterHotUpdateAssemblyState : ILaunchState
    {
        public string StateName => FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.EnterHotUpdateAssembly);
        public EnterHotUpdateAssemblyState()
        {
        }
        public async UniTask OnEnter()
        {
            Debug.Log("进入热更新程序集状态");
            // 使用硬编码索引设置当前状态
            LaunchLoadingWin.Instance.SetCurrentState(FirstPackLang.TextIndex.EnterHotUpdateAssembly);
            await LaunchLoadingWin.Instance.ShowProgressAsync(0.2f, 1.0f);
        }
        public async UniTask<bool> OnExecute()
        {
            Debug.Log("执行进入热更新程序集");
            // 通过反射获取热更新程序集中的入口类
            try
            {
                // 假设热更新程序集中有一个名为MainEntry的类作为入口
                Type entryType = Type.GetType("MainEntry");
                if (entryType != null)
                {
                    // 创建入口类实例
                    object entryInstance = Activator.CreateInstance(entryType);
                    // 调用入口类的Init方法
                    entryType.GetMethod("Init").Invoke(null, null);
                    Debug.Log("成功进入热更新程序集");
                }
                else
                {
                    Debug.LogError("找不到热更新程序集入口类");
                }
            }
            catch (Exception e)
            {
                Debug.LogError($"进入热更新程序集失败: {e.Message}");
            }
            LaunchLoadingWin.Instance.CloseWindow();
            // 返回true表示该状态已完成,可以进入下一个状态
            return true;
        }
        public async UniTask OnExit()
        {
            Debug.Log("退出进入热更新程序集状态");
            await UniTask.CompletedTask;
        }
    }
Assets/Launch/UpdateStateMechine/States/EnterHotUpdateAssemblyState.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2337c9075ca695f4c8578610ec2bfcd1
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine/States/ExtractResourcesState.cs
New file
@@ -0,0 +1,101 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
using System.IO;
/// <summary>
/// 资源解压状态
/// </summary>
public class ExtractResourcesState : ILaunchState
{
    public string StateName => FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.ExtractResources);
    public ExtractResourcesState()
    {
    }
    public async UniTask OnEnter()
    {
        Debug.Log("进入资源解压状态");
        // 使用硬编码索引设置当前状态
        LaunchLoadingWin.Instance.SetCurrentState(FirstPackLang.TextIndex.ExtractResources);
        await LaunchLoadingWin.Instance.ShowProgressAsync(0.3f, 0.4f);
    }
    public async UniTask<bool> OnExecute()
    {
        Debug.Log("执行资源解压");
        // 检查是否需要解压资源
        bool needExtract = CheckIfNeedExtract();
        if (needExtract)
        {
            // 更新加载界面提示
            LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.ExtractingResources));
            // 执行资源解压
            await ExtractResources();
            // 更新进度
            await LaunchLoadingWin.Instance.ShowProgressAsync(0.5f, 0.5f);
        }
        else
        {
            Debug.Log("无需解压资源");
            // 更新进度
            LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.ResourceCheckComplete));
            await LaunchLoadingWin.Instance.ShowProgressAsync(0.2f, 0.5f);
        }
        // 返回true表示该状态已完成,可以进入下一个状态
        return true;
    }
    public async UniTask OnExit()
    {
        Debug.Log("退出资源解压状态");
        await UniTask.CompletedTask;
    }
    /// <summary>
    /// 检查是否需要解压资源
    /// </summary>
    private bool CheckIfNeedExtract()
    {
        // 这里根据实际情况检查是否需要解压资源
        // 例如,检查特定目录是否存在,或者检查标记文件是否存在
        string extractFlagPath = Path.Combine(Application.persistentDataPath, "extracted.flag");
        bool hasExtracted = File.Exists(extractFlagPath);
        return !hasExtracted;
    }
    /// <summary>
    /// 执行资源解压
    /// </summary>
    private async UniTask ExtractResources()
    {
        // 这里实现资源解压逻辑
        // 例如,从StreamingAssets解压到PersistentDataPath
        Debug.Log("开始解压资源...");
        // 模拟解压过程
        await UniTask.Delay(1000);
        // 创建解压标记文件
        string extractFlagPath = Path.Combine(Application.persistentDataPath, "extracted.flag");
        File.WriteAllText(extractFlagPath, System.DateTime.Now.ToString());
        Debug.Log("资源解压完成");
    }
}
Assets/Launch/UpdateStateMechine/States/ExtractResourcesState.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 87325f367ea73c644bcbe0ac940004ed
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine/States/HotUpdateState.cs
New file
@@ -0,0 +1,214 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
using System;
    /// <summary>
    /// 热更新状态
    /// </summary>
    public class HotUpdateState : ILaunchState
    {
        private bool isHotUpdateEnabled;
        private LaunchUtility.UpdateType updateType;
        // 使用硬编码索引
        public string StateName => FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.HotUpdate);
        public HotUpdateState(bool isHotUpdateEnabled, LaunchUtility.UpdateType updateType)
        {
            this.isHotUpdateEnabled = isHotUpdateEnabled;
            this.updateType = updateType;
        }
        public async UniTask OnEnter()
        {
            Debug.Log("进入热更新状态");
            // 使用硬编码索引设置当前状态
            LaunchLoadingWin.Instance.SetCurrentState(FirstPackLang.TextIndex.HotUpdate);
            await LaunchLoadingWin.Instance.ShowProgressAsync(0.2f, 0.8f);
        }
        public async UniTask<bool> OnExecute()
        {
            Debug.Log("执行热更新");
            // 如果热更新未启用或在编辑器模式下,跳过热更新
            if (!isHotUpdateEnabled || Application.isEditor)
            {
                Debug.Log("热更新未启用或在编辑器模式下,跳过热更新");
                LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.SkipHotUpdate));
                await LaunchLoadingWin.Instance.ShowProgressAsync(0.2f, 0.9f);
                return true;
            }
            // 根据更新类型执行不同的更新逻辑
            switch (updateType)
            {
                case LaunchUtility.UpdateType.None:
                    Debug.Log("当前已是最新版本,无需更新");
                    LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.LatestVersion));
                    await LaunchLoadingWin.Instance.ShowProgressAsync(0.2f, 0.9f);
                    break;
                case LaunchUtility.UpdateType.PatchUpdate:
                    Debug.Log("检测到小版本更新,更新后可直接进入游戏");
                    LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.DownloadingUpdate));
                    await DownloadAndApplyUpdate(false);
                    break;
                case LaunchUtility.UpdateType.MinorUpdate:
                    Debug.Log("检测到中版本更新,更新后需要重启");
                    LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.DownloadingUpdate));
                    await DownloadAndApplyUpdate(true);
                    return false; // 不进入下一个状态,因为需要重启
                case LaunchUtility.UpdateType.MajorUpdate:
                    Debug.Log("检测到大版本更新,需要重新下载");
                    ShowMajorUpdateNotification();
                    // 大版本更新需要用户确认,所以这里不会自动进入下一个状态
                    return false;
            }
            // 返回true表示该状态已完成,可以进入下一个状态
            return true;
        }
        public async UniTask OnExit()
        {
            Debug.Log("退出热更新状态");
            await UniTask.CompletedTask;
        }
        /// <summary>
        /// 下载并应用更新
        /// </summary>
        private async UniTask DownloadAndApplyUpdate(bool needRestart)
        {
            // 实现下载和应用更新的逻辑
            Debug.Log("下载并应用更新");
            // 模拟下载过程
            for (int i = 0; i < 5; i++)
            {
                LaunchLoadingWin.Instance.SetTip($"{FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.DownloadingUpdate)} {(i + 1) * 20}%");
                float progress = 0.8f + (i * 0.04f);
                await LaunchLoadingWin.Instance.ShowProgressAsync(0.2f, progress);
                await UniTask.Delay(200);
            }
            // 模拟应用更新
            LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.ApplyingUpdate));
            await LaunchLoadingWin.Instance.ShowProgressAsync(0.5f, 1.0f);
            await UniTask.Delay(500);
            if (needRestart)
            {
                // 应用更新后需要重启
                RestartApplication();
            }
            Debug.Log("更新应用完成");
        }
        /// <summary>
        /// 重启应用
        /// </summary>
        private void RestartApplication()
        {
            Debug.Log("重启应用");
            // 根据不同平台实现重启逻辑
            #if UNITY_EDITOR
                // 编辑器模式下无法真正重启,只能模拟
                Debug.Log("编辑器模式下模拟重启");
                ShowRestartRequiredDialog();
            #elif UNITY_STANDALONE_WIN
                // Windows平台重启
                System.Diagnostics.Process.Start(Application.dataPath.Replace("_Data", ".exe"));
                Application.Quit();
            #elif UNITY_STANDALONE_OSX
                // macOS平台重启
                string bundlePath = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/Contents"));
                System.Diagnostics.Process.Start("open", bundlePath);
                Application.Quit();
            #elif UNITY_ANDROID
                try {
                    // 尝试使用Android的Intent重启应用
                    using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
                        AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
                        AndroidJavaObject packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
                        AndroidJavaObject intent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", Application.identifier);
                        if (intent != null) {
                            intent.Call<AndroidJavaObject>("addFlags", 0x20000000); // FLAG_ACTIVITY_CLEAR_TASK
                            intent.Call<AndroidJavaObject>("addFlags", 0x00008000); // FLAG_ACTIVITY_NEW_TASK
                            currentActivity.Call("startActivity", intent);
                            currentActivity.Call("finish");
                            // 强制退出进程
                            AndroidJavaClass process = new AndroidJavaClass("android.os.Process");
                            int pid = process.CallStatic<int>("myPid");
                            process.CallStatic("killProcess", pid);
                        } else {
                            // 无法获取启动Intent,显示提示
                            ShowRestartRequiredDialog();
                        }
                    }
                } catch (Exception e) {
                    Debug.LogError($"Android重启失败: {e.Message}");
                    ShowRestartRequiredDialog();
                }
            #elif UNITY_IOS
                // iOS平台无法直接重启应用,显示提示
                ShowRestartRequiredDialog();
            #elif UNITY_WEBGL
                // WebGL平台通过刷新页面重启
                Application.ExternalEval("window.location.reload();");
            #elif UNITY_WECHAT || UNITY_MINI_PROGRAM
                // 小程序平台无法直接重启,显示提示
                ShowRestartRequiredDialog();
            #else
                // 其他平台显示提示
                ShowRestartRequiredDialog();
            #endif
        }
        /// <summary>
        /// 显示需要重启的提示对话框
        /// </summary>
        private void ShowRestartRequiredDialog()
        {
            Debug.Log("显示需要重启提示");
            // 实现显示重启提示的逻辑
            // 这里可以显示一个对话框,提示用户需要手动重启应用
            // 示例:可以通过事件系统触发UI显示
            // EventSystem.Trigger("ShowRestartRequiredDialog");
            // 或者直接显示一个简单的UI
            LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.RestartRequired));
        }
        /// <summary>
        /// 显示大版本更新通知
        /// </summary>
        private void ShowMajorUpdateNotification()
        {
            Debug.Log("显示大版本更新通知");
            // 实现显示大版本更新通知的逻辑
            // 这里可以显示一个对话框,提示用户需要下载新版本
            // 示例:可以通过事件系统触发UI显示
            // EventSystem.Trigger("ShowMajorUpdateDialog");
        }
    }
Assets/Launch/UpdateStateMechine/States/HotUpdateState.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8ca776c7ba2983b41891c25cb6fae53a
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/UpdateStateMechine/States/InitSDKState.cs
New file
@@ -0,0 +1,60 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
/// <summary>
/// 初始化SDK状态
/// </summary>
public class InitSDKState : ILaunchState
{
    public string StateName => FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.InitSDK);
    public InitSDKState()
    {
    }
    public async UniTask OnEnter()
    {
        Debug.Log("进入初始化SDK状态");
        // 使用硬编码索引设置当前状态
        LaunchLoadingWin.Instance.SetCurrentState(FirstPackLang.TextIndex.InitSDK);
        await LaunchLoadingWin.Instance.ShowProgressAsync(0.5f, 0.2f);
    }
    public async UniTask<bool> OnExecute()
    {
        Debug.Log("执行初始化SDK");
        // 根据是否编辑器模式可以有不同的初始化逻辑
        if (Launch.Instance.IsUseSDK && !Application.isEditor)
        {
            Debug.Log("真机模式下的SDK初始化");
            // 在这里实现真机SDK的初始化
        }
        else
        {
            Debug.Log("编辑器模式下的SDK初始化");
            // 在这里实现编辑器模式下的SDK初始化
        }
        // 模拟初始化过程
        await UniTask.Delay(500);
        // 更新进度
        await LaunchLoadingWin.Instance.ShowProgressAsync(0.5f, 0.3f);
        // 返回true表示该状态已完成,可以进入下一个状态
        return true;
    }
    public async UniTask OnExit()
    {
        Debug.Log("退出初始化SDK状态");
        await UniTask.CompletedTask;
    }
}
Assets/Launch/UpdateStateMechine/States/InitSDKState.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7626db0f917fb894eadd152ddd20df2c
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/Utility.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5a16622f775e7044caa4bc0152a6d994
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Launch/Utility/LaunchUtility.cs
New file
@@ -0,0 +1,256 @@
using System;
using UnityEngine;
using Cysharp.Threading.Tasks;
using UnityEngine.Networking;
/// <summary>
/// 启动工具类,提供版本比较等功能
/// </summary>
public static class LaunchUtility
{
    /// <summary>
    /// 版本更新类型
    /// </summary>
    public enum UpdateType
    {
        None,           // 无需更新
        PatchUpdate,    // 小版本更新,更新后可直接进入游戏
        MinorUpdate,    // 中版本更新,更新后需要重启
        MajorUpdate     // 大版本更新,需要重新下载
    }
    /// <summary>
    /// 比较版本并返回更新类型
    /// </summary>
    /// <param name="localVersion">本地版本字符串,格式为 x.y.z</param>
    /// <param name="remoteVersion">远程版本字符串,格式为 x.y.z</param>
    /// <returns>版本更新类型</returns>
    public static UpdateType CompareVersions(string localVersion, string remoteVersion)
    {
        if (string.IsNullOrEmpty(localVersion) || string.IsNullOrEmpty(remoteVersion))
        {
            Debug.LogError("版本信息为空,无法比较");
            return UpdateType.None;
        }
        try
        {
            // 解析本地版本
            int[] localParts = ParseVersionString(localVersion);
            int localMajor = localParts[0];
            int localMinor = localParts[1];
            int localPatch = localParts[2];
            // 解析远程版本
            int[] remoteParts = ParseVersionString(remoteVersion);
            int remoteMajor = remoteParts[0];
            int remoteMinor = remoteParts[1];
            int remotePatch = remoteParts[2];
            // 检查大版本
            if (remoteMajor > localMajor)
            {
                return UpdateType.MajorUpdate;
            }
            // 检查中版本
            if (remoteMajor == localMajor && remoteMinor > localMinor)
            {
                return UpdateType.MinorUpdate;
            }
            // 检查小版本
            if (remoteMajor == localMajor && remoteMinor == localMinor && remotePatch > localPatch)
            {
                return UpdateType.PatchUpdate;
            }
            // 无需更新
            return UpdateType.None;
        }
        catch (Exception e)
        {
            Debug.LogError($"比较版本失败: {e.Message}");
            return UpdateType.None;
        }
    }
    /// <summary>
    /// 解析版本字符串为整数数组
    /// </summary>
    /// <param name="versionString">版本字符串,格式为 x.y.z</param>
    /// <returns>包含三个整数的数组,分别表示大版本、中版本和小版本</returns>
    private static int[] ParseVersionString(string versionString)
    {
        int[] result = new int[3] { 0, 0, 0 };
        string[] parts = versionString.Split('.');
        // 解析大版本
        if (parts.Length > 0 && int.TryParse(parts[0], out int major))
        {
            result[0] = major;
        }
        // 解析中版本
        if (parts.Length > 1 && int.TryParse(parts[1], out int minor))
        {
            result[1] = minor;
        }
        // 解析小版本
        if (parts.Length > 2 && int.TryParse(parts[2], out int patch))
        {
            result[2] = patch;
        }
        return result;
    }
    /// <summary>
    /// 获取本地版本信息
    /// 适用于安卓、iOS、WebGL和PC平台
    /// </summary>
    /// <returns>版本字符串,格式为 x.y.z</returns>
    public static async UniTask<string> GetLocalVersionAsync()
    {
        try
        {
            // 首先尝试从Resources加载版本文件
            TextAsset versionAsset = Resources.Load<TextAsset>("version");
            if (versionAsset != null)
            {
                string versionText = versionAsset.text.Trim();
                Debug.Log($"从Resources加载版本信息: {versionText}");
                return versionText;
            }
            // 如果Resources中没有版本文件,则使用应用程序版本
            string appVersion = Application.version;
            Debug.Log($"使用应用程序版本: {appVersion}");
            // 确保版本号格式正确
            if (string.IsNullOrEmpty(appVersion))
            {
                Debug.LogWarning("应用程序版本为空,使用默认版本 1.0.0");
                appVersion = "1.0.0";
            }
            return appVersion;
        }
        catch (Exception e)
        {
            Debug.LogError($"获取本地版本信息失败: {e.Message}");
            return "1.0.0"; // 返回默认版本
        }
    }
    /// <summary>
    /// 从URL获取远程版本信息
    /// </summary>
    /// <param name="url">远程版本文件URL</param>
    /// <returns>远程版本字符串</returns>
    public static async UniTask<string> GetRemoteVersionAsync(string url)
    {
        const int maxRetries = 3;        // 最大重试次数
        const float timeoutSeconds = 10f; // 超时时间(秒)
        for (int retry = 0; retry < maxRetries; retry++)
        {
            try
            {
                using (var cancellationTokenSource = new System.Threading.CancellationTokenSource())
                {
                    // 设置超时
                    cancellationTokenSource.CancelAfterSlim(TimeSpan.FromSeconds(timeoutSeconds));
                    // 使用UnityWebRequest获取远程版本
                    using (UnityWebRequest request = UnityWebRequest.Get(url))
                    {
                        // 发送请求并等待结果,带超时
                        await request.SendWebRequest().WithCancellation(cancellationTokenSource.Token);
                        if (request.result == UnityWebRequest.Result.Success)
                        {
                            string versionText = request.downloadHandler.text.Trim();
                            Debug.Log($"成功获取远程版本: {versionText},尝试次数: {retry + 1}");
                            return versionText;
                        }
                        else
                        {
                            Debug.LogWarning($"获取远程版本失败: {request.error},尝试次数: {retry + 1}/{maxRetries}");
                        }
                    }
                }
                // 如果不是最后一次尝试,则等待一段时间后重试
                if (retry < maxRetries - 1)
                {
                    await UniTask.Delay(1000); // 等待1秒后重试
                }
            }
            catch (OperationCanceledException)
            {
                Debug.LogError($"获取远程版本超时,尝试次数: {retry + 1}/{maxRetries}");
            }
            catch (Exception e)
            {
                Debug.LogError($"获取远程版本异常: {e.Message},尝试次数: {retry + 1}/{maxRetries}");
            }
        }
        // 所有重试都失败,显示提示窗口
        ShowVersionFetchFailedDialog();
        // 返回空字符串表示获取失败
        return string.Empty;
    }
    /// <summary>
    /// 显示版本获取失败对话框
    /// </summary>
    /// <remarks>
    /// 这是一个预留接口,需要在实际项目中实现
    /// </remarks>
    private static void ShowVersionFetchFailedDialog()
    {
        // 这里是预留的接口,用于显示版本获取失败的对话框
        // 在实际项目中,可以根据需要实现具体的UI显示逻辑
        Debug.LogError("获取版本信息失败,请检查网络连接后重试");
        // 示例:可以通过事件系统触发UI显示
        // EventSystem.Trigger("ShowVersionFetchFailedDialog");
        // 或者通过其他方式显示对话框
        // UIManager.ShowDialog("获取版本信息失败", "请检查网络连接后重试", "确定");
    }
    /// <summary>
    /// 检查版本更新
    /// </summary>
    /// <param name="versionUrl">远程版本文件URL</param>
    /// <returns>更新类型</returns>
    public static async UniTask<UpdateType> CheckVersionUpdateAsync(string versionUrl)
    {
        try
        {
            // 获取本地版本
            string localVersion = await GetLocalVersionAsync();
            Debug.Log($"本地版本: {localVersion}");
            // 获取远程版本
            string remoteVersion = await GetRemoteVersionAsync(versionUrl);
            Debug.Log($"远程版本: {remoteVersion}");
            // 比较版本
            UpdateType updateType = CompareVersions(localVersion, remoteVersion);
            return updateType;
        }
        catch (Exception e)
        {
            Debug.LogError($"检查版本更新失败: {e.Message}");
            return UpdateType.None;
        }
    }
}
Assets/Launch/Utility/LaunchUtility.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 80559e938fea3bb48a4fe2afe9bbfdad
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d288567b6ad2523439f050196841ba2f
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 825ec5b8ca2f44047963b891435c0abb
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/DOTween.XML
New file
@@ -0,0 +1,3089 @@
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>DOTween</name>
    </assembly>
    <members>
        <member name="T:DG.Tweening.AutoPlay">
            <summary>
            Types of autoPlay behaviours
            </summary>
        </member>
        <member name="F:DG.Tweening.AutoPlay.None">
            <summary>No tween is automatically played</summary>
        </member>
        <member name="F:DG.Tweening.AutoPlay.AutoPlaySequences">
            <summary>Only Sequences are automatically played</summary>
        </member>
        <member name="F:DG.Tweening.AutoPlay.AutoPlayTweeners">
            <summary>Only Tweeners are automatically played</summary>
        </member>
        <member name="F:DG.Tweening.AutoPlay.All">
            <summary>All tweens are automatically played</summary>
        </member>
        <member name="T:DG.Tweening.AxisConstraint">
            <summary>
            What axis to constrain in case of Vector tweens
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.ABSSequentiable.onStart">
            <summary>Called the first time the tween is set in a playing state, after any eventual delay</summary>
        </member>
        <member name="T:DG.Tweening.Core.DOGetter`1">
            <summary>
            Used in place of <c>System.Func</c>, which is not available in mscorlib.
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.DOSetter`1">
            <summary>
            Used in place of <c>System.Action</c>.
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.Debugger">
            <summary>
            Public so it can be used by lose scripts related to DOTween (like DOTweenAnimation)
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.DOTweenComponent">
            <summary>
            Used to separate DOTween class from the MonoBehaviour instance (in order to use static constructors on DOTween).
            Contains all instance-based methods
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.DOTweenComponent.inspectorUpdater">
            <summary>Used internally inside Unity Editor, as a trick to update DOTween's inspector at every frame</summary>
        </member>
        <member name="M:DG.Tweening.Core.DOTweenComponent.SetCapacity(System.Int32,System.Int32)">
            <summary>
            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.
            </summary>
            <param name="tweenersCapacity">Max Tweeners capacity.
            Default: 200</param>
            <param name="sequencesCapacity">Max Sequences capacity.
            Default: 50</param>
        </member>
        <member name="T:DG.Tweening.Core.Easing.Bounce">
            <summary>
            This class contains a C# port of the easing equations created by Robert Penner (http://robertpenner.com/easing).
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.Easing.Bounce.EaseIn(System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in: accelerating from zero velocity.
            </summary>
            <param name="time">
            Current time (in frames or seconds).
            </param>
            <param name="duration">
            Expected easing duration (in frames or seconds).
            </param>
            <param name="unusedOvershootOrAmplitude">Unused: here to keep same delegate for all ease types.</param>
            <param name="unusedPeriod">Unused: here to keep same delegate for all ease types.</param>
            <returns>
            The eased value.
            </returns>
        </member>
        <member name="M:DG.Tweening.Core.Easing.Bounce.EaseOut(System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out: decelerating from zero velocity.
            </summary>
            <param name="time">
            Current time (in frames or seconds).
            </param>
            <param name="duration">
            Expected easing duration (in frames or seconds).
            </param>
            <param name="unusedOvershootOrAmplitude">Unused: here to keep same delegate for all ease types.</param>
            <param name="unusedPeriod">Unused: here to keep same delegate for all ease types.</param>
            <returns>
            The eased value.
            </returns>
        </member>
        <member name="M:DG.Tweening.Core.Easing.Bounce.EaseInOut(System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in/out: acceleration until halfway, then deceleration.
            </summary>
            <param name="time">
            Current time (in frames or seconds).
            </param>
            <param name="duration">
            Expected easing duration (in frames or seconds).
            </param>
            <param name="unusedOvershootOrAmplitude">Unused: here to keep same delegate for all ease types.</param>
            <param name="unusedPeriod">Unused: here to keep same delegate for all ease types.</param>
            <returns>
            The eased value.
            </returns>
        </member>
        <member name="M:DG.Tweening.Core.Easing.EaseManager.Evaluate(DG.Tweening.Tween,System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.Easing.EaseManager.Evaluate(DG.Tweening.Ease,DG.Tweening.EaseFunction,System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.Easing.EaseCurve">
            <summary>
            Used to interpret AnimationCurves as eases.
            Public so it can be used by external ease factories
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.Enums.NestedTweenFailureBehaviour">
            <summary>
            Behaviour in case a tween nested inside a Sequence fails and is captured by safe mode
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.NestedTweenFailureBehaviour.TryToPreserveSequence">
            <summary>If the Sequence contains other elements, kill the failed tween but preserve the rest</summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.NestedTweenFailureBehaviour.KillWholeSequence">
            <summary>Kill the whole Sequence</summary>
        </member>
        <member name="T:DG.Tweening.Core.Enums.SafeModeLogBehaviour">
            <summary>
            Log types thrown by errors captured and prevented by safe mode
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.SafeModeLogBehaviour.None">
            <summary>No logs. NOT RECOMMENDED</summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.SafeModeLogBehaviour.Normal">
            <summary>Throw a normal log</summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.SafeModeLogBehaviour.Warning">
            <summary>Throw a warning log (default)</summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.SafeModeLogBehaviour.Error">
            <summary>Throw an error log</summary>
        </member>
        <member name="T:DG.Tweening.Core.Enums.UpdateNotice">
            <summary>
            Additional notices passed to plugins when updating.
            Public so it can be used by custom plugins. Internally, only PathPlugin uses it
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.UpdateNotice.None">
            <summary>
            None
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.UpdateNotice.RewindStep">
            <summary>
            Lets the plugin know that we restarted or rewinded
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.Enums.RewindCallbackMode">
            <summary>
            OnRewind callback behaviour (can only be set via DOTween's Utility Panel)
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.RewindCallbackMode.FireIfPositionChanged">
            <summary>
            When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will be fired only if the tween isn't already rewinded
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.RewindCallbackMode.FireAlwaysWithRewind">
            <summary>
            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
            </summary>
        </member>
        <member name="F:DG.Tweening.Core.Enums.RewindCallbackMode.FireAlways">
            <summary>
            When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will always be fired, even if the tween is already rewinded
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.Extensions">
            <summary>
            Public only so custom shortcuts can access some of these methods
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.Extensions.SetSpecialStartupMode``1(``0,DG.Tweening.Core.Enums.SpecialStartupMode)">
            <summary>
            INTERNAL: used by DO shortcuts and Modules to set special startup mode
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.Extensions.Blendable``3(DG.Tweening.Core.TweenerCore{``0,``1,``2})">
            <summary>
            INTERNAL: used by DO shortcuts and Modules to set the tween as blendable
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.Extensions.NoFrom``3(DG.Tweening.Core.TweenerCore{``0,``1,``2})">
            <summary>
            INTERNAL: used by DO shortcuts and Modules to prevent a tween from using a From setup even if passed
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.DOTweenExternalCommand">
            <summary>
            Used to dispatch commands that need to be captured externally, usually by Modules
            </summary>
        </member>
        <member name="T:DG.Tweening.Core.DOTweenUtils">
            <summary>
            Various utils
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.DOTweenUtils.Vector3FromAngle(System.Single,System.Single)">
            <summary>
            Returns a Vector3 with z = 0
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.DOTweenUtils.Angle2D(UnityEngine.Vector3,UnityEngine.Vector3)">
            <summary>
            Returns the 2D angle between two vectors
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.DOTweenUtils.GetPointOnCircle(UnityEngine.Vector2,System.Single,System.Single)">
            <summary>
            Returns a point on a circle with the given center and radius,
            using Unity's circle coordinates (0° points up and increases clockwise)
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.DOTweenUtils.Vector3AreApproximatelyEqual(UnityEngine.Vector3,UnityEngine.Vector3)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.DOTweenUtils.GetLooseScriptType(System.String)">
            <summary>
            Looks for the type within all possible project assembly names
            </summary>
        </member>
        <member name="M:DG.Tweening.Core.TweenerCore`3.ChangeStartValue(`1,System.Single)">
            <summary>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</summary>
            <param name="newStartValue">The new start value</param>
            <param name="newDuration">If bigger than 0 applies it as the new tween duration</param>
        </member>
        <member name="M:DG.Tweening.Core.TweenerCore`3.ChangeEndValue(`1,System.Boolean)">
            <summary>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</summary>
            <param name="newEndValue">The new end value</param>
            <param name="snapStartValue">If TRUE the start value will become the current target's value, otherwise it will stay the same</param>
        </member>
        <member name="M:DG.Tweening.Core.TweenerCore`3.ChangeEndValue(`1,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="newEndValue">The new end value</param>
            <param name="newDuration">If bigger than 0 applies it as the new tween duration</param>
            <param name="snapStartValue">If TRUE the start value will become the current target's value, otherwise it will stay the same</param>
        </member>
        <member name="M:DG.Tweening.Core.TweenerCore`3.ChangeValues(`1,`1,System.Single)">
            <summary>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</summary>
            <param name="newStartValue">The new start value</param>
            <param name="newEndValue">The new end value</param>
            <param name="newDuration">If bigger than 0 applies it as the new tween duration</param>
        </member>
        <member name="T:DG.Tweening.Color2">
            <summary>
            Struct that stores two colors (used for LineRenderer tweens)
            </summary>
        </member>
        <member name="T:DG.Tweening.TweenCallback">
            <summary>
            Used for tween callbacks
            </summary>
        </member>
        <member name="T:DG.Tweening.TweenCallback`1">
            <summary>
            Used for tween callbacks
            </summary>
        </member>
        <member name="T:DG.Tweening.EaseFunction">
            <summary>
            Used for custom and animationCurve-based ease functions. Must return a value between 0 and 1.
            </summary>
        </member>
        <member name="T:DG.Tweening.CustomPlugins.PureQuaternionPlugin">
            <summary>
            Straight Quaternion plugin. Instead of using Vector3 values accepts Quaternion values directly.
            <para>Beware: doesn't work with LoopType.Incremental (neither directly nor if inside a LoopType.Incremental Sequence).</para>
            <para>To use it, call DOTween.To with the plugin parameter overload, passing it <c>PureQuaternionPlugin.Plug()</c> as first parameter
            (do not use any of the other public PureQuaternionPlugin methods):</para>
            <code>DOTween.To(PureQuaternionPlugin.Plug(), ()=> myQuaternionProperty, x=> myQuaternionProperty = x, myQuaternionEndValue, duration);</code>
            </summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.Plug">
            <summary>
            Plug this plugin inside a DOTween.To call.
            <para>Example:</para>
            <code>DOTween.To(PureQuaternionPlugin.Plug(), ()=> myQuaternionProperty, x=> myQuaternionProperty = x, myQuaternionEndValue, duration);</code>
            </summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.Reset(DG.Tweening.Core.TweenerCore{UnityEngine.Quaternion,UnityEngine.Quaternion,DG.Tweening.Plugins.Options.NoOptions})">
            <summary>INTERNAL: do not use</summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.SetFrom(DG.Tweening.Core.TweenerCore{UnityEngine.Quaternion,UnityEngine.Quaternion,DG.Tweening.Plugins.Options.NoOptions},System.Boolean)">
            <summary>INTERNAL: do not use</summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.SetFrom(DG.Tweening.Core.TweenerCore{UnityEngine.Quaternion,UnityEngine.Quaternion,DG.Tweening.Plugins.Options.NoOptions},UnityEngine.Quaternion,System.Boolean,System.Boolean)">
            <summary>INTERNAL: do not use</summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.ConvertToStartValue(DG.Tweening.Core.TweenerCore{UnityEngine.Quaternion,UnityEngine.Quaternion,DG.Tweening.Plugins.Options.NoOptions},UnityEngine.Quaternion)">
            <summary>INTERNAL: do not use</summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.SetRelativeEndValue(DG.Tweening.Core.TweenerCore{UnityEngine.Quaternion,UnityEngine.Quaternion,DG.Tweening.Plugins.Options.NoOptions})">
            <summary>INTERNAL: do not use</summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.SetChangeValue(DG.Tweening.Core.TweenerCore{UnityEngine.Quaternion,UnityEngine.Quaternion,DG.Tweening.Plugins.Options.NoOptions})">
            <summary>INTERNAL: do not use</summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.GetSpeedBasedDuration(DG.Tweening.Plugins.Options.NoOptions,System.Single,UnityEngine.Quaternion)">
            <summary>INTERNAL: do not use</summary>
        </member>
        <member name="M:DG.Tweening.CustomPlugins.PureQuaternionPlugin.EvaluateAndApply(DG.Tweening.Plugins.Options.NoOptions,DG.Tweening.Tween,System.Boolean,DG.Tweening.Core.DOGetter{UnityEngine.Quaternion},DG.Tweening.Core.DOSetter{UnityEngine.Quaternion},System.Single,UnityEngine.Quaternion,UnityEngine.Quaternion,System.Single,System.Boolean,System.Int32,DG.Tweening.Core.Enums.UpdateNotice)">
            <summary>INTERNAL: do not use</summary>
        </member>
        <member name="T:DG.Tweening.DOCurve">
            <summary>
            Extra non-tweening-related curve methods
            </summary>
        </member>
        <member name="T:DG.Tweening.DOCurve.CubicBezier">
            <summary>
            Cubic bezier curve methods
            </summary>
        </member>
        <member name="M:DG.Tweening.DOCurve.CubicBezier.GetPointOnSegment(UnityEngine.Vector3,UnityEngine.Vector3,UnityEngine.Vector3,UnityEngine.Vector3,System.Single)">
            <summary>
            Calculates a point along the given Cubic Bezier segment-curve.<para/>
            </summary>
            <param name="startPoint">Segment start point</param>
            <param name="startControlPoint">Start point's control point/handle</param>
            <param name="endPoint">Segment end point</param>
            <param name="endControlPoint">End point's control point/handle</param>
            <param name="factor">0-1 percentage along which to retrieve point</param>
        </member>
        <member name="M:DG.Tweening.DOCurve.CubicBezier.GetSegmentPointCloud(UnityEngine.Vector3,UnityEngine.Vector3,UnityEngine.Vector3,UnityEngine.Vector3,System.Int32)">
            <summary>
            Returns an array containing a series of points along the given Cubic Bezier segment-curve.<para/>
            </summary>
            <param name="startPoint">Start point</param>
            <param name="startControlPoint">Start point's control point/handle</param>
            <param name="endPoint">End point</param>
            <param name="endControlPoint">End point's control point/handle</param>
            <param name="resolution">Cloud resolution (min: 2)</param>
        </member>
        <member name="M:DG.Tweening.DOCurve.CubicBezier.GetSegmentPointCloud(System.Collections.Generic.List{UnityEngine.Vector3},UnityEngine.Vector3,UnityEngine.Vector3,UnityEngine.Vector3,UnityEngine.Vector3,System.Int32)">
            <summary>
            Calculates a series of points along the given Cubic Bezier segment-curve and adds them to the given list.<para/>
            </summary>
            <param name="startPoint">Start point</param>
            <param name="startControlPoint">Start point's control point/handle</param>
            <param name="endPoint">End point</param>
            <param name="endControlPoint">End point's control point/handle</param>
            <param name="resolution">Cloud resolution (min: 2)</param>
        </member>
        <member name="T:DG.Tweening.DOTween">
            <summary>
            Main DOTween class. Contains static methods to create and control tweens in a generic way
            </summary>
        </member>
        <member name="F:DG.Tweening.DOTween.Version">
            <summary>DOTween's version</summary>
        </member>
        <member name="F:DG.Tweening.DOTween.useSafeMode">
            <summary>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).
            <para>Default: TRUE</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.safeModeLogBehaviour">
            <summary>Log type when safe mode reports capturing an error and preventing it</summary>
        </member>
        <member name="F:DG.Tweening.DOTween.nestedTweenFailureBehaviour">
            <summary>Behaviour in case a tween nested inside a Sequence fails (and is caught by safe mode).
            <para>Default: NestedTweenFailureBehaviour.TryToPreserveSequence</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.showUnityEditorReport">
            <summary>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.
            <para>Default: FALSE</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.timeScale">
            <summary>Global DOTween global timeScale (default: 1).<para/>
            The final timeScale of a non-timeScaleIndependent tween is:<para/>
            <code>Unity's Time.timeScale * DOTween.timeScale * tween.timeScale</code><para/>
            while the final timeScale of a timeScaleIndependent tween is:<para/>
            <code>DOTween.unscaledTimeScale * DOTween.timeScale * tween.timeScale</code></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.unscaledTimeScale">
            <summary>DOTween timeScale applied only to timeScaleIndependent tweens (default: 1).<para/>
            The final timeScale of a timeScaleIndependent tween is:<para/>
            <code>DOTween.unscaledTimeScale * DOTween.timeScale * tween.timeScale</code></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.useSmoothDeltaTime">
            <summary>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 <see cref="F:DG.Tweening.DOTween.maxSmoothUnscaledTime"/> will be used instead).
            Setting this to TRUE will lead to smoother animations.
            <para>Default: FALSE</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.maxSmoothUnscaledTime">
            <summary>If <see cref="F:DG.Tweening.DOTween.useSmoothDeltaTime"/> is TRUE, this indicates the max timeStep that an independent update call can last.
            Setting this to TRUE will lead to smoother animations.
            <para>Default: FALSE</para></summary>
        </member>
        <member name="P:DG.Tweening.DOTween.logBehaviour">
            <summary>DOTween's log behaviour.
            <para>Default: LogBehaviour.ErrorsOnly</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.onWillLog">
            <summary>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.<para/>
            Return TRUE if you want DOTween to proceed with the log, FALSE otherwise.<para/>
            This method must return a <code>bool</code> and accept two parameters:<para/>
            - <code>LogType</code>: the type of Unity log that DOTween is trying to log<para/>
            - <code>object</code>: the log message that DOTween wants to log</summary>
        </member>
        <member name="F:DG.Tweening.DOTween.drawGizmos">
            <summary>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</summary>
        </member>
        <member name="F:DG.Tweening.DOTween.debugMode">
            <summary>If TRUE activates various debug options</summary>
        </member>
        <member name="P:DG.Tweening.DOTween.debugStoreTargetId">
            <summary>Stores the target id so it can be used to give more info in case of safeMode error capturing.
            Only active if both <code>debugMode</code> and <code>useSafeMode</code> are TRUE</summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultUpdateType">
            <summary>Default updateType for new tweens.
            <para>Default: UpdateType.Normal</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultTimeScaleIndependent">
            <summary>Sets whether Unity's timeScale should be taken into account by default or not.
            <para>Default: false</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultAutoPlay">
            <summary>Default autoPlay behaviour for new tweens.
            <para>Default: AutoPlay.All</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultAutoKill">
            <summary>Default autoKillOnComplete behaviour for new tweens.
            <para>Default: TRUE</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultLoopType">
            <summary>Default loopType applied to all new tweens.
            <para>Default: LoopType.Restart</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultRecyclable">
            <summary>If TRUE all newly created tweens are set as recyclable, otherwise not.
            <para>Default: FALSE</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultEaseType">
            <summary>Default ease applied to all new Tweeners (not to Sequences which always have Ease.Linear as default).
            <para>Default: Ease.InOutQuad</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultEaseOvershootOrAmplitude">
            <summary>Default overshoot/amplitude used for eases
            <para>Default: 1.70158f</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.defaultEasePeriod">
            <summary>Default period used for eases
            <para>Default: 0</para></summary>
        </member>
        <member name="F:DG.Tweening.DOTween.instance">
            <summary>Used internally. Assigned/removed by DOTweenComponent.Create/DestroyInstance</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Init(System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{DG.Tweening.LogBehaviour})">
            <summary>
            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.
            <para>You can chain <code>SetCapacity</code> to this method, to directly set the max starting size of Tweeners and Sequences:</para>
            <code>DOTween.Init(false, false, LogBehaviour.Default).SetCapacity(100, 20);</code>
            </summary>
            <param name="recycleAllByDefault">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).
            <para>If you want to automatically set your tween references to NULL when a tween is killed
            you can use the OnKill callback like this:</para>
            <code>.OnKill(()=> myTweenReference = null)</code>
            <para>You can change this setting at any time by changing the static <see cref="F:DG.Tweening.DOTween.defaultRecyclable"/> property,
            or you can set the recycling behaviour for each tween separately, using:</para>
            <para><code>SetRecyclable(bool recyclable)</code></para>
            <para>Default: FALSE</para></param>
            <param name="useSafeMode">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 <see cref="F:DG.Tweening.DOTween.useSafeMode"/> property.
            <para>Default: FALSE</para></param>
            <param name="logBehaviour">Type of logging to use.
            You can change this setting at any time by changing the static <see cref="P:DG.Tweening.DOTween.logBehaviour"/> property.
            <para>Default: ErrorsOnly</para></param>
        </member>
        <member name="M:DG.Tweening.DOTween.SetTweensCapacity(System.Int32,System.Int32)">
            <summary>
            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.
            </summary>
            <param name="tweenersCapacity">Max Tweeners capacity.
            Default: 200</param>
            <param name="sequencesCapacity">Max Sequences capacity.
            Default: 50</param>
        </member>
        <member name="M:DG.Tweening.DOTween.Clear(System.Boolean)">
            <summary>
            Kills all tweens, clears all cached tween pools and plugins and resets the max Tweeners/Sequences capacities to the default values.
            </summary>
            <param name="destroy">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)</param>
        </member>
        <member name="M:DG.Tweening.DOTween.ClearCachedTweens">
            <summary>
            Clears all cached tween pools.
            </summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Validate">
            <summary>
            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
            </summary>
        </member>
        <member name="M:DG.Tweening.DOTween.ManualUpdate(System.Single,System.Single)">
            <summary>
            Updates all tweens that are set to <see cref="F:DG.Tweening.UpdateType.Manual"/>.
            </summary>
            <param name="deltaTime">Manual deltaTime</param>
            <param name="unscaledDeltaTime">Unscaled delta time (used with tweens set as timeScaleIndependent)</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{System.Single},DG.Tweening.Core.DOSetter{System.Single},System.Single,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{System.Double},DG.Tweening.Core.DOSetter{System.Double},System.Double,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{System.Int32},DG.Tweening.Core.DOSetter{System.Int32},System.Int32,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{System.UInt32},DG.Tweening.Core.DOSetter{System.UInt32},System.UInt32,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{System.Int64},DG.Tweening.Core.DOSetter{System.Int64},System.Int64,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{System.UInt64},DG.Tweening.Core.DOSetter{System.UInt64},System.UInt64,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{System.String},DG.Tweening.Core.DOSetter{System.String},System.String,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{UnityEngine.Vector2},DG.Tweening.Core.DOSetter{UnityEngine.Vector2},UnityEngine.Vector2,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{UnityEngine.Vector3},DG.Tweening.Core.DOSetter{UnityEngine.Vector3},UnityEngine.Vector3,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{UnityEngine.Vector4},DG.Tweening.Core.DOSetter{UnityEngine.Vector4},UnityEngine.Vector4,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{UnityEngine.Quaternion},DG.Tweening.Core.DOSetter{UnityEngine.Quaternion},UnityEngine.Vector3,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{UnityEngine.Color},DG.Tweening.Core.DOSetter{UnityEngine.Color},UnityEngine.Color,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{UnityEngine.Rect},DG.Tweening.Core.DOSetter{UnityEngine.Rect},UnityEngine.Rect,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOGetter{UnityEngine.RectOffset},DG.Tweening.Core.DOSetter{UnityEngine.RectOffset},UnityEngine.RectOffset,System.Single)">
            <summary>Tweens a property or field to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To``3(DG.Tweening.Plugins.Core.ABSTweenPlugin{``0,``1,``2},DG.Tweening.Core.DOGetter{``0},DG.Tweening.Core.DOSetter{``0},``1,System.Single)">
            <summary>Tweens a property or field to the given value using a custom plugin</summary>
            <param name="plugin">The plugin to use. Each custom plugin implements a static <code>Get()</code> method
            you'll need to call to assign the correct plugin in the correct way, like this:
            <para><code>CustomPlugin.Get()</code></para></param>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.ToAxis(DG.Tweening.Core.DOGetter{UnityEngine.Vector3},DG.Tweening.Core.DOSetter{UnityEngine.Vector3},System.Single,System.Single,DG.Tweening.AxisConstraint)">
            <summary>Tweens only one axis of a Vector3 to the given value using default plugins.</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
            <param name="axisConstraint">The axis to tween</param>
        </member>
        <member name="M:DG.Tweening.DOTween.ToAlpha(DG.Tweening.Core.DOGetter{UnityEngine.Color},DG.Tweening.Core.DOSetter{UnityEngine.Color},System.Single,System.Single)">
            <summary>Tweens only the alpha of a Color to the given value using default plugins</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValue">The end value to reach</param><param name="duration">The tween's duration</param>
        </member>
        <member name="M:DG.Tweening.DOTween.To(DG.Tweening.Core.DOSetter{System.Single},System.Single,System.Single,System.Single)">
            <summary>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
            <para>Example:</para>
            <code>To(MyMethod, 0, 12, 0.5f);</code>
            <para>Where MyMethod is a function that accepts a float parameter (which will be the result of the virtual tween)</para></summary>
            <param name="setter">The action to perform with the tweened value</param>
            <param name="startValue">The value to start from</param>
            <param name="endValue">The end value to reach</param>
            <param name="duration">The duration of the virtual tween
            </param>
        </member>
        <member name="M:DG.Tweening.DOTween.Punch(DG.Tweening.Core.DOGetter{UnityEngine.Vector3},DG.Tweening.Core.DOSetter{UnityEngine.Vector3},UnityEngine.Vector3,System.Single,System.Int32,System.Single)">
            <summary>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.
            <para>This tween type generates some GC allocations at startup</para></summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="direction">The direction and strength of the punch</param>
            <param name="duration">The duration of the tween</param>
            <param name="vibrato">Indicates how much will the punch vibrate</param>
            <param name="elasticity">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</param>
        </member>
        <member name="M:DG.Tweening.DOTween.Shake(DG.Tweening.Core.DOGetter{UnityEngine.Vector3},DG.Tweening.Core.DOSetter{UnityEngine.Vector3},System.Single,System.Single,System.Int32,System.Single,System.Boolean,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Vector3 with the given values.</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="ignoreZAxis">If TRUE only shakes on the X Y axis (looks better with things like cameras).</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.DOTween.Shake(DG.Tweening.Core.DOGetter{UnityEngine.Vector3},DG.Tweening.Core.DOSetter{UnityEngine.Vector3},System.Single,UnityEngine.Vector3,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Vector3 with the given values.</summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength on each axis</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.DOTween.ToArray(DG.Tweening.Core.DOGetter{UnityEngine.Vector3},DG.Tweening.Core.DOSetter{UnityEngine.Vector3},UnityEngine.Vector3[],System.Single[])">
            <summary>Tweens a property or field to the given values using default plugins.
            Ease is applied between each segment and not as a whole.
            <para>This tween type generates some GC allocations at startup</para></summary>
            <param name="getter">A getter for the field or property to tween.
            <para>Example usage with lambda:</para><code>()=> myProperty</code></param>
            <param name="setter">A setter for the field or property to tween
            <para>Example usage with lambda:</para><code>x=> myProperty = x</code></param>
            <param name="endValues">The end values to reach for each segment. This array must have the same length as <code>durations</code></param>
            <param name="durations">The duration of each segment. This array must have the same length as <code>endValues</code></param>
        </member>
        <member name="M:DG.Tweening.DOTween.Sequence">
            <summary>
            Returns a new <see cref="T:DG.Tweening.Sequence"/> to be used for tween groups.<para/>
            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 <see cref="M:DG.Tweening.DOTween.Sequence(System.Object)"/> overload instead of this one
            </summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Sequence(System.Object)">
            <summary>
            Returns a new <see cref="T:DG.Tweening.Sequence"/> 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.
            </summary>
            <param name="target">The target of the Sequence. Relevant only for static target-based methods like DOTween.Kill(target),
            useless otherwise</param>
        </member>
        <member name="M:DG.Tweening.DOTween.CompleteAll(System.Boolean)">
            <summary>Completes all tweens and returns the number of actual tweens completed
            (meaning tweens that don't have infinite loops and were not already complete)</summary>
            <param name="withCallbacks">For Sequences only: if TRUE also internal Sequence callbacks will be fired,
            otherwise they will be ignored</param>
        </member>
        <member name="M:DG.Tweening.DOTween.Complete(System.Object,System.Boolean)">
            <summary>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)</summary>
            <param name="withCallbacks">For Sequences only: if TRUE internal Sequence callbacks will be fired,
            otherwise they will be ignored</param>
        </member>
        <member name="M:DG.Tweening.DOTween.FlipAll">
            <summary>Flips all tweens (changing their direction to forward if it was backwards and viceversa),
            then returns the number of actual tweens flipped</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Flip(System.Object)">
            <summary>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</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.GotoAll(System.Single,System.Boolean)">
            <summary>Sends all tweens to the given position (calculating also eventual loop cycles) and returns the actual tweens involved</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Goto(System.Object,System.Single,System.Boolean)">
            <summary>Sends all tweens with the given ID or target to the given position (calculating also eventual loop cycles)
            and returns the actual tweens involved</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.KillAll(System.Boolean)">
            <summary>Kills all tweens and returns the number of actual tweens killed</summary>
            <param name="complete">If TRUE completes the tweens before killing them</param>
        </member>
        <member name="M:DG.Tweening.DOTween.KillAll(System.Boolean,System.Object[])">
            <summary>Kills all tweens and returns the number of actual tweens killed</summary>
            <param name="complete">If TRUE completes the tweens before killing them</param>
            <param name="idsOrTargetsToExclude">Eventual IDs or targets to exclude from the killing</param>
        </member>
        <member name="M:DG.Tweening.DOTween.Kill(System.Object,System.Boolean)">
            <summary>Kills all tweens with the given ID or target and returns the number of actual tweens killed</summary>
            <param name="complete">If TRUE completes the tweens before killing them</param>
        </member>
        <member name="M:DG.Tweening.DOTween.Kill(System.Object,System.Object,System.Boolean)">
            <summary>Kills all tweens with the given target and the given ID, and returns the number of actual tweens killed</summary>
            <param name="complete">If TRUE completes the tweens before killing them</param>
        </member>
        <member name="M:DG.Tweening.DOTween.PauseAll">
            <summary>Pauses all tweens and returns the number of actual tweens paused</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Pause(System.Object)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.PlayAll">
            <summary>Plays all tweens and returns the number of actual tweens played
            (meaning tweens that were not already playing or complete)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Play(System.Object)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Play(System.Object,System.Object)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.PlayBackwardsAll">
            <summary>Plays backwards all tweens and returns the number of actual tweens played
            (meaning tweens that were not already started, playing backwards or rewinded)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.PlayBackwards(System.Object)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.PlayBackwards(System.Object,System.Object)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.PlayForwardAll">
            <summary>Plays forward all tweens and returns the number of actual tweens played
            (meaning tweens that were not already playing forward or complete)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.PlayForward(System.Object)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.PlayForward(System.Object,System.Object)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.RestartAll(System.Boolean)">
            <summary>Restarts all tweens, then returns the number of actual tweens restarted</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Restart(System.Object,System.Boolean,System.Single)">
            <summary>Restarts all tweens with the given ID or target, then returns the number of actual tweens restarted</summary>
            <param name="includeDelay">If TRUE includes the eventual tweens delays, otherwise skips them</param>
            <param name="changeDelayTo">If >= 0 changes the startup delay of all involved tweens to this value, otherwise doesn't touch it</param>
        </member>
        <member name="M:DG.Tweening.DOTween.Restart(System.Object,System.Object,System.Boolean,System.Single)">
            <summary>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)</summary>
            <param name="includeDelay">If TRUE includes the eventual tweens delays, otherwise skips them</param>
            <param name="changeDelayTo">If >= 0 changes the startup delay of all involved tweens to this value, otherwise doesn't touch it</param>
        </member>
        <member name="M:DG.Tweening.DOTween.RewindAll(System.Boolean)">
            <summary>Rewinds and pauses all tweens, then returns the number of actual tweens rewinded
            (meaning tweens that were not already rewinded)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.Rewind(System.Object,System.Boolean)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.SmoothRewindAll">
            <summary>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.
            <para>Note that a tween that was smoothly rewinded will have its play direction flipped</para></summary>
        </member>
        <member name="M:DG.Tweening.DOTween.SmoothRewind(System.Object)">
            <summary>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.
            <para>Note that a tween that was smoothly rewinded will have its play direction flipped</para></summary>
        </member>
        <member name="M:DG.Tweening.DOTween.TogglePauseAll">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.TogglePause(System.Object)">
            <summary>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)</summary>
        </member>
        <member name="M:DG.Tweening.DOTween.IsTweening(System.Object,System.Boolean)">
            <summary>
            Returns TRUE if a tween with the given ID or target is active.
            <para>You can also use this to know if a shortcut tween is active for a given target.</para>
            <para>Example:</para>
            <para><code>transform.DOMoveX(45, 1); // transform is automatically added as the tween target</code></para>
            <para><code>DOTween.IsTweening(transform); // Returns true</code></para>
            </summary>
            <param name="targetOrId">The target or ID to look for</param>
            <param name="alsoCheckIfIsPlaying">If FALSE (default) returns TRUE as long as a tween for the given target/ID is active,
            otherwise also requires it to be playing</param>
        </member>
        <member name="M:DG.Tweening.DOTween.TotalActiveTweens">
            <summary>
            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
            </summary>
        </member>
        <member name="M:DG.Tweening.DOTween.TotalActiveTweeners">
            <summary>
            Returns the total number of active Tweeners.
            A Tweener is considered active if it wasn't killed, regardless if it's playing or paused
            </summary>
        </member>
        <member name="M:DG.Tweening.DOTween.TotalActiveSequences">
            <summary>
            Returns the total number of active Sequences.
            A Sequence is considered active if it wasn't killed, regardless if it's playing or paused
            </summary>
        </member>
        <member name="M:DG.Tweening.DOTween.TotalPlayingTweens">
            <summary>
            Returns the total number of active and playing tweens.
            A tween is considered as playing even if its delay is actually playing
            </summary>
        </member>
        <member name="M:DG.Tweening.DOTween.TotalTweensById(System.Object,System.Boolean)">
            <summary>
            Returns a the total number of active tweens with the given id.
            </summary>
            <param name="playingOnly">If TRUE returns only the tweens with the given ID that are currently playing</param>
        </member>
        <member name="M:DG.Tweening.DOTween.PlayingTweens(System.Collections.Generic.List{DG.Tweening.Tween})">
            <summary>
            Returns a list of all active tweens in a playing state.
            Returns NULL if there are no active playing tweens.
            <para>Beware: each time you call this method a new list is generated, so use it for debug only</para>
            </summary>
            <param name="fillableList">If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations)</param>
        </member>
        <member name="M:DG.Tweening.DOTween.PausedTweens(System.Collections.Generic.List{DG.Tweening.Tween})">
            <summary>
            Returns a list of all active tweens in a paused state.
            Returns NULL if there are no active paused tweens.
            <para>Beware: each time you call this method a new list is generated, so use it for debug only</para>
            </summary>
            <param name="fillableList">If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations)</param>
        </member>
        <member name="M:DG.Tweening.DOTween.TweensById(System.Object,System.Boolean,System.Collections.Generic.List{DG.Tweening.Tween})">
            <summary>
            Returns a list of all active tweens with the given id.
            Returns NULL if there are no active tweens with the given id.
            <para>Beware: each time you call this method a new list is generated</para>
            </summary>
            <param name="playingOnly">If TRUE returns only the tweens with the given ID that are currently playing</param>
            <param name="fillableList">If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations)</param>
        </member>
        <member name="M:DG.Tweening.DOTween.TweensByTarget(System.Object,System.Boolean,System.Collections.Generic.List{DG.Tweening.Tween})">
            <summary>
            Returns a list of all active tweens with the given target.
            Returns NULL if there are no active tweens with the given target.
            <para>Beware: each time you call this method a new list is generated</para>
            <param name="playingOnly">If TRUE returns only the tweens with the given target that are currently playing</param>
            <param name="fillableList">If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations)</param>
            </summary>
        </member>
        <member name="T:DG.Tweening.DOVirtual">
            <summary>
            Creates virtual tweens that can be used to change other elements via their OnUpdate calls
            </summary>
        </member>
        <member name="M:DG.Tweening.DOVirtual.Float(System.Single,System.Single,System.Single,DG.Tweening.TweenCallback{System.Single})">
            <summary>
            Tweens a virtual float.
            You can add regular settings to the generated tween,
            but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
            </summary>
            <param name="from">The value to start from</param>
            <param name="to">The value to tween to</param>
            <param name="duration">The duration of the tween</param>
            <param name="onVirtualUpdate">A callback which must accept a parameter of type float, called at each update</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.Int(System.Int32,System.Int32,System.Single,DG.Tweening.TweenCallback{System.Int32})">
            <summary>
            Tweens a virtual int.
            You can add regular settings to the generated tween,
            but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
            </summary>
            <param name="from">The value to start from</param>
            <param name="to">The value to tween to</param>
            <param name="duration">The duration of the tween</param>
            <param name="onVirtualUpdate">A callback which must accept a parameter of type int, called at each update</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.Vector2(UnityEngine.Vector2,UnityEngine.Vector2,System.Single,DG.Tweening.TweenCallback{UnityEngine.Vector2})">
            <summary>
            Tweens a virtual Vector2.
            You can add regular settings to the generated tween,
            but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
            </summary>
            <param name="from">The value to start from</param>
            <param name="to">The value to tween to</param>
            <param name="duration">The duration of the tween</param>
            <param name="onVirtualUpdate">A callback which must accept a parameter of type Vector3, called at each update</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.Vector3(UnityEngine.Vector3,UnityEngine.Vector3,System.Single,DG.Tweening.TweenCallback{UnityEngine.Vector3})">
            <summary>
            Tweens a virtual Vector3.
            You can add regular settings to the generated tween,
            but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
            </summary>
            <param name="from">The value to start from</param>
            <param name="to">The value to tween to</param>
            <param name="duration">The duration of the tween</param>
            <param name="onVirtualUpdate">A callback which must accept a parameter of type Vector3, called at each update</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.Color(UnityEngine.Color,UnityEngine.Color,System.Single,DG.Tweening.TweenCallback{UnityEngine.Color})">
            <summary>
            Tweens a virtual Color.
            You can add regular settings to the generated tween,
            but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
            </summary>
            <param name="from">The value to start from</param>
            <param name="to">The value to tween to</param>
            <param name="duration">The duration of the tween</param>
            <param name="onVirtualUpdate">A callback which must accept a parameter of type Color, called at each update</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.EasedValue(System.Single,System.Single,System.Single,DG.Tweening.Ease)">
            <summary>Returns a value based on the given ease and lifetime percentage (0 to 1)</summary>
            <param name="from">The value to start from when lifetimePercentage is 0</param>
            <param name="to">The value to reach when lifetimePercentage is 1</param>
            <param name="lifetimePercentage">The time percentage (0 to 1) at which the value should be taken</param>
            <param name="easeType">The type of ease</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.EasedValue(System.Single,System.Single,System.Single,DG.Tweening.Ease,System.Single)">
            <summary>Returns a value based on the given ease and lifetime percentage (0 to 1)</summary>
            <param name="from">The value to start from when lifetimePercentage is 0</param>
            <param name="to">The value to reach when lifetimePercentage is 1</param>
            <param name="lifetimePercentage">The time percentage (0 to 1) at which the value should be taken</param>
            <param name="easeType">The type of ease</param>
            <param name="overshoot">Eventual overshoot to use with Back ease</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.EasedValue(System.Single,System.Single,System.Single,DG.Tweening.Ease,System.Single,System.Single)">
            <summary>Returns a value based on the given ease and lifetime percentage (0 to 1)</summary>
            <param name="from">The value to start from when lifetimePercentage is 0</param>
            <param name="to">The value to reach when lifetimePercentage is 1</param>
            <param name="lifetimePercentage">The time percentage (0 to 1) at which the value should be taken</param>
            <param name="easeType">The type of ease</param>
            <param name="amplitude">Eventual amplitude to use with Elastic easeType</param>
            <param name="period">Eventual period to use with Elastic easeType</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.EasedValue(System.Single,System.Single,System.Single,UnityEngine.AnimationCurve)">
            <summary>Returns a value based on the given ease and lifetime percentage (0 to 1)</summary>
            <param name="from">The value to start from when lifetimePercentage is 0</param>
            <param name="to">The value to reach when lifetimePercentage is 1</param>
            <param name="lifetimePercentage">The time percentage (0 to 1) at which the value should be taken</param>
            <param name="easeCurve">The AnimationCurve to use for ease</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.EasedValue(UnityEngine.Vector3,UnityEngine.Vector3,System.Single,DG.Tweening.Ease)">
            <summary>Returns a value based on the given ease and lifetime percentage (0 to 1)</summary>
            <param name="from">The value to start from when lifetimePercentage is 0</param>
            <param name="to">The value to reach when lifetimePercentage is 1</param>
            <param name="lifetimePercentage">The time percentage (0 to 1) at which the value should be taken</param>
            <param name="easeType">The type of ease</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.EasedValue(UnityEngine.Vector3,UnityEngine.Vector3,System.Single,DG.Tweening.Ease,System.Single)">
            <summary>Returns a value based on the given ease and lifetime percentage (0 to 1)</summary>
            <param name="from">The value to start from when lifetimePercentage is 0</param>
            <param name="to">The value to reach when lifetimePercentage is 1</param>
            <param name="lifetimePercentage">The time percentage (0 to 1) at which the value should be taken</param>
            <param name="easeType">The type of ease</param>
            <param name="overshoot">Eventual overshoot to use with Back ease</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.EasedValue(UnityEngine.Vector3,UnityEngine.Vector3,System.Single,DG.Tweening.Ease,System.Single,System.Single)">
            <summary>Returns a value based on the given ease and lifetime percentage (0 to 1)</summary>
            <param name="from">The value to start from when lifetimePercentage is 0</param>
            <param name="to">The value to reach when lifetimePercentage is 1</param>
            <param name="lifetimePercentage">The time percentage (0 to 1) at which the value should be taken</param>
            <param name="easeType">The type of ease</param>
            <param name="amplitude">Eventual amplitude to use with Elastic easeType</param>
            <param name="period">Eventual period to use with Elastic easeType</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.EasedValue(UnityEngine.Vector3,UnityEngine.Vector3,System.Single,UnityEngine.AnimationCurve)">
            <summary>Returns a value based on the given ease and lifetime percentage (0 to 1)</summary>
            <param name="from">The value to start from when lifetimePercentage is 0</param>
            <param name="to">The value to reach when lifetimePercentage is 1</param>
            <param name="lifetimePercentage">The time percentage (0 to 1) at which the value should be taken</param>
            <param name="easeCurve">The AnimationCurve to use for ease</param>
        </member>
        <member name="M:DG.Tweening.DOVirtual.DelayedCall(System.Single,DG.Tweening.TweenCallback,System.Boolean)">
            <summary>Fires the given callback after the given time.</summary>
            <param name="delay">Callback delay</param>
            <param name="callback">Callback to fire when the delay has expired</param>
            <param name="ignoreTimeScale">If TRUE (default) ignores Unity's timeScale</param>
        </member>
        <member name="F:DG.Tweening.Ease.INTERNAL_Zero">
            <summary>
            Don't assign this! It's assigned automatically when creating 0 duration tweens
            </summary>
        </member>
        <member name="F:DG.Tweening.Ease.INTERNAL_Custom">
            <summary>
            Don't assign this! It's assigned automatically when setting the ease to an AnimationCurve or to a custom ease function
            </summary>
        </member>
        <member name="T:DG.Tweening.EaseFactory">
            <summary>
            Allows to wrap ease method in special ways, adding extra features
            </summary>
        </member>
        <member name="M:DG.Tweening.EaseFactory.StopMotion(System.Int32,System.Nullable{DG.Tweening.Ease})">
            <summary>
            Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS
            </summary>
            <param name="motionFps">FPS at which the tween should be played</param>
            <param name="ease">Ease type</param>
        </member>
        <member name="M:DG.Tweening.EaseFactory.StopMotion(System.Int32,UnityEngine.AnimationCurve)">
            <summary>
            Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS
            </summary>
            <param name="motionFps">FPS at which the tween should be played</param>
            <param name="animCurve">AnimationCurve to use for the ease</param>
        </member>
        <member name="M:DG.Tweening.EaseFactory.StopMotion(System.Int32,DG.Tweening.EaseFunction)">
            <summary>
            Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS
            </summary>
            <param name="motionFps">FPS at which the tween should be played</param>
            <param name="customEase">Custom ease function to use</param>
        </member>
        <member name="T:DG.Tweening.IDOTweenInit">
            <summary>
            Used to allow method chaining with DOTween.Init
            </summary>
        </member>
        <member name="M:DG.Tweening.IDOTweenInit.SetCapacity(System.Int32,System.Int32)">
            <summary>
            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.
            </summary>
            <param name="tweenersCapacity">Max Tweeners capacity.
            Default: 200</param>
            <param name="sequencesCapacity">Max Sequences capacity.
            Default: 50</param>
        </member>
        <member name="T:DG.Tweening.LinkBehaviour">
            <summary>
            Behaviour that can be assigned when chaining a SetLink to a tween
            </summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.PauseOnDisable">
            <summary>Pauses the tween when the link target is disabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.PauseOnDisablePlayOnEnable">
            <summary>Pauses the tween when the link target is disabled, plays it when it's enabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.PauseOnDisableRestartOnEnable">
            <summary>Pauses the tween when the link target is disabled, restarts it when it's enabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.PlayOnEnable">
            <summary>Plays the tween when the link target is enabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.RestartOnEnable">
            <summary>Restarts the tween when the link target is enabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.KillOnDisable">
            <summary>Kills the tween when the link target is disabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.KillOnDestroy">
            <summary>Kills the tween when the link target is destroyed (becomes NULL). This is always active even if another behaviour is chosen</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.CompleteOnDisable">
            <summary>Completes the tween when the link target is disabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.CompleteAndKillOnDisable">
            <summary>Completes and kills the tween when the link target is disabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.RewindOnDisable">
            <summary>Rewinds the tween (delay excluded) when the link target is disabled</summary>
        </member>
        <member name="F:DG.Tweening.LinkBehaviour.RewindAndKillOnDisable">
            <summary>Rewinds and kills the tween when the link target is disabled</summary>
        </member>
        <member name="T:DG.Tweening.PathMode">
            <summary>
            Path mode (used to determine correct LookAt orientation)
            </summary>
        </member>
        <member name="F:DG.Tweening.PathMode.Ignore">
            <summary>Ignores the path mode (and thus LookAt behaviour)</summary>
        </member>
        <member name="F:DG.Tweening.PathMode.Full3D">
            <summary>Regular 3D path</summary>
        </member>
        <member name="F:DG.Tweening.PathMode.TopDown2D">
            <summary>2D top-down path</summary>
        </member>
        <member name="F:DG.Tweening.PathMode.Sidescroller2D">
            <summary>2D side-scroller path</summary>
        </member>
        <member name="T:DG.Tweening.PathType">
            <summary>
            Type of path to use with DOPath tweens
            </summary>
        </member>
        <member name="F:DG.Tweening.PathType.Linear">
            <summary>Linear, composed of straight segments between each waypoint</summary>
        </member>
        <member name="F:DG.Tweening.PathType.CatmullRom">
            <summary>Curved path (which uses Catmull-Rom curves)</summary>
        </member>
        <member name="F:DG.Tweening.PathType.CubicBezier">
            <summary><code>EXPERIMENTAL: </code>Curved path (which uses Cubic Bezier curves, where each point requires two extra control points)</summary>
        </member>
        <member name="T:DG.Tweening.Plugins.CirclePlugin">
            <summary>
            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
            </summary>
        </member>
        <member name="T:DG.Tweening.Plugins.Core.PathCore.ControlPoint">
            <summary>
            Path control point
            </summary>
        </member>
        <member name="F:DG.Tweening.Plugins.Core.PathCore.Path.wps">
            <summary>
            Path waypoints (modified by PathPlugin when setting relative end/change value or by CubicBezierDecoder) and by DOTweenPathInspector
            </summary>
        </member>
        <member name="P:DG.Tweening.Plugins.Core.PathCore.Path.minInputWaypoints">
            <summary>
            Minimum input points necessary to create the path (doesn't correspond to actual waypoints required)
            </summary>
        </member>
        <member name="M:DG.Tweening.Plugins.Core.PathCore.Path.GetPoint(System.Single,System.Boolean)">
            <summary>
            Gets the point on the path at the given percentage (0 to 1)
            </summary>
            <param name="perc">The percentage (0 to 1) at which to get the point</param>
            <param name="convertToConstantPerc">If TRUE constant speed is taken into account, otherwise not</param>
        </member>
        <member name="T:DG.Tweening.Plugins.Options.IPlugOptions">
            <summary>
            Base interface for all tween plugins options
            </summary>
        </member>
        <member name="M:DG.Tweening.Plugins.Options.IPlugOptions.Reset">
            <summary>Resets the plugin</summary>
        </member>
        <member name="T:DG.Tweening.Plugins.Vector3ArrayPlugin">
            <summary>
            This plugin generates some GC allocations at startup
            </summary>
        </member>
        <member name="T:DG.Tweening.Plugins.PathPlugin">
            <summary>
            Path plugin works exclusively with Transforms
            </summary>
        </member>
        <member name="T:DG.Tweening.RotateMode">
            <summary>
            Rotation mode used with DORotate methods
            </summary>
        </member>
        <member name="F:DG.Tweening.RotateMode.Fast">
            <summary>
            Fastest way that never rotates beyond 360°
            </summary>
        </member>
        <member name="F:DG.Tweening.RotateMode.FastBeyond360">
            <summary>
            Fastest way that rotates beyond 360°
            </summary>
        </member>
        <member name="F:DG.Tweening.RotateMode.WorldAxisAdd">
            <summary>
            Adds the given rotation to the transform using world axis and an advanced precision mode
            (like when using transform.Rotate(Space.World)).
            <para>In this mode the end value is is always considered relative</para>
            </summary>
        </member>
        <member name="F:DG.Tweening.RotateMode.LocalAxisAdd">
            <summary>
            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)).
            <para>In this mode the end value is is always considered relative</para>
            </summary>
        </member>
        <member name="T:DG.Tweening.ScrambleMode">
            <summary>
            Type of scramble to apply to string tweens
            </summary>
        </member>
        <member name="F:DG.Tweening.ScrambleMode.None">
            <summary>
            No scrambling of characters
            </summary>
        </member>
        <member name="F:DG.Tweening.ScrambleMode.All">
            <summary>
            A-Z + a-z + 0-9 characters
            </summary>
        </member>
        <member name="F:DG.Tweening.ScrambleMode.Uppercase">
            <summary>
            A-Z characters
            </summary>
        </member>
        <member name="F:DG.Tweening.ScrambleMode.Lowercase">
            <summary>
            a-z characters
            </summary>
        </member>
        <member name="F:DG.Tweening.ScrambleMode.Numerals">
            <summary>
            0-9 characters
            </summary>
        </member>
        <member name="F:DG.Tweening.ScrambleMode.Custom">
            <summary>
            Custom characters
            </summary>
        </member>
        <member name="T:DG.Tweening.ShakeRandomnessMode">
            <summary>
            Type of randomness to apply to a shake tween
            </summary>
        </member>
        <member name="F:DG.Tweening.ShakeRandomnessMode.Full">
            <summary>Default, full randomness</summary>
        </member>
        <member name="F:DG.Tweening.ShakeRandomnessMode.Harmonic">
            <summary>Creates a more balanced randomness that looks more harmonic</summary>
        </member>
        <member name="T:DG.Tweening.TweenExtensions">
            <summary>
            Methods that extend Tween objects and allow to control or get data from them
            </summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Complete(DG.Tweening.Tween)">
            <summary>Completes the tween</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Complete(DG.Tweening.Tween,System.Boolean)">
            <summary>Completes the tween</summary>
            <param name="withCallbacks">For Sequences only: if TRUE also internal Sequence callbacks will be fired,
            otherwise they will be ignored</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Done``1(``0)">
            <summary>Optional: indicates that the tween creation has ended, to be used (optionally) as the last element of tween chaining creation.<br/>
            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)</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Flip(DG.Tweening.Tween)">
            <summary>Flips the direction of this tween (backwards if it was going forward or viceversa)</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.ForceInit(DG.Tweening.Tween)">
            <summary>Forces the tween to initialize its settings immediately</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Goto(DG.Tweening.Tween,System.Single,System.Boolean)">
            <summary>Send the tween to the given position in time</summary>
            <param name="to">Time position to reach
            (if higher than the whole tween duration the tween will simply reach its end)</param>
            <param name="andPlay">If TRUE will play the tween after reaching the given position, otherwise it will pause it</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.GotoWithCallbacks(DG.Tweening.Tween,System.Single,System.Boolean)">
            <summary>Send the tween to the given position in time while also executing any callback between the previous time position and the new one</summary>
            <param name="to">Time position to reach
            (if higher than the whole tween duration the tween will simply reach its end)</param>
            <param name="andPlay">If TRUE will play the tween after reaching the given position, otherwise it will pause it</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Kill(DG.Tweening.Tween,System.Boolean)">
            <summary>Kills the tween</summary>
            <param name="complete">If TRUE completes the tween before killing it</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.ManualUpdate(DG.Tweening.Tween,System.Single,System.Single)">
            <summary>
            Forces this tween to update manually, regardless of the <see cref="T:DG.Tweening.UpdateType"/> 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.<para/>
            Also note that if you only want to update this tween instance manually you'll have to set it to <see cref="F:DG.Tweening.UpdateType.Manual"/> anyway,
            so that it's not updated automatically.
            </summary>
            <param name="deltaTime">Manual deltaTime</param>
            <param name="unscaledDeltaTime">Unscaled delta time (used with tweens set as timeScaleIndependent)</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Pause``1(``0)">
            <summary>Pauses the tween</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Play``1(``0)">
            <summary>Plays the tween</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.PlayBackwards(DG.Tweening.Tween)">
            <summary>Sets the tween in a backwards direction and plays it</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.PlayForward(DG.Tweening.Tween)">
            <summary>Sets the tween in a forward direction and plays it</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Restart(DG.Tweening.Tween,System.Boolean,System.Single)">
            <summary>Restarts the tween from the beginning</summary>
            <param name="includeDelay">Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it</param>
            <param name="changeDelayTo">Ignored in case of Sequences. If >= 0 changes the startup delay to this value, otherwise doesn't touch it</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Rewind(DG.Tweening.Tween,System.Boolean)">
            <summary>Rewinds and pauses the tween</summary>
            <param name="includeDelay">Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.SmoothRewind(DG.Tweening.Tween)">
            <summary>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.
            <para>Note that a tween that was smoothly rewinded will have its play direction flipped</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.TogglePause(DG.Tweening.Tween)">
            <summary>Plays the tween if it was paused, pauses it if it was playing</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.GotoWaypoint(DG.Tweening.Tween,System.Int32,System.Boolean)">
            <summary>Send a path tween to the given waypoint.
            Has no effect if this is not a path tween.
            <para>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)</para></summary>
            <param name="waypointIndex">Waypoint index to reach
            (if higher than the max waypoint index the tween will simply go to the last one)</param>
            <param name="andPlay">If TRUE will play the tween after reaching the given waypoint, otherwise it will pause it</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.WaitForCompletion(DG.Tweening.Tween)">
            <summary>
            Creates a yield instruction that waits until the tween is killed or complete.
            It can be used inside a coroutine as a yield.
            <para>Example usage:</para><code>yield return myTween.WaitForCompletion();</code>
            </summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.WaitForRewind(DG.Tweening.Tween)">
            <summary>
            Creates a yield instruction that waits until the tween is killed or rewinded.
            It can be used inside a coroutine as a yield.
            <para>Example usage:</para><code>yield return myTween.WaitForRewind();</code>
            </summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.WaitForKill(DG.Tweening.Tween)">
            <summary>
            Creates a yield instruction that waits until the tween is killed.
            It can be used inside a coroutine as a yield.
            <para>Example usage:</para><code>yield return myTween.WaitForKill();</code>
            </summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.WaitForElapsedLoops(DG.Tweening.Tween,System.Int32)">
            <summary>
            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.
            <para>Example usage:</para><code>yield return myTween.WaitForElapsedLoops(2);</code>
            </summary>
            <param name="elapsedLoops">Elapsed loops to wait for</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.WaitForPosition(DG.Tweening.Tween,System.Single)">
            <summary>
            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.
            <para>Example usage:</para><code>yield return myTween.WaitForPosition(2.5f);</code>
            </summary>
            <param name="position">Position (loops included, delays excluded) to wait for</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.WaitForStart(DG.Tweening.Tween)">
            <summary>
            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.
            <para>Example usage:</para><code>yield return myTween.WaitForStart();</code>
            </summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.CompletedLoops(DG.Tweening.Tween)">
            <summary>Returns the total number of loops completed by this tween</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Delay(DG.Tweening.Tween)">
            <summary>Returns the eventual delay set for this tween</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.ElapsedDelay(DG.Tweening.Tween)">
            <summary>Returns the eventual elapsed delay set for this tween</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Duration(DG.Tweening.Tween,System.Boolean)">
            <summary>Returns the duration of this tween (delays excluded).
            <para>NOTE: when using settings like SpeedBased, the duration will be recalculated when the tween starts</para></summary>
            <param name="includeLoops">If TRUE returns the full duration loops included,
             otherwise the duration of a single loop cycle</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Elapsed(DG.Tweening.Tween,System.Boolean)">
            <summary>Returns the elapsed time for this tween (delays exluded)</summary>
            <param name="includeLoops">If TRUE returns the elapsed time since startup loops included,
             otherwise the elapsed time within the current loop cycle</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.ElapsedPercentage(DG.Tweening.Tween,System.Boolean)">
            <summary>Returns the elapsed percentage (0 to 1) of this tween (delays exluded)</summary>
            <param name="includeLoops">If TRUE returns the elapsed percentage since startup loops included,
            otherwise the elapsed percentage within the current loop cycle</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.ElapsedDirectionalPercentage(DG.Tweening.Tween)">
            <summary>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</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.IsActive(DG.Tweening.Tween)">
            <summary>Returns FALSE if this tween has been killed or is NULL, TRUE otherwise.
            <para>BEWARE: if this tween is recyclable it might have been spawned again for another use and thus return TRUE anyway.</para>
            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 <code>OnKill</code> callback like this:
            <para><code>.OnKill(()=> myTweenReference = null)</code></para></summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.IsBackwards(DG.Tweening.Tween)">
            <summary>Returns TRUE if this tween was reversed and is set to go backwards</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.IsLoopingOrExecutingBackwards(DG.Tweening.Tween)">
            <summary>NOTE: To check if a tween was simply set to go backwards see <see cref="M:DG.Tweening.TweenExtensions.IsBackwards(DG.Tweening.Tween)"/>.<para/>
            Returns TRUE if this tween is going backwards for any of these reasons:<para/>
            - The tween was reversed and is going backwards on a straight loop<para/>
            - The tween was reversed and is going backwards on an odd Yoyo loop<para/>
            - The tween is going forward but on an even Yoyo loop<para/>
            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</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.IsComplete(DG.Tweening.Tween)">
            <summary>Returns TRUE if the tween is complete
            (silently fails and returns FALSE if the tween has been killed)</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.IsInitialized(DG.Tweening.Tween)">
            <summary>Returns TRUE if this tween has been initialized</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.IsPlaying(DG.Tweening.Tween)">
            <summary>Returns TRUE if this tween is playing</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.Loops(DG.Tweening.Tween)">
            <summary>Returns the total number of loops set for this tween
            (returns -1 if the loops are infinite)</summary>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.PathGetPoint(DG.Tweening.Tween,System.Single)">
            <summary>
            Returns a point on a path based on the given path percentage.
            Returns <code>Vector3.zero</code> 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 <code>myTween.ForceInit()</code>.
            </summary>
            <param name="pathPercentage">Percentage of the path (0 to 1) on which to get the point</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.PathGetDrawPoints(DG.Tweening.Tween,System.Int32)">
            <summary>
            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 <code>NULL</code> 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 <code>myTween.ForceInit()</code>.
            </summary>
            <param name="subdivisionsXSegment">How many points to create for each path segment (waypoint to waypoint).
            Only used in case of non-Linear paths</param>
        </member>
        <member name="M:DG.Tweening.TweenExtensions.PathLength(DG.Tweening.Tween)">
            <summary>
            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 <code>myTween.ForceInit()</code>.
            </summary>
        </member>
        <member name="T:DG.Tweening.LoopType">
            <summary>
            Types of loop
            </summary>
        </member>
        <member name="F:DG.Tweening.LoopType.Restart">
            <summary>Each loop cycle restarts from the beginning</summary>
        </member>
        <member name="F:DG.Tweening.LoopType.Yoyo">
            <summary>The tween moves forward and backwards at alternate cycles</summary>
        </member>
        <member name="F:DG.Tweening.LoopType.Incremental">
            <summary>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".
            <para>In case of String tweens works only if the tween is set as relative</para></summary>
        </member>
        <member name="T:DG.Tweening.Sequence">
            <summary>
            Controls other tweens as a group
            </summary>
        </member>
        <member name="T:DG.Tweening.ShortcutExtensions">
            <summary>
            Methods that extend known Unity objects and allow to directly create and control tweens from their instances
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOAspect(UnityEngine.Camera,System.Single,System.Single)">
            <summary>Tweens a Camera's <code>aspect</code> to the given value.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOColor(UnityEngine.Camera,UnityEngine.Color,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFarClipPlane(UnityEngine.Camera,System.Single,System.Single)">
            <summary>Tweens a Camera's <code>farClipPlane</code> to the given value.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFieldOfView(UnityEngine.Camera,System.Single,System.Single)">
            <summary>Tweens a Camera's <code>fieldOfView</code> to the given value.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DONearClipPlane(UnityEngine.Camera,System.Single,System.Single)">
            <summary>Tweens a Camera's <code>nearClipPlane</code> to the given value.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOOrthoSize(UnityEngine.Camera,System.Single,System.Single)">
            <summary>Tweens a Camera's <code>orthographicSize</code> to the given value.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPixelRect(UnityEngine.Camera,UnityEngine.Rect,System.Single)">
            <summary>Tweens a Camera's <code>pixelRect</code> to the given value.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DORect(UnityEngine.Camera,UnityEngine.Rect,System.Single)">
            <summary>Tweens a Camera's <code>rect</code> to the given value.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakePosition(UnityEngine.Camera,System.Single,System.Single,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>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</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakePosition(UnityEngine.Camera,System.Single,UnityEngine.Vector3,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>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</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength on each axis</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakeRotation(UnityEngine.Camera,System.Single,System.Single,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Camera's localRotation.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakeRotation(UnityEngine.Camera,System.Single,UnityEngine.Vector3,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Camera's localRotation.
            Also stores the camera as the tween's target so it can be used for filtered operations</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength on each axis</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOColor(UnityEngine.Light,UnityEngine.Color,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOIntensity(UnityEngine.Light,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShadowStrength(UnityEngine.Light,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOColor(UnityEngine.LineRenderer,DG.Tweening.Color2,DG.Tweening.Color2,System.Single)">
            <summary>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.
            <para>Note that this method requires to also insert the start colors for the tween,
            since LineRenderers have no way to get them.</para></summary>
            <param name="startValue">The start value to tween from</param>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOColor(UnityEngine.Material,UnityEngine.Color,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOColor(UnityEngine.Material,UnityEngine.Color,System.String,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="property">The name of the material property to tween (like _Tint or _SpecColor)</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOColor(UnityEngine.Material,UnityEngine.Color,System.Int32,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="propertyID">The ID of the material property to tween (also called nameID in Unity's manual)</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFade(UnityEngine.Material,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFade(UnityEngine.Material,System.Single,System.String,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="property">The name of the material property to tween (like _Tint or _SpecColor)</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFade(UnityEngine.Material,System.Single,System.Int32,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="propertyID">The ID of the material property to tween (also called nameID in Unity's manual)</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFloat(UnityEngine.Material,System.Single,System.String,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="property">The name of the material property to tween</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFloat(UnityEngine.Material,System.Single,System.Int32,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="propertyID">The ID of the material property to tween (also called nameID in Unity's manual)</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOOffset(UnityEngine.Material,UnityEngine.Vector2,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOOffset(UnityEngine.Material,UnityEngine.Vector2,System.String,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="property">The name of the material property to tween</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOTiling(UnityEngine.Material,UnityEngine.Vector2,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOTiling(UnityEngine.Material,UnityEngine.Vector2,System.String,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="property">The name of the material property to tween</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOVector(UnityEngine.Material,UnityEngine.Vector4,System.String,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="property">The name of the material property to tween</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOVector(UnityEngine.Material,UnityEngine.Vector4,System.Int32,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="propertyID">The ID of the material property to tween (also called nameID in Unity's manual)</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOResize(UnityEngine.TrailRenderer,System.Single,System.Single,System.Single)">
            <summary>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</summary>
            <param name="toStartWidth">The end startWidth to reach</param><param name="toEndWidth">The end endWidth to reach</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOTime(UnityEngine.TrailRenderer,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOMove(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOMoveX(UnityEngine.Transform,System.Single,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOMoveY(UnityEngine.Transform,System.Single,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOMoveZ(UnityEngine.Transform,System.Single,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalMove(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalMoveX(UnityEngine.Transform,System.Single,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalMoveY(UnityEngine.Transform,System.Single,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalMoveZ(UnityEngine.Transform,System.Single,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DORotate(UnityEngine.Transform,UnityEngine.Vector3,System.Single,DG.Tweening.RotateMode)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="mode">Rotation mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DORotateQuaternion(UnityEngine.Transform,UnityEngine.Quaternion,System.Single)">
            <summary>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.
            <para>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)</para>
            </summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalRotate(UnityEngine.Transform,UnityEngine.Vector3,System.Single,DG.Tweening.RotateMode)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
            <param name="mode">Rotation mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalRotateQuaternion(UnityEngine.Transform,UnityEngine.Quaternion,System.Single)">
            <summary>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.
            <para>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)</para>
            </summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOScale(UnityEngine.Transform,UnityEngine.Vector3,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOScale(UnityEngine.Transform,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOScaleX(UnityEngine.Transform,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOScaleY(UnityEngine.Transform,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOScaleZ(UnityEngine.Transform,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLookAt(UnityEngine.Transform,UnityEngine.Vector3,System.Single,DG.Tweening.AxisConstraint,System.Nullable{UnityEngine.Vector3})">
            <summary>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</summary>
            <param name="towards">The position to look at</param><param name="duration">The duration of the tween</param>
            <param name="axisConstraint">Eventual axis constraint for the rotation</param>
            <param name="up">The vector that defines in which direction up is (default: Vector3.up)</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DODynamicLookAt(UnityEngine.Transform,UnityEngine.Vector3,System.Single,DG.Tweening.AxisConstraint,System.Nullable{UnityEngine.Vector3})">
            <summary><code>EXPERIMENTAL</code> 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 <see cref="M:DG.Tweening.ShortcutExtensions.DOLookAt(UnityEngine.Transform,UnityEngine.Vector3,System.Single,DG.Tweening.AxisConstraint,System.Nullable{UnityEngine.Vector3})"/> 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</summary>
            <param name="towards">The position to look at</param><param name="duration">The duration of the tween</param>
            <param name="axisConstraint">Eventual axis constraint for the rotation</param>
            <param name="up">The vector that defines in which direction up is (default: Vector3.up)</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPunchPosition(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Int32,System.Single,System.Boolean)">
            <summary>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.</summary>
            <param name="punch">The direction and strength of the punch (added to the Transform's current position)</param>
            <param name="duration">The duration of the tween</param>
            <param name="vibrato">Indicates how much will the punch vibrate</param>
            <param name="elasticity">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</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPunchScale(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Int32,System.Single)">
            <summary>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.</summary>
            <param name="punch">The punch strength (added to the Transform's current scale)</param>
            <param name="duration">The duration of the tween</param>
            <param name="vibrato">Indicates how much will the punch vibrate</param>
            <param name="elasticity">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</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPunchRotation(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Int32,System.Single)">
            <summary>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.</summary>
            <param name="punch">The punch strength (added to the Transform's current rotation)</param>
            <param name="duration">The duration of the tween</param>
            <param name="vibrato">Indicates how much will the punch vibrate</param>
            <param name="elasticity">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</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakePosition(UnityEngine.Transform,System.Single,System.Single,System.Int32,System.Single,System.Boolean,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Transform's localPosition with the given values.</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakePosition(UnityEngine.Transform,System.Single,UnityEngine.Vector3,System.Int32,System.Single,System.Boolean,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Transform's localPosition with the given values.</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength on each axis</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakeRotation(UnityEngine.Transform,System.Single,System.Single,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Transform's localRotation.</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakeRotation(UnityEngine.Transform,System.Single,UnityEngine.Vector3,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Transform's localRotation.</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength on each axis</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakeScale(UnityEngine.Transform,System.Single,System.Single,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Transform's localScale.</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOShakeScale(UnityEngine.Transform,System.Single,UnityEngine.Vector3,System.Int32,System.Single,System.Boolean,DG.Tweening.ShakeRandomnessMode)">
            <summary>Shakes a Transform's localScale.</summary>
            <param name="duration">The duration of the tween</param>
            <param name="strength">The shake strength on each axis</param>
            <param name="vibrato">Indicates how much will the shake vibrate</param>
            <param name="randomness">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.</param>
            <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
            <param name="randomnessMode">Randomness mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOJump(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Int32,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="jumpPower">Power of the jump (the max height of the jump is represented by this plus the final Y offset)</param>
            <param name="numJumps">Total number of jumps</param>
            <param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalJump(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Int32,System.Single,System.Boolean)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param>
            <param name="jumpPower">Power of the jump (the max height of the jump is represented by this plus the final Y offset)</param>
            <param name="numJumps">Total number of jumps</param>
            <param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPath(UnityEngine.Transform,UnityEngine.Vector3[],System.Single,DG.Tweening.PathType,DG.Tweening.PathMode,System.Int32,System.Nullable{UnityEngine.Color})">
            <summary>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</summary>
            <param name="path">The waypoints to go through</param>
            <param name="duration">The duration of the tween</param>
            <param name="pathType">The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points)</param>
            <param name="pathMode">The path mode: 3D, side-scroller 2D, top-down 2D</param>
            <param name="resolution">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</param>
            <param name="gizmoColor">The color of the path (shown when gizmos are active in the Play panel and the tween is running)</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalPath(UnityEngine.Transform,UnityEngine.Vector3[],System.Single,DG.Tweening.PathType,DG.Tweening.PathMode,System.Int32,System.Nullable{UnityEngine.Color})">
            <summary>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</summary>
            <param name="path">The waypoint to go through</param>
            <param name="duration">The duration of the tween</param>
            <param name="pathType">The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points)</param>
            <param name="pathMode">The path mode: 3D, side-scroller 2D, top-down 2D</param>
            <param name="resolution">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</param>
            <param name="gizmoColor">The color of the path (shown when gizmos are active in the Play panel and the tween is running)</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPath(UnityEngine.Transform,DG.Tweening.Plugins.Core.PathCore.Path,System.Single,DG.Tweening.PathMode)">
            <summary>IMPORTANT: Unless you really know what you're doing, you should use the overload that accepts a Vector3 array instead.<para/>
            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</summary>
            <param name="path">The path to use</param>
            <param name="duration">The duration of the tween</param>
            <param name="pathMode">The path mode: 3D, side-scroller 2D, top-down 2D</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOLocalPath(UnityEngine.Transform,DG.Tweening.Plugins.Core.PathCore.Path,System.Single,DG.Tweening.PathMode)">
            <summary>IMPORTANT: Unless you really know what you're doing, you should use the overload that accepts a Vector3 array instead.<para/>
            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</summary>
            <param name="path">The path to use</param>
            <param name="duration">The duration of the tween</param>
            <param name="pathMode">The path mode: 3D, side-scroller 2D, top-down 2D</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOTimeScale(DG.Tweening.Tween,System.Single,System.Single)">
            <summary>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</summary>
            <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableColor(UnityEngine.Light,UnityEngine.Color,System.Single)">
            <summary>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</summary>
            <param name="endValue">The value to tween to</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableColor(UnityEngine.Material,UnityEngine.Color,System.Single)">
            <summary>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</summary>
            <param name="endValue">The value to tween to</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableColor(UnityEngine.Material,UnityEngine.Color,System.String,System.Single)">
            <summary>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</summary>
            <param name="endValue">The value to tween to</param>
            <param name="property">The name of the material property to tween (like _Tint or _SpecColor)</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableColor(UnityEngine.Material,UnityEngine.Color,System.Int32,System.Single)">
            <summary>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</summary>
            <param name="endValue">The value to tween to</param>
            <param name="propertyID">The ID of the material property to tween (also called nameID in Unity's manual)</param>
            <param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableMoveBy(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Boolean)">
            <summary>Tweens a Transform's position BY the given value (as if you chained a <code>SetRelative</code>),
            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</summary>
            <param name="byValue">The value to tween by</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableLocalMoveBy(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Boolean)">
            <summary>Tweens a Transform's localPosition BY the given value (as if you chained a <code>SetRelative</code>),
            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</summary>
            <param name="byValue">The value to tween by</param><param name="duration">The duration of the tween</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableRotateBy(UnityEngine.Transform,UnityEngine.Vector3,System.Single,DG.Tweening.RotateMode)">
            <summary>EXPERIMENTAL METHOD - Tweens a Transform's rotation BY the given value (as if you chained a <code>SetRelative</code>),
            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</summary>
            <param name="byValue">The value to tween by</param><param name="duration">The duration of the tween</param>
            <param name="mode">Rotation mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableLocalRotateBy(UnityEngine.Transform,UnityEngine.Vector3,System.Single,DG.Tweening.RotateMode)">
            <summary>EXPERIMENTAL METHOD - Tweens a Transform's lcoalRotation BY the given value (as if you chained a <code>SetRelative</code>),
            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</summary>
            <param name="byValue">The value to tween by</param><param name="duration">The duration of the tween</param>
            <param name="mode">Rotation mode</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendablePunchRotation(UnityEngine.Transform,UnityEngine.Vector3,System.Single,System.Int32,System.Single)">
            <summary>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</summary>
            <param name="punch">The punch strength (added to the Transform's current rotation)</param>
            <param name="duration">The duration of the tween</param>
            <param name="vibrato">Indicates how much will the punch vibrate</param>
            <param name="elasticity">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</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOBlendableScaleBy(UnityEngine.Transform,UnityEngine.Vector3,System.Single)">
            <summary>Tweens a Transform's localScale BY the given value (as if you chained a <code>SetRelative</code>),
            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</summary>
            <param name="byValue">The value to tween by</param><param name="duration">The duration of the tween</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOComplete(UnityEngine.Component,System.Boolean)">
            <summary>
            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)
            </summary>
            <param name="withCallbacks">For Sequences only: if TRUE also internal Sequence callbacks will be fired,
            otherwise they will be ignored</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOComplete(UnityEngine.Material,System.Boolean)">
            <summary>
            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)
            </summary>
            <param name="withCallbacks">For Sequences only: if TRUE also internal Sequence callbacks will be fired,
            otherwise they will be ignored</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOKill(UnityEngine.Component,System.Boolean)">
            <summary>
            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.
            </summary>
            <param name="complete">If TRUE completes the tween before killing it</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOKill(UnityEngine.Material,System.Boolean)">
            <summary>
            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.
            </summary>
            <param name="complete">If TRUE completes the tween before killing it</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFlip(UnityEngine.Component)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOFlip(UnityEngine.Material)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOGoto(UnityEngine.Component,System.Single,System.Boolean)">
            <summary>
            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.
            </summary>
            <param name="to">Time position to reach
            (if higher than the whole tween duration the tween will simply reach its end)</param>
            <param name="andPlay">If TRUE will play the tween after reaching the given position, otherwise it will pause it</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOGoto(UnityEngine.Material,System.Single,System.Boolean)">
            <summary>
            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.
            </summary>
            <param name="to">Time position to reach
            (if higher than the whole tween duration the tween will simply reach its end)</param>
            <param name="andPlay">If TRUE will play the tween after reaching the given position, otherwise it will pause it</param>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPause(UnityEngine.Component)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPause(UnityEngine.Material)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPlay(UnityEngine.Component)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPlay(UnityEngine.Material)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPlayBackwards(UnityEngine.Component)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPlayBackwards(UnityEngine.Material)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPlayForward(UnityEngine.Component)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOPlayForward(UnityEngine.Material)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DORestart(UnityEngine.Component,System.Boolean)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DORestart(UnityEngine.Material,System.Boolean)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DORewind(UnityEngine.Component,System.Boolean)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DORewind(UnityEngine.Material,System.Boolean)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOSmoothRewind(UnityEngine.Component)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOSmoothRewind(UnityEngine.Material)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOTogglePause(UnityEngine.Component)">
            <summary>
            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.
            </summary>
        </member>
        <member name="M:DG.Tweening.ShortcutExtensions.DOTogglePause(UnityEngine.Material)">
            <summary>
            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.
            </summary>
        </member>
        <member name="T:DG.Tweening.TweenParams">
            <summary>
            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
            </summary>
        </member>
        <member name="F:DG.Tweening.TweenParams.Params">
            <summary>A variable you can eventually Clear and reuse when needed,
            to avoid instantiating TweenParams objects</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.#ctor">
            <summary>Creates a new TweenParams object, which you can use to store tween settings
            to pass to multiple tweens via <code>myTween.SetAs(myTweenParms)</code></summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.Clear">
            <summary>Clears and resets this TweenParams instance using default values,
            so it can be reused without instantiating another one</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetAutoKill(System.Boolean)">
            <summary>Sets the autoKill behaviour of the tween.
            Has no effect if the tween has already started</summary>
            <param name="autoKillOnCompletion">If TRUE the tween will be automatically killed when complete</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetId(System.Object)">
            <summary>Sets an ID for the tween, which can then be used as a filter with DOTween's static methods.</summary>
            <param name="objectId">The ID to assign to this tween. Can be an int, a string, an object or anything else.</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetId(System.String)">
            <summary>Sets an ID for the tween, which can then be used as a filter with DOTween's static methods.</summary>
            <param name="stringId">The ID to assign to this tween. Can be an int, a string, an object or anything else.</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetId(System.Int32)">
            <summary>Sets an ID for the tween, which can then be used as a filter with DOTween's static methods.</summary>
            <param name="intId">The ID to assign to this tween. Can be an int, a string, an object or anything else.</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetTarget(System.Object)">
            <summary>Sets the target for the tween, which can then be used as a filter with DOTween's static methods.
            <para>IMPORTANT: use it with caution. If you just want to set an ID for the tween use <code>SetId</code> instead.</para>
            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.</summary>
            <param name="target">The target to assign to this tween. Can be an int, a string, an object or anything else.</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetLoops(System.Int32,System.Nullable{DG.Tweening.LoopType})">
            <summary>Sets the looping options for the tween.
            Has no effect if the tween has already started</summary>
            <param name="loops">Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence)</param>
            <param name="loopType">Loop behaviour type (default: LoopType.Restart)</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetEase(DG.Tweening.Ease,System.Nullable{System.Single},System.Nullable{System.Single})">
            <summary>Sets the ease of the tween.
            <para>If applied to Sequences eases the whole sequence animation</para></summary>
            <param name="overshootOrAmplitude">Eventual overshoot or amplitude to use with Back or Elastic easeType (default is 1.70158)</param>
            <param name="period">Eventual period to use with Elastic easeType (default is 0)</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetEase(UnityEngine.AnimationCurve)">
            <summary>Sets the ease of the tween using an AnimationCurve.
            <para>If applied to Sequences eases the whole sequence animation</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetEase(DG.Tweening.EaseFunction)">
            <summary>Sets the ease of the tween using a custom ease function.
            <para>If applied to Sequences eases the whole sequence animation</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetRecyclable(System.Boolean)">
            <summary>Sets the recycling behaviour for the tween.</summary>
            <param name="recyclable">If TRUE the tween will be recycled after being killed, otherwise it will be destroyed.</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetUpdate(System.Boolean)">
            <summary>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</summary>
            <param name="isIndependentUpdate">If TRUE the tween will ignore Unity's Time.timeScale</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetUpdate(DG.Tweening.UpdateType,System.Boolean)">
            <summary>Sets the type of update (default or independent) for the tween</summary>
            <param name="updateType">The type of update (default: UpdateType.Normal)</param>
            <param name="isIndependentUpdate">If TRUE the tween will ignore Unity's Time.timeScale</param>
        </member>
        <member name="M:DG.Tweening.TweenParams.OnStart(DG.Tweening.TweenCallback)">
            <summary>Sets the onStart callback for the tween.
            Called the first time the tween is set in a playing state, after any eventual delay</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.OnPlay(DG.Tweening.TweenCallback)">
            <summary>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</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.OnRewind(DG.Tweening.TweenCallback)">
            <summary>Sets the onRewind callback for the tween.
            Called when the tween is rewinded,
            either by calling <code>Rewind</code> or by reaching the start position while playing backwards.
            Rewinding a tween that is already rewinded will not fire this callback</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.OnUpdate(DG.Tweening.TweenCallback)">
            <summary>Sets the onUpdate callback for the tween.
            Called each time the tween updates</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.OnStepComplete(DG.Tweening.TweenCallback)">
            <summary>Sets the onStepComplete callback for the tween.
            Called the moment the tween completes one loop cycle, even when going backwards</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.OnComplete(DG.Tweening.TweenCallback)">
            <summary>Sets the onComplete callback for the tween.
            Called the moment the tween reaches its final forward position, loops included</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.OnKill(DG.Tweening.TweenCallback)">
            <summary>Sets the onKill callback for the tween.
            Called the moment the tween is killed</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.OnWaypointChange(DG.Tweening.TweenCallback{System.Int32})">
            <summary>Sets the onWaypointChange callback for the tween.
            Called when a path tween reaches a new waypoint</summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetDelay(System.Single)">
            <summary>Sets a delayed startup for the tween.
            <para>Has no effect on Sequences or if the tween has already started</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetRelative(System.Boolean)">
            <summary>If isRelative is TRUE sets the tween as relative
            (the endValue will be calculated as <code>startValue + endValue</code> instead than being used directly).
            <para>Has no effect on Sequences or if the tween has already started</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenParams.SetSpeedBased(System.Boolean)">
            <summary>If isSpeedBased is TRUE sets the tween as speed based
            (the duration will represent the number of units the tween moves x second).
            <para>Has no effect on Sequences, nested tweens, or if the tween has already started</para></summary>
        </member>
        <member name="T:DG.Tweening.TweenSettingsExtensions">
            <summary>
            Methods that extend Tween objects and allow to set their parameters
            </summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetAutoKill``1(``0)">
            <summary>Sets the autoKill behaviour of the tween to TRUE.
            <code>Has no effect</code> if the tween has already started or if it's added to a Sequence</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetAutoKill``1(``0,System.Boolean)">
            <summary>Sets the autoKill behaviour of the tween.
            <code>Has no effect</code> if the tween has already started or if it's added to a Sequence</summary>
            <param name="autoKillOnCompletion">If TRUE the tween will be automatically killed when complete</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetId``1(``0,System.Object)">
            <summary>Sets an ID for the tween (<see cref="F:DG.Tweening.Tween.id"/>), which can then be used as a filter with DOTween's static methods.</summary>
            <param name="objectId">The ID to assign to this tween. Can be an int, a string, an object or anything else.</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetId``1(``0,System.String)">
            <summary>Sets a string ID for the tween (<see cref="F:DG.Tweening.Tween.stringId"/>), which can then be used as a filter with DOTween's static methods.<para/>
            Filtering via string is 2X faster than using an object as an ID (using the alternate obejct overload)</summary>
            <param name="stringId">The string ID to assign to this tween.</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetId``1(``0,System.Int32)">
            <summary>Sets an int ID for the tween (<see cref="F:DG.Tweening.Tween.intId"/>), which can then be used as a filter with DOTween's static methods.<para/>
            Filtering via int is 4X faster than via object, 2X faster than via string (using the alternate object/string overloads)</summary>
            <param name="intId">The int ID to assign to this tween.</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLink``1(``0,UnityEngine.GameObject)">
            <summary>Allows to link this tween to a GameObject
            so that it will be automatically killed when the GameObject is destroyed.
            <code>Has no effect</code> if the tween is added to a Sequence</summary>
            <param name="gameObject">The link target (unrelated to the target set via <code>SetTarget</code>)</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLink``1(``0,UnityEngine.GameObject,DG.Tweening.LinkBehaviour)">
            <summary>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.
            <code>Has no effect</code> if the tween is added to a Sequence</summary>
            <param name="gameObject">The link target (unrelated to the target set via <code>SetTarget</code>)</param>
            <param name="behaviour">The behaviour to use (<see cref="F:DG.Tweening.LinkBehaviour.KillOnDestroy"/> is always evaluated even if you choose another one)</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetTarget``1(``0,System.Object)">
            <summary>Sets the target for the tween, which can then be used as a filter with DOTween's static methods.
            <para>IMPORTANT: use it with caution. If you just want to set an ID for the tween use <code>SetId</code> instead.</para>
            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.</summary>
            <param name="target">The target to assign to this tween. Can be an int, a string, an object or anything else.</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLoops``1(``0,System.Int32)">
            <summary>Sets the looping options for the tween.
            Has no effect if the tween has already started</summary>
            <param name="loops">Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence)</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLoops``1(``0,System.Int32,DG.Tweening.LoopType)">
            <summary>Sets the looping options for the tween.
            Has no effect if the tween has already started</summary>
            <param name="loops">Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence)</param>
            <param name="loopType">Loop behaviour type (default: LoopType.Restart)</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetEase``1(``0,DG.Tweening.Ease)">
            <summary>Sets the ease of the tween.
            <para>If applied to Sequences eases the whole sequence animation</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetEase``1(``0,DG.Tweening.Ease,System.Single)">
            <summary>Sets the ease of the tween.
            <para>If applied to Sequences eases the whole sequence animation</para></summary>
            <param name="overshoot">
            Eventual overshoot to use with Back or Flash ease (default is 1.70158 - 1 for Flash).
            <para>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.</para>
            </param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetEase``1(``0,DG.Tweening.Ease,System.Single,System.Single)">
            <summary>Sets the ease of the tween.
            <para>If applied to Sequences eases the whole sequence animation</para></summary>
            <param name="amplitude">Eventual amplitude to use with Elastic easeType or overshoot to use with Flash easeType (default is 1.70158 - 1 for Flash).
            <para>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.</para>
            </param>
            <param name="period">Eventual period to use with Elastic or Flash easeType (default is 0).
            <para>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.</para>
            </param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetEase``1(``0,UnityEngine.AnimationCurve)">
            <summary>Sets the ease of the tween using an AnimationCurve.
            <para>If applied to Sequences eases the whole sequence animation</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetEase``1(``0,DG.Tweening.EaseFunction)">
            <summary>Sets the ease of the tween using a custom ease function (which must return a value between 0 and 1).
            <para>If applied to Sequences eases the whole sequence animation</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetRecyclable``1(``0)">
            <summary>Allows the tween to be recycled after being killed.</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetRecyclable``1(``0,System.Boolean)">
            <summary>Sets the recycling behaviour for the tween.</summary>
            <param name="recyclable">If TRUE the tween will be recycled after being killed, otherwise it will be destroyed.</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetUpdate``1(``0,System.Boolean)">
            <summary>Sets the update type to UpdateType.Normal and lets you choose if it should be independent from Unity's Time.timeScale</summary>
            <param name="isIndependentUpdate">If TRUE the tween will ignore Unity's Time.timeScale</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetUpdate``1(``0,DG.Tweening.UpdateType)">
            <summary>Sets the type of update for the tween</summary>
            <param name="updateType">The type of update (defalt: UpdateType.Normal)</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetUpdate``1(``0,DG.Tweening.UpdateType,System.Boolean)">
            <summary>Sets the type of update for the tween and lets you choose if it should be independent from Unity's Time.timeScale</summary>
            <param name="updateType">The type of update</param>
            <param name="isIndependentUpdate">If TRUE the tween will ignore Unity's Time.timeScale</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetInverted``1(``0)">
            <summary>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).
            <code>Has no effect</code> if the tween has already started or if it's added to a Sequence</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetInverted``1(``0,System.Boolean)">
            <summary>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).
            <code>Has no effect</code> if the tween has already started or if it's added to a Sequence</summary>
            <param name="inverted">If TRUE the tween will be inverted, otherwise it won't</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnStart``1(``0,DG.Tweening.TweenCallback)">
            <summary>Sets the <code>onStart</code> callback for the tween, clearing any previous <code>onStart</code> callback that was set.
            Called the first time the tween is set in a playing state, after any eventual delay</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnPlay``1(``0,DG.Tweening.TweenCallback)">
            <summary>Sets the <code>onPlay</code> callback for the tween, clearing any previous <code>onPlay</code> 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</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnPause``1(``0,DG.Tweening.TweenCallback)">
            <summary>Sets the <code>onPause</code> callback for the tween, clearing any previous <code>onPause</code> 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.</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnRewind``1(``0,DG.Tweening.TweenCallback)">
            <summary>Sets the <code>onRewind</code> callback for the tween, clearing any previous <code>onRewind</code> callback that was set.
            Called when the tween is rewinded,
            either by calling <code>Rewind</code> or by reaching the start position while playing backwards.
            Rewinding a tween that is already rewinded will not fire this callback</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnUpdate``1(``0,DG.Tweening.TweenCallback)">
            <summary>Sets the <code>onUpdate</code> callback for the tween, clearing any previous <code>onUpdate</code> callback that was set.
            Called each time the tween updates</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnStepComplete``1(``0,DG.Tweening.TweenCallback)">
            <summary>Sets the <code>onStepComplete</code> callback for the tween, clearing any previous <code>onStepComplete</code> callback that was set.
            Called the moment the tween completes one loop cycle, even when going backwards</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnComplete``1(``0,DG.Tweening.TweenCallback)">
            <summary>Sets the <code>onComplete</code> callback for the tween, clearing any previous <code>onComplete</code> callback that was set.
            Called the moment the tween reaches its final forward position, loops included</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnKill``1(``0,DG.Tweening.TweenCallback)">
            <summary>Sets the <code>onKill</code> callback for the tween, clearing any previous <code>onKill</code> callback that was set.
            Called the moment the tween is killed</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.OnWaypointChange``1(``0,DG.Tweening.TweenCallback{System.Int32})">
            <summary>Sets the <code>onWaypointChange</code> callback for the tween, clearing any previous <code>onWaypointChange</code> callback that was set.
            Called when a path tween's current waypoint changes</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetAs``1(``0,DG.Tweening.Tween)">
            <summary>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.
            <para>Has no effect if the tween has already started.</para>
            NOTE: the tween's <code>target</code> will not be changed</summary>
            <param name="asTween">Tween from which to copy the parameters</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetAs``1(``0,DG.Tweening.TweenParams)">
            <summary>Sets the parameters of the tween (id, ease, loops, delay, timeScale, callbacks, etc) as the parameters of the given TweenParams.
            <para>Has no effect if the tween has already started.</para></summary>
            <param name="tweenParams">TweenParams from which to copy the parameters</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.Append(DG.Tweening.Sequence,DG.Tweening.Tween)">
            <summary>Adds the given tween to the end of the Sequence.
            Has no effect if the Sequence has already started</summary>
            <param name="t">The tween to append</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.Prepend(DG.Tweening.Sequence,DG.Tweening.Tween)">
            <summary>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</summary>
            <param name="t">The tween to prepend</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.Join(DG.Tweening.Sequence,DG.Tweening.Tween)">
            <summary>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</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.Insert(DG.Tweening.Sequence,System.Single,DG.Tweening.Tween)">
            <summary>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</summary>
            <param name="atPosition">The time position where the tween will be placed</param>
            <param name="t">The tween to insert</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.AppendInterval(DG.Tweening.Sequence,System.Single)">
            <summary>Adds the given interval to the end of the Sequence.
            Has no effect if the Sequence has already started</summary>
            <param name="interval">The interval duration</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.PrependInterval(DG.Tweening.Sequence,System.Single)">
            <summary>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</summary>
            <param name="interval">The interval duration</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.AppendCallback(DG.Tweening.Sequence,DG.Tweening.TweenCallback)">
            <summary>Adds the given callback to the end of the Sequence.
            Has no effect if the Sequence has already started</summary>
            <param name="callback">The callback to append</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.PrependCallback(DG.Tweening.Sequence,DG.Tweening.TweenCallback)">
            <summary>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</summary>
            <param name="callback">The callback to prepend</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.JoinCallback(DG.Tweening.Sequence,DG.Tweening.TweenCallback)">
            <summary>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</summary>
            /// &lt;param name="callback"&gt;The callback to prepend&lt;/param&gt;
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.InsertCallback(DG.Tweening.Sequence,System.Single,DG.Tweening.TweenCallback)">
            <summary>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</summary>
            <param name="atPosition">The time position where the callback will be placed</param>
            <param name="callback">The callback to insert</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.From``1(``0)">
            <summary>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.</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.From``1(``0,System.Boolean)">
            <summary>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.</summary>
            <param name="isRelative">If TRUE the FROM value will be calculated as relative to the current one</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.From``1(``0,System.Boolean,System.Boolean)">
            <summary>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.</summary>
            <param name="setImmediately">If TRUE sets the target to from value immediately, otherwise waits for the tween to start</param>
            <param name="isRelative">If TRUE the FROM value will be calculated as relative to the current one</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.From``3(DG.Tweening.Core.TweenerCore{``0,``1,``2},``1,System.Boolean,System.Boolean)">
            <summary>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.</summary>
            <param name="fromValue">Value to start from</param>
            <param name="setImmediately">If TRUE sets the target to from value immediately, otherwise waits for the tween to start</param>
            <param name="isRelative">If TRUE the FROM/TO values will be calculated as relative to the current ones</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.From(DG.Tweening.Core.TweenerCore{UnityEngine.Color,UnityEngine.Color,DG.Tweening.Plugins.Options.ColorOptions},System.Single,System.Boolean,System.Boolean)">
            <summary>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.</summary>
            <param name="fromAlphaValue">Alpha value to start from (in case of Fade tweens)</param>
            <param name="setImmediately">If TRUE sets the target to from value immediately, otherwise waits for the tween to start</param>
            <param name="isRelative">If TRUE the FROM/TO values will be calculated as relative to the current ones</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.From(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,UnityEngine.Vector3,DG.Tweening.Plugins.Options.VectorOptions},System.Single,System.Boolean,System.Boolean)">
            <summary>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.</summary>
            <param name="fromValue">Value to start from (in case of Vector tweens that act on a single coordinate or scale tweens)</param>
            <param name="setImmediately">If TRUE sets the target to from value immediately, otherwise waits for the tween to start</param>
            <param name="isRelative">If TRUE the FROM/TO values will be calculated as relative to the current ones</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.From(DG.Tweening.Core.TweenerCore{UnityEngine.Vector2,UnityEngine.Vector2,DG.Tweening.Plugins.CircleOptions},System.Single,System.Boolean,System.Boolean)">
            <summary>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.</summary>
            <param name="fromValueDegrees">Value to start from (in case of Vector tweens that act on a single coordinate or scale tweens)</param>
            <param name="setImmediately">If TRUE sets the target to from value immediately, otherwise waits for the tween to start</param>
            <param name="isRelative">If TRUE the FROM/TO values will be calculated as relative to the current ones</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetDelay``1(``0,System.Single)">
            <summary>Sets a delayed startup for the tween.<para/>
            In case of Sequences behaves the same as <see cref="M:DG.Tweening.TweenSettingsExtensions.PrependInterval(DG.Tweening.Sequence,System.Single)"/>,
            which means the delay will repeat in case of loops (while with tweens it's ignored after the first loop cycle).<para/>
            Has no effect if the tween has already started</summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetDelay``1(``0,System.Single,System.Boolean)">
            <summary>EXPERIMENTAL: implemented in v1.2.340.<para/>
            Sets a delayed startup for the tween with options to choose how the delay is applied in case of Sequences.<para/>
            Has no effect if the tween has already started</summary>
            <param name="asPrependedIntervalIfSequence">Only used by <see cref="T:DG.Tweening.Sequence"/> types: If FALSE sets the delay as a one-time occurrence
            (defaults to this for <see cref="T:DG.Tweening.Tweener"/> types),
            otherwise as a Sequence interval which will repeat at the beginning of every loop cycle</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetRelative``1(``0)">
            <summary>Sets the tween as relative
            (the endValue will be calculated as <code>startValue + endValue</code> instead than being used directly).
            <para>Has no effect on Sequences or if the tween has already started</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetRelative``1(``0,System.Boolean)">
            <summary>If isRelative is TRUE sets the tween as relative
            (the endValue will be calculated as <code>startValue + endValue</code> instead than being used directly).
            <para>Has no effect on Sequences or if the tween has already started</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetSpeedBased``1(``0)">
            <summary>If isSpeedBased is TRUE sets the tween as speed based
            (the duration will represent the number of units the tween moves x second).
            <para>Has no effect on Sequences, nested tweens, or if the tween has already started</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetSpeedBased``1(``0,System.Boolean)">
            <summary>If isSpeedBased is TRUE sets the tween as speed based
            (the duration will represent the number of units the tween moves x second).
            <para>Has no effect on Sequences, nested tweens, or if the tween has already started</para></summary>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{System.Single,System.Single,DG.Tweening.Plugins.Options.FloatOptions},System.Boolean)">
            <summary>Options for float tweens</summary>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector2,UnityEngine.Vector2,DG.Tweening.Plugins.Options.VectorOptions},System.Boolean)">
            <summary>Options for Vector2 tweens</summary>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector2,UnityEngine.Vector2,DG.Tweening.Plugins.Options.VectorOptions},DG.Tweening.AxisConstraint,System.Boolean)">
            <summary>Options for Vector2 tweens</summary>
            <param name="axisConstraint">Selecting an axis will tween the vector only on that axis, leaving the others untouched</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,UnityEngine.Vector3,DG.Tweening.Plugins.Options.VectorOptions},System.Boolean)">
            <summary>Options for Vector3 tweens</summary>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,UnityEngine.Vector3,DG.Tweening.Plugins.Options.VectorOptions},DG.Tweening.AxisConstraint,System.Boolean)">
            <summary>Options for Vector3 tweens</summary>
            <param name="axisConstraint">Selecting an axis will tween the vector only on that axis, leaving the others untouched</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector4,UnityEngine.Vector4,DG.Tweening.Plugins.Options.VectorOptions},System.Boolean)">
            <summary>Options for Vector4 tweens</summary>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector4,UnityEngine.Vector4,DG.Tweening.Plugins.Options.VectorOptions},DG.Tweening.AxisConstraint,System.Boolean)">
            <summary>Options for Vector4 tweens</summary>
            <param name="axisConstraint">Selecting an axis will tween the vector only on that axis, leaving the others untouched</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Quaternion,UnityEngine.Vector3,DG.Tweening.Plugins.Options.QuaternionOptions},System.Boolean)">
            <summary>Options for Quaternion tweens</summary>
            <param name="useShortest360Route">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</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Color,UnityEngine.Color,DG.Tweening.Plugins.Options.ColorOptions},System.Boolean)">
            <summary>Options for Color tweens</summary>
            <param name="alphaOnly">If TRUE only the alpha value of the color will be tweened</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Rect,UnityEngine.Rect,DG.Tweening.Plugins.Options.RectOptions},System.Boolean)">
            <summary>Options for Vector4 tweens</summary>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{System.String,System.String,DG.Tweening.Plugins.Options.StringOptions},System.Boolean,DG.Tweening.ScrambleMode,System.String)">
            <summary>Options for Vector4 tweens</summary>
            <param name="richTextEnabled">If TRUE, rich text will be interpreted correctly while animated,
            otherwise all tags will be considered as normal text</param>
            <param name="scrambleMode">The type of scramble to use, if any</param>
            <param name="scrambleChars">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</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,UnityEngine.Vector3[],DG.Tweening.Plugins.Options.Vector3ArrayOptions},System.Boolean)">
            <summary>Options for Vector3Array tweens</summary>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,UnityEngine.Vector3[],DG.Tweening.Plugins.Options.Vector3ArrayOptions},DG.Tweening.AxisConstraint,System.Boolean)">
            <summary>Options for Vector3Array tweens</summary>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector2,UnityEngine.Vector2,DG.Tweening.Plugins.CircleOptions},System.Single,System.Boolean,System.Boolean)">
            <summary>Options for ShapeCircle tweens</summary>
            <param name="relativeCenter">If TRUE the center you set in the DOTween.To method will be considered as relative
            to the starting position of the target</param>
            <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,DG.Tweening.Plugins.Core.PathCore.Path,DG.Tweening.Plugins.Options.PathOptions},DG.Tweening.AxisConstraint,DG.Tweening.AxisConstraint)">
            <summary>Options for Path tweens (created via the <code>DOPath</code> shortcut)</summary>
            <param name="lockPosition">The eventual movement axis to lock. You can input multiple axis if you separate them like this:
            <para>AxisConstrain.X | AxisConstraint.Y</para></param>
            <param name="lockRotation">The eventual rotation axis to lock. You can input multiple axis if you separate them like this:
            <para>AxisConstrain.X | AxisConstraint.Y</para></param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetOptions(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,DG.Tweening.Plugins.Core.PathCore.Path,DG.Tweening.Plugins.Options.PathOptions},System.Boolean,DG.Tweening.AxisConstraint,DG.Tweening.AxisConstraint)">
            <summary>Options for Path tweens (created via the <code>DOPath</code> shortcut)</summary>
            <param name="closePath">If TRUE the path will be automatically closed</param>
            <param name="lockPosition">The eventual movement axis to lock. You can input multiple axis if you separate them like this:
            <para>AxisConstrain.X | AxisConstraint.Y</para></param>
            <param name="lockRotation">The eventual rotation axis to lock. You can input multiple axis if you separate them like this:
            <para>AxisConstrain.X | AxisConstraint.Y</para></param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLookAt(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,DG.Tweening.Plugins.Core.PathCore.Path,DG.Tweening.Plugins.Options.PathOptions},UnityEngine.Vector3,System.Nullable{UnityEngine.Vector3},System.Nullable{UnityEngine.Vector3})">
            <summary>Additional LookAt options for Path tweens (created via the <code>DOPath</code> shortcut).
            Orients the target towards the given position.
            Must be chained directly to the tween creation method or to a <code>SetOptions</code></summary>
            <param name="lookAtPosition">The position to look at</param>
            <param name="forwardDirection">The eventual direction to consider as "forward".
            If left to NULL defaults to the regular forward side of the transform</param>
            <param name="up">The vector that defines in which direction up is (default: Vector3.up)</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLookAt(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,DG.Tweening.Plugins.Core.PathCore.Path,DG.Tweening.Plugins.Options.PathOptions},UnityEngine.Vector3,System.Boolean)">
            <summary>Additional LookAt options for Path tweens (created via the <code>DOPath</code> 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 <code>SetOptions</code></summary>
            <param name="lookAtPosition">The position to look at</param>
            <param name="stableZRotation">If TRUE doesn't rotate the target along the Z axis</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLookAt(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,DG.Tweening.Plugins.Core.PathCore.Path,DG.Tweening.Plugins.Options.PathOptions},UnityEngine.Transform,System.Nullable{UnityEngine.Vector3},System.Nullable{UnityEngine.Vector3})">
            <summary>Additional LookAt options for Path tweens (created via the <code>DOPath</code> shortcut).
            Orients the target towards another transform.
            Must be chained directly to the tween creation method or to a <code>SetOptions</code></summary>
            <param name="lookAtTransform">The transform to look at</param>
            <param name="forwardDirection">The eventual direction to consider as "forward".
            If left to NULL defaults to the regular forward side of the transform</param>
            <param name="up">The vector that defines in which direction up is (default: Vector3.up)</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLookAt(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,DG.Tweening.Plugins.Core.PathCore.Path,DG.Tweening.Plugins.Options.PathOptions},UnityEngine.Transform,System.Boolean)">
            <summary>Additional LookAt options for Path tweens (created via the <code>DOPath</code> 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 <code>SetOptions</code></summary>
            <param name="lookAtTransform">The transform to look at</param>
            <param name="stableZRotation">If TRUE doesn't rotate the target along the Z axis</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLookAt(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,DG.Tweening.Plugins.Core.PathCore.Path,DG.Tweening.Plugins.Options.PathOptions},System.Single,System.Nullable{UnityEngine.Vector3},System.Nullable{UnityEngine.Vector3})">
            <summary>Additional LookAt options for Path tweens (created via the <code>DOPath</code> shortcut).
            Orients the target to the path, with the given lookAhead.
            Must be chained directly to the tween creation method or to a <code>SetOptions</code></summary>
            <param name="lookAhead">The percentage of lookAhead to use (0 to 1)</param>
            <param name="forwardDirection">The eventual direction to consider as "forward".
            If left to NULL defaults to the regular forward side of the transform</param>
            <param name="up">The vector that defines in which direction up is (default: Vector3.up)</param>
        </member>
        <member name="M:DG.Tweening.TweenSettingsExtensions.SetLookAt(DG.Tweening.Core.TweenerCore{UnityEngine.Vector3,DG.Tweening.Plugins.Core.PathCore.Path,DG.Tweening.Plugins.Options.PathOptions},System.Single,System.Boolean)">
            <summary>Additional LookAt options for Path tweens (created via the <code>DOPath</code> shortcut).
            Orients the path with options to keep the Z rotation stable.
            Must be chained directly to the tween creation method or to a <code>SetOptions</code></summary>
            <param name="lookAhead">The percentage of lookAhead to use (0 to 1)</param>
            <param name="stableZRotation">If TRUE doesn't rotate the target along the Z axis</param>
        </member>
        <member name="T:DG.Tweening.LogBehaviour">
            <summary>
            Types of log behaviours
            </summary>
        </member>
        <member name="F:DG.Tweening.LogBehaviour.Default">
            <summary>Log only warnings and errors</summary>
        </member>
        <member name="F:DG.Tweening.LogBehaviour.Verbose">
            <summary>Log warnings, errors and additional infos</summary>
        </member>
        <member name="F:DG.Tweening.LogBehaviour.ErrorsOnly">
            <summary>Log only errors</summary>
        </member>
        <member name="T:DG.Tweening.Tween">
            <summary>
            Indicates either a Tweener or a Sequence
            </summary>
        </member>
        <member name="F:DG.Tweening.Tween.timeScale">
            <summary>TimeScale for the tween</summary>
        </member>
        <member name="F:DG.Tweening.Tween.isBackwards">
            <summary>If TRUE the tween will play backwards</summary>
        </member>
        <member name="F:DG.Tweening.Tween.isInverted">
            <summary>If TRUE the tween is completely inverted but without playing it backwards
            (play backwards will actually play the tween in the original direction)</summary>
        </member>
        <member name="F:DG.Tweening.Tween.id">
            <summary>Object ID (usable for filtering with DOTween static methods). Can be anything except a string or an int
            (use <see cref="F:DG.Tweening.Tween.stringId"/> or <see cref="F:DG.Tweening.Tween.intId"/> for those)</summary>
        </member>
        <member name="F:DG.Tweening.Tween.stringId">
            <summary>String ID (usable for filtering with DOTween static methods). 2X faster than using an object id</summary>
        </member>
        <member name="F:DG.Tweening.Tween.intId">
            <summary>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</summary>
        </member>
        <member name="F:DG.Tweening.Tween.target">
            <summary>Tween target (usable for filtering with DOTween static methods). Automatically set by tween creation shortcuts</summary>
        </member>
        <member name="F:DG.Tweening.Tween.onPlay">
            <summary>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</summary>
        </member>
        <member name="F:DG.Tweening.Tween.onPause">
            <summary>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.</summary>
        </member>
        <member name="F:DG.Tweening.Tween.onRewind">
            <summary>Called when the tween is rewinded,
            either by calling <code>Rewind</code> or by reaching the start position while playing backwards.
            Rewinding a tween that is already rewinded will not fire this callback</summary>
        </member>
        <member name="F:DG.Tweening.Tween.onUpdate">
            <summary>Called each time the tween updates</summary>
        </member>
        <member name="F:DG.Tweening.Tween.onStepComplete">
            <summary>Called the moment the tween completes one loop cycle</summary>
        </member>
        <member name="F:DG.Tweening.Tween.onComplete">
            <summary>Called the moment the tween reaches completion (loops included)</summary>
        </member>
        <member name="F:DG.Tweening.Tween.onKill">
            <summary>Called the moment the tween is killed</summary>
        </member>
        <member name="F:DG.Tweening.Tween.onWaypointChange">
            <summary>Called when a path tween's current waypoint changes</summary>
        </member>
        <member name="P:DG.Tweening.Tween.isRelative">
            <summary>Tweeners-only (ignored by Sequences), returns TRUE if the tween was set as relative</summary>
        </member>
        <member name="F:DG.Tweening.Tween.debugTargetId">
            <summary>
            Set by SetTarget if DOTween's Debug Mode is on (see DOTween Utility Panel -> "Store GameObject's ID" debug option
            </summary>
        </member>
        <member name="P:DG.Tweening.Tween.active">
            <summary>FALSE when tween is (or should be) despawned - set only by TweenManager</summary>
        </member>
        <member name="P:DG.Tweening.Tween.fullPosition">
            <summary>Gets and sets the time position (loops included, delays excluded) of the tween</summary>
        </member>
        <member name="P:DG.Tweening.Tween.hasLoops">
            <summary>Returns TRUE if the tween is set to loop (either a set number of times or infinitely)</summary>
        </member>
        <member name="P:DG.Tweening.Tween.playedOnce">
            <summary>TRUE after the tween was set in a play state at least once, AFTER any delay is elapsed</summary>
        </member>
        <member name="P:DG.Tweening.Tween.position">
            <summary>Time position within a single loop cycle</summary>
        </member>
        <member name="T:DG.Tweening.Tweener">
            <summary>
            Animates a single value
            </summary>
        </member>
        <member name="M:DG.Tweening.Tweener.ChangeStartValue(System.Object,System.Single)">
            <summary>Changes the start value of a tween and rewinds it (without pausing it).
            Has no effect with tweens that are inside Sequences</summary>
            <param name="newStartValue">The new start value</param>
            <param name="newDuration">If bigger than 0 applies it as the new tween duration</param>
        </member>
        <member name="M:DG.Tweening.Tweener.ChangeEndValue(System.Object,System.Single,System.Boolean)">
            <summary>Changes the end value of a tween and rewinds it (without pausing it).
            Has no effect with tweens that are inside Sequences</summary>
            <param name="newEndValue">The new end value</param>
            <param name="newDuration">If bigger than 0 applies it as the new tween duration</param>
            <param name="snapStartValue">If TRUE the start value will become the current target's value, otherwise it will stay the same</param>
        </member>
        <member name="M:DG.Tweening.Tweener.ChangeEndValue(System.Object,System.Boolean)">
            <summary>Changes the end value of a tween and rewinds it (without pausing it).
            Has no effect with tweens that are inside Sequences</summary>
            <param name="newEndValue">The new end value</param>
            <param name="snapStartValue">If TRUE the start value will become the current target's value, otherwise it will stay the same</param>
        </member>
        <member name="M:DG.Tweening.Tweener.ChangeValues(System.Object,System.Object,System.Single)">
            <summary>Changes the start and end value of a tween and rewinds it (without pausing it).
            Has no effect with tweens that are inside Sequences</summary>
            <param name="newStartValue">The new start value</param>
            <param name="newEndValue">The new end value</param>
            <param name="newDuration">If bigger than 0 applies it as the new tween duration</param>
        </member>
        <member name="T:DG.Tweening.TweenType">
            <summary>
            Used internally
            </summary>
        </member>
        <member name="T:DG.Tweening.UpdateType">
            <summary>
            Update type
            </summary>
        </member>
        <member name="F:DG.Tweening.UpdateType.Normal">
            <summary>Updates every frame during Update calls</summary>
        </member>
        <member name="F:DG.Tweening.UpdateType.Late">
            <summary>Updates every frame during LateUpdate calls</summary>
        </member>
        <member name="F:DG.Tweening.UpdateType.Fixed">
            <summary>Updates using FixedUpdate calls</summary>
        </member>
        <member name="F:DG.Tweening.UpdateType.Manual">
            <summary>Updates using manual update calls</summary>
        </member>
    </members>
</doc>
Assets/Plugins/DOTween/DOTween.XML.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 71784f149a97af04097d729b8dbb7918
TextScriptImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/DOTween.dll
Binary files differ
Assets/Plugins/DOTween/DOTween.dll.mdb
Binary files differ
Assets/Plugins/DOTween/DOTween.dll.mdb.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c7ad308db8276124e93a186d9072b0ce
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/DOTween.dll.meta
New file
@@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: 7a338d4591074574a99cbfb1af5d6f1b
PluginImporter:
  externalObjects: {}
  serializedVersion: 2
  iconMap: {}
  executionOrder: {}
  defineConstraints: []
  isPreloaded: 0
  isOverridable: 0
  isExplicitlyReferenced: 0
  validateReferences: 1
  platformData:
  - first:
      Any:
    second:
      enabled: 1
      settings: {}
  - first:
      Editor: Editor
    second:
      enabled: 0
      settings:
        DefaultValueInitialized: true
  - first:
      Windows Store Apps: WindowsStoreApps
    second:
      enabled: 0
      settings:
        CPU: AnyCPU
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6fb71e578358dac4bb5bd99fb14c2b6b
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/DOTweenEditor.XML
New file
@@ -0,0 +1,144 @@
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>DOTweenEditor</name>
    </assembly>
    <members>
        <member name="T:DG.DOTweenEditor.EditorCompatibilityUtils">
            <summary>
            Contains compatibility methods taken from DemiEditor (for when DOTween is without it)
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectOfType``1(System.Boolean)">
            <summary>
            Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectOfType(System.Type,System.Boolean)">
            <summary>
            Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectsOfType``1(System.Boolean)">
            <summary>
            Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectsOfType(System.Type,System.Boolean)">
            <summary>
            Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.DOTweenEditorPreview.Start(System.Action)">
            <summary>
            Starts the update loop of tween in the editor. Has no effect during playMode.
            </summary>
            <param name="onPreviewUpdated">Eventual callback to call after every update</param>
        </member>
        <member name="M:DG.DOTweenEditor.DOTweenEditorPreview.Stop(System.Boolean,System.Boolean)">
            <summary>
            Stops the update loop and clears the onPreviewUpdated callback.
            </summary>
            <param name="resetTweenTargets">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</param>
            <param name="clearTweens">If TRUE also kills any cached tween</param>
        </member>
        <member name="M:DG.DOTweenEditor.DOTweenEditorPreview.PrepareTweenForPreview(DG.Tweening.Tween,System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Readies the tween for editor preview by setting its UpdateType to Manual plus eventual extra settings.
            </summary>
            <param name="t">The tween to ready</param>
            <param name="clearCallbacks">If TRUE (recommended) removes all callbacks (OnComplete/Rewind/etc)</param>
            <param name="preventAutoKill">If TRUE prevents the tween from being auto-killed at completion</param>
            <param name="andPlay">If TRUE starts playing the tween immediately</param>
        </member>
        <member name="F:DG.DOTweenEditor.EditorVersion.Version">
            <summary>Full major version + first minor version (ex: 2018.1f)</summary>
        </member>
        <member name="F:DG.DOTweenEditor.EditorVersion.MajorVersion">
            <summary>Major version</summary>
        </member>
        <member name="F:DG.DOTweenEditor.EditorVersion.MinorVersion">
            <summary>First minor version (ex: in 2018.1 it would be 1)</summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.SetEditorTexture(UnityEngine.Texture2D,UnityEngine.FilterMode,System.Int32)">
            <summary>
            Checks that the given editor texture use the correct import settings,
            and applies them if they're incorrect.
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.DOTweenSetupRequired">
            <summary>
            Returns TRUE if setup is required
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.AssetExists(System.String)">
            <summary>
            Returns TRUE if the file/directory at the given path exists.
            </summary>
            <param name="adbPath">Path, relative to Unity's project folder</param>
            <returns></returns>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.ADBPathToFullPath(System.String)">
            <summary>
            Converts the given project-relative path to a full path,
            with backward (\) slashes).
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.FullPathToADBPath(System.String)">
            <summary>
            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).
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.ConnectToSourceAsset``1(System.String,System.Boolean)">
            <summary>
            Connects to a <see cref="T:UnityEngine.ScriptableObject"/> 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).
            </summary>
            <typeparam name="T">Asset type</typeparam>
            <param name="adbFilePath">File path (relative to Unity's project folder)</param>
            <param name="createIfMissing">If TRUE and the requested asset doesn't exist, forces its creation</param>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.GetAssemblyFilePath(System.Reflection.Assembly)">
            <summary>
            Full path for the given loaded assembly, assembly file included
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.AddGlobalDefine(System.String)">
            <summary>
            Adds the given global define if it's not already present
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.RemoveGlobalDefine(System.String)">
            <summary>
            Removes the given global define if it's present
            </summary>
        </member>
        <member name="M:DG.DOTweenEditor.EditorUtils.HasGlobalDefine(System.String,System.Nullable{UnityEditor.BuildTargetGroup})">
            <summary>
            Returns TRUE if the given global define is present in all the <see cref="T:UnityEditor.BuildTargetGroup"/>
            or only in the given <see cref="T:UnityEditor.BuildTargetGroup"/>, depending on passed parameters.<para/>
            </summary>
            <param name="id"></param>
            <param name="buildTargetGroup"><see cref="T:UnityEditor.BuildTargetGroup"/>to use. Leave NULL to check in all of them.</param>
        </member>
        <member name="T:DG.DOTweenEditor.DOTweenDefines">
            <summary>
            Not used as menu item anymore, but as a utility function
            </summary>
        </member>
        <member name="F:DG.DOTweenEditor.UnityEditorVersion.Version">
            <summary>Full major version + first minor version (ex: 2018.1f)</summary>
        </member>
        <member name="F:DG.DOTweenEditor.UnityEditorVersion.MajorVersion">
            <summary>Major version</summary>
        </member>
        <member name="F:DG.DOTweenEditor.UnityEditorVersion.MinorVersion">
            <summary>First minor version (ex: in 2018.1 it would be 1)</summary>
        </member>
    </members>
</doc>
Assets/Plugins/DOTween/Editor/DOTweenEditor.XML.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b90713a89e22c6d4a8a659cb5a468a7c
TextScriptImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/DOTweenEditor.dll
Binary files differ
Assets/Plugins/DOTween/Editor/DOTweenEditor.dll.mdb
Binary files differ
Assets/Plugins/DOTween/Editor/DOTweenEditor.dll.mdb.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 89727f7ac37f51844b9308d58c0af41f
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/DOTweenEditor.dll.meta
New file
@@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: b1e728bfc9ad91c42a05837a26208eab
PluginImporter:
  externalObjects: {}
  serializedVersion: 2
  iconMap: {}
  executionOrder: {}
  defineConstraints: []
  isPreloaded: 0
  isOverridable: 0
  isExplicitlyReferenced: 0
  validateReferences: 1
  platformData:
  - first:
      Any:
    second:
      enabled: 0
      settings: {}
  - first:
      Editor: Editor
    second:
      enabled: 1
      settings:
        DefaultValueInitialized: true
  - first:
      Windows Store Apps: WindowsStoreApps
    second:
      enabled: 0
      settings:
        CPU: AnyCPU
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/Imgs.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8419189f21cbbdb49a5f50b9b6446871
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/Imgs/DOTweenIcon.png
Assets/Plugins/DOTween/Editor/Imgs/DOTweenIcon.png.meta
New file
@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: e499bb28efe27a54abec829549ec52b5
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: 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: 1
  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: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: 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: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices:
    edges: []
    weights: []
    secondaryTextures: []
    nameFileIdTable: {}
  mipmapLimitGroupName:
  pSDRemoveMatte: 0
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/Imgs/DOTweenMiniIcon.png
Assets/Plugins/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta
New file
@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: ef3d58bd747aa5e4db741b661df383e0
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: 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: 1
  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: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: 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: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices:
    edges: []
    weights: []
    secondaryTextures: []
    nameFileIdTable: {}
  mipmapLimitGroupName:
  pSDRemoveMatte: 0
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/Imgs/Footer.png
Assets/Plugins/DOTween/Editor/Imgs/Footer.png.meta
New file
@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: a3ceae744d8fef444ac8c0cd2a3c615b
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: 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: 1
  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: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: 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: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices:
    edges: []
    weights: []
    secondaryTextures: []
    nameFileIdTable: {}
  mipmapLimitGroupName:
  pSDRemoveMatte: 0
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/Imgs/Footer_dark.png
Assets/Plugins/DOTween/Editor/Imgs/Footer_dark.png.meta
New file
@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: f500baf2c2bf5744685161c7afeb2c32
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: 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: 1
  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: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: 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: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices:
    edges: []
    weights: []
    secondaryTextures: []
    nameFileIdTable: {}
  mipmapLimitGroupName:
  pSDRemoveMatte: 0
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Editor/Imgs/Header.jpg
Assets/Plugins/DOTween/Editor/Imgs/Header.jpg.meta
New file
@@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: b93de88917638c94fa2f6fdad9143ba7
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: 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: 1
  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: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    ignorePlatformSupport: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: 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: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices:
    edges: []
    weights: []
    secondaryTextures: []
    nameFileIdTable: {}
  mipmapLimitGroupName:
  pSDRemoveMatte: 0
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 20173b6fcac0c634f9054318587d6606
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules/DOTweenModuleAudio.cs
New file
@@ -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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach (0 to 1)</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<float, float, FloatOptions> DOFade(this AudioSource target, float endValue, float duration)
        {
            if (endValue < 0) endValue = 0;
            else if (endValue > 1) endValue = 1;
            TweenerCore<float, float, FloatOptions> t = DOTween.To(() => target.volume, x => target.volume = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<float, float, FloatOptions> DOPitch(this AudioSource target, float endValue, float duration)
        {
            TweenerCore<float, float, FloatOptions> t = DOTween.To(() => target.pitch, x => target.pitch = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        #endregion
        #region AudioMixer
        /// <summary>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.</summary>
        /// <param name="floatName">Name given to the exposed float to set</param>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<float, float, FloatOptions> DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration)
        {
            TweenerCore<float, float, FloatOptions> 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
        /// <summary>
        /// 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)
        /// </summary>
        /// <param name="withCallbacks">For Sequences only: if TRUE also internal Sequence callbacks will be fired,
        /// otherwise they will be ignored</param>
        public static int DOComplete(this AudioMixer target, bool withCallbacks = false)
        {
            return DOTween.Complete(target, withCallbacks);
        }
        /// <summary>
        /// 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.
        /// </summary>
        /// <param name="complete">If TRUE completes the tween before killing it</param>
        public static int DOKill(this AudioMixer target, bool complete = false)
        {
            return DOTween.Kill(target, complete);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DOFlip(this AudioMixer target)
        {
            return DOTween.Flip(target);
        }
        /// <summary>
        /// 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.
        /// </summary>
        /// <param name="to">Time position to reach
        /// (if higher than the whole tween duration the tween will simply reach its end)</param>
        /// <param name="andPlay">If TRUE will play the tween after reaching the given position, otherwise it will pause it</param>
        public static int DOGoto(this AudioMixer target, float to, bool andPlay = false)
        {
            return DOTween.Goto(target, to, andPlay);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DOPause(this AudioMixer target)
        {
            return DOTween.Pause(target);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DOPlay(this AudioMixer target)
        {
            return DOTween.Play(target);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DOPlayBackwards(this AudioMixer target)
        {
            return DOTween.PlayBackwards(target);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DOPlayForward(this AudioMixer target)
        {
            return DOTween.PlayForward(target);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DORestart(this AudioMixer target)
        {
            return DOTween.Restart(target);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DORewind(this AudioMixer target)
        {
            return DOTween.Rewind(target);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DOSmoothRewind(this AudioMixer target)
        {
            return DOTween.SmoothRewind(target);
        }
        /// <summary>
        /// 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.
        /// </summary>
        public static int DOTogglePause(this AudioMixer target)
        {
            return DOTween.TogglePause(target);
        }
        #endregion
        #endregion
        #endregion
    }
}
#endif
Assets/Plugins/DOTween/Modules/DOTweenModuleAudio.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b2a4d2eefcccd8a4bb94123844bb3e5e
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules/DOTweenModuleEPOOutline.cs
New file
@@ -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<float, float, FloatOptions> 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<Color, Color, ColorOptions> 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<Color, Color, ColorOptions> 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<Vector4, Vector4, VectorOptions> 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<float, float, FloatOptions> 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<Color, Color, ColorOptions> 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<Color, Color, ColorOptions> 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<Vector4, Vector4, VectorOptions> 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);
        }
        /// <summary>
        /// Controls the alpha (transparency) of the outline
        /// </summary>
        public static TweenerCore<Color, Color, ColorOptions> 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;
        }
        /// <summary>
        /// Controls the color of the outline
        /// </summary>
        public static TweenerCore<Color, Color, ColorOptions> 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;
        }
        /// <summary>
        /// Controls the amount of blur applied to the outline
        /// </summary>
        public static TweenerCore<float, float, FloatOptions> 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;
        }
        /// <summary>
        /// Controls the amount of blur applied to the outline
        /// </summary>
        public static TweenerCore<float, float, FloatOptions> 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;
        }
        /// <summary>
        /// Controls the amount of dilation applied to the outline
        /// </summary>
        public static TweenerCore<float, float, FloatOptions> 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;
        }
        /// <summary>
        /// Controls the amount of dilation applied to the outline
        /// </summary>
        public static TweenerCore<float, float, FloatOptions> 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
Assets/Plugins/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 91d9588abb3e54d4eaae8bb7296a9f06
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules/DOTweenModulePhysics.cs
New file
@@ -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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector3, Vector3, VectorOptions> DOMove(this Rigidbody target, Vector3 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector3, Vector3, VectorOptions> t = DOTween.To(() => target.position, target.MovePosition, endValue, duration);
            t.SetOptions(snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector3, Vector3, VectorOptions> DOMoveX(this Rigidbody target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector3, Vector3, VectorOptions> t = DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue, 0, 0), duration);
            t.SetOptions(AxisConstraint.X, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector3, Vector3, VectorOptions> DOMoveY(this Rigidbody target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector3, Vector3, VectorOptions> t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, endValue, 0), duration);
            t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector3, Vector3, VectorOptions> DOMoveZ(this Rigidbody target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector3, Vector3, VectorOptions> t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue), duration);
            t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="mode">Rotation mode</param>
        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DORotate(this Rigidbody target, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast)
        {
            TweenerCore<Quaternion, Vector3, QuaternionOptions> t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration);
            t.SetTarget(target);
            t.plugOptions.rotateMode = mode;
            return t;
        }
        /// <summary>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</summary>
        /// <param name="towards">The position to look at</param><param name="duration">The duration of the tween</param>
        /// <param name="axisConstraint">Eventual axis constraint for the rotation</param>
        /// <param name="up">The vector that defines in which direction up is (default: Vector3.up)</param>
        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DOLookAt(this Rigidbody target, Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null)
        {
            TweenerCore<Quaternion, Vector3, QuaternionOptions> 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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param>
        /// <param name="jumpPower">Power of the jump (the max height of the jump is represented by this plus the final Y offset)</param>
        /// <param name="numJumps">Total number of jumps</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        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;
        }
        /// <summary>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.
        /// <para>NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened.</para>
        /// <para>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.</para></summary>
        /// <param name="path">The waypoints to go through</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="pathType">The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points)</param>
        /// <param name="pathMode">The path mode: 3D, side-scroller 2D, top-down 2D</param>
        /// <param name="resolution">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</param>
        /// <param name="gizmoColor">The color of the path (shown when gizmos are active in the Play panel and the tween is running)</param>
        public static TweenerCore<Vector3, Path, PathOptions> 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<Vector3, Path, PathOptions> 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;
        }
        /// <summary>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
        /// <para>NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened.</para>
        /// <para>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.</para></summary>
        /// <param name="path">The waypoint to go through</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="pathType">The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points)</param>
        /// <param name="pathMode">The path mode: 3D, side-scroller 2D, top-down 2D</param>
        /// <param name="resolution">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</param>
        /// <param name="gizmoColor">The color of the path (shown when gizmos are active in the Play panel and the tween is running)</param>
        public static TweenerCore<Vector3, Path, PathOptions> 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<Vector3, Path, PathOptions> 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<Vector3, Path, PathOptions> DOPath(
            this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D
        )
        {
            TweenerCore<Vector3, Path, PathOptions> 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<Vector3, Path, PathOptions> DOLocalPath(
            this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D
        )
        {
            Transform trans = target.transform;
            TweenerCore<Vector3, Path, PathOptions> 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
Assets/Plugins/DOTween/Modules/DOTweenModulePhysics.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9da66c3506263b541a23054f7855ce32
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules/DOTweenModulePhysics2D.cs
New file
@@ -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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOMove(this Rigidbody2D target, Vector2 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.position, target.MovePosition, endValue, duration);
            t.SetOptions(snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOMoveX(this Rigidbody2D target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.position, target.MovePosition, new Vector2(endValue, 0), duration);
            t.SetOptions(AxisConstraint.X, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOMoveY(this Rigidbody2D target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.position, target.MovePosition, new Vector2(0, endValue), duration);
            t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<float, float, FloatOptions> DORotate(this Rigidbody2D target, float endValue, float duration)
        {
            TweenerCore<float, float, FloatOptions> t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        #region Special
        /// <summary>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.
        /// <para>IMPORTANT: a rigidbody2D can't be animated in a jump arc using MovePosition, so the tween will directly set the position</para></summary>
        /// <param name="endValue">The end value to reach</param>
        /// <param name="jumpPower">Power of the jump (the max height of the jump is represented by this plus the final Y offset)</param>
        /// <param name="numJumps">Total number of jumps</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        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;
        }
        /// <summary>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.
        /// <para>NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened.</para>
        /// <para>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.</para></summary>
        /// <param name="path">The waypoints to go through</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="pathType">The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points)</param>
        /// <param name="pathMode">The path mode: 3D, side-scroller 2D, top-down 2D</param>
        /// <param name="resolution">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</param>
        /// <param name="gizmoColor">The color of the path (shown when gizmos are active in the Play panel and the tween is running)</param>
        public static TweenerCore<Vector3, Path, PathOptions> 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<Vector3, Path, PathOptions> 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;
        }
        /// <summary>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
        /// <para>NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened.</para>
        /// <para>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.</para></summary>
        /// <param name="path">The waypoint to go through</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="pathType">The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points)</param>
        /// <param name="pathMode">The path mode: 3D, side-scroller 2D, top-down 2D</param>
        /// <param name="resolution">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</param>
        /// <param name="gizmoColor">The color of the path (shown when gizmos are active in the Play panel and the tween is running)</param>
        public static TweenerCore<Vector3, Path, PathOptions> 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<Vector3, Path, PathOptions> 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<Vector3, Path, PathOptions> DOPath(
            this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D
        )
        {
            TweenerCore<Vector3, Path, PathOptions> 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<Vector3, Path, PathOptions> DOLocalPath(
            this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D
        )
        {
            Transform trans = target.transform;
            TweenerCore<Vector3, Path, PathOptions> 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
Assets/Plugins/DOTween/Modules/DOTweenModulePhysics2D.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6dc9ab97c1ccab34ca41f992cc7354b2
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules/DOTweenModuleSprite.cs
New file
@@ -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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOColor(this SpriteRenderer target, Color endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.To(() => target.color, x => target.color = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOFade(this SpriteRenderer target, float endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="gradient">The gradient to use</param><param name="duration">The duration of the tween</param>
        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
        /// <summary>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</summary>
        /// <param name="endValue">The value to tween to</param><param name="duration">The duration of the tween</param>
        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
Assets/Plugins/DOTween/Modules/DOTweenModuleSprite.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9af1ae7af77f3814e8ad35dcda515196
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules/DOTweenModuleUI.cs
New file
@@ -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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<float, float, FloatOptions> DOFade(this CanvasGroup target, float endValue, float duration)
        {
            TweenerCore<float, float, FloatOptions> t = DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        #endregion
        #region Graphic
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOColor(this Graphic target, Color endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.To(() => target.color, x => target.color = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOFade(this Graphic target, float endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        #endregion
        #region Image
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOColor(this Image target, Color endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.To(() => target.color, x => target.color = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOFade(this Image target, float endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach (0 to 1)</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<float, float, FloatOptions> DOFillAmount(this Image target, float endValue, float duration)
        {
            if (endValue > 1) endValue = 1;
            else if (endValue < 0) endValue = 0;
            TweenerCore<float, float, FloatOptions> t = DOTween.To(() => target.fillAmount, x => target.fillAmount = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="gradient">The gradient to use</param><param name="duration">The duration of the tween</param>
        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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> 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;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> 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;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> 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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOColor(this Outline target, Color endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.To(() => target.effectColor, x => target.effectColor = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOFade(this Outline target, float endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.ToAlpha(() => target.effectColor, x => target.effectColor = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOScale(this Outline target, Vector2 endValue, float duration)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.effectDistance, x => target.effectDistance = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        #endregion
        #region RectTransform
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOAnchorPos(this RectTransform target, Vector2 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, endValue, duration);
            t.SetOptions(snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOAnchorPosX(this RectTransform target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue, 0), duration);
            t.SetOptions(AxisConstraint.X, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOAnchorPosY(this RectTransform target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, endValue), duration);
            t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector3, Vector3, VectorOptions> DOAnchorPos3D(this RectTransform target, Vector3 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector3, Vector3, VectorOptions> t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, endValue, duration);
            t.SetOptions(snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector3, Vector3, VectorOptions> DOAnchorPos3DX(this RectTransform target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector3, Vector3, VectorOptions> t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(endValue, 0, 0), duration);
            t.SetOptions(AxisConstraint.X, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector3, Vector3, VectorOptions> DOAnchorPos3DY(this RectTransform target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector3, Vector3, VectorOptions> t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, endValue, 0), duration);
            t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector3, Vector3, VectorOptions> DOAnchorPos3DZ(this RectTransform target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector3, Vector3, VectorOptions> t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, 0, endValue), duration);
            t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOAnchorMax(this RectTransform target, Vector2 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.anchorMax, x => target.anchorMax = x, endValue, duration);
            t.SetOptions(snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOAnchorMin(this RectTransform target, Vector2 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.anchorMin, x => target.anchorMin = x, endValue, duration);
            t.SetOptions(snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOPivot(this RectTransform target, Vector2 endValue, float duration)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.pivot, x => target.pivot = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOPivotX(this RectTransform target, float endValue, float duration)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(endValue, 0), duration);
            t.SetOptions(AxisConstraint.X).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOPivotY(this RectTransform target, float endValue, float duration)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(0, endValue), duration);
            t.SetOptions(AxisConstraint.Y).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOSizeDelta(this RectTransform target, Vector2 endValue, float duration, bool snapping = false)
        {
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.sizeDelta, x => target.sizeDelta = x, endValue, duration);
            t.SetOptions(snapping).SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="punch">The direction and strength of the punch (added to the RectTransform's current position)</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="vibrato">Indicates how much will the punch vibrate</param>
        /// <param name="elasticity">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</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        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);
        }
        /// <summary>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</summary>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="strength">The shake strength</param>
        /// <param name="vibrato">Indicates how much will the shake vibrate</param>
        /// <param name="randomness">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.</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        /// <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
        /// <param name="randomnessMode">Randomness mode</param>
        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);
        }
        /// <summary>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</summary>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="strength">The shake strength on each axis</param>
        /// <param name="vibrato">Indicates how much will the shake vibrate</param>
        /// <param name="randomness">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.</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        /// <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
        /// <param name="randomnessMode">Randomness mode</param>
        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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param>
        /// <param name="jumpPower">Power of the jump (the max height of the jump is represented by this plus the final Y offset)</param>
        /// <param name="numJumps">Total number of jumps</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        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);
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        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);
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<float, float, FloatOptions> DOValue(this Slider target, float endValue, float duration, bool snapping = false)
        {
            TweenerCore<float, float, FloatOptions> t = DOTween.To(() => target.value, x => target.value = x, endValue, duration);
            t.SetOptions(snapping).SetTarget(target);
            return t;
        }
        #endregion
        #region Text
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOColor(this Text target, Color endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.To(() => target.color, x => target.color = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>
        /// Tweens a Text's text from one integer to another, with options for thousands separators
        /// </summary>
        /// <param name="fromValue">The value to start from</param>
        /// <param name="endValue">The end value to reach</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="addThousandsSeparator">If TRUE (default) also adds thousands separators</param>
        /// <param name="culture">The <see cref="CultureInfo"/> to use (InvariantCulture if NULL)</param>
        public static TweenerCore<int, int, NoOptions> 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<int, int, NoOptions> t = DOTween.To(() => v, x => {
                v = x;
                target.text = addThousandsSeparator
                    ? v.ToString("N0", cInfo)
                    : v.ToString();
            }, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
        public static TweenerCore<Color, Color, ColorOptions> DOFade(this Text target, float endValue, float duration)
        {
            TweenerCore<Color, Color, ColorOptions> t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end string to tween to</param><param name="duration">The duration of the tween</param>
        /// <param name="richTextEnabled">If TRUE (default), rich text will be interpreted correctly while animated,
        /// otherwise all tags will be considered as normal text</param>
        /// <param name="scrambleMode">The type of scramble mode to use, if any</param>
        /// <param name="scrambleChars">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</param>
        public static TweenerCore<string, string, StringOptions> 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<string, string, StringOptions> 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
        /// <summary>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</summary>
        /// <param name="endValue">The value to tween to</param><param name="duration">The duration of the tween</param>
        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
        /// <summary>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</summary>
        /// <param name="endValue">The value to tween to</param><param name="duration">The duration of the tween</param>
        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
        /// <summary>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</summary>
        /// <param name="endValue">The value to tween to</param><param name="duration">The duration of the tween</param>
        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
        /// <summary>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.<para/>
        /// IMPORTANT: SetFrom(value) requires a <see cref="Vector2"/> instead of a float, where the X property represents the "from degrees value"</summary>
        /// <param name="center">Circle-center/pivot around which to rotate (in UI anchoredPosition coordinates)</param>
        /// <param name="endValueDegrees">The end value degrees to reach (to rotate counter-clockwise pass a negative value)</param>
        /// <param name="duration">The duration of the tween</param>
        /// <param name="relativeCenter">If TRUE the <see cref="center"/> coordinates will be considered as relative to the target's current anchoredPosition</param>
        /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
        public static TweenerCore<Vector2, Vector2, CircleOptions> DOShapeCircle(
            this RectTransform target, Vector2 center, float endValueDegrees, float duration, bool relativeCenter = false, bool snapping = false
        )
        {
            TweenerCore<Vector2, Vector2, CircleOptions> 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
        {
            /// <summary>
            /// Converts the anchoredPosition of the first RectTransform to the second RectTransform,
            /// taking into consideration offset, anchors and pivot, and returns the new anchoredPosition
            /// </summary>
            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
Assets/Plugins/DOTween/Modules/DOTweenModuleUI.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e7c8bf65ca3adf943b2b4fca1fedbaa4
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules/DOTweenModuleUnityVersion.cs
New file
@@ -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
{
    /// <summary>
    /// Shortcuts/functions that are not strictly related to specific Modules
    /// but are available only on some Unity versions
    /// </summary>
    public static class DOTweenModuleUnityVersion
    {
        #region Material
        /// <summary>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</summary>
        /// <param name="gradient">The gradient to use</param><param name="duration">The duration of the tween</param>
        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;
        }
        /// <summary>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</summary>
        /// <param name="gradient">The gradient to use</param>
        /// <param name="property">The name of the material property to tween (like _Tint or _SpecColor)</param>
        /// <param name="duration">The duration of the tween</param>
        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
        /// <summary>
        /// Returns a <see cref="CustomYieldInstruction"/> that waits until the tween is killed or complete.
        /// It can be used inside a coroutine as a yield.
        /// <para>Example usage:</para><code>yield return myTween.WaitForCompletion(true);</code>
        /// </summary>
        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);
        }
        /// <summary>
        /// Returns a <see cref="CustomYieldInstruction"/> that waits until the tween is killed or rewinded.
        /// It can be used inside a coroutine as a yield.
        /// <para>Example usage:</para><code>yield return myTween.WaitForRewind();</code>
        /// </summary>
        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);
        }
        /// <summary>
        /// Returns a <see cref="CustomYieldInstruction"/> that waits until the tween is killed.
        /// It can be used inside a coroutine as a yield.
        /// <para>Example usage:</para><code>yield return myTween.WaitForKill();</code>
        /// </summary>
        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);
        }
        /// <summary>
        /// Returns a <see cref="CustomYieldInstruction"/> 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.
        /// <para>Example usage:</para><code>yield return myTween.WaitForElapsedLoops(2);</code>
        /// </summary>
        /// <param name="elapsedLoops">Elapsed loops to wait for</param>
        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);
        }
        /// <summary>
        /// Returns a <see cref="CustomYieldInstruction"/> 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.
        /// <para>Example usage:</para><code>yield return myTween.WaitForPosition(2.5f);</code>
        /// </summary>
        /// <param name="position">Position (loops included, delays excluded) to wait for</param>
        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);
        }
        /// <summary>
        /// Returns a <see cref="CustomYieldInstruction"/> 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.
        /// <para>Example usage:</para><code>yield return myTween.WaitForStart();</code>
        /// </summary>
        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
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param>
        /// <param name="propertyID">The ID of the material property to tween (also called nameID in Unity's manual)</param>
        /// <param name="duration">The duration of the tween</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOOffset(this Material target, Vector2 endValue, int propertyID, float duration)
        {
            if (!target.HasProperty(propertyID)) {
                if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID);
                return null;
            }
            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => target.GetTextureOffset(propertyID), x => target.SetTextureOffset(propertyID, x), endValue, duration);
            t.SetTarget(target);
            return t;
        }
        /// <summary>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</summary>
        /// <param name="endValue">The end value to reach</param>
        /// <param name="propertyID">The ID of the material property to tween (also called nameID in Unity's manual)</param>
        /// <param name="duration">The duration of the tween</param>
        public static TweenerCore<Vector2, Vector2, VectorOptions> DOTiling(this Material target, Vector2 endValue, int propertyID, float duration)
        {
            if (!target.HasProperty(propertyID)) {
                if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID);
                return null;
            }
            TweenerCore<Vector2, Vector2, VectorOptions> 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
        /// <summary>
        /// Returns an async <see cref="System.Threading.Tasks.Task"/> that waits until the tween is killed or complete.
        /// It can be used inside an async operation.
        /// <para>Example usage:</para><code>await myTween.WaitForCompletion();</code>
        /// </summary>
        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();
        }
        /// <summary>
        /// Returns an async <see cref="System.Threading.Tasks.Task"/> that waits until the tween is killed or rewinded.
        /// It can be used inside an async operation.
        /// <para>Example usage:</para><code>await myTween.AsyncWaitForRewind();</code>
        /// </summary>
        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();
        }
        /// <summary>
        /// Returns an async <see cref="System.Threading.Tasks.Task"/> that waits until the tween is killed.
        /// It can be used inside an async operation.
        /// <para>Example usage:</para><code>await myTween.AsyncWaitForKill();</code>
        /// </summary>
        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();
        }
        /// <summary>
        /// Returns an async <see cref="System.Threading.Tasks.Task"/> that waits until the tween is killed or has gone through the given amount of loops.
        /// It can be used inside an async operation.
        /// <para>Example usage:</para><code>await myTween.AsyncWaitForElapsedLoops();</code>
        /// </summary>
        /// <param name="elapsedLoops">Elapsed loops to wait for</param>
        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();
        }
        /// <summary>
        /// Returns an async <see cref="System.Threading.Tasks.Task"/> 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.
        /// <para>Example usage:</para><code>await myTween.AsyncWaitForPosition();</code>
        /// </summary>
        /// <param name="position">Position (loops included, delays excluded) to wait for</param>
        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();
        }
        /// <summary>
        /// Returns an async <see cref="System.Threading.Tasks.Task"/> that waits until the tween is killed.
        /// It can be used inside an async operation.
        /// <para>Example usage:</para><code>await myTween.AsyncWaitForKill();</code>
        /// </summary>
        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;
            }
        }
    }
}
Assets/Plugins/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 80093aa6c973264489d9f391da7f867f
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/Modules/DOTweenModuleUtils.cs
New file
@@ -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
{
    /// <summary>
    /// 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
    /// </summary>
    public static class DOTweenModuleUtils
    {
        static bool _initialized;
        #region Reflection
        /// <summary>
        /// Called via Reflection by DOTweenComponent on Awake
        /// </summary>
#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<Rigidbody2D>() != 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<Rigidbody>() != null;
#else
                return false;
#endif
            }
            // Called via Reflection by DOTweenPath
#if UNITY_2018_1_OR_NEWER
            [UnityEngine.Scripting.Preserve]
#endif
            public static TweenerCore<Vector3, Path, PathOptions> CreateDOTweenPathTween(
                MonoBehaviour target, bool tweenRigidbody, bool isLocal, Path path, float duration, PathMode pathMode
            ){
                TweenerCore<Vector3, Path, PathOptions> t = null;
                bool rBodyFoundAndTweened = false;
#if true // PHYSICS_MARKER
                if (tweenRigidbody) {
                    Rigidbody rBody = target.GetComponent<Rigidbody>();
                    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<Rigidbody2D>();
                    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
        }
    }
}
Assets/Plugins/DOTween/Modules/DOTweenModuleUtils.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: aeb112b43db4a144da2867f682e542bf
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/DOTween/readme.txt
New file
@@ -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
Assets/Plugins/DOTween/readme.txt.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ed112c1b27c75344f9e4c3e657dd9b16
TextScriptImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ffc6e742e108cef42b366b138cd40bcb
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/DOTweenSettings.asset
New file
@@ -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: 7a338d4591074574a99cbfb1af5d6f1b, type: 3}
  m_Name: DOTweenSettings
  m_EditorClassIdentifier:
  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
Assets/Resources/DOTweenSettings.asset.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 154247400d5d4764197098378c031fd6
NativeFormatImporter:
  externalObjects: {}
  mainObjectFileID: 11400000
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/Scenes.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 726806f128c28e5459a485d74b93924d
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/Scenes/Launch.unity
New file
@@ -0,0 +1,327 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_OcclusionBakeSettings:
    smallestOccluder: 5
    smallestHole: 0.25
    backfaceThreshold: 100
  m_SceneGUID: 00000000000000000000000000000000
  m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 9
  m_Fog: 0
  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
  m_FogMode: 3
  m_FogDensity: 0.01
  m_LinearFogStart: 0
  m_LinearFogEnd: 300
  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
  m_AmbientIntensity: 1
  m_AmbientMode: 3
  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
  m_SkyboxMaterial: {fileID: 0}
  m_HaloStrength: 0.5
  m_FlareStrength: 1
  m_FlareFadeSpeed: 3
  m_HaloTexture: {fileID: 0}
  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
  m_DefaultReflectionMode: 0
  m_DefaultReflectionResolution: 128
  m_ReflectionBounces: 1
  m_ReflectionIntensity: 1
  m_CustomReflection: {fileID: 0}
  m_Sun: {fileID: 0}
  m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 12
  m_GIWorkflowMode: 1
  m_GISettings:
    serializedVersion: 2
    m_BounceScale: 1
    m_IndirectOutputScale: 1
    m_AlbedoBoost: 1
    m_EnvironmentLightingMode: 0
    m_EnableBakedLightmaps: 0
    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_FinalGather: 0
    m_FinalGatherFiltering: 1
    m_FinalGatherRayCount: 256
    m_ReflectionCompression: 2
    m_MixedBakeMode: 2
    m_BakeBackend: 0
    m_PVRSampling: 1
    m_PVRDirectSampleCount: 32
    m_PVRSampleCount: 500
    m_PVRBounces: 2
    m_PVREnvironmentSampleCount: 500
    m_PVREnvironmentReferencePointCount: 2048
    m_PVRFilteringMode: 2
    m_PVRDenoiserTypeDirect: 0
    m_PVRDenoiserTypeIndirect: 0
    m_PVRDenoiserTypeAO: 0
    m_PVRFilterTypeDirect: 0
    m_PVRFilterTypeIndirect: 0
    m_PVRFilterTypeAO: 0
    m_PVREnvironmentMIS: 0
    m_PVRCulling: 1
    m_PVRFilteringGaussRadiusDirect: 1
    m_PVRFilteringGaussRadiusIndirect: 5
    m_PVRFilteringGaussRadiusAO: 2
    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
    m_PVRFilteringAtrousPositionSigmaIndirect: 2
    m_PVRFilteringAtrousPositionSigmaAO: 1
    m_ExportTrainingData: 0
    m_TrainingDataDestination: TrainingData
    m_LightProbeSampleCountMultiplier: 4
  m_LightingDataAsset: {fileID: 0}
  m_LightingSettings: {fileID: 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!1 &421128700
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 421128702}
  - component: {fileID: 421128701}
  m_Layer: 0
  m_Name: Launch
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!114 &421128701
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 421128700}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: b3c8dbd062ed4d5459217dccb0ee389f, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  versionUrl:
  IsHotupdate: 0
  IsUseSDK: 0
--- !u!4 &421128702
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 421128700}
  serializedVersion: 2
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_ConstrainProportionsScale: 0
  m_Children: []
  m_Father: {fileID: 0}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &519420028
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 519420032}
  - component: {fileID: 519420031}
  - component: {fileID: 519420029}
  m_Layer: 0
  m_Name: UICamera
  m_TagString: MainCamera
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!81 &519420029
AudioListener:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 519420028}
  m_Enabled: 1
--- !u!20 &519420031
Camera:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 519420028}
  m_Enabled: 1
  serializedVersion: 2
  m_ClearFlags: 3
  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
  m_projectionMatrixMode: 1
  m_GateFitMode: 2
  m_FOVAxisMode: 0
  m_Iso: 200
  m_ShutterSpeed: 0.005
  m_Aperture: 16
  m_FocusDistance: 10
  m_FocalLength: 50
  m_BladeCount: 5
  m_Curvature: {x: 2, y: 11}
  m_BarrelClipping: 0.25
  m_Anamorphism: 0
  m_SensorSize: {x: 36, y: 24}
  m_LensShift: {x: 0, y: 0}
  m_NormalizedViewPortRect:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
  near clip plane: 0.3
  far clip plane: 1000
  field of view: 60
  orthographic: 1
  orthographic size: 3.75
  m_Depth: 10
  m_CullingMask:
    serializedVersion: 2
    m_Bits: 96
  m_RenderingPath: -1
  m_TargetTexture: {fileID: 0}
  m_TargetDisplay: 0
  m_TargetEye: 0
  m_HDR: 0
  m_AllowMSAA: 0
  m_AllowDynamicResolution: 0
  m_ForceIntoRT: 0
  m_OcclusionCulling: 1
  m_StereoConvergence: 10
  m_StereoSeparation: 0.022
--- !u!4 &519420032
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 519420028}
  serializedVersion: 2
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: -10}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_ConstrainProportionsScale: 0
  m_Children: []
  m_Father: {fileID: 0}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &2423753236848405001
PrefabInstance:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
    serializedVersion: 3
    m_TransformParent: {fileID: 0}
    m_Modifications:
    - target: {fileID: 1681207515715887439, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_Name
      value: UIRoot
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalPosition.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalPosition.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalRotation.w
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalRotation.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalRotation.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalRotation.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalEulerAnglesHint.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalEulerAnglesHint.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 5320966938171549996, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
      propertyPath: m_LocalEulerAnglesHint.z
      value: 0
      objectReference: {fileID: 0}
    m_RemovedComponents: []
    m_RemovedGameObjects: []
    m_AddedGameObjects: []
    m_AddedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3}
--- !u!1660057539 &9223372036854775807
SceneRoots:
  m_ObjectHideFlags: 0
  m_Roots:
  - {fileID: 519420032}
  - {fileID: 421128702}
  - {fileID: 2423753236848405001}
Assets/Resources/Scenes/Launch.unity.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2cda990e2423bbf4892e6590ba056729
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/UIRoot.prefab
New file
@@ -0,0 +1,290 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1681207515715887439
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 5320966938171549996}
  m_Layer: 0
  m_Name: UIRoot
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &5320966938171549996
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1681207515715887439}
  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:
  - {fileID: 1807634080894636761}
  - {fileID: 7628459139487184723}
  - {fileID: 457583443675782016}
  - {fileID: 4265312598273542856}
  - {fileID: 6830753934744778264}
  - {fileID: 789570319937604085}
  m_Father: {fileID: 0}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2485974164952778061
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1807634080894636761}
  m_Layer: 0
  m_Name: Static
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &1807634080894636761
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2485974164952778061}
  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: 5320966938171549996}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &3515046819721207348
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 457583443675782016}
  m_Layer: 0
  m_Name: Middle
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &457583443675782016
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3515046819721207348}
  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: 5320966938171549996}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &4075253285172176030
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4265312598273542856}
  m_Layer: 0
  m_Name: Top
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &4265312598273542856
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4075253285172176030}
  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: 5320966938171549996}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6205338694160635977
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 7628459139487184723}
  m_Layer: 0
  m_Name: Bottom
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &7628459139487184723
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6205338694160635977}
  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: 5320966938171549996}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7888871765784601783
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6830753934744778264}
  m_Layer: 0
  m_Name: System
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &6830753934744778264
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7888871765784601783}
  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: 5320966938171549996}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &9144642533405085209
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 789570319937604085}
  - component: {fileID: 8185596388011668903}
  - component: {fileID: 1477409721094024724}
  - component: {fileID: 8394945430361972633}
  - component: {fileID: 8040000835587880385}
  m_Layer: 0
  m_Name: EventSystem
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &789570319937604085
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9144642533405085209}
  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: 5320966938171549996}
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8185596388011668903
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9144642533405085209}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_FirstSelected: {fileID: 0}
  m_sendNavigationEvents: 1
  m_DragThreshold: 5
--- !u!114 &1477409721094024724
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9144642533405085209}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_SendPointerHoverToParent: 1
  m_HorizontalAxis: Horizontal
  m_VerticalAxis: Vertical
  m_SubmitButton: Submit
  m_CancelButton: Cancel
  m_InputActionsPerSecond: 10
  m_RepeatDelay: 0.5
  m_ForceModuleActive: 0
--- !u!114 &8394945430361972633
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9144642533405085209}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_SendPointerHoverToParent: 1
  m_ForceModuleActive: 0
--- !u!114 &8040000835587880385
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9144642533405085209}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 1511ccae7919cfc46b603b9b337fdc94, type: 3}
  m_Name:
  m_EditorClassIdentifier:
Assets/Resources/UIRoot.prefab.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 861a0f8791bb1624da118c150ad63b2b
PrefabImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/firstpackLang.txt
New file
@@ -0,0 +1,24 @@
热更新
初始化SDK
资源解压
版本检查
进入热更新程序集
准备更新...
跳过热更新
当前已是最新版本
正在下载更新...
正在应用更新...
更新已完成,请手动重启应用以应用更新
正在初始化SDK...
正在检查资源...
正在解压资源...
资源检查完成
正在检查版本...
检测到小版本更新
检测到中版本更新
检测到大版本更新
正在进入游戏...
正在加载游戏资源...
正在检查版本更新...
正在初始化游戏...
准备进入游戏世界...
Assets/Resources/firstpackLang.txt.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: fadd804feb4aaf745a7b04f49dd05199
TextScriptImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/version.txt
New file
@@ -0,0 +1 @@
1.0.0
Assets/Resources/version.txt.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 74382e4a02b772948a4421b2adcd5a35
TextScriptImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Packages/manifest.json
@@ -1,8 +1,11 @@
{
  "dependencies": {
    "com.code-philosophy.hybridclr": "https://gitee.com/focus-creative-games/hybridclr_unity.git",
    "com.cysharp.unitask": "https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask",
    "com.unity.collab-proxy": "2.3.1",
    "com.unity.feature.2d": "2.0.1",
    "com.unity.ide.rider": "3.0.28",
    "com.unity.ide.trae": "file:E:/HybridCLRgit/com.unity.ide.trae",
    "com.unity.ide.visualstudio": "2.0.22",
    "com.unity.test-framework": "1.1.33",
    "com.unity.textmeshpro": "3.0.6",
Packages/packages-lock.json
@@ -1,5 +1,19 @@
{
  "dependencies": {
    "com.code-philosophy.hybridclr": {
      "version": "https://gitee.com/focus-creative-games/hybridclr_unity.git",
      "depth": 0,
      "source": "git",
      "dependencies": {},
      "hash": "903cf9faa2760d85bdaf8835101401070cef6fd3"
    },
    "com.cysharp.unitask": {
      "version": "https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask",
      "depth": 0,
      "source": "git",
      "dependencies": {},
      "hash": "06067cd4c83e372310d6f79d1c625f6870ff7a2a"
    },
    "com.unity.2d.animation": {
      "version": "9.1.1",
      "depth": 1,
@@ -152,6 +166,14 @@
      },
      "url": "https://packages.unity.cn"
    },
    "com.unity.ide.trae": {
      "version": "file:E:/HybridCLRgit/com.unity.ide.trae",
      "depth": 0,
      "source": "local",
      "dependencies": {
        "com.unity.test-framework": "1.1.9"
      }
    },
    "com.unity.ide.visualstudio": {
      "version": "2.0.22",
      "depth": 0,
ProjectSettings/EditorBuildSettings.asset
@@ -6,6 +6,6 @@
  serializedVersion: 2
  m_Scenes:
  - enabled: 1
    path: Assets/Scenes/SampleScene.unity
    path: Assets/Resources/Scenes/Launch.unity
    guid: 2cda990e2423bbf4892e6590ba056729
  m_configObjects: {}
ProjectSettings/ProjectSettings.asset
@@ -690,7 +690,24 @@
  webGLMemoryGeometricGrowthStep: 0.2
  webGLMemoryGeometricGrowthCap: 96
  webGLPowerPreference: 2
  scriptingDefineSymbols: {}
  scriptingDefineSymbols:
    Android: DOTWEEN
    EmbeddedLinux: DOTWEEN
    GameCoreScarlett: DOTWEEN
    GameCoreXboxOne: DOTWEEN
    LinuxHeadlessSimulation: DOTWEEN
    Nintendo Switch: DOTWEEN
    PS4: DOTWEEN
    PS5: DOTWEEN
    QNX: DOTWEEN
    Stadia: DOTWEEN
    Standalone: DOTWEEN
    VisionOS: DOTWEEN
    WebGL: DOTWEEN
    Windows Store Apps: DOTWEEN
    XboxOne: DOTWEEN
    iPhone: DOTWEEN
    tvOS: DOTWEEN
  additionalCompilerArguments: {}
  platformArchitecture: {}
  scriptingBackend: {}
ProjectSettings/TagManager.asset
@@ -11,7 +11,7 @@
  - 
  - Water
  - UI
  -
  - UIEffect
  - 
  - 
  -