From 5778ac6dcc1c49ef565446af4d3869c3189e06df Mon Sep 17 00:00:00 2001 From: Yoshiteru Takeshita Date: Tue, 17 Oct 2017 12:13:27 +0900 Subject: [PATCH 1/3] Add showErrorLog flag. --- .../DOTween/Core/DOTweenSettings.cs | 1 + _DOTween.Assembly/DOTween/Core/TweenerCore.cs | 34 +++++++-- _DOTween.Assembly/DOTween/DOTween.cs | 9 +++ _DOTween.Assembly/DOTween/Tweener.cs | 74 +++++++++++++++---- 4 files changed, 95 insertions(+), 23 deletions(-) diff --git a/_DOTween.Assembly/DOTween/Core/DOTweenSettings.cs b/_DOTween.Assembly/DOTween/Core/DOTweenSettings.cs index 33fd8528..29e87c8f 100644 --- a/_DOTween.Assembly/DOTween/Core/DOTweenSettings.cs +++ b/_DOTween.Assembly/DOTween/Core/DOTweenSettings.cs @@ -11,6 +11,7 @@ public class DOTweenSettings : ScriptableObject public const string AssetName = "DOTweenSettings"; public bool useSafeMode = true; + public bool showErrorLog = true; public float timeScale = 1; public bool useSmoothDeltaTime; public float maxSmoothUnscaledTime = 0.15f; // Used if useSmoothDeltaTime is TRUE diff --git a/_DOTween.Assembly/DOTween/Core/TweenerCore.cs b/_DOTween.Assembly/DOTween/Core/TweenerCore.cs index d2b8dad7..4bc3931b 100644 --- a/_DOTween.Assembly/DOTween/Core/TweenerCore.cs +++ b/_DOTween.Assembly/DOTween/Core/TweenerCore.cs @@ -173,15 +173,35 @@ internal override bool Startup() internal override bool ApplyTween(float prevPosition, int prevCompletedLoops, int newCompletedSteps, bool useInversePosition, UpdateMode updateMode, UpdateNotice updateNotice) { float updatePosition = useInversePosition ? duration - position : position; - if (DOTween.useSafeMode) { - try { - tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); - } catch { - // Target/field doesn't exist anymore: kill tween - return true; + + if(DOTween.showErrorLog) { + if (DOTween.useSafeMode) { + try { + tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); + } catch(Exception e) { + Debugger.LogError(e); + // Target/field doesn't exist anymore: kill tween + return true; + } + } else { + try { + tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); + } catch (Exception e) { + Debugger.LogError(e); + throw e; + } } } else { - tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); + if (DOTween.useSafeMode) { + try { + tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); + } catch { + // Target/field doesn't exist anymore: kill tween + return true; + } + } else { + tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); + } } return false; } diff --git a/_DOTween.Assembly/DOTween/DOTween.cs b/_DOTween.Assembly/DOTween/DOTween.cs index 12708871..516405cd 100644 --- a/_DOTween.Assembly/DOTween/DOTween.cs +++ b/_DOTween.Assembly/DOTween/DOTween.cs @@ -37,10 +37,18 @@ public class DOTween /////////////////////////////////////////////// // Options //////////////////////////////////// + /// If TRUE (default) makes tweens slightly slower but safer, automatically taking care of a series of things /// (like targets becoming null while a tween is playing). /// Default: TRUE public static bool useSafeMode = true; + + /// If TRUE (default) show all exceptions occurred in tweening to log console. + /// Showing exception costs a bit.If you care about performance, make showErrorLog=false in production. + /// + public static bool showErrorLog = true; + + /// 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. @@ -177,6 +185,7 @@ static IDOTweenInit Init(DOTweenSettings settings, bool? recycleAllByDefault, bo if (useSafeMode == null) DOTween.useSafeMode = settings.useSafeMode; if (logBehaviour == null) DOTween.logBehaviour = settings.logBehaviour; if (recycleAllByDefault == null) DOTween.defaultRecyclable = settings.defaultRecyclable; + DOTween.showErrorLog = settings.showErrorLog; DOTween.timeScale = settings.timeScale; DOTween.useSmoothDeltaTime = settings.useSmoothDeltaTime; DOTween.maxSmoothUnscaledTime = settings.maxSmoothUnscaledTime; diff --git a/_DOTween.Assembly/DOTween/Tweener.cs b/_DOTween.Assembly/DOTween/Tweener.cs index 64804e5e..03b6f8ed 100644 --- a/_DOTween.Assembly/DOTween/Tweener.cs +++ b/_DOTween.Assembly/DOTween/Tweener.cs @@ -126,14 +126,34 @@ internal static bool DoStartup(TweenerCore( if (!DOStartupSpecials(t)) return null; } if (snapStartValue) { - // Reassign startValue with current target's value - if (DOTween.useSafeMode) { - try { - t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); - } catch { - // Target/field doesn't exist: kill tween - TweenManager.Despawn(t); - return null; + if (DOTween.showErrorLog) { + // Reassign startValue with current target's value + if (DOTween.useSafeMode) { + try { + t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); + } catch (System.Exception e) { + Debugger.LogError(e); + // Target/field doesn't exist: kill tween + TweenManager.Despawn(t); + return null; + } + } else { + try { + t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); + } catch (System.Exception e) { + Debugger.LogError(e); + throw e; + } } - } else t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); + + } else { + // Reassign startValue with current target's value + if (DOTween.useSafeMode) { + try { + t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); + } catch { + // Target/field doesn't exist: kill tween + TweenManager.Despawn(t); + return null; + } + } else t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); + } } t.tweenPlugin.SetChangeValue(t); } From 724225cb1f03a2eb037dec05b2836b225b2bba20 Mon Sep 17 00:00:00 2001 From: Yoshiteru Takeshita Date: Tue, 17 Oct 2017 12:20:31 +0900 Subject: [PATCH 2/3] Change log level to warning --- _DOTween.Assembly/DOTween/Core/TweenerCore.cs | 4 ++-- _DOTween.Assembly/DOTween/Tweener.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_DOTween.Assembly/DOTween/Core/TweenerCore.cs b/_DOTween.Assembly/DOTween/Core/TweenerCore.cs index 4bc3931b..3e8f0442 100644 --- a/_DOTween.Assembly/DOTween/Core/TweenerCore.cs +++ b/_DOTween.Assembly/DOTween/Core/TweenerCore.cs @@ -179,7 +179,7 @@ internal override bool ApplyTween(float prevPosition, int prevCompletedLoops, in try { tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); } catch(Exception e) { - Debugger.LogError(e); + Debugger.LogWarning(e); // Target/field doesn't exist anymore: kill tween return true; } @@ -187,7 +187,7 @@ internal override bool ApplyTween(float prevPosition, int prevCompletedLoops, in try { tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); } catch (Exception e) { - Debugger.LogError(e); + Debugger.LogWarning(e); throw e; } } diff --git a/_DOTween.Assembly/DOTween/Tweener.cs b/_DOTween.Assembly/DOTween/Tweener.cs index 03b6f8ed..86140090 100644 --- a/_DOTween.Assembly/DOTween/Tweener.cs +++ b/_DOTween.Assembly/DOTween/Tweener.cs @@ -214,7 +214,7 @@ internal static Tweener DoChangeEndValue( try { t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); } catch (System.Exception e) { - Debugger.LogError(e); + Debugger.LogWarning(e); // Target/field doesn't exist: kill tween TweenManager.Despawn(t); return null; @@ -223,7 +223,7 @@ internal static Tweener DoChangeEndValue( try { t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); } catch (System.Exception e) { - Debugger.LogError(e); + Debugger.LogWarning(e); throw e; } } From bc0c6a72dafeb9ee984d099057befad0d3880c33 Mon Sep 17 00:00:00 2001 From: Yoshiteru Takeshita Date: Mon, 20 Nov 2017 11:56:20 +0900 Subject: [PATCH 3/3] To DRY --- _DOTween.Assembly/DOTween/Core/TweenerCore.cs | 35 +++----- _DOTween.Assembly/DOTween/Tweener.cs | 83 +++++++------------ 2 files changed, 40 insertions(+), 78 deletions(-) diff --git a/_DOTween.Assembly/DOTween/Core/TweenerCore.cs b/_DOTween.Assembly/DOTween/Core/TweenerCore.cs index 3e8f0442..4524805e 100644 --- a/_DOTween.Assembly/DOTween/Core/TweenerCore.cs +++ b/_DOTween.Assembly/DOTween/Core/TweenerCore.cs @@ -174,33 +174,20 @@ internal override bool ApplyTween(float prevPosition, int prevCompletedLoops, in { float updatePosition = useInversePosition ? duration - position : position; - if(DOTween.showErrorLog) { - if (DOTween.useSafeMode) { - try { - tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); - } catch(Exception e) { - Debugger.LogWarning(e); - // Target/field doesn't exist anymore: kill tween - return true; - } - } else { - try { - tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); - } catch (Exception e) { - Debugger.LogWarning(e); - throw e; - } + if (DOTween.useSafeMode) { + try { + tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); + } catch (Exception e) { + if(DOTween.showErrorLog) Debugger.LogWarning(e); + // Target/field doesn't exist anymore: kill tween + return true; } } else { - if (DOTween.useSafeMode) { - try { - tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); - } catch { - // Target/field doesn't exist anymore: kill tween - return true; - } - } else { + try { tweenPlugin.EvaluateAndApply(plugOptions, this, isRelative, getter, setter, updatePosition, startValue, changeValue, duration, useInversePosition, updateNotice); + } catch (Exception e) { + if(DOTween.showErrorLog) Debugger.LogWarning(e); + throw e; } } return false; diff --git a/_DOTween.Assembly/DOTween/Tweener.cs b/_DOTween.Assembly/DOTween/Tweener.cs index 86140090..3ffe597b 100644 --- a/_DOTween.Assembly/DOTween/Tweener.cs +++ b/_DOTween.Assembly/DOTween/Tweener.cs @@ -126,33 +126,22 @@ internal static bool DoStartup(TweenerCore( if (!DOStartupSpecials(t)) return null; } if (snapStartValue) { - if (DOTween.showErrorLog) { - // Reassign startValue with current target's value - if (DOTween.useSafeMode) { - try { - t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); - } catch (System.Exception e) { - Debugger.LogWarning(e); - // Target/field doesn't exist: kill tween - TweenManager.Despawn(t); - return null; - } - } else { - try { - t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); - } catch (System.Exception e) { - Debugger.LogWarning(e); - throw e; - } + // Reassign startValue with current target's value + if (DOTween.useSafeMode) { + try { + t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); + } catch (System.Exception e) { + if (DOTween.showErrorLog) Debugger.LogWarning(e); + // Target/field doesn't exist: kill tween + TweenManager.Despawn(t); + return null; } - } else { - // Reassign startValue with current target's value - if (DOTween.useSafeMode) { - try { - t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); - } catch { - // Target/field doesn't exist: kill tween - TweenManager.Despawn(t); - return null; - } - } else t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); + try { + t.startValue = t.tweenPlugin.ConvertToStartValue(t, t.getter()); + } catch (System.Exception e) { + if(DOTween.showErrorLog) Debugger.LogWarning(e); + throw e; + } } } t.tweenPlugin.SetChangeValue(t);