Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Curve

Eredita: Resource < RefCounted < Object

Una curva matematica.

Descrizione

Questa risorsa descrive una curva matematica definendo una serie di punti e tangenti in ogni punto. Come predefinito, varia tra 0 e 1 sugli assi X e Y, ma è possibile cambiare questi intervalli.

Si noti che molte risorse e nodi presumono di avere curve unitarie. Una curva unitaria è una curva il cui dominio (l'asse X) è compreso tra 0 e 1. Alcuni esempi di utilizzo di una curva unitaria sono CPUParticles2D.angle_curve e Line2D.width_curve.

Proprietà

int

bake_resolution

100

float

max_domain

1.0

float

max_value

1.0

float

min_domain

0.0

float

min_value

0.0

int

point_count

0

int

point_{index}/left_mode

0

float

point_{index}/left_tangent

0.0

Vector2

point_{index}/position

Vector2(0, 0)

int

point_{index}/right_mode

0

float

point_{index}/right_tangent

0.0

Metodi

int

add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0)

void

bake()

void

clean_dupes()

void

clear_points()

float

get_domain_range() const

TangentMode

get_point_left_mode(index: int) const

float

get_point_left_tangent(index: int) const

Vector2

get_point_position(index: int) const

TangentMode

get_point_right_mode(index: int) const

float

get_point_right_tangent(index: int) const

float

get_value_range() const

void

remove_point(index: int)

float

sample(offset: float) const

float

sample_baked(offset: float) const

void

set_point_left_mode(index: int, mode: TangentMode)

void

set_point_left_tangent(index: int, tangent: float)

int

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)


Segnali

domain_changed() 🔗

Emesso quando max_domain o min_domain vengono modificati.


range_changed() 🔗

Emesso quando max_value o min_value viene modificato.


Enumerazioni

enum TangentMode: 🔗

TangentMode TANGENT_FREE = 0

La tangente su questo lato del punto è definita dall'utente.

TangentMode TANGENT_LINEAR = 1

La curva calcola la tangente su questo lato del punto come la pendenza a metà strada verso il punto adiacente.

TangentMode TANGENT_MODE_COUNT = 2

Il numero totale di modalità tangenti disponibili.


Descrizioni delle proprietà

int bake_resolution = 100 🔗

  • void set_bake_resolution(value: int)

  • int get_bake_resolution()

Il numero di punti da includere nei dati della curva precalcolati (ovvero memorizzati nella cache).


float max_domain = 1.0 🔗

  • void set_max_domain(value: float)

  • float get_max_domain()

Il dominio massimo (la coordinata x) che i punti possono avere.


float max_value = 1.0 🔗

  • void set_max_value(value: float)

  • float get_max_value()

Il valore massimo (coordinata y) che i punti possono avere. Le tangenti possono causare valori più alti tra i punti.


float min_domain = 0.0 🔗

  • void set_min_domain(value: float)

  • float get_min_domain()

Il dominio minimo (la coordinata x) che i punti possono avere.


float min_value = 0.0 🔗

  • void set_min_value(value: float)

  • float get_min_value()

Il valore minimo (coordinata y) che i punti possono avere. Le tangenti possono causare valori più bassi tra i punti.


int point_count = 0 🔗

  • void set_point_count(value: int)

  • int get_point_count()

Il numero di punti che descrivono la curva.


int point_{index}/left_mode = 0 🔗

The left TangentMode for the point at index.

Note: index is a value in the 0 .. point_count - 1 range.


float point_{index}/left_tangent = 0.0 🔗

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

Note: index is a value in the 0 .. point_count - 1 range.


Vector2 point_{index}/position = Vector2(0, 0) 🔗

The position of the point at index.

Note: index is a value in the 0 .. point_count - 1 range.


int point_{index}/right_mode = 0 🔗

The right TangentMode for the point at index.

Note: index is a value in the 0 .. point_count - 1 range.


float point_{index}/right_tangent = 0.0 🔗

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

Note: index is a value in the 0 .. point_count - 1 range.


Descrizioni dei metodi

int add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0) 🔗

Aggiunge un punto alla curva. Per ciascun lato, se il *_mode è TANGENT_LINEAR, l'angolo *_tangente (in gradi) utilizza la pendenza della curva definita rispetto alla semidistanza dal punto adiacente. Consente di specificare tangenti personalizzate con *_tangent se *_mode è impostato su TANGENT_FREE.


void bake() 🔗

Ricalcola la cache dei punti della curva.


void clean_dupes() 🔗

Rimuove i punti duplicati, ossia i punti che sono lontani meno di 0,00001 unità (valore epsilon del motore) dal loro vicino sulla curva.


void clear_points() 🔗

Rimuove tutti i punti dalla curva.


float get_domain_range() const 🔗

Restituisce la differenza tra min_domain e max_domain.


TangentMode get_point_left_mode(index: int) const 🔗

Restituisce il TangentMode sinistro per il punto all'indice index.


float get_point_left_tangent(index: int) const 🔗

Restituisce l'angolo tangente sinistro (in gradi) per il punto all'indice index.


Vector2 get_point_position(index: int) const 🔗

Restituisce le coordinate della curva per il punto all'indice index.


TangentMode get_point_right_mode(index: int) const 🔗

Restituisce il TangentMode destro per il punto all'indice index.


float get_point_right_tangent(index: int) const 🔗

Restituisce l'angolo tangente destro (in gradi) per il punto all'indice index.


float get_value_range() const 🔗

Restituisce la differenza tra min_value e max_value.


void remove_point(index: int) 🔗

Rimuove il punto all'indice index dalla curva.


float sample(offset: float) const 🔗

Restituisce il valore Y per il punto che esisterebbe nell'offset di posizione X lungo la curva.


float sample_baked(offset: float) const 🔗

Restituisce il valore Y per il punto che esisterebbe nell'offset di posizione X lungo la curva usando la cache precalcolata. Precalcola i punti della curva se non sono già stati calcolati.


void set_point_left_mode(index: int, mode: TangentMode) 🔗

Imposta il TangentMode sinistro per il punto all'indice index su mode.


void set_point_left_tangent(index: int, tangent: float) 🔗

Imposta l'angolo tangente sinistro per il punto all'indice index su tangent.


int set_point_offset(index: int, offset: float) 🔗

Assigns the horizontal position offset to the point at index.


void set_point_right_mode(index: int, mode: TangentMode) 🔗

Imposta il TangentMode destro per il punto all'indice index su mode.


void set_point_right_tangent(index: int, tangent: float) 🔗

Imposta l'angolo tangente destro per il punto all'indice index su tangent.


void set_point_value(index: int, y: float) 🔗

Assegna la posizione verticale y al punto all'indice index.