Class reference
Curve
Inherits Resource
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 X and Y axes, but these ranges can be changed. Please note that many resources and nodes assume they are given unit curves. A unit curve is a curve whose domain (the X axis) is between 0 and 1. Some examples of unit curve usage are CPUParticles2D.angle_curve and Line2D.width_curve.
Properties
int bake_resolution = 100
int bake_resolution = 100The number of points to include in the baked (i.e. cached) curve data.
float max_domain = 1.0
float max_domain = 1.0The maximum domain (x-coordinate) that points can have.
float max_value = 1.0
float max_value = 1.0The maximum value (y-coordinate) that points can have. Tangents can cause higher values between points.
float min_domain = 0.0
float min_domain = 0.0The minimum domain (x-coordinate) that points can have.
float min_value = 0.0
float min_value = 0.0The minimum value (y-coordinate) that points can have. Tangents can cause lower values between points.
int point_count = 0
int point_count = 0The number of points describing the curve.
Methods
int add_point(Vector2 position, float left_tangent = 0, float right_tangent = 0, int left_mode = 0, int right_mode = 0)
int add_point(Vector2 position, float left_tangent = 0, float right_tangent = 0, int left_mode = 0, int right_mode = 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.
float get_domain_range() const
float get_domain_range() constReturns the difference between min_domain and max_domain.
int get_point_left_mode(int index) const
int get_point_left_mode(int index) constReturns the left TangentMode for the point at index.
float get_point_left_tangent(int index) const
float get_point_left_tangent(int index) constReturns the left tangent angle (in degrees) for the point at index.
Vector2 get_point_position(int index) const
Vector2 get_point_position(int index) constReturns the curve coordinates for the point at index.
int get_point_right_mode(int index) const
int get_point_right_mode(int index) constReturns the right TangentMode for the point at index.
float get_point_right_tangent(int index) const
float get_point_right_tangent(int index) constReturns the right tangent angle (in degrees) for the point at index.
float get_value_range() const
float get_value_range() constvoid remove_point(int index)
int index)Removes the point at index from the curve.
float sample(float offset) const
float sample(float offset) constReturns the Y value for the point that would exist at the X position offset along the curve.
float sample_baked(float offset) const
float sample_baked(float offset) constReturns 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(int index, int mode)
int index, int mode)Sets the left TangentMode for the point at index to mode.
void set_point_left_tangent(int index, float tangent)
int index, float tangent)Sets the left tangent angle for the point at index to tangent.
int set_point_offset(int index, float offset)
int set_point_offset(int index, float offset)Sets the offset from 0.5.
void set_point_right_mode(int index, int mode)
int index, int mode)Sets the right TangentMode for the point at index to mode.
void set_point_right_tangent(int index, float tangent)
int index, float tangent)Sets the right tangent angle for the point at index to tangent.
void set_point_value(int index, float y)
int index, float y)Assigns the vertical position y to the point at index.
Signals
domain_changed()
Emitted when max_domain or min_domain is changed.
range_changed()
Constants
TANGENT_FREE = 0
The tangent on this side of the point is user-defined.
TANGENT_LINEAR = 1
The curve calculates the tangent on this side of the point as the slope halfway towards the adjacent point.
TANGENT_MODE_COUNT = 2
The total number of available tangent modes.