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

Исходник Lw hitbox_intersection fix

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
20 Янв 2021
Сообщения
33
Реакции
22
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
bool aim::hitbox_intersection(player_t* e, matrix3x4_t* matrix, int hitbox, const Vector& start, const Vector& end)
{
    auto model = e->GetModel();

    if (!model)
        return false;

    auto studio_model = m_modelinfo()->GetStudioModel(model);

    if (!studio_model)
        return false;

    auto studio_set = studio_model->pHitboxSet(e->m_nHitboxSet());

    if (!studio_set)
        return false;

    auto studio_hitbox = studio_set->pHitbox(hitbox);

    if (!studio_hitbox)
        return false;

    Vector min, max;

    const auto is_capsule = studio_hitbox->radius != -1.f;

    if (is_capsule)
    {
        math::vector_transform(studio_hitbox->bbmin, matrix[studio_hitbox->bone], min);
        math::vector_transform(studio_hitbox->bbmax, matrix[studio_hitbox->bone], max);
        const auto dist = math::segment_to_segment(start, end, min, max);

        if (dist < studio_hitbox->radius)
            return true;
    }
    else
    {
        math::vector_transform(math::vector_rotate(studio_hitbox->bbmin, studio_hitbox->rotation), matrix[studio_hitbox->bone], min);
        math::vector_transform(math::vector_rotate(studio_hitbox->bbmax, studio_hitbox->rotation), matrix[studio_hitbox->bone], max);

        math::vector_transform(start, matrix[studio_hitbox->bone], min);
        math::vector_rotate(end, matrix[studio_hitbox->bone], max);

        if (math::intersect_line_with_bb(min, max, studio_hitbox->bbmin, studio_hitbox->bbmax))
            return true;
    }

    return false;
}
 
Код:
Expand Collapse Copy
bool aim::hitbox_intersection(player_t* e, matrix3x4_t* matrix, int hitbox, const Vector& start, const Vector& end)
{
    auto model = e->GetModel();

    if (!model)
        return false;

    auto studio_model = m_modelinfo()->GetStudioModel(model);

    if (!studio_model)
        return false;

    auto studio_set = studio_model->pHitboxSet(e->m_nHitboxSet());

    if (!studio_set)
        return false;

    auto studio_hitbox = studio_set->pHitbox(hitbox);

    if (!studio_hitbox)
        return false;

    Vector min, max;

    const auto is_capsule = studio_hitbox->radius != -1.f;

    if (is_capsule)
    {
        math::vector_transform(studio_hitbox->bbmin, matrix[studio_hitbox->bone], min);
        math::vector_transform(studio_hitbox->bbmax, matrix[studio_hitbox->bone], max);
        const auto dist = math::segment_to_segment(start, end, min, max);

        if (dist < studio_hitbox->radius)
            return true;
    }
    else
    {
        math::vector_transform(math::vector_rotate(studio_hitbox->bbmin, studio_hitbox->rotation), matrix[studio_hitbox->bone], min);
        math::vector_transform(math::vector_rotate(studio_hitbox->bbmax, studio_hitbox->rotation), matrix[studio_hitbox->bone], max);

        math::vector_transform(start, matrix[studio_hitbox->bone], min);
        math::vector_rotate(end, matrix[studio_hitbox->bone], max);

        if (math::intersect_line_with_bb(min, max, studio_hitbox->bbmin, studio_hitbox->bbmax))
            return true;
    }

    return false;
}
зачем ты с festive выкладываешь суда ? :FeelsBadMan:
 
Назад
Сверху Снизу