![]()
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. |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
bee
vjass.optimizer
![]() ![]() offline
Опыт:
16,615Активность: |
> И ещё. Как вычислить саму область в которую зашёл юнит?
короче проверяешь координаты области по GetTriggerUnit x/y и массивом перебираешь по бд |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FatalBlade
![]() offline
Опыт:
7,398Активность: |
bee:
Ок а если массив размером на 480? |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Темак
jass for everyone
![]() ![]() offline
Опыт:
7,200Активность: |
FatalBlade:
отдельные рект это квадрат (регионы, которые можно добавлять на карту на самом деле - ректы) регион может включать в себя множество ректов FatalBlade: для чего тебе нужно столько областей? |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
bee
vjass.optimizer
![]() ![]() offline
Опыт:
16,615Активность: |
и че что массив на 480 шт
главное чтоб бло меньшн 9к точно не помню я пьяный |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,467Активность: |
FatalBlade, чтобы не перебирать массив, используй систему расчёта ячеек, где не производится перебирание всех ячеек на предмет соответствия а математическим путём рассчитывается ячейка искмого обьекта, вроде хештаблицы, или хендл - опр константа (но тут нужно осторожно, могут быть баги) |
![]() |
#6
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FatalBlade
![]() offline
Опыт:
7,398Активность: |
Temak1:
В данном случае, если я для каждого ректа создаю регион, я могу удалять эти самые ректы? bee:
Производительность карты... Каждый раз при входе юнита в область будут перебираться 480 областей... quq_CCCP:
Во что сохранять хэндлы областей? Или что сохранять в хэндлы областей? При реакции на событие Юнит Входит в Область, можно вычислить только входяшего юнита, и всё. Можно вычислить и его координаты, но что это даст? Разве можно по координатам вычислить область в которой они находятся? А что если 2 области накладываются друг на друга. |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,467Активность: |
FatalBlade, а думалка тебе зачем? чтобы ныть на форуме сделайте за меня? |
![]() |
#8
+1/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FatalBlade
![]() offline
Опыт:
7,398Активность: |
quq_CCCP, я не прошу ничего делать за меня. Под-форум создан для того что бы в нём задавали вопросы. На то он и называется Академия: форум для вопросов. А не нравится не отписывайся в моих топиках. И не надо говорить мол юзай поиск итд итп. Большинство вопросов которые я задаю, либо никто не задавал, либо задавали очень редко, да и то не всегда получали на них ответы. Отредактировано FatalBlade, 02.10.2012 в 11:03. |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,467Активность: |
FatalBlade, реакция а на события, а какие события происходят с регионом, вошёл то юнит а не регион... |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FatalBlade
![]() offline
Опыт:
7,398Активность: |
На регион вообще нету никаких событий, но функция GetTriggerRegion() то есть. Во общем щас попробую. |
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,467Активность: |
Кстати, есть же такая функция принадлежит ли точка ректу или нет... |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FatalBlade
![]() offline
Опыт:
7,398Активность: |
Всё, с этим разобрался. Теперь как вычислить высоту платформы? Дело в том что то что я поднимаю её в редакторе, не меняет её параметр высоты. Я использовал функцию GetDestructableOccluderHeight(dest). У всех платформ неважно на какую высоту я поднял их в редакторе с помощью Ctrl+PageUp, высота равна 0. Я проверил с дебагмесадж. |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,467Активность: |
FatalBlade, а через точку высоту мерить не пробовал?
((код jass
function GetHeigthBJ takes real HX, real HY returns real return GetLocationZ( Location( HX, XY ) ) endfunction )) Юзать для определения высоты эту функцию не советую, ввиду не удаления локации |
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FatalBlade
![]() offline
Опыт:
7,398Активность: |
О спс работает. quq_CCCP:
Ты о чём? После сохранения параметра Z set z = LocationZ(loc) я её спокойно удаляю call RemoveLocation(loc) |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
не надо ничего удалять, есть специально выделенная локация для данной операции, которая передвигается в то место и берутся координаты |
![]() |
#16
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FatalBlade
![]() offline
Опыт:
7,398Активность: |
ScorpioT1000, ок, но какая разница между создатием и удалением локации, или передвижением одной и той же? Оба варианта работают, оба безутечны. Или есть какая то константная локация, которую даже создавать не придётся? |
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
adic3x
![]() offline
Опыт:
108,439Активность: |
Перемещение заметно быстрее. Это не важно, если у Вам надо просто проверить высоту одной точки, но при расчете движения, когда движутся одновременной десятки объектов, и проверять высоту точки надо каждые 0.025 секунды это хорошая, уместная оптимизация. |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
есть, не константная location bj_meleeNearestMineToLoc = null |
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FatalBlade
![]() offline
Опыт:
7,398Активность: |
ADOLF:
Это ты уже загнул. 0.04 хватает "для человеческого глаза". |
![]() |
#20
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|