• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

Вопрос Resolver PlayBackRate

  • Автор темы Автор темы CyGhost
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
5 Июн 2021
Сообщения
100
Реакции
6
How should i setup playbackrate for my resolver? i am doing it like this and i know its very wrong but its best i got, heres example:

Код:
Expand Collapse Copy
            for (int i = ROTATE_FIRST; i < ROTATE_COUNT; i++)
            {
                entity->invalidateBoneCache();
                std::array<AnimationLayer, 13> BackupLayers{ };
                memcpy(BackupLayers.data(), player.layers.data(), entity->getAnimationLayersCount() * sizeof(AnimationLayer));
                switch (i) // we dont need to do switch statement but its easier for me
                {
                case ROTATE_FIRST:                 
                    entity->setupBones(player.resolver_matrix[1].data(), MAXSTUDIOBONES, BONE_USED_BY_ANYTHING, entity->simulationTime());

                    memcpy(player.layers.data(), BackupLayers.data(), entity->getAnimationLayersCount() * sizeof(AnimationLayer));

                    player.ResolverPlaybackRates.at(1) = player.layers[6].playbackRate;
                    break;
                case ROTATE_SECOND:

                    entity->setupBones(player.resolver_matrix[2].data(), MAXSTUDIOBONES, BONE_USED_BY_ANYTHING, entity->simulationTime());

                    memcpy(player.layers.data(), BackupLayers.data(), entity->getAnimationLayersCount() * sizeof(AnimationLayer));

                    player.ResolverPlaybackRates.at(2) = player.layers[6].playbackRate;
                    break;
                case ROTATE_THIRD:
                    entity->setupBones(player.resolver_matrix[3].data(), MAXSTUDIOBONES, BONE_USED_BY_ANYTHING, entity->simulationTime());

                    memcpy(player.layers.data(), BackupLayers.data(), entity->getAnimationLayersCount() * sizeof(AnimationLayer));

                    player.ResolverPlaybackRates.at(3) = player.layers[6].playbackRate;
                    break;
                }
            }
 
here's my advice

check if player is animating

rotate server
rotate maximum right
rotate maximum left
rotate minimum right
rotate minimum left

simulate and compare all of that and calculate your playback rate on the 6th layer of animation system


if not animating

switch (missed_shots[idx] % 3)
case 1:
+60
case 2:
-60


enjoy skeet premium resolver ez $$$
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
I looked at your code, and I strongly doubt that you wrote it yourself, although there are such gross code misstakes, I recommend that you learn C++ first.
If this isn't your code, just start from scratch, you really shouldn't be pasting something like this.
Also you can no longer rely solely on animation unlike 2020, but animation should definitely be one of the factors you use to extract real position information.
 
Чтобы установить скорость воспроизведения, тебе нужно изменить поле playbackRate структуры AnimationLayer для соответствующего слоя. Похоже, что ты копируете исходные анимационные слои в резервный массив, модифицируете слои анимации и затем снова копируете резервные слои. Это не нужно.

Вот пример того, как ты можете установить скорость воспроизведения для определенного слоя:

C++:
Expand Collapse Copy
AnimationLayer& layer = player.layers[6];
layer.playbackRate = desiredPlaybackRate;

Затем ты можете использовать этот измененный AnimationLayer при вызове entity->setupBones(), чтобы обновить матрицы костей сущности.

Стоит также учесть, что в большинстве случаев лучше избегать использования оператора switch или ряда операторов if для обработки различных случаев. Вместо этого можно использовать массив или отображение (map) для хранения желаемых скоростей воспроизведения и использовать индекс цикла в качестве ключа для поиска нужного значения. Это сделает ваш код более читаемым и поддерживаемым.
 
Назад
Сверху Снизу