1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
//
//
#ifndef _SPHERE_SHAPE_H
#define _SPHERE_SHAPE_H
#pragma once
#include "globalincs/pstypes.h"
#include "math/bitarray.h"
#include "math/vecmat.h"
#include "particle/ParticleEffect.h"
#include "utils/RandomRange.h"
namespace particle {
namespace effects {
/**
* @ingroup particleEffects
*/
class SphereShape {
::util::UniformFloatRange m_sphereRange;
public:
SphereShape() : m_sphereRange(0.f, 1.f) {}
matrix getDisplacementMatrix() {
vec3d vec;
vm_vec_unit_sphere_point(&vec, m_sphereRange.next(), m_sphereRange.next());
matrix m;
vm_vector_2_matrix_norm(&m, &vec);
return m;
}
void parse(bool /*nocreate*/) {
}
EffectType getType() const { return EffectType::Sphere; }
/**
* @brief Specifies if the velocities of the particles should be scaled with the deviation from the direction
* @return @c true
*/
static constexpr bool scale_velocity_deviation() {
return false;
}
};
}
}
#endif //_SPHERE_SHAPE_H
|