mirror of
https://github.com/Almamu/linux-wallpaperengine.git
synced 2025-09-14 13:56:48 +08:00
74 lines
1.9 KiB
C++
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;
|
|
} |