00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef DISCEMITTER_H
00016 #define DISCEMITTER_H
00017
00018 #include "baseParticleEmitter.h"
00019
00020
00021
00022
00023
00024
00025 class EXPCL_PANDAPHYSICS DiscEmitter : public BaseParticleEmitter {
00026 PUBLISHED:
00027 DiscEmitter();
00028 DiscEmitter(const DiscEmitter ©);
00029 virtual ~DiscEmitter();
00030
00031 virtual BaseParticleEmitter *make_copy();
00032
00033 INLINE void set_radius(PN_stdfloat r);
00034 INLINE void set_outer_angle(PN_stdfloat o_angle);
00035 INLINE void set_inner_angle(PN_stdfloat i_angle);
00036 INLINE void set_outer_magnitude(PN_stdfloat o_mag);
00037 INLINE void set_inner_magnitude(PN_stdfloat i_mag);
00038 INLINE void set_cubic_lerping(bool clerp);
00039
00040 INLINE PN_stdfloat get_radius() const;
00041 INLINE PN_stdfloat get_outer_angle() const;
00042 INLINE PN_stdfloat get_inner_angle() const;
00043 INLINE PN_stdfloat get_outer_magnitude() const;
00044 INLINE PN_stdfloat get_inner_magnitude() const;
00045 INLINE bool get_cubic_lerping() const;
00046
00047 virtual void output(ostream &out) const;
00048 virtual void write(ostream &out, int indent=0) const;
00049
00050 private:
00051 PN_stdfloat _radius;
00052
00053
00054 PN_stdfloat _inner_aoe;
00055 PN_stdfloat _outer_aoe;
00056 PN_stdfloat _inner_magnitude;
00057 PN_stdfloat _outer_magnitude;
00058 bool _cubic_lerping;
00059
00060
00061
00062 PN_stdfloat _distance_from_center;
00063 PN_stdfloat _sinf_theta;
00064 PN_stdfloat _cosf_theta;
00065
00066
00067 virtual void assign_initial_position(LPoint3& pos);
00068 virtual void assign_initial_velocity(LVector3& vel);
00069 };
00070
00071 #include "discEmitter.I"
00072
00073 #endif // DISCEMITTER_H