Curve

Наследует: Resource < RefCounted < Object

Математическая кривая.

Описание

Этот ресурс описывает математическую кривую, определяя набор точек и касательных в каждой точке. По умолчанию он находится в диапазоне между 0 и 1 по осям X и Y, но эти диапазоны можно изменить.

Обратите внимание, что многие ресурсы и узлы предполагают, что им заданы единичные кривые. Единичная кривая — это кривая, область определения (ось X) которой находится между 0 и 1. Некоторые примеры использования единичной кривой: CPUParticles2D.angle_curve и Line2D.width_curve.

Свойства

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

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)


Сигналы

domain_changed() 🔗

Вызывается при изменении max_domain или min_domain.


range_changed() 🔗

Выдается при изменении max_value или min_value.


Перечисления

enum TangentMode: 🔗

TangentMode TANGENT_FREE = 0

Касательная по эту сторону точки определяется пользователем.

TangentMode TANGENT_LINEAR = 1

Кривая вычисляет касательную по эту сторону от точки как наклон на полпути к соседней точке.

TangentMode TANGENT_MODE_COUNT = 2

Общее количество доступных касательных мод.


Описания свойств

int bake_resolution = 100 🔗

  • void set_bake_resolution(value: int)

  • int get_bake_resolution()

Количество точек, включаемых в запеченные (т.е. кэшированные) данные кривой.


float max_domain = 1.0 🔗

  • void set_max_domain(value: float)

  • float get_max_domain()

Максимальный домен (координата x), который может иметь точка.


float max_value = 1.0 🔗

  • void set_max_value(value: float)

  • float get_max_value()

Максимальное значение (координата Y), которое могут иметь точки. Касательные могут вызывать более высокие значения между точками.


float min_domain = 0.0 🔗

  • void set_min_domain(value: float)

  • float get_min_domain()

Минимальная область (координата x), которую могут иметь точки.


float min_value = 0.0 🔗

  • void set_min_value(value: float)

  • float get_min_value()

Минимальное значение (координата Y), которое могут иметь точки. Касательные могут вызывать более низкие значения между точками.


int point_count = 0 🔗

  • void set_point_count(value: int)

  • int get_point_count()

Количество точек, описывающих кривую.


Описания метода

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

Добавляет точку к кривой. Для каждой стороны, если *_mode равно TANGENT_LINEAR, угол *_tangent (в градусах) использует наклон кривой на полпути к соседней точке. Позволяет настраивать назначения угла *_tangent, если *_mode равно TANGENT_FREE.


void bake() 🔗

Пересчитывает запеченный кэш точек для кривой.


void clean_dupes() 🔗

Удаляет дублирующиеся точки, т. е. точки, которые находятся на расстоянии менее 0,00001 единицы (значение эпсилон двигателя) от своего соседа на кривой.


void clear_points() 🔗

Удаляет все точки из кривой.


float get_domain_range() const 🔗

Возвращает разницу между min_domain и max_domain.


TangentMode get_point_left_mode(index: int) const 🔗

Возвращает левый TangentMode для точки с index.


float get_point_left_tangent(index: int) const 🔗

Возвращает левый угол касательной (в градусах) для точки с index.


Vector2 get_point_position(index: int) const 🔗

Возвращает координаты кривой для точки с index.


TangentMode get_point_right_mode(index: int) const 🔗

Возвращает правильный TangentMode для точки с index.


float get_point_right_tangent(index: int) const 🔗

Возвращает угол прямого тангенса (в градусах) для точки с index.


float get_value_range() const 🔗

Возвращает разницу между min_value] и max_value.


void remove_point(index: int) 🔗

Удаляет точку с index из кривой.


float sample(offset: float) const 🔗

Возвращает значение Y для точки, которая будет находиться в позиции X offset вдоль кривой.


float sample_baked(offset: float) const 🔗

Возвращает значение Y для точки, которая будет существовать в позиции X offset вдоль кривой, используя запеченный кэш. Запекает точки кривой, если они еще не запечены.


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

Устанавливает левый TangentMode для точки с index в mode.


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

Устанавливает левый угол касательной для точки с index на tangent.


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

Устанавливает смещение от 0.5.


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

Устанавливает правильный TangentMode для точки с index в mode.


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

Устанавливает прямой угол касательной для точки с index на tangent.


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

Присваивает вертикальное положение y точке с index.