Так как я на вашем форуме зарегистрировался только сегодня, а расширение начал делать раньше, вы многое пропустили!
Представляю вам четвертую версию Системы частиц(я ж говорю, пропустили, целых три выпуска)!
PartSystemВерсия: 0.9.3 (четвертая)
Реализовано:* Инициализация системы частиц с возможностью задать максимальное количество частиц в комнате.
* Обнуление системы частиц.
* Создание определенного кол-ва определенных частиц в задаваемом месте(или диапазоне координат) с определенной скоростью летящих в определенном направлении. Также, частицы могут иметь определенную прозрачность.
* Самоуничтожение частиц через некоторое время.
* Создание частиц возможно: единовременно, с интервалом, через некоторое время единовременно.
* Остановка создания частиц с интервалом.
* Каждому типу частиц можно присвоить свой спрайт.
* Теперь частицы можно программировать.
* При инициализации системы частиц, вы можете выбрать: включить ли авто-сбережение fps или нет.
v0.9.3
Полностью переписана система частиц.
Изменена функция part_system_init()
v0.9.2
Исправлен баг: при удалении частицы теперь очищается ее ячейка в массиве прозрачности.
Добавлен бета-вариант авто-сбережения fps.
v0.9.1
Исправлен баг: частицы теперь летят в правильном направлении.
Изменены названия некоторых функций.
Теперь частицы можно программировать.
Добавлена прозрачность частиц.
v0.9.0
Первая версия
Примечания:1) Использование этой системы частиц в разы экономнее множества объектов.
2) Если отрисовывать значение переменной part_value, можно узнать, сколько сейчас частиц в комнате.
3) При использовании системы, прошу указывать меня как ее автора.
4) Система частиц является глобальной(т.е. изменять типы частиц можно в одной комнате/одном объекте, а создавать,рисовать и двигать в другой/другом).
5) Тип частиц должен быть > 0!
Обо всех найденных ошибках прошу писать в эту тему. Предложения по улучшению писать тоже сюда.Скачать PartSystem v0.9.3 rewrite
- part_system_init(value,auto) - Инициализация системы частиц. Вызов этой функции должен обязательно осуществляться. value - максимальное кол-во частиц в комнате, если auto равно нулю или не указано, авто-сбережение fps включено не будет. Если auto больше нуля, то оно равно интенсивности изменения количества частиц(параметр авто-сбережения).
- part_create(id,x1,y1,x2,y2,spd,dir,alpha,val,death) - Создает частицы с идентификатором id в количестве val в промежутке x:от x1 до x2, y:от y1 до y2. Частицы будут иметь скорость spd и направление dir(в градусах). Частицы самоуничтожатся через death милисекунд. Частицы будут иметь прозрачность alpha.
- part_int_create(id,x1,y1,x2,y2,spd,dir,alpha,val,death,int) - То же, что и part_create, но частицы будут создаваться с заданными параметрами каждые int милисекунд. Возвращает id интервала(можно потом остановить создание).
- part_int_delete(id) - останавливает создание частиц интервалом с идентификатором id.
- part_out_create(id,x1,y1,x2,y2,spd,dir,alpha,val,death,timeout) - То же, что и part_create, но частицы будут созданы 1 раз через промежуток времени timeout(в милисекундах).
- part_delete(id) - уничтожает частицу с идентификатором id.
- part_step() - функция, обеспечивающая движение частиц. Ее вызов необходим в степе главного объекта. Внимание! Если эта функция вызывается несколько раз, скорость всех частиц возрастет!
- part_draw() - фунция, отрисовывающая частицы. Поместить в Draw главного объекта. Не рекомендуется применять несколько раз т.к. частицы будут просто накладываться друг на друга и засорять память.
- part_type_create(id,spr) - создает(или изменяет) вид типа частиц с идентификатором id на спрайт spr.
- part_type_scenary(id,code) - задает типу частиц id программу code. code должен быть строкой, способной выполниться функцией eval(). Программа начинает выполняться частицей при ее создании.
1) В системе частиц используются следующие глобальные переменные:
part_type - Массив с типами частиц всех частиц в комнате. Когда частица создается, в массиве находится свободное место(undefined или 0) и заменяется на указанный вами тип частиц.
part_x - Массив с x координатами всех частиц в комнате.
part_y - Массив с y координатами всех частиц в комнате.
part_dir - Массив с направлением всех частиц в комнате. Направление в градусах(от 0 до 360)
part_speed - Массив со скоростью всех частиц в комнате.
part_alpha - Массив с прозрачностью всех частиц в комнате. Напоминаю: прозрачность может варьироваться от 0 до 1(включая промежуточные значения).
part_value - Переменная(НЕ массив), которая содержит количество всех частиц в комнате. Доступна ТОЛЬКО для чтения т.к. обновляется каждый степ, "считая" все частицы.
part_max - Переменная(НЕ массив), которая содержит максимальное количество частиц в комнате. Изменять не рекомендуется(особенно в меньшую сторону).
partsm - Переменная(НЕ массив), которая содержит максимальное, заданное при инициализации системы, кол-во частиц в комнате. Переменная обеспечивает работу авто-сбережения fps. Когда оно отключено, переменная равна -1.
partsh - Переменная(НЕ массив), в которой содержится шаг для изменения максимального кол-ва частиц. Если авто-сбережение отключено, переменная равна 0 или undefined.
partt_sprite - Массив со спрайтами типов частиц.
partt_code - Массив с программой типов частиц.
2) Вы
ДОЛЖНЫ знать:
*Частица может обращаться к другим объектам.
*Частица может вызывать функции.
*И т.д.
*Для того, чтобы частица могла управлять своими параметрами, система частиц вставляет в начало сценария "var id=ид_частицы;", чтобы вы могли обратиться к частице по ее ид.
3) Пример использования функции part_type_scenary():
part_type_scenary(1,"setTimeout('global.part_dir['+id+']=irandom(360)',500);");
^ Это поменяет направление частицы на случайное через половину секунды, после ее создания.
Если авто-сбережение fps включено, то при падении fps, global.part_max начинает уменьшаться по 20, а те частицы, которые больше не обслуживаются, удаляться. При восстановлении fps, global.part_max начинает расти на 20, пока не вернется к значению, заданному при инициализации системы.
Для чего нужно авто-сбережение? Предположим, что у игрок открыл ресурсоемкую программу, или у него по каким то еще другим причинам снизилось количество памяти, отдаваемое браузеру. Следовательно, чтобы основной процесс игры шел более-менее ровно, постепенно начинают уменьшаться графические эффекты. Авто-сбережение нужно для тех проектов, где работа важнее красоты.
Все, все последующие обновления будут только по вашим личным запросам.
