Ilya
да какие конкуренты
Anton
Ilya
как можно ребенку конкурировать с инвалидом
Anton
position = curve.eval((current_time - start_time)/duration)
Ilya
это раст, ты должен был привыкнуть
Anonymous
Евенлуп у них конечно страшный) https://github.com/PistonDevelopers/piston/blob/master/src/event_loop/src/lib.rs
Ilya
короче если коротко - piston разбросан по туевой хуче полуготовых библиотек со слабой поддержкой и без документации
Ilya
и за это его не любят. У нас тут два митапа по геймдеву было - из 6 спикеров 4 сказали что он не очень
Anton
position = curve.eval((current_time - start_time)/duration)
Ну ок, смотри - есть к примеру вот эта либа http://orhanbalci.github.io/rust-easing/easer/index.html, нихуя не ясно что именно тут является параметрами, понятно что он берет некую единицу времени или количество фреймов, и относительно их создает вектор значений на каждую итерацию. Мне не ясно как в таком случае например выделить определенное время? Как обрабатывать тайминг, как время преобразовать в эту единицу фрейма и тд. Как провести отмену примерно ясно - я храню в глобальном контексте колбэк в виджете, когда проходит итерация с запускаю колбэк с получением значения которое потом можно отменить проставив стэйт
Ilya
правда один из них я был и я просто забыл микрофон выключить, но это не важно
Anton
но момент с работой относительно времени, все равно нихуя не понятно для меня
Anton
Anton
Anton
Даёшь ему начальное время, конечное и текущее
Anton
Anton
Он всё сам за тебя считает
Anton
Начальное сохраняешь в момент старта
Anton
Конечное там же вычисляешь как начальное + длительность анимации
Anton
Текущее как-нибудь тоже получишь
Anton
Стоп, я фигню сказал
Anton
Там уже позиции ему даёшь, похоже
kitsu
поясните за либы, которые вам оче-оче нужны на расте
Kerrigan
Anton
иииии?
Короче там пример элементарный
kitsu
возможно засяду на выходные и чонить запилю
Anton
Запусти его и поиграйся со значениями
Anton
Ну блин, это линейная интерполяция)
Anton
Ща
Anonymous
Я по поводу этой могу объяснить: https://github.com/michaelfairley/ezing
Пример:
let current_pos = lerp(ezing::cubic_inout(t), start, end);
start - это начальная позиция (num или кооординат)
end - это конечная (целевая) позиция (num или кооординат)
t - это интерполятор в диапазоне [0, 1]
ezing::cubic_inout и пр - это функция трансформации, которая нелинейно модифицирует нашу детерминированную переменную t по какому то закону, например экспоненте, полиному или синусу
Anton
Anton
Во, охуенно наглядная гифка
Anonymous
lerp - это a * t + b * (1 - t), где a и b начальное и конечное значения (иллюстрация как это происходит Anton привел выше)
Anonymous
Что тут еще не понятно?
Anton
как это привязать к времени то в ивентлупе
Anton
в каждом фрейме брать время
Maxim
всем привет, как лучше всего f64 привести к фиксированному количеству знаков после запятой?
Anton
и обозначать начальное время и конечное
Anton
и что?
Anton
как интерполировать и изменить это значение
Anonymous
у тебя есть dt - это релятивное время
Anton
или о чем я туплю
Anonymous
тебе нужно его аккумулировать
Maxim
желательно еще и не в строчку это кастить
Anton
ок давайте пример, в каждом фрейме я беру таймстемп
Anton
создавая анимацию я беру начальное время и конечное и привожу его к диапазону
LexsZero
Anton
(хуй знает как)
Anonymous
в каждом кадре делаешь absTime += dt
t и absTime это одно и тоже в твоем случае будет
Anton
и после это впихиваю с созданию вектора значений на каждую итерацию
Anton
или как?
Maxim
Anton
Maxim
я тут обнаружил, что у меня фиксированная точность, так что пофиг
Anonymous
deltaTime
Anton
что такое deltaTime
Anonymous
Я уже писал что это
Anton
не писал
Anton
Это сколько прошло времени с прошлого кадра
Anonymous
t.me/rustlang_ru/96340
Anton
ок понял, тоесть в каждом фрейме я запрашиваю время и высчитываю сколько прошло с прошлой полностью выполненной итерации
Anton
я его добавляю к абсолютному времени
Anton
и задаю абсолютное время как старт
Anton
и дальше нахожу среднее число и создаю финальное от этого абсолютного времени конечное время
Anton
иииии?
Anton
я запутался
Anton
Грубо говоря, тебе нужно знать на каждом кадре, сколько в процентах прошло времени от общего
Anton
А как ты его считаешь, не так важно
Anton
можно как нибудь для идиота объяснитьт что происзодить от А до Я в эвентлупе и при расчетах
Anton
пожалуйста
Anonymous
Для чего нужно dt. Дело в том, что время кадра не всегда постоянно, в идеале должно быть 16ms что эквивалентно 60fps но это это не всегда оно, может быть меньше и больше
Anonymous
Без dt у тебя анимация была бы то быстрее то медленнее
Anton
Anonymous
а так она позволяет менять шаг интерполяции и выравнивать скорость
Anton
так я примерно понял
Anton
а есть какой нибудь простой пример
Anton
на плюсах хотябы чтобы понять как это должно высчитываться в ивентлупе
Anton
я понимаю примерно но все еще не до конца как это выглядит
Anton
получение времени, назначению среднего