mirror of
https://github.com/Almamu/linux-wallpaperengine.git
synced 2025-07-15 05:42:23 +08:00

+ Added partial parsing of particles + Support for particle emitter parsing + Support for particle initializers parsing + Support for particle controlpoints parsing Signed-off-by: Alexis Maiquez <almamu@almamu.com>
68 lines
1.6 KiB
C++
68 lines
1.6 KiB
C++
#include "initializer.h"
|
|
|
|
#include "initializers/lifetimerandom.h"
|
|
#include "initializers/sizerandom.h"
|
|
#include "initializers/rotationrandom.h"
|
|
#include "initializers/velocityrandom.h"
|
|
#include "initializers/colorrandom.h"
|
|
|
|
using namespace wp::core::objects::particles;
|
|
|
|
initializer* initializer::fromJSON (json data)
|
|
{
|
|
json::const_iterator id_it = data.find ("id");
|
|
json::const_iterator name_it = data.find ("name");
|
|
|
|
if (id_it == data.end ())
|
|
{
|
|
throw std::runtime_error ("Particle's initializer must have an id");
|
|
}
|
|
|
|
if (name_it == data.end ())
|
|
{
|
|
throw std::runtime_error ("Particle's initializer must have a name");
|
|
}
|
|
|
|
if (*name_it == "lifetimerandom")
|
|
{
|
|
return initializers::lifetimerandom::fromJSON (data, *id_it);
|
|
}
|
|
else if (*name_it == "sizerandom")
|
|
{
|
|
return initializers::sizerandom::fromJSON (data, *id_it);
|
|
}
|
|
else if (*name_it == "rotationrandom")
|
|
{
|
|
return initializers::rotationrandom::fromJSON (data, *id_it);
|
|
}
|
|
else if (*name_it == "velocityrandom")
|
|
{
|
|
return initializers::velocityrandom::fromJSON (data, *id_it);
|
|
}
|
|
else if (*name_it == "colorrandom")
|
|
{
|
|
return initializers::colorrandom::fromJSON (data, *id_it);
|
|
}
|
|
else
|
|
{
|
|
throw std::runtime_error ("Particle's got an unknown initializer");
|
|
}
|
|
}
|
|
|
|
|
|
initializer::initializer (irr::u32 id, std::string name) :
|
|
m_id (id),
|
|
m_name (std::move(name))
|
|
{
|
|
}
|
|
|
|
|
|
std::string& initializer::getName ()
|
|
{
|
|
return this->m_name;
|
|
}
|
|
|
|
irr::u32 initializer::getId ()
|
|
{
|
|
return this->m_id;
|
|
} |