diff --git a/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.XML b/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.XML index 2b1b76a..24a52cf 100644 --- a/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.XML +++ b/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.XML @@ -137,6 +137,17 @@ Public so it can be used by external ease factories + + + Behaviour in case a tween nested inside a Sequence fails + + + + If the Sequence contains other elements, kill the failed tween but preserve the rest + + + Kill the whole Sequence + Additional notices passed to plugins when updating. @@ -290,6 +301,10 @@ (like targets becoming null while a tween is playing). Default: TRUE + + Behaviour in case a tween nested inside a Sequence fails (caught by safe mode). + Default: NestedTweenFailureBehaviour.TryToPreserveSequence + If TRUE you will get a DOTween report when exiting play mode (only in the Editor). Useful to know how many max Tweeners and Sequences you reached and optimize your final project accordingly. diff --git a/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll b/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll index 3c0b31f..6625bf0 100644 Binary files a/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll and b/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll differ diff --git a/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll.mdb b/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll.mdb index 87895a2..c5d95da 100644 Binary files a/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll.mdb and b/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll.mdb differ diff --git a/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll b/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll index e3be88c..1e86431 100644 Binary files a/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll and b/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll differ diff --git a/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb b/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb index e8d9866..0d5ac4c 100644 Binary files a/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb and b/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb differ diff --git a/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll b/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll index 8759687..fba7a1b 100644 Binary files a/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll and b/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll differ diff --git a/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.mdb b/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.mdb index 38c65c3..3c0a1a5 100644 Binary files a/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.mdb and b/UnityTests.Unity5/Assets/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.mdb differ diff --git a/UnityTests.Unity5/Assets/Resources/DOTweenSettings.asset b/UnityTests.Unity5/Assets/Resources/DOTweenSettings.asset index 577d24a..19f5f91 100644 Binary files a/UnityTests.Unity5/Assets/Resources/DOTweenSettings.asset and b/UnityTests.Unity5/Assets/Resources/DOTweenSettings.asset differ diff --git a/_DOTween.Assembly/DOTween/Core/DOTweenSettings.cs b/_DOTween.Assembly/DOTween/Core/DOTweenSettings.cs index e501f82..3bc7fab 100644 --- a/_DOTween.Assembly/DOTween/Core/DOTweenSettings.cs +++ b/_DOTween.Assembly/DOTween/Core/DOTweenSettings.cs @@ -14,6 +14,7 @@ namespace DG.Tweening.Core public const string AssetFullFilename = AssetName + ".asset"; public bool useSafeMode = true; + public SafeModeOptions safeModeOptions = new SafeModeOptions(); public float timeScale = 1; public bool useSmoothDeltaTime; public float maxSmoothUnscaledTime = 0.15f; // Used if useSmoothDeltaTime is TRUE @@ -48,6 +49,12 @@ namespace DG.Tweening.Core // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + [Serializable] + public class SafeModeOptions + { + public NestedTweenFailureBehaviour nestedTweenFailureBehaviour = NestedTweenFailureBehaviour.TryToPreserveSequence; + } + [Serializable] public class ModulesSetup // Editor-only { diff --git a/_DOTween.Assembly/DOTween/Core/Enums/NestedTweenFailureBehaviour.cs b/_DOTween.Assembly/DOTween/Core/Enums/NestedTweenFailureBehaviour.cs new file mode 100644 index 0000000..cf6f635 --- /dev/null +++ b/_DOTween.Assembly/DOTween/Core/Enums/NestedTweenFailureBehaviour.cs @@ -0,0 +1,18 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2019/02/28 11:08 +// License Copyright (c) Daniele Giardini +// This work is subject to the terms at http://dotween.demigiant.com/license.php + +namespace DG.Tweening.Core.Enums +{ + /// + /// Behaviour in case a tween nested inside a Sequence fails + /// + public enum NestedTweenFailureBehaviour + { + /// If the Sequence contains other elements, kill the failed tween but preserve the rest + TryToPreserveSequence, + /// Kill the whole Sequence + KillWholeSequence + } +} \ No newline at end of file diff --git a/_DOTween.Assembly/DOTween/DOTween.cs b/_DOTween.Assembly/DOTween/DOTween.cs index b730360..b4a1b6c 100644 --- a/_DOTween.Assembly/DOTween/DOTween.cs +++ b/_DOTween.Assembly/DOTween/DOTween.cs @@ -32,7 +32,7 @@ namespace DG.Tweening public class DOTween { /// DOTween's version - public static readonly string Version = "1.2.196"; // Last version before modules: 1.1.755 + public static readonly string Version = "1.2.200"; // Last version before modules: 1.1.755 /////////////////////////////////////////////// // Options //////////////////////////////////// @@ -41,6 +41,9 @@ namespace DG.Tweening /// (like targets becoming null while a tween is playing). /// Default: TRUE public static bool useSafeMode = true; + /// Behaviour in case a tween nested inside a Sequence fails (caught by safe mode). + /// Default: NestedTweenFailureBehaviour.TryToPreserveSequence + public static NestedTweenFailureBehaviour nestedTweenFailureBehaviour = NestedTweenFailureBehaviour.TryToPreserveSequence; /// If TRUE you will get a DOTween report when exiting play mode (only in the Editor). /// Useful to know how many max Tweeners and Sequences you reached and optimize your final project accordingly. /// Beware, this will slightly slow down your tweens while inside Unity Editor. @@ -167,6 +170,7 @@ namespace DG.Tweening if (useSafeMode == null) DOTween.useSafeMode = settings.useSafeMode; if (logBehaviour == null) DOTween.logBehaviour = settings.logBehaviour; if (recycleAllByDefault == null) DOTween.defaultRecyclable = settings.defaultRecyclable; + DOTween.nestedTweenFailureBehaviour = settings.safeModeOptions.nestedTweenFailureBehaviour; DOTween.timeScale = settings.timeScale; DOTween.useSmoothDeltaTime = settings.useSmoothDeltaTime; DOTween.maxSmoothUnscaledTime = settings.maxSmoothUnscaledTime; @@ -220,6 +224,7 @@ namespace DG.Tweening initialized = false; useSafeMode = false; + nestedTweenFailureBehaviour = NestedTweenFailureBehaviour.TryToPreserveSequence; showUnityEditorReport = false; drawGizmos = true; timeScale = 1; diff --git a/_DOTween.Assembly/DOTween/DOTween.csproj b/_DOTween.Assembly/DOTween/DOTween.csproj index 605d924..1f0ff25 100644 --- a/_DOTween.Assembly/DOTween/DOTween.csproj +++ b/_DOTween.Assembly/DOTween/DOTween.csproj @@ -82,6 +82,7 @@ + diff --git a/_DOTween.Assembly/DOTween/Sequence.cs b/_DOTween.Assembly/DOTween/Sequence.cs index 99c5e02..b93734a 100644 --- a/_DOTween.Assembly/DOTween/Sequence.cs +++ b/_DOTween.Assembly/DOTween/Sequence.cs @@ -269,6 +269,7 @@ namespace DG.Tweening if (TweenManager.Goto(t, gotoPos, false, updateMode)) { // Nested tween failed. If it's the only tween and there's no callbacks mark for killing the whole sequence // (default behaviour in any case prior to v1.2.060)... + if (DOTween.nestedTweenFailureBehaviour == NestedTweenFailureBehaviour.KillWholeSequence) return true; if (s.sequencedTweens.Count == 1 && s._sequencedObjs.Count == 1 && !IsAnyCallbackSet(s)) return true; // ...otherwise remove failed tween from Sequence and continue TweenManager.Despawn(t, false); @@ -327,6 +328,7 @@ namespace DG.Tweening if (TweenManager.Goto(t, gotoPos, false, updateMode)) { // Nested tween failed. If it's the only tween and there's no callbacks mark for killing the whole sequence // (default behaviour in any case prior to v1.2.060)... + if (DOTween.nestedTweenFailureBehaviour == NestedTweenFailureBehaviour.KillWholeSequence) return true; if (s.sequencedTweens.Count == 1 && s._sequencedObjs.Count == 1 && !IsAnyCallbackSet(s)) return true; // ...otherwise remove failed tween from Sequence and continue TweenManager.Despawn(t, false); diff --git a/_DOTween.Assembly/DOTweenEditor/UI/DOTweenUtilityWindow.cs b/_DOTween.Assembly/DOTweenEditor/UI/DOTweenUtilityWindow.cs index e2b4f63..0e1d9c1 100644 --- a/_DOTween.Assembly/DOTweenEditor/UI/DOTweenUtilityWindow.cs +++ b/_DOTween.Assembly/DOTweenEditor/UI/DOTweenUtilityWindow.cs @@ -16,7 +16,7 @@ namespace DG.DOTweenEditor.UI static void ShowWindow() { Open(); } const string _Title = "DOTween Utility Panel"; - static readonly Vector2 _WinSize = new Vector2(370,490); + static readonly Vector2 _WinSize = new Vector2(370,510); public const string Id = "DOTweenVersion"; public const string IdPro = "DOTweenProVersion"; static readonly float _HalfBtSize = _WinSize.x * 0.5f - 6; @@ -124,7 +124,10 @@ namespace DG.DOTweenEditor.UI switch (_selectedTab) { case 1: + float labelW = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = 160; DrawPreferencesGUI(); + EditorGUIUtility.labelWidth = labelW; break; default: DrawSetupGUI(); @@ -199,6 +202,7 @@ namespace DG.DOTweenEditor.UI if (GUILayout.Button("Reset", EditorGUIUtils.btBigStyle)) { // Reset to original defaults _src.useSafeMode = true; + _src.safeModeOptions.nestedTweenFailureBehaviour = NestedTweenFailureBehaviour.TryToPreserveSequence; _src.showUnityEditorReport = false; _src.timeScale = 1; _src.useSmoothDeltaTime = false; @@ -219,13 +223,19 @@ namespace DG.DOTweenEditor.UI } GUILayout.Space(8); _src.useSafeMode = EditorGUILayout.Toggle("Safe Mode", _src.useSafeMode); + if (_src.useSafeMode) { + _src.safeModeOptions.nestedTweenFailureBehaviour = (NestedTweenFailureBehaviour)EditorGUILayout.EnumPopup( + new GUIContent("└ On Nested Tween Failure", "Behaviour in case a tween inside a Sequence fails"), + _src.safeModeOptions.nestedTweenFailureBehaviour + ); + } _src.timeScale = EditorGUILayout.FloatField("DOTween's TimeScale", _src.timeScale); _src.useSmoothDeltaTime = EditorGUILayout.Toggle("Smooth DeltaTime", _src.useSmoothDeltaTime); _src.maxSmoothUnscaledTime = EditorGUILayout.Slider("Max SmoothUnscaledTime", _src.maxSmoothUnscaledTime, 0.01f, 1f); _src.rewindCallbackMode = (RewindCallbackMode)EditorGUILayout.EnumPopup("OnRewind Callback Mode", _src.rewindCallbackMode); GUILayout.Space(-5); GUILayout.BeginHorizontal(); - GUILayout.Space(154); + GUILayout.Space(EditorGUIUtility.labelWidth + 4); EditorGUILayout.HelpBox( _src.rewindCallbackMode == RewindCallbackMode.FireIfPositionChanged ? "When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will be fired only if the tween isn't already rewinded" diff --git a/_DOTween.Assembly/bin/DOTween.XML b/_DOTween.Assembly/bin/DOTween.XML index 2b1b76a..24a52cf 100644 --- a/_DOTween.Assembly/bin/DOTween.XML +++ b/_DOTween.Assembly/bin/DOTween.XML @@ -137,6 +137,17 @@ Public so it can be used by external ease factories + + + Behaviour in case a tween nested inside a Sequence fails + + + + If the Sequence contains other elements, kill the failed tween but preserve the rest + + + Kill the whole Sequence + Additional notices passed to plugins when updating. @@ -290,6 +301,10 @@ (like targets becoming null while a tween is playing). Default: TRUE + + Behaviour in case a tween nested inside a Sequence fails (caught by safe mode). + Default: NestedTweenFailureBehaviour.TryToPreserveSequence + If TRUE you will get a DOTween report when exiting play mode (only in the Editor). Useful to know how many max Tweeners and Sequences you reached and optimize your final project accordingly. diff --git a/_DOTween.Assembly/bin/DOTween.dll b/_DOTween.Assembly/bin/DOTween.dll index 3c0b31f..6625bf0 100644 Binary files a/_DOTween.Assembly/bin/DOTween.dll and b/_DOTween.Assembly/bin/DOTween.dll differ diff --git a/_DOTween.Assembly/bin/DOTween.dll.mdb b/_DOTween.Assembly/bin/DOTween.dll.mdb index 87895a2..c5d95da 100644 Binary files a/_DOTween.Assembly/bin/DOTween.dll.mdb and b/_DOTween.Assembly/bin/DOTween.dll.mdb differ diff --git a/_DOTween.Assembly/bin/Editor/DOTweenEditor.dll b/_DOTween.Assembly/bin/Editor/DOTweenEditor.dll index e3be88c..1e86431 100644 Binary files a/_DOTween.Assembly/bin/Editor/DOTweenEditor.dll and b/_DOTween.Assembly/bin/Editor/DOTweenEditor.dll differ diff --git a/_DOTween.Assembly/bin/Editor/DOTweenEditor.dll.mdb b/_DOTween.Assembly/bin/Editor/DOTweenEditor.dll.mdb index e8d9866..0d5ac4c 100644 Binary files a/_DOTween.Assembly/bin/Editor/DOTweenEditor.dll.mdb and b/_DOTween.Assembly/bin/Editor/DOTweenEditor.dll.mdb differ diff --git a/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll b/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll index 8759687..fba7a1b 100644 Binary files a/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll and b/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll differ diff --git a/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll.mdb b/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll.mdb index 38c65c3..3c0a1a5 100644 Binary files a/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll.mdb and b/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll.mdb differ