Curve ​
Inherits: Resource < RefCounted < Object
A mathematical curve.
Description
This resource describes a mathematical curve by defining a set of points and tangents at each point. By default, it ranges between 0
and 1
on the Y axis and positions points relative to the 0.5
Y position.
See also Gradient which is designed for color interpolation. See also Curve2D and Curve3D.
Properties
100 | ||
1.0 | ||
0.0 | ||
0 |
Methods
add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0) | |
void | bake() |
void | |
void | |
get_point_left_mode(index: int) const | |
get_point_left_tangent(index: int) const | |
get_point_position(index: int) const | |
get_point_right_mode(index: int) const | |
get_point_right_tangent(index: int) const | |
void | remove_point(index: int) |
sample_baked(offset: float) const | |
void | set_point_left_mode(index: int, mode: TangentMode) |
void | set_point_left_tangent(index: int, tangent: float) |
set_point_offset(index: int, offset: float) | |
void | set_point_right_mode(index: int, mode: TangentMode) |
void | set_point_right_tangent(index: int, tangent: float) |
void | set_point_value(index: int, y: float) |
Signals
range_changed() 🔗
Emitted when max_value or min_value is changed.
Enumerations
enum TangentMode: 🔗
TangentMode TANGENT_FREE = 0
The tangent on this side of the point is user-defined.
TangentMode TANGENT_LINEAR = 1
The curve calculates the tangent on this side of the point as the slope halfway towards the adjacent point.
TangentMode TANGENT_MODE_COUNT = 2
The total number of available tangent modes.
Property Descriptions
int bake_resolution = 100 🔗
The number of points to include in the baked (i.e. cached) curve data.
The maximum value the curve can reach.
The minimum value the curve can reach.
The number of points describing the curve.
Method Descriptions
int add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0) 🔗
Adds a point to the curve. For each side, if the *_mode
is TANGENT_LINEAR, the *_tangent
angle (in degrees) uses the slope of the curve halfway to the adjacent point. Allows custom assignments to the *_tangent
angle if *_mode
is set to TANGENT_FREE.
void bake() 🔗
Recomputes the baked cache of points for the curve.
void clean_dupes() 🔗
Removes duplicate points, i.e. points that are less than 0.00001 units (engine epsilon value) away from their neighbor on the curve.
void clear_points() 🔗
Removes all points from the curve.
TangentMode get_point_left_mode(index: int) const 🔗
Returns the left TangentMode for the point at index
.
float get_point_left_tangent(index: int) const 🔗
Returns the left tangent angle (in degrees) for the point at index
.
Vector2 get_point_position(index: int) const 🔗
Returns the curve coordinates for the point at index
.
TangentMode get_point_right_mode(index: int) const 🔗
Returns the right TangentMode for the point at index
.
float get_point_right_tangent(index: int) const 🔗
Returns the right tangent angle (in degrees) for the point at index
.
void remove_point(index: int) 🔗
Removes the point at index
from the curve.
float sample(offset: float) const 🔗
Returns the Y value for the point that would exist at the X position offset
along the curve.
float sample_baked(offset: float) const 🔗
Returns the Y value for the point that would exist at the X position offset
along the curve using the baked cache. Bakes the curve's points if not already baked.
void set_point_left_mode(index: int, mode: TangentMode) 🔗
Sets the left TangentMode for the point at index
to mode
.
void set_point_left_tangent(index: int, tangent: float) 🔗
Sets the left tangent angle for the point at index
to tangent
.
int set_point_offset(index: int, offset: float) 🔗
Sets the offset from 0.5
.
void set_point_right_mode(index: int, mode: TangentMode) 🔗
Sets the right TangentMode for the point at index
to mode
.
void set_point_right_tangent(index: int, tangent: float) 🔗
Sets the right tangent angle for the point at index
to tangent
.
void set_point_value(index: int, y: float) 🔗
Assigns the vertical position y
to the point at index
.