Engine

NumberSequence

Show Deprecated

The NumberSequence data type represents a series of number values from 0 to 1. The number values are expressed using the NumberSequenceKeypoint type. This type is used in properties such as ParticleEmitter.Size and Beam.Transparency to define a numerical change over time.

Equality

Two NumberSequence objects are equivalent only if the values of their NumberSequenceKeypoint are equivalent, even if both would result in similar graphs.

Evaluation

The NumberSequence type does not have a built-in method for getting the value at a certain time/point because keypoints can have random envelopes. However, assuming the envelope values of your keypoints are all 0, you can use the following function to evaluate at a specific time.


local function evalNumberSequence(sequence: NumberSequence, time: number)
-- If time is 0 or 1, return the first or last value respectively
if time == 0 then
return sequence.Keypoints[1].Value
elseif time == 1 then
return sequence.Keypoints[#sequence.Keypoints].Value
end
-- Otherwise, step through each sequential pair of keypoints
for i = 1, #sequence.Keypoints - 1 do
local currKeypoint = sequence.Keypoints[i]
local nextKeypoint = sequence.Keypoints[i + 1]
if time >= currKeypoint.Time and time < nextKeypoint.Time then
-- Calculate how far alpha lies between the points
local alpha = (time - currKeypoint.Time) / (nextKeypoint.Time - currKeypoint.Time)
-- Return the value between the points using alpha
return currKeypoint.Value + (nextKeypoint.Value - currKeypoint.Value) * alpha
end
end
end
local numberSequence = NumberSequence.new{
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(0.5, 1),
NumberSequenceKeypoint.new(1, 0),
}
print(evalNumberSequence(numberSequence, 0.65)) --> 0.7

Summary

Constructors

Properties

Constructors

new

Parameters

new

Parameters

n0: number
n1: number

new

Parameters

Keypoints: Array

Properties

Keypoints

An array containing NumberSequenceKeypoint values for the NumberSequence.