- Fixed: when a new tween is created at the last frame of
ToYieldInstruction()
, coroutine will wait for the wrong tween. Bug report: #126
- Fixed: sequence.Group() doesn't work correctly after ChainCallback() and InsertCallback(). More info: #112
- Add
Easing.Evaluate(float interpolationFactor, Ease ease)
method that gives the ability to evaluate standard eases manually. Previously this method was experimental.
- Fixed: destroying target of a paused tween doesn't release the tween. Bug report: #4 (comment)
- Fixed: UPM examples are not compatible with Input System (New).
- Implement GetHashCode() and IEquatable for Tween and Sequence.
- Change internal tween from 'int' to 'long', which reduces the likelihood of id collisions in apps that run for months or years. Feature request: https://discussions.unity.com/t/926420/291
- Add 'setImmediately' and 'isRelative' parameters to From() method in Adapter. Feature request: https://discussions.unity.com/t/926420/299
- Fixed: Demo scene doesn't work with Input System (New). Bug report: #85
- Fixed (minor): calling Sequence.Complete() when the sequence is in Stater.After doesn't complete the sequence immediately.
- Fixed: Tween.TextMaxVisibleCharacters() is not available in Unity 6 because Text Mesh Pro was merged with UGUI.
- Fixed: nested sequence updates its children even when it doesn't update self. This resulted in multiple chained jumps to override the first jump. Bug report: https://forum.unity.com/threads/primetween-high-performance-animations-and-sequences.1479609/page-6#post-9802575
- Fixed: Tween.TextMaxVisibleCharacters() throws assertion exception.
- Fixed: interpolation factor can be calculated incorrectly when cyclic tween is not started yet. Bug report: #63
- Fixed: don't log an error when the child animation setting is the same as the parent Sequence's setting. Bug report: #66
- Fixed: enabling PRIME_TWEEN_SAFETY_CHECKS in IL2CPP builds throws exception. Bug report: #65
- Fixed: adding experimental define produces compilation error.
- Fixed: Tween.GetTweenCount(target) doesn't work for tweens inside sequences. Bug report: #60
- Fixed: ShakeSettings.strength property incorrectly displayed in narrow Inspector.
- Fixed: sometimes automatic installation fails and users have to press the 'PrimeTweenInstaller/Install' button to fix it.
- Fixed: review request should appear only after the user presses the Update button in Package Manager. Bug report: #58
- Add Tween.VisualElementColor/VisualElementBackgroundColor() to animate colors of UIToolkit components.
- Experimental: add 'double' numeric type support for Tween.Custom(). This feature requires the PRIME_TWEEN_EXPERIMENTAL define in 'Scripting Define Symbols'.
- Improve documentation.
- Add sequence.Pause/Play() to adapter.
- If sequence child pauses the parent sequence, stop updating Sequence immediately. Other tweens after the current one will not receive an update.
- Add experimental Easing.Evaluate(float, Ease).
- Add DOVirtual.EasedValue() to adapter.
- Add custom Ease.OutBounce strength support to adapter.
- The 'warnEndValueEqualsCurrent' setting is now applied on a per-tween basis. Feature request: #48
- Fixed: calling PrimeTweenConfig.SetTweensCapacity() before PrimeTweenManager is created throws an exception in Editor.
- Optimize duplicated shakes on the same target.
- Add sequence.Insert() and sequence.InsertCallback() APIs. Feature request: #33
- Add Asset Store review request when updating PrimeTween to a new version.
- Fixed: completing an infinite tween (cycles == -1) evaluates the interpolation factor to -1 and produces wrong animated value. Bug report: #38
- sequence.Complete() now respects the 'cycles' and 'cycleMode' and works similarly to tween.Complete(). Previuosly, sequence.Complete() completed only the current cycle.
- Remove Tween.PositionOutBounce() experimental API. Use Easing.BounceExact(float amplitude) instead.
- Adapter: add 'loopType' parameter to sequence.SetLoops(); add sequence.SetEase(); add SetLink().
- Fixed: sequence.Group() after seqence.Chain() produces a wrong sequence duration (too short) if a grouped tween is longer than the previously chained tween.
- Fixed: sequence.Group(sequence) groups with the first tween in sequence, but should group with the previous tween (or sequence) instead. Now it works the same way as sequence.Group(tween).
- Fixed: sequence.OnComplete() should be called when all sequence children are completed. Previously it was called before the last children update.
- Fixed: setting 'elapsedTime' or 'progress' recursively from Tween.Custom() or tween.OnUpdate() leads to a crash because of stack overflow.
- Remove the 'useUnscaledTime' parameter from sequence.ChainDelay(). The parent Sequence controls the 'useUnscaledTime' of all children tweens and sequences, so this parameter is not needed.
- Add more detailed warnings and errors.
- Fixed: Demo.cs causes compilation error, preventing PrimeTween to install correctly.
- Fixed: ReusableTween.updateSequence() throws AssertionException when a sequence is running during scene change in the Editor. Bug report: #32
- PrimeTween can now print tween's creation stack trace when an error occurs to make the debugging process a lot easier. This feature requires the 'PRIME_TWEEN_SAFETY_CHECKS' define.
- Add TypewriterAnimatorExample.TypewriterAnimationByWords() to the Demo scene to show an example of how to animate text word-by-word.
- Fixed: shake doesn't restore the position to the initial value if shake's period is less than duration.
- Add Tween.TextMaxVisibleCharacters(TMP_Text target, ...) method to support simple typewriter animation. Please see the 'Demo.TypewriterAnimatorExample.cs' for a more complex example of text animation that makes pauses after punctuations.
- Fixed: don't allow to set invalid elapsedTimeTotal and progressTotal values to infinite tweens.
- Tween/Sequence.timeScale can now be negative to support backward movement (rewind).
- Add 'useFixedUpdate' parameter to update a tween or sequence in the FixedUpdate().
- Release Parametric Easing to production (previously this feature was experimental): https://github.com/KyryloKuzyk/PrimeTween#parametric-easing
- The default 'easeBetweenShakes' is now Ease.OutQuad instead of Ease.OutSine.
- The 'useUnscaledTime' parameter now doesn't prevent the abrupt delta time changes when unpausing the Editor to be consistent with the official Unity's behavior.
- Fixed: shakes log the 'warnEndValueEqualsCurrent' warning if object's local position/rotation is Vector3.zero/Quaternion.identity.
- Add Sequence.OnComplete() API.
- Fixed: nesting multiple empty Sequences may lead to a StackOverflow exception in some cases.
- Fixed: enabling/disabling UI.Slider in Demo scene constantly allocates GC.
- Add 'PrimeTweenConfig.warnEndValueEqualsCurrent' setting to warn if the 'endValue' equals to the current animated value.
- Fixed: PrimeTween may log warnings in Editor when exiting Play Mode.
- Sequences now support CycleMode.Yoyo and CycleMode.Rewind with the help of Sequence.Create(numCycles, CycleMode cycleMode).
- Sequences now support easing that can be applied to the whole Sequence with the help of Sequence.Create(..., Ease sequenceEase).
- 'elapsedTime', 'elapsedTimeTotal', 'progress', and 'progressTotal' properties now have setters, so it's possible to manually set the elapsed time of tweens and sequences. Please see the Demo scene for usage example.
- Parent Sequence now controls the isPaused, timeScale, and useUnscaledTime of all its children tweens and sequences.
- Add a warning when tween.SetRemainingCycles() is called on Tween.Delay(). More info: https://discussions.unity.com/t/926420/101.
- It's no longer allowed to Stop()/Complete() a tween inside a Sequence. Please Stop()/Complete() the parent Sequence instead.
- It's no longer allowed to await or use the '.ToYieldInstruction()' on tween inside a Sequence. Please use the parent Sequence instead.
- It's no longer allowed to add tweens to a started Sequence.
- It's now allowed to call Tween.StopAll(), Tween.CompleteAll() and Tween.SetPausedAll() from onValueChange, OnUpdate() and OnComplete().
- SetCycles() was renamed to SetRemainingCycles(). To set Sequence cycles, use Sequence.Create(cycles: numCycles).
- Remove 'minExpected' and 'numMaxExpected' parameters from Tween.StopAll/CompleteAll/SetPausedAll() methods.
- Fixed: Tween.GetTweensCount() may return the incorrect result if called from the OnComplete() callback.
- Fixed: MeasureMemoryAllocations.cs example script doesn't ignore its own allocations.
- Fixed: the Demo scene doesn't compile if PrimeTween is not installed.
- Fixed: Quaternion tweens don't work correctly with CycleMode.Incremental. Bug report: #19
- Fixed: the first time Sequence is created, it may play incorrectly in some cases.
- Add methods to animate RectTransform.offsetMin/offsetMax.
- Add sequence.timeScale to set the timeScale for all tweens in a Sequence.
- Add Tween.TweenTimeScale(Sequence) method to animate sequence.timeScale over time.
- Fixed: Unity's Time.unscaledDeltaTime reports the wrong value after unpausing a scene in the Editor.
- Fixed: passing a null UnityEngine.Object to 'Tween.' methods causes null ref exception in PrimeTweenManager.Update(). Bug report: #13
- Experimental: add parametric Easing.Bounce(float strength) and Easing.BounceExact(float magnitude). BounceExact allows to specify the exact bounce amplitude in meters/degrees regardless of the total tween distance. This feature requires the PRIME_TWEEN_EXPERIMENTAL define.
- Add From(fromValue) method to adapter.
- Support parametric OutBack and OutElastic eases in the adapter.
- Easing.Elastic: normalize the oscillation period by duration; this ensures the tween has the same period regardless of duration.
- Tween.GlobalTimeScale(), Tween.TweenTimeScale(), and tween.timeScale are no longer experimental.
- Add tween.OnUpdate() to execute a custom callback when the animated value is updated.
- Experimental: add Easing.Overshoot(float strength) and Easing.Elastic(float strength, float normalizedPeriod) methods to customize Ease.OutBounce and Ease.OutElastic.
- Tween methods now accept Easing struct instead of AnimationCurve. You can continue using AnimationCurve as before because it is implicitly converted to the Easing struct.
- Ease.OutElastic now works the same as the most popular js and C# tween libraries.
- Add PrimeTween.Demo namespace to Demo scripts.
- Add Tween.XxxAtSpeed() methods to create animations based on speed instead of duration.
- Add Tween.GetTweensCount() method.
- Improve performance.
- Tween.StopAll(null) and Tween.CompleteAll(null) now immediately clean the internal tweens list, so PrimeTweenConfig.SetTweensCapacity() can be called immediately after that.
- Fixed: Tween.ShakeLocalRotation() doesn't work correctly.
- Tween.Delay(), tween.OnComplete(), and sequence.ChainDelay() methods now accept the 'warnIfTargetDestroyed' parameter to control whether PrimeTween should log the error about tween's target destruction. More info: #4
- Fix compilation error with PRIME_TWEEN_DOTWEEN_ADAPTER.
- Add 'UI Toolkit' support (com.unity.modules.uielements). All animations from the ITransitionAnimations interface are supported.
- Experimental: add Tween.PositionOutBounce/LocalPositionOutBounce() methods. These methods add the ability to fine-tune the Ease.OutBounce by specifying the exact bounce amplitude, number of bounces, and bounce stiffness.
- Log error when properties of dead tweens and sequences are used.
- Rename 'Tween.LocalScale()' methods to 'Tween.Scale()'.
- Rename 'IsAlive' to 'isAlive'.
- Rename 'IsPaused' to 'isPaused'.
- Experimental: add tween.timeScale; Tween.TweenTimeScale(); Tween.GlobalTimeScale().
- Fixed: onComplete callback should not be called if Tween.OnComplete(target, ...) has been destroyed.
- Fixed: 'additive' tweens don't work correctly.
- Warn if PrimeTween's API is used in Edit mode (when the scene is not running).
- Experimental: additive tweens.
- Move Tween.Custom() 'AnimationCurve' parameter after 'onValueChange' parameter to be consistent with other overloads.
- Move Tween.ShakeCustom/PunchCustom() 'startValue' parameter before 'ShakeSettings' parameter to be consistent with Tween.Custom() methods.
- Normalize Quaternion passed to animation methods.
- Sequence nesting: sequences can be grouped/chained to other sequences.
- Add startValue/endValue overload to all animation methods.
- Add Tween.ShakeCamera().
- Measure memory allocations in the Demo scene.
- All tweens can now be viewed in PrimeTweenManager's inspector.
- Tweens are now frame perfect. That is, on a stable framerate, tweens take a deterministic number of frames.
- Add a version of Tween.Custom() that doesn't require passing a tween's target. Please note that this version will most probably generate garbage because of closure allocation.
- Add Tween.EulerAngles/LocalEulerAngles methods to animate rotation beyond 180 degrees.
- Add Demo scene.
- Remove Tween.RotationXYZ/LocalRotationXYZ methods because manipulating Euler angles may lead to unexpected results. More info: https://docs.unity3d.com/ScriptReference/Transform-eulerAngles.html
- Tween.Rotation/LocalRotation methods now convert the Vector3 parameter to Quaternion instead of treating it as Euler angles.
- Property drawers don't work correctly with copy-pasting and prefabs.
- Fixed: samples asmdef has dependency duplication that leads to compilation error.
- Fixed: custom curve should not be clamped at the start or the end of the animation.
- Animate anything (UI, Transform, Material, etc.) with zero allocations.
- Group animations in Sequences with zero allocations.
- Shake anything.
- Everything is tweakable from the Inspector.
- Async/await support.
- Coroutines support.