Roblox UtilitiesDevlHub Roblox Documentation

Class

ValueCurve

Inherits
Instance › Object
Memory category
Instances

A sorted list of time-value pairs that define a curve. Used to animate any type of value.

An instance representing a 1D value curve encoded via a sorted list of ValueCurveKeys. The shape of the interpolation curve between two keys is determined by the ValueCurveKey.Interpolation type.

Not all value types (for example, strings and other non-numerical types) may perform Linear or Cubic interpolation. These types will revert to Constant interpolation if necessary.

Properties 2#

LengthintNumber of keys in the value curve.ReadSafeReadOnlyNotReplicated
ValueTypestringRead-only value indicating the type held in this curve.ReadSafeReadOnlyNotReplicated

Length: int#

ReadOnlyNotReplicatedReadSafe

Number of keys in the value curve.

ValueType: string#

ReadOnlyNotReplicatedReadSafe

Read-only value indicating the type held in this curve, or the string "Nil" if there are no keys.

Methods 8#

GetKeyAtIndexReturns a copy of a key at a given index.
GetKeyIndicesAtTimeReturns the index of the last and first key of a period of time.
GetKeysReturns a copy of all the keys in the ValueCurve as a Luau array of ValueCurveKeys.
GetValueAtTimeSamples the value curve at a given time passed as argument.
InsertKeyAdds the key passed as an argument to this curve. If a key at the same time is found, it will be replaced.
InsertKeyValueCreates a key for the given value and inserts it at the given time. If a key at the same time is found, it will be replaced.
RemoveKeyAtIndexRemoves a given number of keys starting from a given index.
SetKeysResets this curve's keys using the ValueCurveKey array passed as an argument.

GetKeyAtIndex(index: int): ValueCurveKey#

Returns a copy of a key at a given index.

NameTypeDefaultDescription
indexintThe index in the existing set of keys held by this ValueCurve.
Returns

GetKeyIndicesAtTime(time: float): Array#

The first item in the returned array is the index of the last key with time less than or equal to time (or the lesser of either 1 or the curve length if no key was found). The second item in the returned array is the index of the first key with time greater than or equal to time (or the curve length if no key was found satisfying the inequality).

NameTypeDefaultDescription
timefloatA time during the animation. Inputs will be clamped between 0 and the time of the last key held by this ValueCurve.
Returns
  • Array — An array of two indices bracketing time: the index of the last key at or before time, and the index of the first key at or after time.

GetKeys(): Array#

Returns a copy of all the keys in the ValueCurve as a Luau array of ValueCurveKeys.

Returns

GetValueAtTime(time: float): Variant?#

Samples the value curve at a given time passed as argument.

NameTypeDefaultDescription
timefloatTime at which to sample the curve.
Returns
  • Variant? — Value of the curve at the requested time.

InsertKey(key: ValueCurveKey): Array#

Adds the key passed as an argument to this curve. If a key at the same time is found, it will be replaced. In the returned array, the first value is true if a key was added or false if a previous key was replaced; the second value is the index at which the marker was added.

If there are not yet any keys, then the key may be added. If keys exist, the type of the value must match those of existing keys; otherwise a message is printed and {false, -1} is returned.

NameTypeDefaultDescription
keyValueCurveKeyValueCurveKey to insert.
Returns
  • Array — (see description)

InsertKeyValue(time: float, value: Variant, Interpolation: KeyInterpolationMode): Array#

Creates a ValueCurveKey from the given arguments and inserts it in this curve. If a key at the same time is found, it will be replaced. In the returned array, the first value is true if a key was added or false if a previous key was replaced; the second value is the index at which the marker was added.

If there are not yet any keys, then the key may be added. If keys exist, the type of the value must match those of existing keys; otherwise a message is printed and {false, -1} is returned.

NameTypeDefaultDescription
timefloatTime at which to insert the new ValueCurveKey. - type: number
valueVariantValue of the inserted ValueCurveKey. - type: any
InterpolationKeyInterpolationModeInterpolation mode of the inserted ValueCurveKey. - type: KeyInterpolationMode
Returns
  • Array — (see description)

RemoveKeyAtIndex(startingIndex: int, count: int = 1): int#

Removes a given number (count) of keys starting from the startingIndex index and returns the number of keys that were removed.

NameTypeDefaultDescription
startingIndexintStarting index from which to remove keys.
countint1Number of keys to remove.
Returns
  • int — Number of keys removed.

SetKeys(keys: Array): int#

Resets this curve's keys using the ValueCurveKey array passed as an argument. Keys in the keys array are sorted in ascending time order before insertion, and keys at duplicated times are removed in a stable manner.

Returns the number of keys actually inserted. Keys previously stored in this curve are removed before the keys passed as arguments are added.

The keys must all contain values of the same type. And that type must match any existing keys. Otherwise a message is printed, the keys are not added, and 0 is returned.

NameTypeDefaultDescription
keysArrayArray of ValueCurveKeys.
Returns
  • int — Number of keys inserted.

Inherited members#

Inherited from Instance 58
Inherited from Object 6
Properties (2)

ClassName, className

Events (1)

Changed