Files
aego/engine/res/docs/curves.ru.md
sanspie 1f47880e8a docs: update editor guidance for 0.12.1
Document the default Design layout, agent mentions and follow controls, curve preset editing, and Scene View lighting toggles in English and Russian.
2026-11-05 22:41:19 +03:00

106 lines
6.5 KiB
Markdown

---
id: curves
title: Кривые
---
# Кривые
Кривая сопоставляет времени значение. Поля компонентов типа `curve.Curve` описывают спады, разгоны скорости и затухания; твин может следовать кривой вместо функции плавности.
---
id: curves/shape
title: Пресеты и ключи
---
# Пресеты и ключи
Кривая — это либо пресет, либо список ключей. Пресет быстро выбрать; ключи дают любую форму.
## Пресеты
Пресет — это функция плавности на времени `0..1`: `linear` и семейство `in`/`out`/`inOut` для quad, cubic, sine, expo, back, elastic и bounce.
## Ключи
У каждого ключа есть время, значение, два наклона, режим сегмента и режим касательной.
| Сегмент | От этого ключа до следующего |
|---|---|
| Безье | плавно, форму задают наклоны |
| Линейная | прямая линия |
| Ступенька | держит значение этого ключа |
| Касательная | Наклоны |
|---|---|
| Авто | следуют соседям и никогда не выходят за них |
| Линейная | направлены на соседние ключи |
| Свободная | задаются вручную; входящий и исходящий могут различаться |
**До** и **После** определяют, что происходит за пределами ключей: `Clamp` удерживает крайнее значение, `Loop` повторяет, `Ping-pong` повторяет зеркально. Кривые считаются во float32 и вычисляются одинаково на всех платформах.
---
id: curves/editor
title: Редактирование кривых
---
# Редактирование кривых
«Инспектор» рисует кривую внутри поля; щелчок открывает редактор кривых.
- **Пресет** переключает между пресетами и **Ключами**. Выбор «Ключей» приближает форму пресета редактируемыми ключами. Можно также потянуть сам график пресета: при движении он превращается в ключи, а выбранная точка перемещается.
- **Дважды щёлкните** по графику, чтобы добавить ключ на кривой, **щёлкните правой кнопкой** по ключу, чтобы удалить его, перетащите ключ или ручку наклона, чтобы изменить их.
- Удерживайте **Ctrl** (Cmd на macOS), чтобы привязываться к сетке в 1/20 вида; удерживайте **Shift**, перетаскивая ручку наклона, чтобы двигать только одну сторону.
- **Время**, **Значение**, **Сегмент** и **Касательная** меняют выбранный ключ; перетаскивание ручки делает его касательную свободной.
Каждое перетаскивание — один шаг отмены. Отмена перетаскивания пресета возвращает исходный пресет, а повтор восстанавливает изменённые ключи. Экземпляры префабов показывают переопределённую кривую, как любое другое поле.
---
id: curves/scripts
title: Кривые в скриптах
---
# Кривые в скриптах
Скрипт читает поле-кривую компонента и вычисляет его через `aego/curve`:
import "aego/curve"
func Update(dt float) {
age += dt
fade := node.Get<Fader>().Alpha
sr.Tint.A = curve.Eval(fade, age / curve.Duration(fade))
}
| Функция | |
|---|---|
| `Eval(c, t) float` | значение в `t` с учётом «До» и «После» |
| `EvalClamped(c, t) float` | значение в `t`, ограниченном первым и последним ключом |
| `Duration(c) float` | время от первого до последнего ключа, 1 для пресета |
| `Ease(e, t) float` | функция плавности пресета в `t`, ограниченном `0..1` |
Константы `curve.Linear`, `curve.OutQuad` и остальные имеют тип `curve.Easing` и служат аргументом `ease` для твинов.
Значение `Curve` — это представление поля только для чтения, а не копия: оно видит правки, сделанные после чтения. Скрипты не могут строить кривые или экспортировать поля-кривые. Представление, чей узел или компонент исчез, завершается ошибкой `AES6004`.
---
id: curves/go
title: Кривые в Go
---
# Кривые в Go
type Fader struct {
Alpha curve.Curve `aego:"alpha"`
}
c := curve.Keyed(curve.Key{T: 0, V: 1}, curve.Key{T: 0.5, V: 1, Interp: curve.InterpLinear}, curve.Key{T: 1, V: 0})
v := c.Eval(0.75)
| Функция | |
|---|---|
| `FromEasing(e)`, `Line(t0, v0, t1, v1)`, `Constant(v)`, `Keyed(keys...)` | построение |
| `Eval`, `EvalClamped`, `Span`, `Duration`, `Range(samples)` | чтение |
| `Fix`, `Smooth`, `Normalize`, `Bake(samples)` | помощники для правки |
`Keyed` и `Fix` сортируют ключи, отбрасывают ключи с NaN и из двух ключей с одним временем оставляют последний. Меняйте `Keys` напрямую только вместе с `Fix` или `Smooth`.
В сценах и префабах кривая записывается как структура; значения по умолчанию опускаются, а у пресета нет ключей:
falloff={ ease=outQuad post=pingPong }
alpha={ keys=[[0, 1, 0, 0, bezier, auto], [1, 0, -2, -2, linear, free]] }