reckfellENGINE

Tween

Последовательности изменения свойств, callbacks и временных шагов.

На этой странице
class TweenReckfellSharpНаследует RefCounted

Создавайте рабочий 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Конструктор
# Tween
C#
public Tween();

Прямой new Tween() недопустим для рабочей анимации: native-конструктор выдаёт ошибку, объект остаётся невалидным. Используйте Entity.CreateTween() или EntityTree.CreateTween() и сразу добавьте команды до первого шага. Конструктор присутствует в SDK, но это не рекомендация его вызывать.

Методы28

BindEntityTween
# BindEntity
C#
public Tween BindEntity(Entity node);

Связывает жизненный цикл и режим Bound с Entity, не назначает цель всех TweenProperty. Пока Entity вне дерева, последовательность не продвигается, даже через CustomStep. После удаления объекта последовательность прекращается при обработке деревом. Для автоматической привязки используйте Entity.CreateTween; unbound EntityTree.CreateTween настраивается отдельно.

Параметры
ИмяТипПо умолчанию
nodeEntity—
node

Живая Entity-владелец привязки; не обязательная цель всех свойств.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

ChainTween
# Chain
C#
public Tween Chain();

Только следующий добавляемый Tweener начинает новый последовательный шаг. Полезно после SetParallel(true), чтобы дождаться окончания всей параллельной группы. Не исполняет накопленные команды немедленно и не меняет defaultParallel для всех следующих добавлений.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

CustomStepbool
# CustomStep
C#
public bool CustomStep(double delta);

Вручную продвигает последовательность на delta с учётом SpeedScale, в том числе когда она Pause. Не включает постоянное Play и не заменяет требование bound Entity находиться в дереве. Не вызывайте рекурсивно из того же шага. В 1.0.0 шаг, испустивший Finished, ещё возвращает true; следующий вызов для завершённой последовательности — false. Поэтому bool не является точным событием завершения. Для тестов сначала Pause, чтобы избежать параллельного автоматического продвижения.

Параметры
ИмяТипПо умолчанию
deltadouble—
delta

Ручной положительный конечный шаг в секундах, далее умножается на SpeedScale.

Возвращает bool

Ответ native step; на шаге Finished ещё true, при следующем вызове завершённого Tween false.

GetLoopsLeftint
# GetLoopsLeft
C#
public int GetLoopsLeft();

Число оставшихся полных проходов с учётом текущего. SetLoops(2) означает два прохода всего, не два дополнительных. −1 для loops<=0. После конечного завершения — 0; это не время и не число шагов.

Возвращает int

Оставшиеся проходы, −1 для бесконечности, 0 после конечного завершения.

GetTotalElapsedTimedouble
# GetTotalElapsedTime
C#
public double GetTotalElapsedTime();

Накопленная входная delta с учётом SpeedScale, включая циклы и избыточный остаток последнего ручного шага. Не точная длительность анимации и не настенные секунды. Stop сбрасывает значение; Pause сохраняет его.

Возвращает double

Накопленная scaled delta, возможно больше фактической длительности.

HasTweenersbool
# HasTweeners
C#
public bool HasTweeners();

Проверяет, есть ли сохранённые команды. Не означает, что Tween валиден, запущен или ещё выполняет работу: Kill не очищает список немедленно, а последующая очистка дерева очищает.

Возвращает bool

True при непустом списке команд.

InterpolateValueVariant
# InterpolateValue
C#
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 — поддерживаемыми интерполяцией. В этом проходе проверены скалярные числа; это не универсальная интерполяция любых объектов.

Параметры
ИмяТипПо умолчанию
initialValueVariant—
deltaValueVariant—
elapsedTimedouble—
durationdouble—
transTypeTween.TransitionType—
easeTypeTween.EaseType—
initialValue

Начальное значение поддержанного Variant-типа.

deltaValue

Разница конечного и начального значений; не конечное значение.

elapsedTime

Положение на временной шкале интерполяции, не показание часов.

duration

Длительность в секундах; валидируйте конечность/неотрицательность. Ноль у InterpolateValue даёт финал.

transType

Допустимый TransitionType для статического расчёта.

easeType

Допустимый EaseType для статического расчёта.

Возвращает Variant

Собственный Variant результата; освободите wrapper после чтения.

IsRunningbool
# IsRunning
C#
public bool IsRunning();

Возвращает флаг Play. False после Pause/Stop/Kill или конечного завершения. True само по себе не доказывает валидность, прогресс в текущем кадре или доступный bound-объект; учитывайте IsValid и режим паузы.

Возвращает bool

Флаг разрешённого продвижения, не гарантия валидности/обработки.

IsValidbool
# IsValid
C#
public bool IsValid();

Показывает, пригодна ли последовательность в её текущем lifecycle. new Tween невалиден; Kill сразу делает false. После естественного Finished очистка деревом может произойти на следующем проходе. Valid не обещает IsRunning и не разрешает добавление после старта без Stop.

Возвращает bool

Флаг пригодности в текущем lifecycle.

Killvoid
# Kill
C#
public void Kill();

Останавливает и немедленно инвалидирует последовательность, включая её subtweens. Не испускает Finished и не возвращает изменённые свойства к исходным значениям. Не используйте как Pause: убитую последовательность нельзя продолжить Play.

ParallelTween
# Parallel
C#
public Tween Parallel();

Только следующий добавляемый Tweener присоединяется к текущему шагу. После добавления снова действует режим SetParallel. Весь шаг заканчивается после наиболее долгого участника; это параллельность анимационных команд, не запуск OS-потоков.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

Pausevoid
# Pause
C#
public void Pause();

Приостанавливает автоматическое продвижение, сохраняя текущий шаг, время и свойства. Play продолжает, CustomStep может продвинуть вручную. Не эквивалент Stop, который сбрасывает внутренний старт/счётчик времени.

Playvoid
# Play
C#
public void Play();

Разрешает продвижение валидного Tween после Pause/Stop. Не оживляет Kill и не гарантирует обработку при паузе дерева или отсутствии bound Entity в дереве. Для естественно завершённого и очищенного Tween создайте новый объект.

SetEaseTween
# SetEase
C#
public Tween SetEase(Tween.EaseType ease);

Задаёт easing по умолчанию для добавляемых дальше Property/MethodTweeners. Уже добавленные команды сохраняют захваченные настройки; меняйте их собственными методами при необходимости. Не меняет длительность или режим обработки.

Параметры
ИмяТипПо умолчанию
easeTween.EaseType—
ease

Easing для добавляемых дальше команд.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

SetIgnoreTimeScaleTween
# SetIgnoreTimeScale
C#
public Tween SetIgnoreTimeScale(bool ignore = true);

Для автоматической обработки выбирает unscaled delta дерева. Не отменяет Pause, tree pause mode или bound lifecycle. CustomStep получает delta от вызывающего кода и отдельно умножает её на SpeedScale. Реальное автоматическое влияние TimeScale здесь сверено по исходникам, не измерено.

Параметры
ИмяТипПо умолчанию
ignorebooltrue
ignore

True выбирает unscaled delta при автоматической обработке.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

SetLoopsTween
# SetLoops
C#
public Tween SetLoops(int loops = 0);

Задаёт общее число проходов; 1 — один, 2 — два. Значение по умолчанию при вызове без аргумента равно 0 и включает бесконечное повторение, как и отрицательное значение. Добавьте реальную временную задержку или условие остановки: бесконечные команды нулевой длительности могут вызвать диагностику бесконечного цикла.

Параметры
ИмяТипПо умолчанию
loopsint0
loops

Общее число проходов; <=0 означает бесконечность.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

SetParallelTween
# SetParallel
C#
public Tween SetParallel(bool parallel = true);

Меняет default-режим группировки следующих добавлений. True добавляет их в один шаг; Chain начинает новый шаг для следующего добавления. False возвращает последовательное добавление. Не выполняет команды одновременно в разных потоках.

Параметры
ИмяТипПо умолчанию
parallelbooltrue
parallel

Default-режим добавления в общий шаг, не запуск потоков.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

SetPauseModeTween
# SetPauseMode
C#
public Tween SetPauseMode(Tween.TweenPauseMode mode);

Задаёт реакцию на паузу дерева: Bound ориентируется на привязанную Entity, Stop останавливает продвижение при tree pause, Process допускает его. Это не вызов Pause/Play самого Tween. Bound без привязки не создаёт владельца. Реальные tree-pause переходы здесь только source-reviewed.

Параметры
ИмяТипПо умолчанию
modeTween.TweenPauseMode—
mode

Bound/Stop/Process для реакции на паузу дерева.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

SetProcessModeTween
# SetProcessMode
C#
public Tween SetProcessMode(Tween.TweenProcessMode mode);

Выбирает Idle или Physics для автоматического продвижения деревом. Physics не делает Tween физической симуляцией и не гарантирует точное время/число отсчётов. Manual CustomStep не ждёт этого callback. Автоматический physics-проход здесь не выполнялся.

Параметры
ИмяТипПо умолчанию
modeTween.TweenProcessMode—
mode

Idle или Physics для автоматического шага.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

SetSpeedScaleTween
# SetSpeedScale
C#
public Tween SetSpeedScale(float speed);

Множитель delta и накопленного времени, не новая длительность всех команд. Обычно задавайте положительное конечное значение; 2 проходит время вдвое быстрее. Ноль не продвигает шаги, отрицательное значение не является поддержкой обратного проигрывания. Проверено значение 2 с ручными шагами.

Параметры
ИмяТипПо умолчанию
speedfloat—
speed

Множитель времени; используйте положительное конечное значение.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

SetTransTween
# SetTrans
C#
public Tween SetTrans(Tween.TransitionType trans);

Задаёт transition по умолчанию для будущих Property/MethodTweeners. Уже добавленные команды не перенастраиваются автоматически. Для линейной интерполяции используйте Linear; допустимость/качество каждой кривой здесь не оценивались визуально.

Параметры
ИмяТипПо умолчанию
transTween.TransitionType—
trans

Transition для добавляемых дальше команд.

Возвращает Tween

Тот же Tween для цепочки вызовов; это не новая независимая копия.

Stopvoid
# Stop
C#
public void Stop();

Останавливает и сбрасывает внутренний старт и elapsed time, сохраняя добавленные команды. Не возвращает свойства к исходным значениям и не испускает Finished. При следующем старте PropertyTweener по умолчанию может взять уже изменённое текущее значение. Пока объект валиден, Stop позволяет изменить список перед новым стартом; после очистки дерева используйте новый Tween.

TweenAwaitAwaitTweener
# TweenAwait
C#
public AwaitTweener TweenAwait(Signal signal);

Добавляет ожидание Signal, не C# Task и не ожидание любого будущего события задним числом. Подключение создаётся при добавлении, а при старте шага received сбрасывается: раннее испускание не гарантирует завершение будущего шага. Сигнал завершается на следующей обработке, а не синхронно заменяет весь Tween. Уничтожение источника/исчезновение соединения также завершает этот Tweener; завершение не доказывает полученный сигнал. Таймаут настраивается у возвращённого AwaitTweener.

Параметры
ИмяТипПо умолчанию
signalSignal—
signal

Signal живого источника; раннее событие до старта шага может быть сброшено.

Возвращает AwaitTweener

Добавленный AwaitTweener для настройки; при недопустимом вызове возможны null и диагностика.

TweenCallbackCallbackTweener
# TweenCallback
C#
public CallbackTweener TweenCallback(Callable callback);

Добавляет Callable без аргументов, который выполняется при достижении шага. Не вызывает его сразу при добавлении. Удерживайте нужные данные/цель; не передавайте результат уже выполненного вызова. Callback не переносится в worker автоматически.

Параметры
ИмяТипПо умолчанию
callbackCallable—
callback

Callable без обязательных аргументов, выполняемый позже.

Возвращает CallbackTweener

Добавленный CallbackTweener для настройки; при недопустимом вызове возможны null и диагностика.

TweenIntervalIntervalTweener
# TweenInterval
C#
public IntervalTweener TweenInterval(double time);

Добавляет временную паузу внутри последовательности; это не блокирующий sleep главного потока. Время расходуется шагами Tween и зависит от скорости/автоматической time-scale политики. В parallel-группе учитывается вместе с другими участниками.

Параметры
ИмяТипПо умолчанию
timedouble—
time

Неотрицательная конечная длительность интервала в секундах.

Возвращает IntervalTweener

Добавленный IntervalTweener для настройки; при недопустимом вызове возможны null и диагностика.

TweenMethodMethodTweener
# TweenMethod
C#
public MethodTweener TweenMethod(Callable method, Variant from, Variant to, double duration);

Передаёт Callable одно интерполируемое значение от from до to на шагах обработки. Callback должен принимать подходящий тип Variant; это не имя свойства. from/to задают начальное и конечное значения, в отличие от deltaValue у InterpolateValue. Проверен double callback с Linear; неизвестные типы/ошибки вызова не выполнялись.

Параметры
ИмяТипПо умолчанию
methodCallable—
fromVariant—
toVariant—
durationdouble—
method

Callable, принимающий одно интерполируемое значение.

from

Начальное значение; тип согласуйте с to и callback.

to

Конечное значение, не разница from/to.

duration

Длительность в секундах; валидируйте конечность/неотрицательность. Ноль у InterpolateValue даёт финал.

Возвращает MethodTweener

Добавленный MethodTweener для настройки; при недопустимом вызове возможны null и диагностика.

TweenPropertyPropertyTweener
# TweenProperty
C#
public PropertyTweener TweenProperty(ReckfellObject @object, EntityPath property, Variant finalVal, double duration);

Добавляет изменение свойства объекта до finalVal. EntityPath здесь путь свойства/компонента, например position:x, а не путь к Entity в дереве. Свойство должно существовать, типы — соответствовать. Начальное значение по умолчанию считывается при старте команды, что важно после Stop или задержки. Привязка жизненного цикла не создаётся автоматически одним указанием target; используйте BindEntity/Entity.CreateTween.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
propertyEntityPath—
finalValVariant—
durationdouble—
object

Живой объект с доступным свойством; не имя/путь объекта.

property

EntityPath свойства/компонента, например position:x.

finalVal

Конечное значение совместимого с текущим свойством типа.

duration

Длительность в секундах; валидируйте конечность/неотрицательность. Ноль у InterpolateValue даёт финал.

Возвращает PropertyTweener

Добавленный PropertyTweener для настройки; при недопустимом вызове возможны null и диагностика.

TweenSubtweenSubtweenTweener
# TweenSubtween
C#
public SubtweenTweener TweenSubtween(Tween subtween);

Встраивает подготовленный Tween в родительскую последовательность и снимает его с независимой обработки деревом. При старте подкоманда сбрасывает subtween через Stop и запускает его; Kill родителя распространяется на потомков. Не используйте одновременно одного subtween в нескольких владельцах и не создавайте циклы. Проверено распространение Kill, точное временное продвижение subtween — только по исходникам.

Параметры
ИмяТипПо умолчанию
subtweenTween—
subtween

Подготовленная последовательность без циклического/разделённого владения.

Возвращает SubtweenTweener

Добавленный SubtweenTweener для настройки; при недопустимом вызове возможны null и диагностика.

Сигналы и события3

FinishedСобытие
# Finished
C#
public event Action Finished;

Сигнал после последнего прохода конечной последовательности. Kill и Stop его не испускают. Бесконечные loops не имеют естественного Finished. Автоматическая очистка дерева делает последовательность невалидной; для новой анимации создайте новый Tween вместо ожидания возможности переиспользовать старый.

LoopFinishedСобытие
# LoopFinished
C#
public event Tween.LoopFinishedEventHandler LoopFinished;

Выдаётся после завершённого прохода, когда будет ещё один. Финальный проход конечного Tween испускает Finished вместо LoopFinished. loopCount — число уже завершённых проходов, начинается с 1.

Параметры обработчика
ИмяТипПо умолчанию
loopCountlong—
loopCount

Число уже завершённых проходов, от 1; финальный проход даёт Finished.

StepFinishedСобытие
# StepFinished
C#
public event Tween.StepFinishedEventHandler StepFinished;

Сигнал окончания шага с индексом от 0. Шаг может содержать несколько параллельных Tweeners и заканчивается после всех них. Не означает завершение всего Tween; при loops индексы шагов повторяются.

Параметры обработчика
ИмяТипПо умолчанию
idxlong—
idx

Индекс завершённого шага от 0, не индекс кадра/цикла.

Tween.EaseType

ЗначениеОписание
In = 0

Интерполяция начинается медленно и ускоряется к концу.

InOut = 2

Комбинация Tween.EaseType.In и Tween.EaseType.Out. Интерполяция самая медленная на обоих концах.

Out = 1

Интерполяция начинается быстро и замедляется к концу.

OutIn = 3

Комбинация Tween.EaseType.In и Tween.EaseType.Out. Интерполяция выполняется быстрее всего на обоих концах.

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

Если Tween имеет связанный узел, то он будет обрабатываться, когда этот узел тоже может обрабатываться (см. Entity.ProcessMode). В противном случае это то же самое, что и Tween.TweenPauseMode.Stop.

Process = 2

Tween будет обрабатываться независимо от того, приостановлено ли EntityTree.

Stop = 1

Если EntityTree приостановлен, Tween также будет приостановлен.

Tween.TweenProcessMode

ЗначениеОписание
Idle = 1

Tween обновляется после каждого кадра процесса (см. Entity._Process).

Physics = 0

Tween обновляется после каждого физического кадра (см. Entity._PhysicsProcess).

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.