linux-wallpaperengine/WallpaperEngine/Core/Objects/Particles/CInitializer.cpp
Alexis Maiquez 654918904a ~ Changed namespace names for wp::core and wp to a more suited name
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-08-15 01:53:40 +02:00

74 lines
1.9 KiB
C++

#include "CInitializer.h"
#include "Initializers/CLifeTimeRandom.h"
#include "Initializers/CSizeRandom.h"
#include "Initializers/CRotationRandom.h"
#include "Initializers/CVelocityRandom.h"
#include "Initializers/CColorRandom.h"
#include "Initializers/CAlphaRandom.h"
#include "Initializers/CAngularVelocityRandom.h"
using namespace WallpaperEngine::Core::Objects::Particles;
CInitializer* CInitializer::fromJSON (json data)
{
json::const_iterator id_it = data.find ("id");
json::const_iterator name_it = data.find ("name");
irr::u32 id = ((id_it == data.end ()) ? 0 : (irr::u32) (*id_it));
if (name_it == data.end ())
{
throw std::runtime_error ("Particle's initializer must have a name");
}
if (*name_it == "lifetimerandom")
{
return Initializers::CLifeTimeRandom::fromJSON (data, id);
}
else if (*name_it == "sizerandom")
{
return Initializers::CSizeRandom::fromJSON (data, id);
}
else if (*name_it == "rotationrandom")
{
return Initializers::CRotationRandom::fromJSON (data, id);
}
else if (*name_it == "velocityrandom")
{
return Initializers::CVelocityRandom::fromJSON (data, id);
}
else if (*name_it == "colorrandom")
{
return Initializers::CColorRandom::fromJSON (data, id);
}
else if (*name_it == "alpharandom")
{
return Initializers::CAlphaRandom::fromJSON (data, id);
}
else if (*name_it == "angularvelocityrandom")
{
return Initializers::CAngularVelocityRandom::fromJSON (data, id);
}
else
{
throw std::runtime_error ("Particle's got an unknown initializer");
}
}
CInitializer::CInitializer (irr::u32 id, std::string name) :
m_id (id),
m_name (std::move(name))
{
}
std::string& CInitializer::getName ()
{
return this->m_name;
}
irr::u32 CInitializer::getId ()
{
return this->m_id;
}