mirror of
https://github.com/Almamu/linux-wallpaperengine.git
synced 2025-07-14 05:12:25 +08:00
fix: emitter distance can be a vector
This commit is contained in:
parent
7c6bebc524
commit
5f58178cdc
@ -11,12 +11,27 @@ CEmitter* CEmitter::fromJSON (json data) {
|
|||||||
const auto origin_it = jsonFindRequired (data, "origin", "Particle emitter must have an origin");
|
const auto origin_it = jsonFindRequired (data, "origin", "Particle emitter must have an origin");
|
||||||
const auto rate_it = jsonFindRequired (data, "rate", "Particle emitter must have a rate");
|
const auto rate_it = jsonFindRequired (data, "rate", "Particle emitter must have a rate");
|
||||||
|
|
||||||
return new CEmitter (WallpaperEngine::Core::aToVector3 (*directions_it), *distancemax_it, *distancemin_it,
|
glm::vec3 distancemin = glm::vec3(0);
|
||||||
|
glm::vec3 distancemax = glm::vec3(0);
|
||||||
|
|
||||||
|
if (distancemin_it->is_number()) {
|
||||||
|
distancemin = glm::vec3(static_cast<uint32_t>(*distancemin_it));
|
||||||
|
} else {
|
||||||
|
distancemin = WallpaperEngine::Core::aToVector3(*distancemin_it);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (distancemax_it->is_number()) {
|
||||||
|
distancemax = glm::vec3(static_cast<uint32_t>(*distancemax_it));
|
||||||
|
} else {
|
||||||
|
distancemax = WallpaperEngine::Core::aToVector3(*distancemax_it);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new CEmitter (WallpaperEngine::Core::aToVector3 (*directions_it), distancemax, distancemin,
|
||||||
(id_it == data.end () ? 0 : static_cast<uint32_t> (*id_it)), *name_it,
|
(id_it == data.end () ? 0 : static_cast<uint32_t> (*id_it)), *name_it,
|
||||||
WallpaperEngine::Core::aToVector3 (*origin_it), *rate_it);
|
WallpaperEngine::Core::aToVector3 (*origin_it), *rate_it);
|
||||||
}
|
}
|
||||||
|
|
||||||
CEmitter::CEmitter (const glm::vec3& directions, uint32_t distancemax, uint32_t distancemin, uint32_t id,
|
CEmitter::CEmitter (const glm::vec3& directions, const glm::vec3& distancemax, const glm::vec3& distancemin, uint32_t id,
|
||||||
std::string name, const glm::vec3& origin, double rate) :
|
std::string name, const glm::vec3& origin, double rate) :
|
||||||
m_directions (directions),
|
m_directions (directions),
|
||||||
m_distancemax (distancemax),
|
m_distancemax (distancemax),
|
||||||
@ -34,11 +49,11 @@ const std::string& CEmitter::getName () const {
|
|||||||
return this->m_name;
|
return this->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint32_t CEmitter::getDistanceMax () const {
|
const glm::vec3& CEmitter::getDistanceMax () const {
|
||||||
return this->m_distancemax;
|
return this->m_distancemax;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint32_t CEmitter::getDistanceMin () const {
|
const glm::vec3& CEmitter::getDistanceMin () const {
|
||||||
return this->m_distancemin;
|
return this->m_distancemin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,11 +23,11 @@ class CEmitter {
|
|||||||
/**
|
/**
|
||||||
* @return The maximum distance a particle can travel before being dead
|
* @return The maximum distance a particle can travel before being dead
|
||||||
*/
|
*/
|
||||||
[[nodiscard]] const uint32_t getDistanceMax () const;
|
[[nodiscard]] const glm::vec3& getDistanceMax () const;
|
||||||
/**
|
/**
|
||||||
* @return The minimum distance a particle can travel before being dead
|
* @return The minimum distance a particle can travel before being dead
|
||||||
*/
|
*/
|
||||||
[[nodiscard]] const uint32_t getDistanceMin () const;
|
[[nodiscard]] const glm::vec3& getDistanceMin () const;
|
||||||
/**
|
/**
|
||||||
* @return The direction a particle should move to
|
* @return The direction a particle should move to
|
||||||
*/
|
*/
|
||||||
@ -42,16 +42,16 @@ class CEmitter {
|
|||||||
[[nodiscard]] const double getRate () const;
|
[[nodiscard]] const double getRate () const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CEmitter (const glm::vec3& directions, uint32_t distancemax, uint32_t distancemin, uint32_t id, std::string name,
|
CEmitter (const glm::vec3& directions, const glm::vec3& distancemax, const glm::vec3& distancemin, uint32_t id, std::string name,
|
||||||
const glm::vec3& origin, double rate);
|
const glm::vec3& origin, double rate);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/** Direction the particles should move to */
|
/** Direction the particles should move to */
|
||||||
glm::vec3 m_directions;
|
glm::vec3 m_directions;
|
||||||
/** Maximum distance before the particle is dead */
|
/** Maximum distance before the particle is dead */
|
||||||
uint32_t m_distancemax;
|
glm::vec3 m_distancemax;
|
||||||
/** Minimum distance before the particle is dead */
|
/** Minimum distance before the particle is dead */
|
||||||
uint32_t m_distancemin;
|
glm::vec3 m_distancemin;
|
||||||
/** ID of the emitter */
|
/** ID of the emitter */
|
||||||
uint32_t m_id;
|
uint32_t m_id;
|
||||||
/** Name of the emitter, indicates the type of emitter */
|
/** Name of the emitter, indicates the type of emitter */
|
||||||
|
Loading…
Reference in New Issue
Block a user