HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Помогите в написании функции TraceHull принимающей аргументы mins & maxs (https://hlfx.ru/forum/showthread.php?threadid=1937)
Отправлено Immortal*BLG 26-08-2009 в 04:21:
Помогите в написании функции TraceHull принимающей аргументы mins & maxs
Собственно сабж.
Мне нужна функция как из ХЛ2, но только принимающая не 3D mins и maxs а 2D. Я тут написал уже и это работает, но очень медленно, да и как мне кажеться не правильно....
C++ Source Code:
1 | inline void TraceHull (const Math::Vector3D &source, const Math::Vector3D &destination, const Math::Vector2D &mins, const Math::Vector2D &maxs, const HalfLifeEngine::SDK::Constants::TraceIgnore_t traceIgnore, HalfLifeEngine::SDK::Classes::Edict *const entityToSkip, HalfLifeEngine::SDK::Structures::TraceResult_t &traceResult) |
3 | HalfLifeEngine::SDK::Structures::TraceResult_t tempTraceResult; |
6 | bool isStartSolid = false, isAllSolid = false; |
8 | for (offset.x = mins.x; offset.x < maxs.x; ++offset.x) |
9 | for (offset.y = mins.y; offset.y < maxs.y; ++offset.y) |
11 | HalfLifeEngine::Globals::g_halfLifeEngine->TraceLine (source + offset, destination + offset, traceIgnore, entityToSkip, tempTraceResult); |
13 | if (tempTraceResult.isStartSolid) |
16 | if (tempTraceResult.isAllSolid) |
19 | if (tempTraceResult.fraction < fraction) |
21 | traceResult = tempTraceResult; |
22 | fraction = tempTraceResult.fraction; |
26 | traceResult.isStartSolid = isStartSolid; |
27 | traceResult.isAllSolid = isAllSolid; |
Отправлено Дядя Миша 26-08-2009 в 07:36:
Immortal*BLG еще раз русским языком объясни что тебе нужно?
Трасить 2D объекты в hl2 или в своем движке или ты какой-то AMX-Mod пишешь?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Immortal*BLG 26-08-2009 в 08:07:
Мне нужно сделать быструю фнкцию TraceHull как в HL2, тока на базе движка HL1, которая заместо аргумента int hullNumber будет принимать 2 аргумента Vector mins, Vector maxs и работать с ними.
Пишу я не на amxx, разве выше упомянутый код похож на pawn?
(ПРОШУ НЕ ПИСАТЬ: "А ПОЧЕМУ ТЕБЕ ИМЕННО ТАК НАДО, ЮЗАЙ СТАНДАРТНЫЙ ТРЕЙС ХУЛЛ")
И еще одно - ты написал
Цитата:
Трасить 2D объекты
- мне надо трейсить 3D объекты, просто я опускаю z компонент векторов mins & maxs.
C++ Source Code:
TraceHull (source, destination, Vector (-16, -16), Vector (16, 16), /*other arguments....*/) |
- это тоже самое, что и
C++ Source Code:
TraceHull (source, destination, Vector (-16, -16, 0), Vector (16, 16, 0), /*other arguments....*/) |
но мне нужно первое.
Отправлено Дядя Миша 26-08-2009 в 09:54:
Immortal*BLG ну так ты вместо Z подставь ноль и будет тебе трасинг в 2D.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Immortal*BLG 26-08-2009 в 12:15:
ДА УЖ ЭТО НАВЕРНО САМЫЙ УМНЫЙ ОТВЕТ НЕДЕЛИ!!!!!! - извини за нескромность.
1) МНЕ НУЖЕН 3D ТРЕЙСИНГ - я об этом уже писал выше.
2) Где ты видел функцию TraceHull в hl1 которая принимает mins & maxs? Я просто показал тебе, что мне не нужен компонент Z в этих аргументах, а source & destination - это 3D векторы, просто я сделал опечатку, написав во втором своем посте, что мне нужны 3д mins и maxs - там они должны быть 2D.
Отправлено XaeroX 26-08-2009 в 13:46:
Immortal*BLG
Да вроде бы нельзя в халфе трейсить кастомные халлы. Это ж тебе не ку3.
Но зато можно подменить стандартные халлы своими. Кури мануалы по ZHLT, pfnGetHullBounds и HUD_GetHullBounds.
__________________
Отправлено Дядя Миша 26-08-2009 в 14:57:
Цитата:
Где ты видел функцию TraceHull в hl1 которая принимает mins & maxs?
А с чего ты вообще взял, что в hl1 можно подставлять различные mins и maxs ? Там 4 хулла и они фиксированы.
Ты сам не знаешь чего хочешь, ты не понимаешь как оно работает и еще и огрызаешься.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Immortal*BLG 27-08-2009 в 03:43:
Люди, вы разве слепые? Я же в первом посте выложил функцию, которая на основе TraceLine работает как TraceHull - так вот вопрос для профи, (хотя читая посты Дяди Мишы я уже сомневаюсь в этом) вобщем как эту функцию можно ускорить, переписать, может кто-то знает как точно вообще работает hl1 TraceHull - мало-ли.
XaeroX спасибо, проверю....
Добавлено 27-08-2009 в 13:43:
Не XaeroX, pfnGetHullBounds это мне не нужно....
Отправлено XaeroX 27-08-2009 в 05:35:
Мда... Клинический случай.
__________________
Отправлено Дядя Миша 27-08-2009 в 07:27:
Immortal*BLG это тебе кажется, что она так работает.
Ты даже не дал себе труда правильно скомбинировать результаты.
Флуд ни о чем, закрываю тему.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'