This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Синхронизация анимаций

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53
Ну изучи пожалуйста тогда, как работает async и await. И тогда ты поймешь, что никакой разницы между моим методом и твоим нет, мой так же выполнится только тогда, когда анимка будет подгружена.
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,219
1,425
191
27
Я работаю с C# и я знаю как работают async и await, спасибо.
Раз разницы нет - успехов.
 
Последнее редактирование:

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53
Я работаю с C# и я знаю, спасибо.
Раз разницы нет - успехов.
Плохо работаешь видимо, раз не понимаешь, как это работает. Не знаешь, в чем проблема - промолчи, а не пытайся доказать, что ты единственный шарящий тут, а все остальные - идиоты. Проблема эта не только с анимкой, как я и писал выше, а и при аттаче объектов/сущностей в том числе. Там никаких request...Dict нет и в помине.
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,219
1,425
191
27
Okay, brother, плохо так плохо. Жаль, что у меня это будет работать и на шарпе, и на js, потому что с клиентом рейджа я работал на обоих языках. Но оставляю тебя в полном праве мыслить подобным образом, мне от твоего мнения ни горячо, ни холодно. Еще раз, успехов.
 

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53
И тебе успехов, проблема в любом случае решена + ты был прав именно в этом моменте, таймаут и необходим был, только дело не в handle. За это в любом случае спасибо.
 
Реакции: dooj

mippoosedev

Гуру
2 Мар 2021
294
139
100
Так вы оба хуйни сморозили, но Делюкс тут больше прав. Дело как раз таки в том, что у тебя возвращаемый тип - void, т.е не возвращает ничего, значит код, с которого вызывается этот void не остановится и продолжит работу. Если ты сделаешь в своём методе requestAnimDict возвращаемый тип bool и будешь возвращать true, если подгрузилось, и false если у человека potato PC и уж слишком долго подгружает - то код будет выполняться синхронно, соответственно у тебя не продолжит работу этот евент(с которого был вызван реквестДикт) до того момента, пока не придёт этот ожидаемый бул. Разница в таком варианте с вариантом Делюкса лишь в том, что у тебя этот код будет выполняться синхронно, а со способом Делюкса асинхронно, т.е в каком либо стороннем потоке. И то и то подходит одинаково, я в таких случаях предпочитаю ставить возвращаемое значение типа bool, далее через стандартный if проверять, всё ли гуд или нет. Если нет - выводить уведомление игроку(в твоём случае просто забивать хуй, т.к это анимка и зачем вообще что-то выводить), если да - спокойно продолжать работу кода

P.S Я конечно могу что-то спутать, но по опыту с .netcore 3.1 делаю именно так
 
Последнее редактирование:

mippoosedev

Гуру
2 Мар 2021
294
139
100
P.S Даже протестил. Мб от каких то "секретных" настроек проекта это конечно зависит, но очень в этом сомневаюсь. Не знаю почему и как это работает с войдом, но если он долго выполняется - он будто пропускает дальнейший код

P.S.S Код с спавном машинок выполняется гдет 600мс
 
Реакции: XDeveluxe

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,219
1,425
191
27
Примерно это я пытался объяснить, что так может случаться, зная по опыту. Но, как говорится, я плохо разбираюсь, да и хуй с ним
 

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53


(Спойлер) Поставь хоть 500000, код, который следует после Test(); не выполнится до тех пор, пока void Test() не закончит свою работу (нагрузка от requestAnimDict нулевая, анимки подгужаются мгновенно, поэтому так происходит, вывести 500000 строк в консоль и то затратнее)
Та разница, которую ты описал про async, мол, что если у человека медленный комп, имеет смысл, просто в данном случае дело в том, что анимки подгружаются пиздец как быстро на любом железе (тем более, если оно смогло запустить саму игру). Я в таких случаях предпочитаю не навешивать лишние async await.
 

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53
Все, что я пытался доказать, что не в requestAnimDict дело, если бы оно у меня не выполнялось, то анимка бы не работала вообще, не важно, при streamIn или нет.
 

mippoosedev

Гуру
2 Мар 2021
294
139
100
Свой скрин скинул выше, у меня это работает так, как я описал выше. Энивей, лучше возвращать конечно булеан, мало ли будет какая либо ошибка
 

mippoosedev

Гуру
2 Мар 2021
294
139
100
Та это итак понятно, делей тут лучший выход. Только при телепортации будет выглядеть странно, т.к анимка начнётся через этот делей)
 

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53
Да, именно так. Но requestAnimDict работает мгновенно. Поэтому так и происходит и поэтому я не навешиваю async await туда, оно и без него работает и будет работать
 

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53
Ну, делей 2.5 сек, но что поделать, я тестил это много раз, и с анимкой и с аттачем происходит то же самое без делея при streamIn. Потому это лучший выход, который я смог найти.
На 5 рп этот баг, например, не исправлен, поэтому можно ездить по карте и встретить оружие в воздухе, которое так то должно быть на спине у игрока, но аттач не сработал, т.к. делея не было и оно остается в воздухе висеть
 

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53
Все дебилы, а я Д'Артаньян.
Дружище, кто тебе говорит, что ты дебил? У меня подгорело лишь с того, что ты не мог понять, что дело не в requestAnimDict, я тебе пытался донести, что абсолютно такое же поведение и при аттаче, что это вообще не причина этой проблемы
 

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53
Возможно на случай ошибки такой сделаю с ожиданием возвратом булеана. Просто мою проблему это не пофиксит, проблема на уровне игры со streamIn и попытке применить аттач/анимку мгновенно при streamIn
 

frytech

Начинающий специалист
Автор темы
15 Янв 2022
128
17
53


Хмм, странно. Я вот решил проверить на длительность и несколько раз запустил этот код (выполняется секунд 5). Все происходит логично, не продолжает свою работу, пока не завершит Test()