Over Time Helper
The OverTimeHelper
class provides functionality for calculating value transitions over time using various motion methods. This class can be used in different scripts, not just node scripts, and is part of the Jungle.Extensions
namespace.
Overview​
The OverTimeHelper
class includes functionalities for:
- Calculating float, Vector2, Vector3, Quaternion, and Color values over time
- Determining the progress of these values towards a target
- Enabling or disabling the calculations
- Choosing between different motion calculation methods
Properties​
enabled
​
public bool enabled
True if this Over Time Helper is enabled. Used only for the inspector.
scaledTime
​
public bool scaledTime
Set true if the calculation should use scaled delta time.
rate
​
public float rate
Time scale rate.
method
​
public OverTimeHelper.Motion method
Motion calculation method.
IsDone
​
public bool IsDone { get; }
Returns true if the calculation is done or if the transition is not enabled.
Default
​
public static OverTimeHelper Default { get; }
Gets the default OverTimeHelper
instance with Lerp motion and a rate of 1.
Methods​
OverTimeHelper
​
public OverTimeHelper(bool enabled, bool scaledTime, float rate, Motion method, float precision = 0.01f)
Initializes a new instance of the OverTimeHelper
class.
Parameters​
enabled
: Whether the helper is enabled.scaledTime
: Whether to use scaled delta time.rate
: The time scale rate.method
: The motion calculation method.precision
: The precision for determining if the calculation is done (default is 0.01f).
SetFloatOverTime
​
public float SetFloatOverTime(float currentValue, float targetValue)
Smoothly transitions the current float value towards the target float value over time using the specified motion method.
Parameters​
currentValue
: The current value.targetValue
: The target value.
Returns​
The new float value after applying the transition for the current frame.
SetVector2OverTime
​
public Vector2 SetVector2OverTime(Vector2 currentValue, Vector2 targetValue)
Smoothly transitions the current Vector2 value towards the target Vector2 value over time using the specified motion method.
Parameters​
currentValue
: The current value.targetValue
: The target value.
Returns​
The new Vector2 value after applying the transition for the current frame.
SetVector3OverTime
​
public Vector3 SetVector3OverTime(Vector3 currentValue, Vector3 targetValue)
Smoothly transitions the current Vector3 value towards the target Vector3 value over time using the specified motion method.
Parameters​
currentValue
: The current value.targetValue
: The target value.
Returns​
The new Vector3 value after applying the transition for the current frame.
SetQuaternionOverTime
​
public Quaternion SetQuaternionOverTime(Quaternion currentValue, Quaternion targetValue)
Smoothly transitions the current Quaternion value towards the target Quaternion value over time using the specified motion method.
Parameters​
currentValue
: The current value.targetValue
: The target value.
Returns​
The new Quaternion value after applying the transition for the current frame.
SetColorOverTime
​
public Color SetColorOverTime(Color currentValue, Color targetValue)
Smoothly transitions the current color value towards the target color value over time using the specified motion method.
Parameters​
currentValue
: The current color value.targetValue
: The target color value.
Returns​
The new color value after applying the transition for the current frame.
GetFloatProgress
​
public static float GetFloatProgress(float current, float target, float original)
Returns the progress of a float value over time (0 - 1).
Parameters​
current
: The current value.target
: The target value.original
: The original value.
Returns​
The progress as a float between 0 and 1.
GetVector2Progress
​
public static float GetVector2Progress(Vector2 current, Vector2 target, Vector2 original)
Returns the progress of a Vector2 value over time (0 - 1).
Parameters​
current
: The current value.target
: The target value.original
: The original value.
Returns​
The progress as a float between 0 and 1.
GetVector3Progress
​
public static float GetVector3Progress(Vector3 current, Vector3 target, Vector3 original)
Returns the progress of a Vector3 value over time (0 - 1).
Parameters​
current
: The current value.target
: The target value.original
: The original value.
Returns​
The progress as a float between 0 and 1.
GetQuaternionProgress
​
public static float GetQuaternionProgress(Quaternion current, Quaternion target, Quaternion original)
Returns the progress of a Quaternion value over time (0 - 1).
Parameters​
current
: The current value.target
: The target value.original
: The original value.
Returns​
The progress as a float between 0 and 1.
GetColorProgress
​
public static float GetColorProgress(Color current, Color target, Color original)
Returns the progress of a Color value over time (0 - 1).
Parameters​
current
: The current color value.target
: The target color value.original
: The original color value.
Returns​
The progress as a float between 0 and 1.
Enumerations​
Motion
​
Represents the motion calculation methods.
Translate
: UsesMathf.MoveTowards
orVector3.MoveTowards
.Lerp
: UsesMathf.Lerp
orVector3.Lerp
.Slerp
: UsesQuaternion.Slerp
.SmoothDamp
: UsesMathf.SmoothDamp
orVector3.SmoothDamp
.
Example​
Here is an example of how to use the OverTimeHelper
class to smoothly transition a Vector3
value over time:
using System;
using Jungle;
using UnityEngine;
// Over Time Helper namespace
using Jungle.Extensions;
[NodeProperties(
Title = "Set Position",
Description = "Sets the inputted transform's position."
)]
[IONode(
InputPortName = "Set",
OutputPortName = "Done",
OutputPortType = typeof(Transform)
)]
public class SetPositionNode : IONode<Transform>
{
// The target position to set the transform to
[SerializeField]
private Vector3 position;
// The `OverTimeHelper` instance
[SerializeField]
private OverTimeHelper overTime = OverTimeHelper.Default;
private Transform _transform;
private Vector3 _originalPosition;
protected override void OnStart(Transform transform)
{
_transform = transform;
// Save the original position to a variable for the "GetProgress" method call
_originalPosition = _transform.position;
}
protected override void OnUpdate()
{
// Gradually updates the transform's position towards the target position
_transform.position = overTime.SetVector3OverTime(_transform.position, position);
// Sets `IsDone` to true when the current position matches the target position
if (overTime.IsDone)
{
CallAndStop(_transform);
}
}
public override float GetProgress()
{
// This will return a value between 0 (no progress) and 1 (complete progress)
return OverTimeHelper.GetVector3Progress(_transform.position, position, _originalPosition);
}
}