FatalBlade
offline
Опыт:
7,398Активность: |
Rect vs Region - отдельные хэндлы или тот же самый?
И так. Событие Юнит входит в ранее триггерно созданную область Rectangle:
((код Jass
function TriggerRegisterEnterRectSimple takes trigger trig, rect Rectangle returns event
local region rectRegion = CreateRegion() call RegionAddRect(rectRegion, Rectangle ) return TriggerRegisterEnterRegion(trig, rectRegion, null) endfunction )) Ясно что для регистрации события на данную область Rectangle, создаётся переменная типа Region - rectRegion, создаётся новый хэндл. Но ведь существующий ранее Rect тоже является хэндлом. Мне конечно очень интересно, зачем близзарды так накрутили, что получилось что создаются 2 хэндла на 1 область, но не в этом суть темы. Раз уж мы получаем 2 хэндла, событие регистрируется на созданный Регион rectRegion, и этот регион не будет никуда двигаться по ходу игры... то почему бы не удалить 1 из хэндлов, а именно Rect под название Rectangle? Ведь он больше не нужен, поскольку используется Регион.
Ваши мнения...
И ещё. Как вычислить саму область в которую зашёл юнит? Отредактировано FatalBlade, 02.10.2012 в 02:30. |
02.10.2012, 01:46 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
bee
vjass.optimizer
offline
Опыт:
16,615Активность: |
> И ещё. Как вычислить саму область в которую зашёл юнит?
короче проверяешь координаты области по GetTriggerUnit x/y и массивом перебираешь по бд |
02.10.2012, 02:52 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
bee:
Ок а если массив размером на 480? |
02.10.2012, 03:00 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Темак
jass for everyone
offline
Опыт:
7,200Активность: |
FatalBlade:
отдельные рект это квадрат (регионы, которые можно добавлять на карту на самом деле - ректы) регион может включать в себя множество ректов FatalBlade: для чего тебе нужно столько областей? |
02.10.2012, 04:05 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
bee
vjass.optimizer
offline
Опыт:
16,615Активность: |
и че что массив на 480 шт
главное чтоб бло меньшн 9к точно не помню я пьяный |
02.10.2012, 05:33 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
FatalBlade, чтобы не перебирать массив, используй систему расчёта ячеек, где не производится перебирание всех ячеек на предмет соответствия а математическим путём рассчитывается ячейка искмого обьекта, вроде хештаблицы, или хендл - опр константа (но тут нужно осторожно, могут быть баги) |
02.10.2012, 07:14 | #6
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
Temak1:
В данном случае, если я для каждого ректа создаю регион, я могу удалять эти самые ректы? bee:
Производительность карты... Каждый раз при входе юнита в область будут перебираться 480 областей... quq_CCCP:
Во что сохранять хэндлы областей? Или что сохранять в хэндлы областей? При реакции на событие Юнит Входит в Область, можно вычислить только входяшего юнита, и всё. Можно вычислить и его координаты, но что это даст? Разве можно по координатам вычислить область в которой они находятся? А что если 2 области накладываются друг на друга. |
02.10.2012, 10:19 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
FatalBlade, а думалка тебе зачем? чтобы ныть на форуме сделайте за меня? |
02.10.2012, 10:45 | #8
+1/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
quq_CCCP, я не прошу ничего делать за меня. Под-форум создан для того что бы в нём задавали вопросы. На то он и называется Академия: форум для вопросов. А не нравится не отписывайся в моих топиках. И не надо говорить мол юзай поиск итд итп. Большинство вопросов которые я задаю, либо никто не задавал, либо задавали очень редко, да и то не всегда получали на них ответы. Отредактировано FatalBlade, 02.10.2012 в 11:03. |
02.10.2012, 10:48 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
FatalBlade, реакция а на события, а какие события происходят с регионом, вошёл то юнит а не регион... |
02.10.2012, 11:00 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
На регион вообще нету никаких событий, но функция GetTriggerRegion() то есть. Во общем щас попробую. |
02.10.2012, 11:06 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
Кстати, есть же такая функция принадлежит ли точка ректу или нет... |
02.10.2012, 11:06 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
Всё, с этим разобрался. Теперь как вычислить высоту платформы? Дело в том что то что я поднимаю её в редакторе, не меняет её параметр высоты. Я использовал функцию GetDestructableOccluderHeight(dest). У всех платформ неважно на какую высоту я поднял их в редакторе с помощью Ctrl+PageUp, высота равна 0. Я проверил с дебагмесадж. |
02.10.2012, 11:14 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
FatalBlade, а через точку высоту мерить не пробовал?
((код jass
function GetHeigthBJ takes real HX, real HY returns real return GetLocationZ( Location( HX, XY ) ) endfunction )) Юзать для определения высоты эту функцию не советую, ввиду не удаления локации |
02.10.2012, 11:35 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
О спс работает. quq_CCCP:
Ты о чём? После сохранения параметра Z set z = LocationZ(loc) я её спокойно удаляю call RemoveLocation(loc) |
02.10.2012, 11:48 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
не надо ничего удалять, есть специально выделенная локация для данной операции, которая передвигается в то место и берутся координаты |
02.10.2012, 12:02 | #16
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
ScorpioT1000, ок, но какая разница между создатием и удалением локации, или передвижением одной и той же? Оба варианта работают, оба безутечны. Или есть какая то константная локация, которую даже создавать не придётся? |
02.10.2012, 12:06 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Перемещение заметно быстрее. Это не важно, если у Вам надо просто проверить высоту одной точки, но при расчете движения, когда движутся одновременной десятки объектов, и проверять высоту точки надо каждые 0.025 секунды это хорошая, уместная оптимизация. |
02.10.2012, 14:28 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
есть, не константная location bj_meleeNearestMineToLoc = null |
02.10.2012, 14:51 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
ADOLF:
Это ты уже загнул. 0.04 хватает "для человеческого глаза". |
05.10.2012, 01:37 | #20
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|