HLFX.Ru Forum
Показать все 10 сообщений этой темы на одной странице

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:

Exclamation Помогите в написании функции 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)
2
{
3
  HalfLifeEngine::SDK::Structures::TraceResult_t tempTraceResult;
4
  float fraction = 1.0f;
5
  Math::Vector2D offset;
6
  bool isStartSolid = false, isAllSolid = false;
7
 
8
  for (offset.x = mins.x; offset.x < maxs.x; ++offset.x)
9
    for (offset.y = mins.y; offset.y < maxs.y; ++offset.y)
10
    {
11
      HalfLifeEngine::Globals::g_halfLifeEngine->TraceLine (source + offset, destination + offset, traceIgnore, entityToSkip, tempTraceResult);
12
 
13
    if (tempTraceResult.isStartSolid)
14
      isStartSolid = true;
15
 
16
    if (tempTraceResult.isAllSolid)
17
      isAllSolid = true;
18
 
19
    if (tempTraceResult.fraction < fraction)
20
    {
21
      traceResult = tempTraceResult;
22
      fraction = tempTraceResult.fraction;
23
    }
24
  }
25
 
26
  traceResult.isStartSolid = isStartSolid;
27
  traceResult.isAllSolid = isAllSolid;
28
}


Отправлено Дядя Миша 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.

__________________

xaerox on Vivino


Отправлено Дядя Миша 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:

Мда... Клинический случай.

__________________

xaerox on Vivino


Отправлено Дядя Миша 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'


Временная зона GMT. Текущее время 07:22.
Показать все 10 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024