Прошу прощения за поднятие старой темы. Случайно наткнулся на неё в поиске. Как я понял, проблема с кривым трейсом текстуры не была решена. Я недавно столкнулся с такой же проблемой, когда решил сделать разные декали для материалов, и когда положил на карту длинную деревянную доску с повернутой текстурой на ~30 градусов, то обнаружил тот же баг. Я так предполагаю, что TraceTexture упирается не в браш, а в текстуру. А текстура как бы "вылазит" за пределы браша, если, например, масштаб её увеличен, или она повёрнута. Но это лишь предположение, я понятия не имею, как работает эта функция. Короче, я исправил этот баг маленьким хаком. Приведу просто фрагмент кода. Делал на сервере.
C++ Source Code:
1
if (pEntity && pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE)
2
// hit body
3
chTextureType = CHAR_TEX_FLESH;
4
else
5
{
6
7
// Sigurth: вся соль тут. Вместо vecSrc используем ptr->vecEndPos, всё остальное оригинальный код
8
//vecSrc.CopyToArray(rgfl1);
9
(ptr->vecEndPos).CopyToArray(rgfl1);
10
vecEnd.CopyToArray(rgfl2);
11
12
// get texture from entity or world (world is ent(0))
Короче говоря, мы просто начинаем трейс буквально у его конца, тем самым минуя другие браши. Вот таким вот образом можно избежать ~99% появлений этого бага. По крайней мере, у себя я его больше не встречал.