diff --git a/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll b/UnityTests.Unity5/Assets/Demigiant/DOTween/DOTween.dll index 2ecea90..588e4e4 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 9229e21..c9ea9d6 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 82bdc27..77fa70f 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 9b1c796..915545c 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 ae7d18a..b3f3dae 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 3e1db8d..ed57eca 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/_Tests/TempTests.unity b/UnityTests.Unity5/Assets/_Tests/TempTests.unity index a482443..a2c75b0 100644 Binary files a/UnityTests.Unity5/Assets/_Tests/TempTests.unity and b/UnityTests.Unity5/Assets/_Tests/TempTests.unity differ diff --git a/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs b/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs index 0774941..31f8b01 100644 --- a/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs +++ b/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs @@ -129,6 +129,32 @@ namespace DG.Tweening.Core string s = "Max overall simultaneous active Tweeners/Sequences: " + DOTween.maxActiveTweenersReached + "/" + DOTween.maxActiveSequencesReached; Debugger.LogReport(s); } + + if (DOTween.useSafeMode) { + int totSafeModeErrors = DOTween.safeModeReport.GetTotErrors(); + if (totSafeModeErrors > 0) { + string s = string.Format("DOTween's safe mode captured {0} errors." + + " This is usually ok (it's what safe mode is there for) but if your game is encountering issues" + + " you should set Log Behaviour to Default in DOTween Utility Panel in order to get detailed" + + " warnings when an error is captured (consider that these errors are always on the user side).", + totSafeModeErrors + ); + if (DOTween.safeModeReport.totMissingTargetOrFieldErrors > 0) { + s += "\n- " + DOTween.safeModeReport.totMissingTargetOrFieldErrors + " missing target or field errors"; + } + if (DOTween.safeModeReport.totStartupErrors > 0) { + s += "\n- " + DOTween.safeModeReport.totStartupErrors + " startup errors"; + } + if (DOTween.safeModeReport.totCallbackErrors > 0) { + s += "\n- " + DOTween.safeModeReport.totCallbackErrors + " errors inside callbacks (these might be important)"; + } + if (DOTween.safeModeReport.totUnsetErrors > 0) { + s += "\n- " + DOTween.safeModeReport.totUnsetErrors + " undetermined errors (these might be important)"; + } + Debugger.LogSafeModeReport(s); + } + } + // DOTween.initialized = false; // DOTween.instance = null; if (DOTween.instance == this) DOTween.instance = null; diff --git a/_DOTween.Assembly/DOTween/Core/Debugger.cs b/_DOTween.Assembly/DOTween/Core/Debugger.cs index 75339db..4be6bae 100644 --- a/_DOTween.Assembly/DOTween/Core/Debugger.cs +++ b/_DOTween.Assembly/DOTween/Core/Debugger.cs @@ -41,11 +41,18 @@ namespace DG.Tweening.Core public static void LogReport(object message) { - message = string.Format("{0} REPORT ► {1}", _LogPrefix, message); + message = string.Format("{0} REPORT ► {1}", _LogPrefix, message); if (DOTween.onWillLog != null && !DOTween.onWillLog(LogType.Log, message)) return; Debug.Log(message); } + public static void LogSafeModeReport(object message) + { + message = string.Format("{0} SAFE MODE ► {1}", _LogPrefix, message); + if (DOTween.onWillLog != null && !DOTween.onWillLog(LogType.Log, message)) return; + Debug.LogWarning(message); + } + public static void LogInvalidTween(Tween t) { LogWarning("This Tween has been killed and is now invalid"); diff --git a/_DOTween.Assembly/DOTween/Core/SafeModeReport.cs b/_DOTween.Assembly/DOTween/Core/SafeModeReport.cs new file mode 100644 index 0000000..6f3cdff --- /dev/null +++ b/_DOTween.Assembly/DOTween/Core/SafeModeReport.cs @@ -0,0 +1,46 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2019/07/24 13:45 +// License Copyright (c) Daniele Giardini +// This work is subject to the terms at http://dotween.demigiant.com/license.php + +namespace DG.Tweening.Core +{ + internal struct SafeModeReport + { + internal enum SafeModeReportType + { + Unset, + TargetOrFieldMissing, + Callback, + StartupFailure + } + + public int totMissingTargetOrFieldErrors { get; private set; } + public int totCallbackErrors { get; private set; } + public int totStartupErrors { get; private set; } + public int totUnsetErrors { get; private set; } + + public void Add(SafeModeReportType type) + { + switch (type) { + case SafeModeReportType.TargetOrFieldMissing: + totMissingTargetOrFieldErrors++; + break; + case SafeModeReportType.Callback: + totCallbackErrors++; + break; + case SafeModeReportType.StartupFailure: + totStartupErrors++; + break; + default: + totUnsetErrors++; + break; + } + } + + public int GetTotErrors() + { + return totMissingTargetOrFieldErrors + totCallbackErrors + totStartupErrors + totUnsetErrors; + } + } +} \ No newline at end of file diff --git a/_DOTween.Assembly/DOTween/Core/TweenerCore.cs b/_DOTween.Assembly/DOTween/Core/TweenerCore.cs index cd4f005..8ee9fac 100644 --- a/_DOTween.Assembly/DOTween/Core/TweenerCore.cs +++ b/_DOTween.Assembly/DOTween/Core/TweenerCore.cs @@ -240,6 +240,7 @@ namespace DG.Tweening.Core tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); } catch { // Target/field doesn't exist anymore: kill tween + DOTween.safeModeReport.Add(SafeModeReport.SafeModeReportType.TargetOrFieldMissing); return true; } } else { diff --git a/_DOTween.Assembly/DOTween/DOTween.cs b/_DOTween.Assembly/DOTween/DOTween.cs index ee0e5cb..85d1103 100644 --- a/_DOTween.Assembly/DOTween/DOTween.cs +++ b/_DOTween.Assembly/DOTween/DOTween.cs @@ -34,7 +34,7 @@ namespace DG.Tweening public class DOTween { /// DOTween's version - public static readonly string Version = "1.2.260"; // Last version before modules: 1.1.755 + public static readonly string Version = "1.2.265"; // Last version before modules: 1.1.755 /////////////////////////////////////////////// // Options //////////////////////////////////// @@ -118,6 +118,7 @@ namespace DG.Tweening public static DOTweenComponent instance; internal static int maxActiveTweenersReached, maxActiveSequencesReached; // Controlled by DOTweenInspector if showUnityEditorReport is active + internal static SafeModeReport safeModeReport; // Used to store how many safe mode errors are captured in the editor internal static readonly List GizmosDelegates = new List(); // Can be used by other classes to call internal gizmo draw methods internal static bool initialized; // Can be set to false by DOTweenComponent OnDestroy internal static bool isQuitting; // Set by DOTweenComponent when the application is quitting diff --git a/_DOTween.Assembly/DOTween/DOTween.csproj b/_DOTween.Assembly/DOTween/DOTween.csproj index 1f0ff25..910cdd7 100644 --- a/_DOTween.Assembly/DOTween/DOTween.csproj +++ b/_DOTween.Assembly/DOTween/DOTween.csproj @@ -89,6 +89,7 @@ + diff --git a/_DOTween.Assembly/DOTween/Tween.cs b/_DOTween.Assembly/DOTween/Tween.cs index 29560e4..925cdc5 100644 --- a/_DOTween.Assembly/DOTween/Tween.cs +++ b/_DOTween.Assembly/DOTween/Tween.cs @@ -285,6 +285,7 @@ namespace DG.Tweening "An error inside a tween callback was silently taken care of ({0}) ► {1}\n\n{2}\n\n", e.TargetSite, e.Message, e.StackTrace )); } + DOTween.safeModeReport.Add(SafeModeReport.SafeModeReportType.Callback); return false; // Callback error } } else callback(); @@ -301,6 +302,7 @@ namespace DG.Tweening "An error inside a tween callback was silently taken care of ({0}) ► {1}", e.TargetSite, e.Message )); } + DOTween.safeModeReport.Add(SafeModeReport.SafeModeReportType.Callback); return false; // Callback error } } else callback(param); diff --git a/_DOTween.Assembly/DOTween/Tweener.cs b/_DOTween.Assembly/DOTween/Tweener.cs index 655ee08..ec37609 100644 --- a/_DOTween.Assembly/DOTween/Tweener.cs +++ b/_DOTween.Assembly/DOTween/Tweener.cs @@ -139,6 +139,7 @@ namespace DG.Tweening "Tween startup failed (NULL target/property - {0}): the tween will now be killed ► {1}", e.TargetSite, e.Message )); } + DOTween.safeModeReport.Add(SafeModeReport.SafeModeReportType.StartupFailure); return false; // Target/field doesn't exist: kill tween } } else t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); @@ -203,6 +204,7 @@ namespace DG.Tweening } catch { // Target/field doesn't exist: kill tween TweenManager.Despawn(t); + DOTween.safeModeReport.Add(SafeModeReport.SafeModeReportType.TargetOrFieldMissing); return null; } } else t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); diff --git a/_DOTween.Assembly/bin/DOTween.dll b/_DOTween.Assembly/bin/DOTween.dll index 2ecea90..588e4e4 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 9229e21..c9ea9d6 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 82bdc27..77fa70f 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 9b1c796..915545c 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 ae7d18a..b3f3dae 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 3e1db8d..ed57eca 100644 Binary files a/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll.mdb and b/_DOTween.Assembly/bin/Editor/DOTweenUpgradeManager.dll.mdb differ