forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Тип в типе & etc... (http://forum.boolean.name/showthread.php?t=8086)

ELIAS 30.03.2009 19:14

Тип в типе & etc...
 
Здравствуйте.
Мне тут для одного дела очень понадобились типы в типах. Конкретно - я делаю бонусы в игре(а от бонусов у меня разные звёздочки летят красивые :) ), и у меня есть Тип Bonus в котором находится сам ентити бонуса и ещё тип Particle.
Выглядит это так:
Код:

Type Particle
Field p
End Type


Type Bonus
Field ent
Field p.Particle
End Type

Так, вот вроде и всё хорошо.
Вот так создаем по частице у каждого бонуса:)

For n=1 To 6
bb\p.particle=New Particle
bb\p.particle\p=LoadSprite("...",2)
Next


Но!!! А как теперь мне перечислить в цикле все частицы именно одного бонуса??????
То естьь вот здесь

For bb.Bonus=Each Bonus
For bb\p.particle=Each !!!
next
next

Если мы вместо этих знаков восклицания просто напишем Particle То перечислятся просто партиклы без привязанности к какому нибудь из бонусов!!! А мне например надо в одно мгновение удалить все частицы одноги из бонусов...

Я ещё подозреваю что в коде где я создаю партиклы нужно писать не New Particle, а что-то тоже указывающее не текущий бонус.


Вот такая заморочка, помогите разобраться...Спасибо :)

ABTOMAT 30.03.2009 19:23

Ответ: Тип в типе & etc...
 
For ... = Each ... перебирает ВСЕ эл-ты данного типа
То есть если ты хочешь что-то сделать только с частицами данного бонуса, то забудь о нём.
Далее, у тебя в бонусе только одна ссылка на частицу
Если хочешь, чтоб их было несколько, то делай массив:
Type Bonus
Field ent
Field p.Particle[10]
End Type
А так как щас так ты по очереди пишешь все частицы в одну переменную, в итоге в неё останется только последняя запись
Да, и
bb\p.particle\p=LoadSprite("...",2)
не рулит
Загрузи один раз и затем копируй CopyEntity

HolyDel 30.03.2009 19:27

Ответ: Тип в типе & etc...
 
http://forum.boolean.name/showthread.php?t=5481

ELIAS 30.03.2009 20:06

Ответ: Тип в типе & etc...
 
Цитата:

Да, и
bb\p.particle\p=LoadSprite("...",2)
не рулит
Загрузи один раз и затем копируй CopyEntity
АВТОМАТ,я не понял...Ты же мне день назад в другом топике под название "Particles" говоришь что не видишь толку в копированиии спрайтов, ещё написал "только че ты этим получишь, я хз..." А я потом пришёл проверил - кстати действительно со спрайтами никакой разницы.

Давайте разберёмся всё-таки когда надо использовать copyentity а когда ненадо или когда нет смысла(кстати это две разные вещи)

ABTOMAT 30.03.2009 20:10

Ответ: Тип в типе & etc...
 
Цитата:

не видишь толку в копированиии спрайтов, ещё написал "только че ты этим получишь, я хз..."
В плане производительности (во время рендера) - это то же самое.
Но копирование происходит намного быстрее загрузки.

HolyDel 30.03.2009 20:26

Ответ: Тип в типе & etc...
 
эээ. а разве спрайт не грузит вместе с собой текстуру? так же засрать видео-память недолго. если каждый кадр грузить текстуру.

проверил. оказывается лишнюю текстуру не грузит.
но само создание примерно в 2 раза медленнее копирования.

ELIAS 30.03.2009 22:44

Ответ: Тип в типе & etc...
 
Спасибо holyDel, АВТОМАТ!!! Вообщем как я понял копиентити надо использовать везде где это возможно?!

Объясните пожалуйста недокументированные в русской справке команды Handle и Object... Или, где найти онлайн справку по блитцу(есть же такая?).можно впринципе и английскую

ЗЫЫ: HolyDel, как думаешь есть смысл мне использовать в моём случае это твоё хитрозакрученное решение??? Ээ.Или использовать более понятное однако решение Ize'g0re??? Я имею ввиду что как видно твоё решение на порядок производительнее да? А Я за ней ГОНЮЮЮЮСЬ!!!
вот и смотрим: в игре у меня будет аш 200 бонусов всяких разных. И каждый проход главного цикла будет выполняться этот код проверки расстояния до бонуса и если что скрытие всех частиц данного бонуса. вот такая ситуация.

Впринципе мне всё понятно и в твоём коде, только бы получше переварить хендлы и object... :)

HolyDel 30.03.2009 22:58

Ответ: Тип в типе & etc...
 
Цитата:

Я имею ввиду что как видно твоё решение на порядок производительнее да?
не на порядок.
все равно все время сожрет рендер, а вовсе не переборы.
вот если бы у тебя были тысячи бонусов и по тысяче партиклов на каждый, тогда конечно надо было бы использовать мой, ибо сэкономилось бы куча холостых проходов цикла.
а так... юзай тот, что тебе кажется понятней.

ELIAS 30.03.2009 23:06

Ответ: Тип в типе & etc...
 
HolyDel, да мне твой код больше нравится! :)
>>>>Впринципе мне всё понятно и в твоём коде, только бы получше переварить хендлы и object...
подскажите плиззз...я чето читаю третий раз. с хендлами и обджектом есть затруднения:(

HolyDel 30.03.2009 23:09

Ответ: Тип в типе & etc...
 
я конечно могу за тебя поработать поисковиком, но, мне кажется, ты и сам вполне сможешь с этой задачей справиться. 5-ая кнопка вверху - написано "Поиск"
http://forum.boolean.name/showthread...=handle+object

еще это почитай:
http://forum.boolean.name/showthread...ghlight=handle


Часовой пояс GMT +4, время: 15:08.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot