mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
adding setUniformEmission function to ringEmitter
This commit is contained in:
parent
e81e4efb46
commit
86ee18fd71
@ -45,6 +45,17 @@ set_radius_spread(float spread) {
|
||||
_radius_spread = spread;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function : set_uniform_emission
|
||||
// Access : public
|
||||
// Description : uniform_emission set
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
INLINE void RingEmitter::
|
||||
set_uniform_emission(int uniform_emission) {
|
||||
_uniform_emission = uniform_emission;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function : get_radius
|
||||
// Access : public
|
||||
@ -78,3 +89,16 @@ get_radius_spread() const {
|
||||
return _radius_spread;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function : get_uniform_emission
|
||||
// Access : public
|
||||
// Description : uniform_emission get
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
INLINE int RingEmitter::
|
||||
get_uniform_emission() const {
|
||||
return _uniform_emission;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
RingEmitter::
|
||||
RingEmitter() :
|
||||
_radius(1.0f), _radius_spread(0.0f), _aoe(0.0f)
|
||||
_radius(1.0f), _radius_spread(0.0f), _aoe(0.0f), _uniform_emission(0), _theta(0.0f)
|
||||
{
|
||||
}
|
||||
|
||||
@ -36,7 +36,9 @@ RingEmitter(const RingEmitter ©) :
|
||||
_radius = copy._radius;
|
||||
_aoe = copy._aoe;
|
||||
_radius_spread = copy._radius_spread;
|
||||
_uniform_emission = copy._uniform_emission;
|
||||
|
||||
_theta = copy._theta;
|
||||
_sin_theta = copy._sin_theta;
|
||||
_cos_theta = copy._cos_theta;
|
||||
}
|
||||
@ -67,9 +69,19 @@ make_copy() {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void RingEmitter::
|
||||
assign_initial_position(LPoint3f& pos) {
|
||||
float theta = NORMALIZED_RAND() * 2.0f * MathNumbers::pi_f;
|
||||
_cos_theta = cosf(theta);
|
||||
_sin_theta = sinf(theta);
|
||||
if (_uniform_emission > 0)
|
||||
{
|
||||
_theta = _theta + 1.0/_uniform_emission;
|
||||
if (_theta > 1.0)
|
||||
_theta = _theta - 1.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
_theta = NORMALIZED_RAND();
|
||||
}
|
||||
|
||||
_cos_theta = cosf(_theta * 2.0f * MathNumbers::pi_f);
|
||||
_sin_theta = sinf(_theta * 2.0f * MathNumbers::pi_f);
|
||||
|
||||
float new_radius_spread = SPREAD(_radius_spread);
|
||||
float new_x = _cos_theta * (_radius + new_radius_spread);
|
||||
|
@ -33,10 +33,12 @@ PUBLISHED:
|
||||
INLINE void set_radius(float r);
|
||||
INLINE void set_angle(float angle);
|
||||
INLINE void set_radius_spread(float spread);
|
||||
INLINE void set_uniform_emission(int uniform_emission);
|
||||
|
||||
INLINE float get_radius() const;
|
||||
INLINE float get_angle() const;
|
||||
INLINE float get_radius_spread() const;
|
||||
INLINE int get_uniform_emission() const;
|
||||
|
||||
virtual void output(ostream &out) const;
|
||||
virtual void write(ostream &out, int indent=0) const;
|
||||
@ -48,6 +50,10 @@ protected:
|
||||
// CUSTOM EMISSION PARAMETERS
|
||||
float _aoe; // angle of elevation
|
||||
|
||||
// viariables used for uniform particle emission
|
||||
int _uniform_emission;
|
||||
float _theta;
|
||||
|
||||
///////////////////////////////
|
||||
// scratch variables that carry over from position calc to velocity calc
|
||||
float _sin_theta;
|
||||
|
Loading…
x
Reference in New Issue
Block a user