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