linux-wallpaperengine/wallpaperengine/core/objects/particles/initializer.cpp
Alexis Maiquez 400a2c0c84 + Added support for alpharandom initializer
~ Fixed wrong return type for getters on rotationrandom

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-08-14 17:03:36 +02:00

73 lines
1.7 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"
#include "initializers/alpharandom.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 if (*name_it == "alpharandom")
{
return initializers::alpharandom::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;
}