1
0
mirror of https://github.com/Cardidi/dotween-upm-fork.git synced 2025-12-20 09:16:02 +08:00

Added DOTween.ManualUpdate and UpdateType.Manual (using revised version of code by Omer Faruk Sayilir)

This commit is contained in:
Demigiant 2017-08-04 13:15:12 +02:00
parent 35920813c7
commit 33f3ff3b59
50 changed files with 155 additions and 35 deletions

View File

@ -372,6 +372,13 @@
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.
@ -2515,5 +2522,8 @@
<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>

View File

@ -372,6 +372,13 @@
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.
@ -2515,5 +2522,8 @@
<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>

View File

@ -372,6 +372,13 @@
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.
@ -2515,5 +2522,8 @@
<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>

View File

@ -8,6 +8,8 @@ public class UpdateTypes : BrainBase
public bool independentUpdate;
public float timeScale = 1;
bool runningManual = false;
void Start()
{
Time.timeScale = timeScale;
@ -16,5 +18,23 @@ public class UpdateTypes : BrainBase
targets[1].DOMoveX(5, 2).SetUpdate(UpdateType.Late, independentUpdate).SetLoops(-1, LoopType.Yoyo);
targets[2].DOMoveX(5, 2).SetUpdate(UpdateType.Fixed, independentUpdate).SetLoops(-1, LoopType.Yoyo);
targets[3].GetComponent<Rigidbody>().DOMoveX(5, 2).SetUpdate(UpdateType.Fixed, independentUpdate).SetLoops(-1, LoopType.Yoyo);
targets[4].DOMoveX(5, 2).SetUpdate(UpdateType.Manual, independentUpdate).SetLoops(-1, LoopType.Yoyo);
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) {
runningManual = !runningManual;
if (runningManual) this.StartCoroutine(CO_ManualUpdate());
else this.StopAllCoroutines();
}
}
IEnumerator CO_ManualUpdate()
{
while (true) {
yield return null;
DOTween.ManualUpdate(Time.deltaTime, Time.unscaledDeltaTime);
}
}
}

View File

@ -75,6 +75,13 @@ namespace DG.Tweening.Core
}
}
internal void ManualUpdate(float deltaTime, float unscaledDeltaTime)
{
if (TweenManager.hasActiveManualTweens) {
TweenManager.Update(UpdateType.Manual, deltaTime * DOTween.timeScale, unscaledDeltaTime * DOTween.timeScale);
}
}
// Removed to allow compatibility with Unity 5.4 and later
// void OnLevelWasLoaded()
// {

View File

@ -21,8 +21,8 @@ namespace DG.Tweening.Core
internal static int maxActive = _DefaultMaxTweeners + _DefaultMaxSequences; // Always equal to maxTweeners + maxSequences
internal static int maxTweeners = _DefaultMaxTweeners; // Always >= maxSequences
internal static int maxSequences = _DefaultMaxSequences; // Always <= maxTweeners
internal static bool hasActiveTweens, hasActiveDefaultTweens, hasActiveLateTweens, hasActiveFixedTweens;
internal static int totActiveTweens, totActiveDefaultTweens, totActiveLateTweens, totActiveFixedTweens;
internal static bool hasActiveTweens, hasActiveDefaultTweens, hasActiveLateTweens, hasActiveFixedTweens, hasActiveManualTweens;
internal static int totActiveTweens, totActiveDefaultTweens, totActiveLateTweens, totActiveFixedTweens, totActiveManualTweens;
internal static int totActiveTweeners, totActiveSequences;
internal static int totPooledTweeners, totPooledSequences;
internal static int totTweeners, totSequences; // Both active and pooled
@ -141,12 +141,21 @@ namespace DG.Tweening.Core
if (t.updateType == UpdateType.Normal) {
totActiveDefaultTweens--;
hasActiveDefaultTweens = totActiveDefaultTweens > 0;
} else if (t.updateType == UpdateType.Fixed) {
} else {
switch (t.updateType) {
case UpdateType.Fixed:
totActiveFixedTweens--;
hasActiveFixedTweens = totActiveFixedTweens > 0;
} else {
break;
case UpdateType.Late:
totActiveLateTweens--;
hasActiveLateTweens = totActiveLateTweens > 0;
break;
default: // Manual
totActiveManualTweens--;
hasActiveManualTweens = totActiveManualTweens > 0;
break;
}
}
// Assign new one
t.updateType = updateType;
@ -154,12 +163,21 @@ namespace DG.Tweening.Core
if (updateType == UpdateType.Normal) {
totActiveDefaultTweens++;
hasActiveDefaultTweens = true;
} else if (updateType == UpdateType.Fixed) {
} else {
switch (updateType) {
case UpdateType.Fixed:
totActiveFixedTweens++;
hasActiveFixedTweens = true;
} else {
break;
case UpdateType.Late:
totActiveLateTweens++;
hasActiveLateTweens = true;
break;
default: // Manual
totActiveManualTweens++;
hasActiveManualTweens = true;
break;
}
}
}
@ -178,8 +196,8 @@ namespace DG.Tweening.Core
if (t != null) Despawn(t, false);
}
ClearTweenArray(_activeTweens);
hasActiveTweens = hasActiveDefaultTweens = hasActiveLateTweens = hasActiveFixedTweens = false;
totActiveTweens = totActiveDefaultTweens = totActiveLateTweens = totActiveFixedTweens = 0;
hasActiveTweens = hasActiveDefaultTweens = hasActiveLateTweens = hasActiveFixedTweens = hasActiveManualTweens = false;
totActiveTweens = totActiveDefaultTweens = totActiveLateTweens = totActiveFixedTweens = totActiveManualTweens = 0;
totActiveTweeners = totActiveSequences = 0;
_maxActiveLookupId = _reorganizeFromId = -1;
_requiresActiveReorganization = false;
@ -263,8 +281,8 @@ namespace DG.Tweening.Core
}
ClearTweenArray(_activeTweens);
hasActiveTweens = hasActiveDefaultTweens = hasActiveLateTweens = hasActiveFixedTweens = false;
totActiveTweens = totActiveDefaultTweens = totActiveLateTweens = totActiveFixedTweens = 0;
hasActiveTweens = hasActiveDefaultTweens = hasActiveLateTweens = hasActiveFixedTweens = hasActiveManualTweens = false;
totActiveTweens = totActiveDefaultTweens = totActiveLateTweens = totActiveFixedTweens = totActiveManualTweens = 0;
totActiveTweeners = totActiveSequences = 0;
_maxActiveLookupId = _reorganizeFromId = -1;
_requiresActiveReorganization = false;
@ -801,12 +819,21 @@ namespace DG.Tweening.Core
if (t.updateType == UpdateType.Normal) {
totActiveDefaultTweens++;
hasActiveDefaultTweens = true;
} else if (t.updateType == UpdateType.Fixed) {
} else {
switch (t.updateType) {
case UpdateType.Fixed:
totActiveFixedTweens++;
hasActiveFixedTweens = true;
} else {
break;
case UpdateType.Late:
totActiveLateTweens++;
hasActiveLateTweens = true;
break;
default:
totActiveManualTweens++;
hasActiveManualTweens = true;
break;
}
}
totActiveTweens++;
@ -870,20 +897,33 @@ namespace DG.Tweening.Core
} else {
Debugger.LogRemoveActiveTweenError("totActiveDefaultTweens");
}
} else if (t.updateType == UpdateType.Fixed) {
} else {
switch (t.updateType) {
case UpdateType.Fixed:
if (totActiveFixedTweens > 0) {
totActiveFixedTweens--;
hasActiveFixedTweens = totActiveFixedTweens > 0;
} else {
Debugger.LogRemoveActiveTweenError("totActiveFixedTweens");
}
} else {
break;
case UpdateType.Late:
if (totActiveLateTweens > 0) {
totActiveLateTweens--;
hasActiveLateTweens = totActiveLateTweens > 0;
} else {
Debugger.LogRemoveActiveTweenError("totActiveLateTweens");
}
break;
default:
if (totActiveManualTweens > 0) {
totActiveManualTweens--;
hasActiveManualTweens = totActiveManualTweens > 0;
} else {
Debugger.LogRemoveActiveTweenError("totActiveManualTweens");
}
break;
}
}
totActiveTweens--;
hasActiveTweens = totActiveTweens > 0;

View File

@ -32,7 +32,7 @@ namespace DG.Tweening
public class DOTween
{
/// <summary>DOTween's version</summary>
public static readonly string Version = "1.1.625";
public static readonly string Version = "1.1.640";
///////////////////////////////////////////////
// Options ////////////////////////////////////
@ -267,6 +267,17 @@ namespace DG.Tweening
return TweenManager.Validate();
}
/// <summary>
/// Updates all tweens that are set to <see cref="UpdateType.Manual"/>.
/// </summary>
/// <param name="deltaTime">Manual deltaTime</param>
/// <param name="unscaledDeltaTime">Unscaled delta time (used with tweens set as timeScaleIndependent)</param>
public static void ManualUpdate(float deltaTime, float unscaledDeltaTime)
{
InitCheck();
instance.ManualUpdate(deltaTime, unscaledDeltaTime);
}
#endregion
// ===================================================================================

View File

@ -16,6 +16,8 @@ namespace DG.Tweening
/// <summary>Updates every frame during LateUpdate calls</summary>
Late,
/// <summary>Updates using FixedUpdate calls</summary>
Fixed
Fixed,
/// <summary>Updates using manual update calls</summary>
Manual
}
}

View File

@ -372,6 +372,13 @@
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.
@ -2515,5 +2522,8 @@
<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>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.