senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
location как параметр функции
... принимается. Нужно ли делать такой точке Remove для избежания утечек?
Или если объявлена как локальной, тогда? |
25.08.2009, 23:57 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ToChilo
■□□□□
offline
Опыт:
356Активность: |
Если ты не удалишь точку дествием RemoveLocation(x) то она никуда не дениться При передачи точки в качества аргумента функции обнулять действием x = null ненужно, а если ты создашь её локально то нужно. |
26.08.2009, 00:28 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,534Активность: |
весь вопрос в том как устроены функции вара - если передается ссылка на обьект, то делать ниче с ней не надо, а если копирование обьекта то ремувить..
я думаю что копируются только базовые типы, так что нет поводов для беспокойства |
26.08.2009, 00:31 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
передается хендл, главное чтобы нигде не потерять точку, тогда все норм. если же ты потеряешь все ссылки на нее, тогда удалить уже не получится
|
26.08.2009, 01:01 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
Типа указателя в с++. Я понял. Но речь не о стандартной функии. А о моей. Допустим, я вычисляю декартово расстояние между двумя точками. Функция принимает две локации ( myFunc( location L1, location L2 ) real ).
Вызываю функцию в таком виде: myFunc( GetUnitLoc( unit1 ), GetUnitLoc( unit2 ) );
В этом случае, нужно вызывать Ремув в моей функции для параметров? ( по хендлу вроде можно удалить)
Или создавать переменные в вызывающей функции, и делать ремув там помле вызова моей функции? senatus добавил: Или когда копия создается? Если я создам локальную точку, и инициализирую ее как GetUnitLoc( unit1 ). Тогда нужно делать ремув? |
26.08.2009, 02:06 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
senatus, в варе все переменые это указатили, исключение булы инты и реалы
никогда не удаляй точку если она идет параметром функции, это просто некрасиво, да и запутаешься потом, т.е. поставь это себе правилом, чтобы не было такого что ты создаешь точку вертишь ей так и сяк, посылаешь в функцию а потом удаляешь, опа, а она уже была удалена в функции
и вообще забей на точки, их в карте не должно быть вообще, кроме пары случаев, нужно использовать координаты напрямую,почти все функции по работе с точками имеют свои координатные аналоги
более правильнее это делать так
Отредактировано J, 26.08.2009 в 02:43. |
26.08.2009, 02:32 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
О, J, я вот как раз хотел узнать какие нужно удалять, какие нет. Я просто где-то читал, что некоторые стандартные функции после возвратат создают копии, и их нужно удалять. А какие - не знаю. Раз уж ты тут, не поможешь еще 1 вопрос решить?
Кста, спасибо за помощь. Я уже переделал функцию для на получение координат ;) senatus добавил: Надеюсь, вопрос можно задать тут же Вот такая проблема (см. картинку): В точке а находится кастер. В точке б находится таргет. В в общем,, мне необходимо найти прямоуголник, который выделен, и всех вражеских юнитов отдамажить в этой области. Но не могу найти функцию, которая создает рект или регион, угол наклона сторон которого не равен обязательно 90 градусов. Мне вот угол альфа нужен динамический. Можно создать такой регион, что бы потом пикнуть юнитов в нем? Или нет? Ибо стандартные принимают тока 2 точки, угол там не задается. |
26.08.2009, 02:44 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
неявно копии не создаются все нативки принимает точки одни, а возвращает другую, т.е. и те и те нужно удалять, далее все зависит уже от того как построена функций и нативок, если не создаешь копий то их и не будет... Отредактировано J, 26.08.2009 в 02:57. |
26.08.2009, 02:46 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
J, вот и загвозда - как узнать, создает нативка копии, или нет? |
26.08.2009, 02:50 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
senatus:
что тут не понятно и кажущееся двусмысленным? создай такой регион можно, но он будет не совсем квадратный, регион это набор ректов, и все отсюда вытекающее... но лучше сделай по другому, берешь группу, проходишься по вектору (a,b) от точки кастера с шагом 150 например, и каждый шаг еще проходишься на такой же вектор повернутый по часовой на 90 градусов каждый из этих шагов суешь юнитов в небольшом радиусу (200 например) в группу, а после всех шагов делаешь фор по группе а дальше что хочешь... можно и по другому как-нить, есть много вариантов Отредактировано J, 26.08.2009 в 03:00. |
26.08.2009, 02:52 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
Не понятно что и где удалять =/ ну, и норм. Там мелочи не интересуют а это зачем? радиус от какой точки? :: мне вот интересно, как сделано это в волне силы. Или в темной стае... Неужели с такими же заморочками? |
26.08.2009, 03:02 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
senatus
вобщем удаляй все то что создаешь ты нарисовал квадрат я и подумал что нужен квадрат ну значит можно без этого |
26.08.2009, 03:11 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
нет. Не квадрат, а прямоугольник! Причем, длина отрезка ab динамичная. 2 стороны прямоугольника, параллельные отрезку ab равны ab. А 2 другие стороны, равны константной длине.
В общем, как блин посчитать этот страшный регион?
В темной стае, кстати, вообще конус образуется |
26.08.2009, 03:18 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
всеравно придется создавать его из маленьких радиусов, т.е.
|
26.08.2009, 03:25 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
м. ясно. Я подумывал над этим... А юниты от повторного включения в группу защищены? Или проверять прилется вручную? |
26.08.2009, 03:32 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
все норм должно быть
ScorpioT1000 добавил: ну у мня напр есть универсальная ф-ция для дамага юнитов в радиусе(специально писал), т.е. мне надо лишь узнать эти 6 точек и применить на них ее :) советую и тебе также делать |
26.08.2009, 03:34 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
какие шесть точек?
Центры твоих окружностей? У меня ведь регион разный быть может. И не факт, что шестью точками я обойдусь. Их может быть и больше Можно вообще функцию глянуть? senatus добавил: или имеется в виду вызов функции дамага 6 раз? Это я понял. Разбивать на функции я умею ;) |
26.08.2009, 03:48 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Цитата:
да. имеется ввиду что есть еще много других способов задамажить эти окружности Цитата:
обойдись хоть тысячей, это уже твое дело :) |
||
26.08.2009, 04:37 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,023Активность: |
Дадад. Хорошо, товарищи. Спасибо вам. |
26.08.2009, 05:04 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,534Активность: |
разумеется нет) добавляй пикнутых в другую группу и каждый раз смотри что пикаемых в ней нет нет не все равно.. можно спокойно сделать через взаимоисключающиеся углы |
26.08.2009, 13:33 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|