add 'spawn_spread' and 'spawn_shape'

This commit is contained in:
MihailRis
2024-11-03 17:14:30 +03:00
parent 86b83a5377
commit 39893ee940
4 changed files with 68 additions and 2 deletions
+27
View File
@@ -2,6 +2,25 @@
#include "data/dv_util.hpp"
std::string to_string(ParticleSpawnShape shape) {
static std::string names[] = {
"ball",
"sphere",
"box"
};
return names[static_cast<int>(shape)];
}
ParticleSpawnShape ParticleSpawnShape_from(std::string_view s) {
if (s == "ball") {
return ParticleSpawnShape::BALL;
} else if (s == "sphere") {
return ParticleSpawnShape::SPHERE;
} else {
return ParticleSpawnShape::BOX;
}
}
dv::value ParticlesPreset::serialize() const {
auto root = dv::object();
root["texture"] = texture;
@@ -14,6 +33,8 @@ dv::value ParticlesPreset::serialize() const {
root["acceleration"] = dv::to_value(acceleration);
root["explosion"] = dv::to_value(explosion);
root["size"] = dv::to_value(size);
root["spawn_spread"] = dv::to_value(size);
root["spawn_shape"] = to_string(spawnShape);
root["random_sub_uv"] = randomSubUV;
return root;
}
@@ -33,7 +54,13 @@ void ParticlesPreset::deserialize(const dv::value& src) {
if (src.has("size")) {
dv::get_vec(src["size"], size);
}
if (src.has("spawn_spread")) {
dv::get_vec(src["spawn_spread"], spawnSpread);
}
if (src.has("explosion")) {
dv::get_vec(src["explosion"], explosion);
}
if (src.has("spawn_shape")) {
spawnShape = ParticleSpawnShape_from(src["spawn_shape"].asString());
}
}