Merge pull request #373 from MihailRis/update-particles
Update particles
This commit is contained in:
commit
cb27bd0fba
@ -17,6 +17,7 @@
|
||||
| acceleration | Ускорение частиц. | {0, -16, 0} |
|
||||
| explosion | Сила разлёта частиц при спавне. | {2, 2, 2} |
|
||||
| size | Размер частиц. | {0.1, 0.1, 0.1} |
|
||||
| size_spread | Максимальное отклонение времени размера частиц. | 0.2 |
|
||||
| spawn_shape | Форма области спавна частиц. (ball/sphere/box) | ball |
|
||||
| spawn_spread | Размер области спавна частиц. | {0, 0, 0} |
|
||||
| random_sub_uv | Размер случайного подрегиона текстуры (1 - будет использована вся текстура). | 1.0 |
|
||||
|
||||
@ -89,11 +89,13 @@ void ParticlesRenderer::renderParticles(const Camera& camera, float delta) {
|
||||
);
|
||||
light *= 0.9f + (particle.random % 100) * 0.001f;
|
||||
}
|
||||
float scale = 1.0f + ((particle.random ^ 2628172) % 1000) *
|
||||
0.001f * preset.sizeSpread;
|
||||
batch->quad(
|
||||
particle.position,
|
||||
right,
|
||||
preset.globalUpVector ? glm::vec3(0, 1, 0) : up,
|
||||
preset.size,
|
||||
preset.size * scale,
|
||||
light,
|
||||
glm::vec3(1.0f),
|
||||
particle.region
|
||||
|
||||
@ -42,6 +42,7 @@ dv::value ParticlesPreset::serialize() const {
|
||||
root["acceleration"] = dv::to_value(acceleration);
|
||||
root["explosion"] = dv::to_value(explosion);
|
||||
root["size"] = dv::to_value(size);
|
||||
root["size_spread"] = sizeSpread;
|
||||
root["spawn_spread"] = dv::to_value(size);
|
||||
root["spawn_shape"] = to_string(spawnShape);
|
||||
root["random_sub_uv"] = randomSubUV;
|
||||
@ -67,6 +68,7 @@ void ParticlesPreset::deserialize(const dv::value& src) {
|
||||
if (src.has("size")) {
|
||||
dv::get_vec(src["size"], size);
|
||||
}
|
||||
src.at("size_spread").get(sizeSpread);
|
||||
if (src.has("spawn_spread")) {
|
||||
dv::get_vec(src["spawn_spread"], spawnSpread);
|
||||
}
|
||||
|
||||
@ -42,6 +42,8 @@ struct ParticlesPreset : public Serializable {
|
||||
glm::vec3 explosion {2.0f};
|
||||
/// @brief Particle size
|
||||
glm::vec3 size {0.1f};
|
||||
/// @brief Particles size spread
|
||||
float sizeSpread = 0.2f;
|
||||
/// @brief Spawn spread shape
|
||||
ParticleSpawnShape spawnShape = BALL;
|
||||
/// @brief Spawn spread
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user