![]() |
Показать все 12 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- MakeVectors vs VECTOR_ANGLES (https://hlfx.ru/forum/showthread.php?threadid=4147)
MakeVectors vs VECTOR_ANGLES
Все любят
UTIL_MakeVectors(angles);
и потом кушать всякие gpGlobals->v_*
а мне больше нравится
Vector fwd;
ANGLE_VECTORS(angles, fwd, NULL, NULL);
и кушать fwd.
Каковы ваши за и против?
Мои "за":
- не считаются ненужные векторы - ПРОФИТ!!
- не закакиваются глобалы, которые вечно всеми путаются
- просто наглядно
amirite?
выскажитесь.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
1 | void pfnMakeVectors( const float *rgflVector ) |
2 | { |
3 | AngleVectors( rgflVector, svgame.globals->v_forward, svgame.globals->v_right, svgame.globals->v_up ); |
4 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Не придирайся
у меня передача по ссылке или через анонимный юнион или через адрес.... короче, быстро. свой класс Vector я перелопатил весьма сильно (только SIMD не напихал), но речь не об этом.
Вобщем, экономия на неиспользуемых векторах у меня получилась гигантской. Теоретически, на создание временного Vector fwd уходит некоторое кол-во ресурсов, но мат. операции внутри AngleVectors() намного длиннее, имхо.
Кстати, в XDM во всяких TraceAttack(), например, я все векторы передаю как "const Vector &", что есть ня и кавай. :3
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
1 | // GCC doesn't like this |
2 | //#define ALLOW_ANONYMOUS_STRUCT to use anonymous unions |
3 |
4 |
5 | class Vector |
6 | { |
7 | public: |
8 | #if defined (ALLOW_ANONYMOUS_STRUCT) |
9 | union |
10 | { |
11 | vec_t array[3]; |
12 | struct |
13 | { |
14 | vec_t x; |
15 | vec_t y; |
16 | vec_t z; |
17 | }; |
18 | }; |
19 | #else |
20 | vec_t x; |
21 | vec_t y; |
22 | vec_t z; |
23 | #endif |
24 |
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Ну, да, наглядно. Если бы не anonymous unions.
__________________
Что такое юнион я понимаю. как это работает - понимаю. вопрос - зачем так делать?
Большая хитрость и профит видны в дальнейшем, когда идёт обращение к элементам ветора как к членам или как к элементам массива (не надо изобретать хак с operator []).
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
то есть это сделано для того что бы не перегружать оператор [], верно? тогда понятно
Ну да. Перегрузка операторов - величайшее зло и плохой стиль программирования.
__________________
Временная зона GMT. Текущее время 03:17. | Показать все 12 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024