- Статус
- Оффлайн
- Регистрация
- 20 Янв 2021
- Сообщения
- 33
- Реакции
- 22
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
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;
}
