Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Правильно ли сделан ClipTrace?

  • Автор темы Автор темы ilon3s
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Окт 2022
Сообщения
101
Реакции
24
Код был взят с
Пожалуйста, авторизуйтесь для просмотра ссылки.

Забыл сказать что я его переделывал под вив

Код:
Expand Collapse Copy
void CAutoWall::ClipTrace(Vector& start, Vector& end, IBasePlayer* e, unsigned int mask, CTraceFilter* filter, CGameTrace* old_trace)
{
    Ray_t ray = {};
    ray.Init(start, end);

    float  smallest_fraction = old_trace->fraction;
    constexpr float max_range = 60.f;

    if (filter && !filter->ShouldHitEntity(e, mask))
        return;

    CGameTrace new_trace = {};
    interfaces.trace->ClipRayToEntity(ray, mask, e, &new_trace);

    if (new_trace.fraction < smallest_fraction)
    {
        smallest_fraction = new_trace.fraction;
        *old_trace = new_trace;
    }
}
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Ты это пропустил:
1672231474903.png
 
Пожалуйста, авторизуйтесь для просмотра ссылки.
Ты это пропустил:
Посмотреть вложение 233196
Запрос прими
Пожалуйста, авторизуйтесь для просмотра ссылки.
Ты это пропустил:
Посмотреть вложение 233196
WorldSpaceCenter Скинь
 
Последнее редактирование:
Во-первых, не указано, что будет происходить, если аргумент filter равен nullptr. В таком случае вызов filter->ShouldHitEntity(e, mask) приведет к ошибке.



Во-вторых, не указано, что будет происходить, если new_trace.fraction больше или равно smallest_fraction. В этом случае не будет выполнено никакое действие, что может привести к неправильному результату.


В-третьих, не указано, что будет происходить, если расстояние между start и end больше max_range. В этом случае функция может выполнить неправильную операцию с ray.
 
Последнее редактирование:
Во-первых, не указано, что будет происходить, если аргумент filter равен nullptr. В таком случае вызов filter->ShouldHitEntity(e, mask) приведет к ошибке.



Во-вторых, не указано, что будет происходить, если new_trace.fraction больше или равно smallest_fraction. В этом случае не будет выполнено никакое действие, что может привести к неправильному результату.


В-третьих, не указано, что будет происходить, если расстояние между start и end больше max_range. В этом случае функция может выполнить неправильную операцию с ray.
1 и 2 хуйня (вильям всегда прав) но к 3 я прислушался и сделал
 
Назад
Сверху Снизу