From df2f24d94e8df476caa80ec0934311534cc822f3 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 6 Nov 2024 20:49:51 +0300 Subject: [PATCH] add doc/ru/particles.md --- doc/ru/main-page.md | 1 + doc/ru/particles.md | 66 +++++++++++++++++++++++++++++++++ src/presets/ParticlesPreset.hpp | 2 +- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 doc/ru/particles.md diff --git a/doc/ru/main-page.md b/doc/ru/main-page.md index 0297cd46..310c80c4 100644 --- a/doc/ru/main-page.md +++ b/doc/ru/main-page.md @@ -19,3 +19,4 @@ - [Свойства блоков](block-properties.md) - [Свойства предметов](item-properties.md) - [Скриптинг](scripting.md) +- [Частицы](particles.md) diff --git a/doc/ru/particles.md b/doc/ru/particles.md new file mode 100644 index 00000000..bc20a4a3 --- /dev/null +++ b/doc/ru/particles.md @@ -0,0 +1,66 @@ +# Частицы + +Частицы представляют собой таблицу, все поля которой опциональны. + + +| Поле | Описание | По-умолчанию | +| --------------- | ---------------------------------------------------------------------------- | --------------- | +| texture | Текстура частицы. | "" | +| frames | Кадры анимации (массив имен текстур). Должны находиться в одном атласе. | {} | +| lighting | Освещение. | true | +| collision | Обнаружение столкновений. | true | +| max_distance | Максимальная дистанция от камеры, при которой происходит спавн частиц. | 16.0 | +| spawn_interval | Интервал спавна частиц в секундах. | 1.0 | +| lifetime | Среднее время жизни частиц в секундах. | 5.0 | +| lifetime_spread | Максимальное отклонение времени жизни частицы (от 0.0 до 1.0). | 0.2 | +| velocity | Начальная линейная скорость частиц. | {0, 0, 0} | +| acceleration | Ускорение частиц. | {0, -16, 0} | +| explosion | Сила разлёта частиц при спавне. | {2, 2, 2} | +| size | Размер частиц. | {0.1, 0.1, 0.1} | +| spawn_shape | Форма области спавна частиц. (ball/sphere/box) | ball | +| spawn_spread | Размер области спавна частиц. | {0, 0, 0} | +| random_sub_uv | Размер случайного подрегиона текстуры (1 - будет использована вся текстура). | 1.0 | + +## Библиотека *gfx.particles* + +```lua +gfx.particles.emit( + -- позиция эмиттера: статические координаты или uid сущности + origin: vec3 | int, + -- количество частиц (-1 - бесконечно) + count: int, + -- таблица настроек частиц + preset: table, + -- дополнительная таблица настроек частиц + [опционально] extension: table +) -> int +``` + +Создаёт эмиттер частиц, возвращая его id. + +```lua +gfx.particles.stop(id: int) +``` + +Останавливает эмиттер без возможности возобновления. Эмиттер будет удален +позже автоматически. + +```lua +gfx.particles.is_alive(id: int) -> bool +``` + +Проверяет, работает ли эмиттер. Возвращает false если работа прекращена или +эмиттер не существует. + +```lua +gfx.particles.get_origin(id: int) -> vec3 | int +``` + +Возвращает статическую позицию или uid сущности, к которой привязан эмиттер. +Если эмиттера не существует, возвращает nil. + +```lua +gfx.particles.set_origin(id: int, origin: vec3 | int) +``` + +Устанавливает статическую позицию или uid сущности, к которой будет привязан эмиттер. diff --git a/src/presets/ParticlesPreset.hpp b/src/presets/ParticlesPreset.hpp index 262b2c07..483ce1b4 100644 --- a/src/presets/ParticlesPreset.hpp +++ b/src/presets/ParticlesPreset.hpp @@ -43,7 +43,7 @@ struct ParticlesPreset : public Serializable { /// @brief Particle size glm::vec3 size {0.1f}; /// @brief Spawn spread shape - ParticleSpawnShape spawnShape; + ParticleSpawnShape spawnShape = BALL; /// @brief Spawn spread glm::vec3 spawnSpread {}; /// @brief Texture name