Lightning in Galaxy

Добавлен , опубликован
Данная библиотека позволяет оперировать с объектами вида "молния" или "луч" (beam) через редактор триггеров. Библиотека написана на galaxy, и оптимизирована гораздо лучше чем молнии в самой игре.

Что это

Библиотека. Для использования достаточно импортировать в редактор триггеров. Вы можете использовать как прямой вызов функций на galaxy, так и эквивалентные GUI функции и действия.
После импортирования в редакторе триггеров появляется новая категория Lightnings. (Похожа на ту, что есть в world editor.)

Как это использовать?

Например через GUI действия.
Lightning - Lightning Create
Это действие создает молнию между двумя точками (actor site) с указанной моделью.
Созданную молнию можно сохранить в переменную для дальнейшей работы с ней. Функция Last created actor возвращает последнюю созданную молнию.
Параметры
  1. From - параметр типа (actorsite), указывает точку начала молнии.
  2. To - параметр типа (actorsite), указывает конечную точку молнии.
  3. Model - параметр типа (модель). указывает модель молнии.
Lightning - Lightning Move
Это действие переносит одну из точек молнии (начало или конец) в любую другую позицию и прикрепляет к ней.
Параметры
  1. Lightning - параметр типа (актер), здесь нужно указать с какой именно молнией вы хотите оперировать.
  2. SiteOperator - параметр специального типа.
    • Вы можете выбрать "Site Launch" - точка начала
    • Вы можете выбрать "Site Impact" - точка конца
  3. Target - параметр типа (точка), указывает точку для перемещения.
Если выбран SiteOperator.Site Launch то переносит точку начала молнии в указанную точку target.
Если выбран SiteOperator.Site Impact то переносит конечную точку молнии в указанную точку target.
Lightning - Lightning Set
Действие устанавливает некоторые свойства уже созданной молнии. Можно изменить цвет, размер или модель.
Параметры
  1. color - определяет новый цвет для молнии
  2. scale - определяет новый размер для молнии
  3. model - определяет новую модель для молнии
функция - point2site
Конвертирует любую точку в actorsite.
Напомню что молния использует не точки для крепления, а actorsite.
Что такое actorsite
Это точка с координатами X,Y,Z в мире. (По сути невидимый актер пустышка)
Например можно привязать её к голове героя, оружию героя или телу жертвы.
В качестве actorsite можно указать любого уже существующего актера.
Также можно перевести любой другой источник данных в actorsite, для этого сначала переводим нужные данные в точку а потом точку в actorsite.

Оптимизация

Библиотека сверх оптимизирована.
Одновременно на экране может находится до 16384 молний. (не учитывая производительность).
Сами молнии гораздо быстрее работают чем любые другие аналоги из редактора данных.
Если вы спросите почему так получилось?
Каждая молния создаваемая через редактор данных использует минимум 3 актера и один эффект. Два актера указывают точки крепления, один актер является молнией и эффект который её создает и висит в памяти с кучей параметров.
Тут же используется только один актер на каждую молнию и все.

Скриншоты

`
ОЖИДАНИЕ РЕКЛАМЫ...
29
Хорошая либа. Этого имхо очень не хватало в галакси.
34
Да забыл упомянуть. С молниями можно делать все что угодно как и с обычными актерами.
Достаточно использовать действие Actor Message.
38
Если что, то Actor переводится как Актор или Исполнитель, а никак не актёр. Уже не первый раз говорю =)
34
Ну актер даже звучит более понятно и осмысленно.
Вроде как напоминает что все объекты игры эта актеры одного театра. Так проще воспринимать их )
10
Полезно.
Есть вопрос, как создать молнию от attachment point источника к attachment point цели, или прикрепить один actor к аттачу другого?
Загруженные файлы
34
Для тех двух человек которые пишут карты на galaxy, можно просто создать кустом скрипт и вставить туда этот код
раскрыть
actor lit_LightningCreate (actor from, actor to, string model) {
    actorscope actorScope = ActorScopeFromActor(from);
    ActorScopeRefSet(actorScope,"::scope.BeamFrom",from);
    ActorScopeRefSet(actorScope,"::scope.BeamTo",to);
    return ActorCreate(actorScope, "BeamSimple", model, "::scope.BeamFrom", "::scope.BeamTo");
}
void lit_LightningMove (actor lightning, actor target, string site) {
    //UIDisplayMessage(PlayerGroupAll(), c_messageAreaError, StringToText("site="+site));
    ActorRefSet(lightning,site,ActorFromActor(target,"::Self"));
}
void lit_LightningSet(actor lightning, string col, fixed scale, string model, bool swap) {
    ActorSend(lightning, "SetTintColor "+col);
    ActorSend(lightning, "SetScale "+FixedToString(scale,6));
    if (swap == true) {
        ActorSend(lightning, "ModelSwap "+model);
    }
}
actor lit_Point2Site (point p){
    
    actor act;
    ActorCreate(null, "SiteHosted", null, null, null);
    act = libNtve_gf_ActorLastCreated();
    ActorSend(act, "SetPositionH "
        +FixedToString(PointGetX(p),6)+","
        +FixedToString(PointGetY(p),6)+" "
        +FixedToString(PointGetHeight(p),6) );
    return act;
}
14
Для тех двух человек которые пишут карты на galaxy
ну-ну
35
Ты пишешь в custom script или уже есть что-то типа cjass для galaxy?
34
Добавил изображение молний
может кому пригодится )
Чтобы оставить комментарий, пожалуйста, войдите на сайт.