Tween
Последовательности изменения свойств, callbacks и временных шагов.
Создавайте рабочий Tween через CreateTween(), а не new Tween(): прямой конструктор выдаёт native-ошибку. Добавьте команды до первого шага. По умолчанию они последовательны; Parallel() группирует следующее добавление, SetParallel() меняет default, Chain() начинает следующий шаг.
Pause() сохраняет прогресс; Stop() сбрасывает внутренний старт/время, но не свойства; Kill() инвалидирует последовательность без Finished. После естественного завершения дерево очищает Tween — для новой анимации создайте новый.
BindEntity() управляет жизненным циклом отдельно от цели TweenProperty. Один EntityPath свойства вроде position:x не является путём Entity. Обычный callback выполняется в обработке Tween, не в worker.
Ручные CustomStep() подходят для детерминированных проверок после Pause. В текущей реализации bool ещё true на шаге, испустившем Finished; следующий вызов возвращает false. GetTotalElapsedTime() включает scaled delta и возможный overshoot.
Windows headless-проверки подтверждают значения, grouping и сигналы; графическое качество, реальные частоты кадров, physics/tree-pause/time-scale переходы и точное время subtween здесь не проверены.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
TweenКонструктор
public Tween();Прямой new Tween() недопустим для рабочей анимации: native-конструктор выдаёт ошибку, объект остаётся невалидным. Используйте Entity.CreateTween() или EntityTree.CreateTween() и сразу добавьте команды до первого шага. Конструктор присутствует в SDK, но это не рекомендация его вызывать.
Методы28
BindEntityTween
public Tween BindEntity(Entity node);Связывает жизненный цикл и режим Bound с Entity, не назначает цель всех TweenProperty. Пока Entity вне дерева, последовательность не продвигается, даже через CustomStep. После удаления объекта последовательность прекращается при обработке деревом. Для автоматической привязки используйте Entity.CreateTween; unbound EntityTree.CreateTween настраивается отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
node | Entity | — |
nodeЖивая Entity-владелец привязки; не обязательная цель всех свойств.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
ChainTween
public Tween Chain();Только следующий добавляемый Tweener начинает новый последовательный шаг. Полезно после SetParallel(true), чтобы дождаться окончания всей параллельной группы. Не исполняет накопленные команды немедленно и не меняет defaultParallel для всех следующих добавлений.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
CustomStepbool
public bool CustomStep(double delta);Вручную продвигает последовательность на delta с учётом SpeedScale, в том числе когда она Pause. Не включает постоянное Play и не заменяет требование bound Entity находиться в дереве. Не вызывайте рекурсивно из того же шага. В 1.0.0 шаг, испустивший Finished, ещё возвращает true; следующий вызов для завершённой последовательности — false. Поэтому bool не является точным событием завершения. Для тестов сначала Pause, чтобы избежать параллельного автоматического продвижения.
| Имя | Тип | По умолчанию |
|---|---|---|
delta | double | — |
deltaРучной положительный конечный шаг в секундах, далее умножается на SpeedScale.
boolОтвет native step; на шаге Finished ещё true, при следующем вызове завершённого Tween false.
GetLoopsLeftint
public int GetLoopsLeft();Число оставшихся полных проходов с учётом текущего. SetLoops(2) означает два прохода всего, не два дополнительных. −1 для loops<=0. После конечного завершения — 0; это не время и не число шагов.
intОставшиеся проходы, −1 для бесконечности, 0 после конечного завершения.
GetTotalElapsedTimedouble
public double GetTotalElapsedTime();Накопленная входная delta с учётом SpeedScale, включая циклы и избыточный остаток последнего ручного шага. Не точная длительность анимации и не настенные секунды. Stop сбрасывает значение; Pause сохраняет его.
doubleНакопленная scaled delta, возможно больше фактической длительности.
HasTweenersbool
public bool HasTweeners();Проверяет, есть ли сохранённые команды. Не означает, что Tween валиден, запущен или ещё выполняет работу: Kill не очищает список немедленно, а последующая очистка дерева очищает.
boolTrue при непустом списке команд.
InterpolateValueVariant
public static Variant InterpolateValue(Variant initialValue, Variant deltaValue, double elapsedTime, double duration, Tween.TransitionType transType, Tween.EaseType easeType);Статически вычисляет интерполяцию Variant без создания Tween и изменения объекта. deltaValue — разница конечного и начального значения, не само конечное значение. При duration=0 возвращает initialValue+deltaValue. transType/easeType должны быть допустимыми, типы Variant — поддерживаемыми интерполяцией. В этом проходе проверены скалярные числа; это не универсальная интерполяция любых объектов.
| Имя | Тип | По умолчанию |
|---|---|---|
initialValue | Variant | — |
deltaValue | Variant | — |
elapsedTime | double | — |
duration | double | — |
transType | Tween.TransitionType | — |
easeType | Tween.EaseType | — |
initialValueНачальное значение поддержанного Variant-типа.
deltaValueРазница конечного и начального значений; не конечное значение.
elapsedTimeПоложение на временной шкале интерполяции, не показание часов.
durationДлительность в секундах; валидируйте конечность/неотрицательность. Ноль у InterpolateValue даёт финал.
transTypeДопустимый TransitionType для статического расчёта.
easeTypeДопустимый EaseType для статического расчёта.
VariantСобственный Variant результата; освободите wrapper после чтения.
IsRunningbool
public bool IsRunning();Возвращает флаг Play. False после Pause/Stop/Kill или конечного завершения. True само по себе не доказывает валидность, прогресс в текущем кадре или доступный bound-объект; учитывайте IsValid и режим паузы.
boolФлаг разрешённого продвижения, не гарантия валидности/обработки.
IsValidbool
public bool IsValid();Показывает, пригодна ли последовательность в её текущем lifecycle. new Tween невалиден; Kill сразу делает false. После естественного Finished очистка деревом может произойти на следующем проходе. Valid не обещает IsRunning и не разрешает добавление после старта без Stop.
boolФлаг пригодности в текущем lifecycle.
Killvoid
public void Kill();Останавливает и немедленно инвалидирует последовательность, включая её subtweens. Не испускает Finished и не возвращает изменённые свойства к исходным значениям. Не используйте как Pause: убитую последовательность нельзя продолжить Play.
ParallelTween
public Tween Parallel();Только следующий добавляемый Tweener присоединяется к текущему шагу. После добавления снова действует режим SetParallel. Весь шаг заканчивается после наиболее долгого участника; это параллельность анимационных команд, не запуск OS-потоков.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
Pausevoid
public void Pause();Приостанавливает автоматическое продвижение, сохраняя текущий шаг, время и свойства. Play продолжает, CustomStep может продвинуть вручную. Не эквивалент Stop, который сбрасывает внутренний старт/счётчик времени.
Playvoid
public void Play();Разрешает продвижение валидного Tween после Pause/Stop. Не оживляет Kill и не гарантирует обработку при паузе дерева или отсутствии bound Entity в дереве. Для естественно завершённого и очищенного Tween создайте новый объект.
SetEaseTween
public Tween SetEase(Tween.EaseType ease);Задаёт easing по умолчанию для добавляемых дальше Property/MethodTweeners. Уже добавленные команды сохраняют захваченные настройки; меняйте их собственными методами при необходимости. Не меняет длительность или режим обработки.
| Имя | Тип | По умолчанию |
|---|---|---|
ease | Tween.EaseType | — |
easeEasing для добавляемых дальше команд.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
SetIgnoreTimeScaleTween
public Tween SetIgnoreTimeScale(bool ignore = true);Для автоматической обработки выбирает unscaled delta дерева. Не отменяет Pause, tree pause mode или bound lifecycle. CustomStep получает delta от вызывающего кода и отдельно умножает её на SpeedScale. Реальное автоматическое влияние TimeScale здесь сверено по исходникам, не измерено.
| Имя | Тип | По умолчанию |
|---|---|---|
ignore | bool | true |
ignoreTrue выбирает unscaled delta при автоматической обработке.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
SetLoopsTween
public Tween SetLoops(int loops = 0);Задаёт общее число проходов; 1 — один, 2 — два. Значение по умолчанию при вызове без аргумента равно 0 и включает бесконечное повторение, как и отрицательное значение. Добавьте реальную временную задержку или условие остановки: бесконечные команды нулевой длительности могут вызвать диагностику бесконечного цикла.
| Имя | Тип | По умолчанию |
|---|---|---|
loops | int | 0 |
loopsОбщее число проходов; <=0 означает бесконечность.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
SetParallelTween
public Tween SetParallel(bool parallel = true);Меняет default-режим группировки следующих добавлений. True добавляет их в один шаг; Chain начинает новый шаг для следующего добавления. False возвращает последовательное добавление. Не выполняет команды одновременно в разных потоках.
| Имя | Тип | По умолчанию |
|---|---|---|
parallel | bool | true |
parallelDefault-режим добавления в общий шаг, не запуск потоков.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
SetPauseModeTween
public Tween SetPauseMode(Tween.TweenPauseMode mode);Задаёт реакцию на паузу дерева: Bound ориентируется на привязанную Entity, Stop останавливает продвижение при tree pause, Process допускает его. Это не вызов Pause/Play самого Tween. Bound без привязки не создаёт владельца. Реальные tree-pause переходы здесь только source-reviewed.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | Tween.TweenPauseMode | — |
modeBound/Stop/Process для реакции на паузу дерева.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
SetProcessModeTween
public Tween SetProcessMode(Tween.TweenProcessMode mode);Выбирает Idle или Physics для автоматического продвижения деревом. Physics не делает Tween физической симуляцией и не гарантирует точное время/число отсчётов. Manual CustomStep не ждёт этого callback. Автоматический physics-проход здесь не выполнялся.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | Tween.TweenProcessMode | — |
modeIdle или Physics для автоматического шага.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
SetSpeedScaleTween
public Tween SetSpeedScale(float speed);Множитель delta и накопленного времени, не новая длительность всех команд. Обычно задавайте положительное конечное значение; 2 проходит время вдвое быстрее. Ноль не продвигает шаги, отрицательное значение не является поддержкой обратного проигрывания. Проверено значение 2 с ручными шагами.
| Имя | Тип | По умолчанию |
|---|---|---|
speed | float | — |
speedМножитель времени; используйте положительное конечное значение.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
SetTransTween
public Tween SetTrans(Tween.TransitionType trans);Задаёт transition по умолчанию для будущих Property/MethodTweeners. Уже добавленные команды не перенастраиваются автоматически. Для линейной интерполяции используйте Linear; допустимость/качество каждой кривой здесь не оценивались визуально.
| Имя | Тип | По умолчанию |
|---|---|---|
trans | Tween.TransitionType | — |
transTransition для добавляемых дальше команд.
TweenТот же Tween для цепочки вызовов; это не новая независимая копия.
Stopvoid
public void Stop();Останавливает и сбрасывает внутренний старт и elapsed time, сохраняя добавленные команды. Не возвращает свойства к исходным значениям и не испускает Finished. При следующем старте PropertyTweener по умолчанию может взять уже изменённое текущее значение. Пока объект валиден, Stop позволяет изменить список перед новым стартом; после очистки дерева используйте новый Tween.
TweenAwaitAwaitTweener
public AwaitTweener TweenAwait(Signal signal);Добавляет ожидание Signal, не C# Task и не ожидание любого будущего события задним числом. Подключение создаётся при добавлении, а при старте шага received сбрасывается: раннее испускание не гарантирует завершение будущего шага. Сигнал завершается на следующей обработке, а не синхронно заменяет весь Tween. Уничтожение источника/исчезновение соединения также завершает этот Tweener; завершение не доказывает полученный сигнал. Таймаут настраивается у возвращённого AwaitTweener.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | Signal | — |
signalSignal живого источника; раннее событие до старта шага может быть сброшено.
AwaitTweenerДобавленный AwaitTweener для настройки; при недопустимом вызове возможны null и диагностика.
TweenCallbackCallbackTweener
public CallbackTweener TweenCallback(Callable callback);Добавляет Callable без аргументов, который выполняется при достижении шага. Не вызывает его сразу при добавлении. Удерживайте нужные данные/цель; не передавайте результат уже выполненного вызова. Callback не переносится в worker автоматически.
| Имя | Тип | По умолчанию |
|---|---|---|
callback | Callable | — |
callbackCallable без обязательных аргументов, выполняемый позже.
CallbackTweenerДобавленный CallbackTweener для настройки; при недопустимом вызове возможны null и диагностика.
TweenIntervalIntervalTweener
public IntervalTweener TweenInterval(double time);Добавляет временную паузу внутри последовательности; это не блокирующий sleep главного потока. Время расходуется шагами Tween и зависит от скорости/автоматической time-scale политики. В parallel-группе учитывается вместе с другими участниками.
| Имя | Тип | По умолчанию |
|---|---|---|
time | double | — |
timeНеотрицательная конечная длительность интервала в секундах.
IntervalTweenerДобавленный IntervalTweener для настройки; при недопустимом вызове возможны null и диагностика.
TweenMethodMethodTweener
public MethodTweener TweenMethod(Callable method, Variant from, Variant to, double duration);Передаёт Callable одно интерполируемое значение от from до to на шагах обработки. Callback должен принимать подходящий тип Variant; это не имя свойства. from/to задают начальное и конечное значения, в отличие от deltaValue у InterpolateValue. Проверен double callback с Linear; неизвестные типы/ошибки вызова не выполнялись.
| Имя | Тип | По умолчанию |
|---|---|---|
method | Callable | — |
from | Variant | — |
to | Variant | — |
duration | double | — |
methodCallable, принимающий одно интерполируемое значение.
fromНачальное значение; тип согласуйте с to и callback.
toКонечное значение, не разница from/to.
durationДлительность в секундах; валидируйте конечность/неотрицательность. Ноль у InterpolateValue даёт финал.
MethodTweenerДобавленный MethodTweener для настройки; при недопустимом вызове возможны null и диагностика.
TweenPropertyPropertyTweener
public PropertyTweener TweenProperty(ReckfellObject @object, EntityPath property, Variant finalVal, double duration);Добавляет изменение свойства объекта до finalVal. EntityPath здесь путь свойства/компонента, например position:x, а не путь к Entity в дереве. Свойство должно существовать, типы — соответствовать. Начальное значение по умолчанию считывается при старте команды, что важно после Stop или задержки. Привязка жизненного цикла не создаётся автоматически одним указанием target; используйте BindEntity/Entity.CreateTween.
| Имя | Тип | По умолчанию |
|---|---|---|
object | ReckfellObject | — |
property | EntityPath | — |
finalVal | Variant | — |
duration | double | — |
objectЖивой объект с доступным свойством; не имя/путь объекта.
propertyEntityPath свойства/компонента, например position:x.
finalValКонечное значение совместимого с текущим свойством типа.
durationДлительность в секундах; валидируйте конечность/неотрицательность. Ноль у InterpolateValue даёт финал.
PropertyTweenerДобавленный PropertyTweener для настройки; при недопустимом вызове возможны null и диагностика.
TweenSubtweenSubtweenTweener
public SubtweenTweener TweenSubtween(Tween subtween);Встраивает подготовленный Tween в родительскую последовательность и снимает его с независимой обработки деревом. При старте подкоманда сбрасывает subtween через Stop и запускает его; Kill родителя распространяется на потомков. Не используйте одновременно одного subtween в нескольких владельцах и не создавайте циклы. Проверено распространение Kill, точное временное продвижение subtween — только по исходникам.
| Имя | Тип | По умолчанию |
|---|---|---|
subtween | Tween | — |
subtweenПодготовленная последовательность без циклического/разделённого владения.
SubtweenTweenerДобавленный SubtweenTweener для настройки; при недопустимом вызове возможны null и диагностика.
Сигналы и события3
FinishedСобытие
public event Action Finished;Сигнал после последнего прохода конечной последовательности. Kill и Stop его не испускают. Бесконечные loops не имеют естественного Finished. Автоматическая очистка дерева делает последовательность невалидной; для новой анимации создайте новый Tween вместо ожидания возможности переиспользовать старый.
LoopFinishedСобытие
public event Tween.LoopFinishedEventHandler LoopFinished;Выдаётся после завершённого прохода, когда будет ещё один. Финальный проход конечного Tween испускает Finished вместо LoopFinished. loopCount — число уже завершённых проходов, начинается с 1.
| Имя | Тип | По умолчанию |
|---|---|---|
loopCount | long | — |
loopCountЧисло уже завершённых проходов, от 1; финальный проход даёт Finished.
StepFinishedСобытие
public event Tween.StepFinishedEventHandler StepFinished;Сигнал окончания шага с индексом от 0. Шаг может содержать несколько параллельных Tweeners и заканчивается после всех них. Не означает завершение всего Tween; при loops индексы шагов повторяются.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | long | — |
idxИндекс завершённого шага от 0, не индекс кадра/цикла.
Tween.EaseType
| Значение | Описание |
|---|---|
In = 0 | Интерполяция начинается медленно и ускоряется к концу. |
InOut = 2 | Комбинация |
Out = 1 | Интерполяция начинается быстро и замедляется к концу. |
OutIn = 3 | Комбинация |
Tween.TransitionType
| Значение | Описание |
|---|---|
Back = 10 | Анимация интерполируется с отходом назад на концах. |
Bounce = 9 | Анимация интерполируется путем подпрыгивания в конце. |
Circ = 8 | Анимация интерполируется с помощью функции, использующей квадратные корни. |
Cubic = 7 | Анимация интерполируется с помощью кубической (в степени 3) функции. |
Elastic = 6 | Анимация интерполирована с эластичностью, покачиваясь по краям. |
Expo = 5 | Анимация интерполируется с помощью экспоненциальной (в степени x) функции. ТР_ЭЛАСТИКИ |
Linear = 0 | Анимация интерполируется линейно. |
Quad = 4 | Анимация интерполируется с помощью квадратичной (в степени 2) функции. |
Quart = 3 | Анимация интерполируется с помощью функции четвертой степени. |
Quint = 2 | Анимация интерполируется с помощью функции пятой степени. |
Sine = 1 | Анимация интерполируется с использованием синусоидальной функции. |
Spring = 11 | Анимация к концу интерполируется подобно пружине. |
Tween.TweenPauseMode
| Значение | Описание |
|---|---|
Bound = 0 | Если |
Process = 2 |
|
Stop = 1 | Если |
Tween.TweenProcessMode
| Значение | Описание |
|---|---|
Idle = 1 |
|
Physics = 0 |
|