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

The number of points to include in the baked (i.e. cached) curve data.

float max_domain = 1.0

The maximum domain (x-coordinate) that points can have.

float max_value = 1.0

The maximum value (y-coordinate) that points can have. Tangents can cause higher values between points.

float min_domain = 0.0

The minimum domain (x-coordinate) that points can have.

float min_value = 0.0

The minimum value (y-coordinate) that points can have. Tangents can cause lower values between points.

int point_count = 0

The 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)

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.

int get_point_left_mode(int index) const

Returns the left TangentMode for the point at index.

float get_point_left_tangent(int index) const

Returns the left tangent angle (in degrees) for the point at index.

Vector2 get_point_position(int index) const

Returns the curve coordinates for the point at index.

int get_point_right_mode(int index) const

Returns the right TangentMode for the point at index.

float get_point_right_tangent(int index) const

Returns the right tangent angle (in degrees) for the point at index.

void remove_point(int index)

Removes the point at index from the curve.

float sample(float offset) const

Returns the Y value for the point that would exist at the X position offset along the curve.

float sample_baked(float offset) 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(int index, int mode)

Sets the left TangentMode for the point at index to mode.

void set_point_left_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)

Sets the offset from 0.5.

void set_point_right_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)

Sets the right tangent angle for the point at index to tangent.

void set_point_value(int index, float y)

Assigns the vertical position y to the point at index.

Signals

Constants

TANGENT_FREE = 0

Enum: TangentMode

The tangent on this side of the point is user-defined.

TANGENT_LINEAR = 1

Enum: TangentMode

The curve calculates the tangent on this side of the point as the slope halfway towards the adjacent point.

TANGENT_MODE_COUNT = 2

Enum: TangentMode

The total number of available tangent modes.

Source revision 4f5b14abade2
Connection interrupted. Reload×

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.