No edit summary |
Add unorthodox example (note: actual example needs videoembed extension to embed. doesn't want to embed normally) |
||
| Line 2: | Line 2: | ||
<translate> | <translate> | ||
<!--T:1--> | <!--T:1--> | ||
{{Infobox Component | {{Infobox Component | ||
|Image=ValueGradientDriver`1Component.png | |Image=ValueGradientDriver`1Component.png | ||
| Line 28: | Line 27: | ||
<!--T:4--> | <!--T:4--> | ||
== Examples == | == Examples == | ||
<gallery widths=560px heights=480px> | |||
File:Component_example_ValueGradientDriver_IndexOfMax.webp|alt=A ValueGradientDriver is set up with five int values. The progress is fixed at 1 and each point's value is set to its index. Interpolation is disabled. The index of the point with the greatest position is output.|An unorthodox yet valid usage of the component, as way to find the index of the maximum value in a list of floats (as the <code>Position</code> values) without the need for ProtoFlux. <code>Progress</code> may be set to 0 to find the index of the minimum value as well. | |||
</gallery> | |||
<!--T:5--> | <!--T:5--> | ||
Revision as of 18:12, 17 February 2024

The ValueGradientDriver component changes the value of the field defined in Target based on the items in the Points list, and their Position in relation to the Progress value.
Fields
| Name | Type | Description |
|---|---|---|
persistent
|
Bool | Determines whether or not this item will be saved to the server. |
UpdateOrder
|
Int | Controls the order in which this component is updated. |
Enabled
|
Bool | Controls whether or not this component is enabled. Some components stop their functionality when this field is disabled, but some don't. |
Progress
|
Float | Controls which items from the Points list will be used to drive the value of Target
|
Target
|
IField<float> | The field that this component will drive the value of |
Interpolate
|
Bool | Controls whether or not this component will interpolate (or blend) between the nearest two Points to the current Progress value.
|
Points
|
SyncList<Point> | A list of items indicating their Position (in relation to Progress), and a Value
|
Usage
Each point in the Points list has a Position field and Value field. The Position field is used for comparison with the component's Progress field, while the Value field is the value used for driving the field in Target.
When Interpolate is checked, the value stored in Target is linearly interpolated between the Values of the two points surrounding the current Progress. When unchecked, the output value is simply set to the Value of the closest point before the current Progress. The only exception to this is when no point exists before the current Progress, in which case the first point after the current Progress is used.
If two points have the same Position, then the point of greatest index takes priority if the value is not interpolated or if the positions are exactly equal to the current Progress. During interpolation, however, the point of least index takes priority.
Examples
-
An unorthodox yet valid usage of the component, as way to find the index of the maximum value in a list of floats (as the
Positionvalues) without the need for ProtoFlux.Progressmay be set to 0 to find the index of the minimum value as well.