mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-09 13:01:49 +00:00
add 'spawn_offset' particles parameter
This commit is contained in:
parent
d8bbbc3cfb
commit
3331d4deee
3 changed files with 9 additions and 10 deletions
|
|
@ -103,6 +103,7 @@ void Emitter::update(
|
||||||
|
|
||||||
glm::vec3 spawnOffset = generate_coord(preset.spawnShape);
|
glm::vec3 spawnOffset = generate_coord(preset.spawnShape);
|
||||||
spawnOffset *= preset.spawnSpread;
|
spawnOffset *= preset.spawnSpread;
|
||||||
|
spawnOffset += preset.spawnOffset;
|
||||||
|
|
||||||
particle.position = position + spawnOffset;
|
particle.position = position + spawnOffset;
|
||||||
particle.lifetime *= 1.0f - preset.lifetimeSpread * random.randFloat();
|
particle.lifetime *= 1.0f - preset.lifetimeSpread * random.randFloat();
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,8 @@ dv::value ParticlesPreset::serialize() const {
|
||||||
root["angle_spread"] = angleSpread;
|
root["angle_spread"] = angleSpread;
|
||||||
root["min_angular_vel"] = minAngularVelocity;
|
root["min_angular_vel"] = minAngularVelocity;
|
||||||
root["max_angular_vel"] = maxAngularVelocity;
|
root["max_angular_vel"] = maxAngularVelocity;
|
||||||
root["spawn_spread"] = dv::to_value(size);
|
root["spawn_spread"] = dv::to_value(spawnSpread);
|
||||||
|
root["spawn_offset"] = dv::to_value(spawnOffset);
|
||||||
root["spawn_shape"] = ParticleSpawnShapeMeta.getName(spawnShape);
|
root["spawn_shape"] = ParticleSpawnShapeMeta.getName(spawnShape);
|
||||||
root["random_sub_uv"] = randomSubUV;
|
root["random_sub_uv"] = randomSubUV;
|
||||||
return root;
|
return root;
|
||||||
|
|
@ -47,9 +48,7 @@ void ParticlesPreset::deserialize(const dv::value& src) {
|
||||||
src.at("min_angular_vel").get(minAngularVelocity);
|
src.at("min_angular_vel").get(minAngularVelocity);
|
||||||
src.at("max_angular_vel").get(maxAngularVelocity);
|
src.at("max_angular_vel").get(maxAngularVelocity);
|
||||||
src.at("random_sub_uv").get(randomSubUV);
|
src.at("random_sub_uv").get(randomSubUV);
|
||||||
if (src.has("velocity")) {
|
dv::get_vec(src, "velocity", velocity);
|
||||||
dv::get_vec(src["velocity"], velocity);
|
|
||||||
}
|
|
||||||
if (src.has("acceleration")) {
|
if (src.has("acceleration")) {
|
||||||
dv::get_vec(src["acceleration"], acceleration);
|
dv::get_vec(src["acceleration"], acceleration);
|
||||||
}
|
}
|
||||||
|
|
@ -57,12 +56,9 @@ void ParticlesPreset::deserialize(const dv::value& src) {
|
||||||
dv::get_vec(src["size"], size);
|
dv::get_vec(src["size"], size);
|
||||||
}
|
}
|
||||||
src.at("size_spread").get(sizeSpread);
|
src.at("size_spread").get(sizeSpread);
|
||||||
if (src.has("spawn_spread")) {
|
dv::get_vec(src, "spawn_spread", spawnSpread);
|
||||||
dv::get_vec(src["spawn_spread"], spawnSpread);
|
dv::get_vec(src, "spawn_offset", spawnOffset);
|
||||||
}
|
dv::get_vec(src, "explosion", explosion);
|
||||||
if (src.has("explosion")) {
|
|
||||||
dv::get_vec(src["explosion"], explosion);
|
|
||||||
}
|
|
||||||
if (src.has("spawn_shape")) {
|
if (src.has("spawn_shape")) {
|
||||||
ParticleSpawnShapeMeta.getItem(src["spawn_shape"].asString(), spawnShape);
|
ParticleSpawnShapeMeta.getItem(src["spawn_shape"].asString(), spawnShape);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,8 @@ struct ParticlesPreset : public Serializable {
|
||||||
ParticleSpawnShape spawnShape = ParticleSpawnShape::BALL;
|
ParticleSpawnShape spawnShape = ParticleSpawnShape::BALL;
|
||||||
/// @brief Spawn spread
|
/// @brief Spawn spread
|
||||||
glm::vec3 spawnSpread {};
|
glm::vec3 spawnSpread {};
|
||||||
|
/// @brief Particles spawn zone offset
|
||||||
|
glm::vec3 spawnOffset {};
|
||||||
/// @brief Texture name
|
/// @brief Texture name
|
||||||
std::string texture = "";
|
std::string texture = "";
|
||||||
/// @brief Size of random sub-uv region
|
/// @brief Size of random sub-uv region
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue