74template<
class T> __inline
121 int max_particles = 0,
int max_buffer_size = -1,
bool pingpong =
false,
138 virtual const char *
Get_Name (
void)
const {
return NameString; }
139 virtual void Set_Name (
const char *pname);
163 virtual void Set_LOD_Bias(
float bias) {
if (Buffer) Buffer->Set_LOD_Bias(bias); }
201 void Set_Emission_Rate (
float rate) { EmitRate = rate > 0.0f ? (
unsigned int)(1000.0f / rate) : 1000U; }
207 virtual void Emit(
void);
281 static void Disable_All_Emitters(
bool onoff) { DebugDisable = onoff; }
282 static bool Are_Emitters_Disabled(
void) {
return DebugDisable; }
298 virtual void Update_Cached_Bounding_Volumes(
void)
const;
305 void Create_New_Particles(
const Quaternion & curr_quat,
const Vector3 & curr_orig);
310 void Initialize_Particle(NewParticleStruct * newpart,
unsigned int age,
311 const Quaternion & quat,
const Vector3 & orig);
313 unsigned int EmitRate;
314 unsigned int BurstSize;
315 unsigned int OneTimeBurstSize;
317 Vector3Randomizer * PosRand;
319 Vector3Randomizer * VelRand;
321 float VelInheritFactor;
322 unsigned int EmitRemain;
327 bool BufferSceneNeeded;
333 bool RemoveOnComplete;
335 unsigned char GroupID;
339 ParticleBufferClass * Buffer;
347 static bool DefaultRemoveOnComplete;
351 static bool DebugDisable;
Color scale(const Color &a, const Color &b)
#define W3D_EMITTER_FRAME_MODE_1x1
#define W3D_EMITTER_RENDER_MODE_TRI_PARTICLES
bool Is_Remove_On_Complete_Enabled(void)
virtual void Notify_Added(SceneClass *scene)
int Get_Render_Mode(void) const
void Set_Outwards_Velocity(float out_vel)
void Set_Base_Velocity(const Vector3 &base_vel)
void Reset_Frames(ParticlePropertyStruct< float > &new_props)
void Reset_Colors(ParticlePropertyStruct< Vector3 > &new_props)
void Enable_Remove_On_Complete(bool onoff)
void Reset_Opacity(ParticlePropertyStruct< float > &new_props)
float Get_Fade_Time(void) const
float Get_Future_Start_Time(void) const
ShaderClass Get_Shader(void) const
static void Set_Default_Remove_On_Complete(bool onoff)
void Get_Rotation_Key_Frames(ParticlePropertyStruct< float > &rotations) const
void Set_Emission_Rate(float rate)
virtual void Set_Hidden(int onoff)
int Get_Line_Texture_Mapping_Mode(void) const
Vector3 Get_End_Color(void) const
virtual void Add_Dependencies_To_List(DynamicVectorClass< StringClass > &file_list, bool textures_only=false)
float Get_Texture_Tile_Factor(void) const
TextureClass * Get_Texture(void) const
virtual void Get_Obj_Space_Bounding_Box(AABoxClass &box) const
Vector3 Get_Acceleration(void) const
virtual void Scale(float scale)
WW3DErrorType Save(ChunkSaveClass &chunk_save) const
void Set_One_Time_Burst(int size)
virtual int Get_User_Type(void) const
virtual void Render(RenderInfoClass &rinfo)
float Get_Velocity_Inherit(void) const
float Get_Noise_Amplitude(void) const
int Is_Sorting_Disabled(void) const
virtual void Set_Name(const char *pname)
static bool Default_Remove_On_Complete(void)
static ParticleEmitterClass * Create_From_Definition(const ParticleEmitterDefClass &definition)
void Set_Texture(TextureClass *tex)
int Are_End_Caps_Enabled(void) const
virtual const char * Get_User_String(void) const
virtual void Set_Animation_Hidden(int onoff)
float Get_Emission_Rate(void) const
float Get_Lifetime(void) const
float Get_End_Opacity(void) const
int Get_Max_Particles(void) const
void Get_Color_Key_Frames(ParticlePropertyStruct< Vector3 > &colors) const
int Get_Frame_Mode(void) const
float Get_Particle_Size(void) const
void Get_Frame_Key_Frames(ParticlePropertyStruct< float > &frames) const
float Get_Start_Opacity(void) const
virtual void Get_Obj_Space_Bounding_Sphere(SphereClass &sphere) const
Vector3 Get_Start_Color(void) const
ParticleBufferClass * Peek_Buffer(void)
int Get_Burst_Size(void) const
int Is_Merge_Intersections(void) const
virtual void Update_On_Visibilty(void)
void Reset_Blur_Times(ParticlePropertyStruct< float > &new_props)
void Remove_Buffer_From_Scene(void)
void Buffer_Scene_Not_Needed(void)
void Get_Blur_Time_Key_Frames(ParticlePropertyStruct< float > &blurtimes) const
virtual void Set_Visible(int onoff)
void Set_Invisible(bool onoff)
float Get_Outwards_Vel(void) const
virtual bool Is_Complete(void)
void Get_Opacity_Key_Frames(ParticlePropertyStruct< float > &opacities) const
void Set_Acceleration(const Vector3 &acceleration)
ParticleEmitterDefClass * Build_Definition(void) const
float Get_Merge_Abort_Factor(void) const
void Set_Velocity_Inheritance_Factor(float inh_factor)
Vector3Randomizer * Get_Velocity_Random(void) const
virtual const char * Get_Name(void) const
virtual RenderObjClass * Clone(void) const
void Set_Velocity_Randomizer(Vector3Randomizer *rand)
ParticleEmitterClass & operator=(const ParticleEmitterClass &)
void Set_Position_Randomizer(Vector3Randomizer *rand)
float Get_Initial_Orientation_Random(void) const
void Reset_Size(ParticlePropertyStruct< float > &new_props)
Vector3Randomizer * Get_Creation_Volume(void) const
void Get_Size_Key_Frames(ParticlePropertyStruct< float > &sizes) const
virtual void Set_Force_Visible(int onoff)
void Reset_Rotations(ParticlePropertyStruct< float > &new_props, float orient_rnd)
virtual void Notify_Removed(SceneClass *scene)
int Get_Subdivision_Level(void) const
Vector2 Get_UV_Offset_Rate(void) const
virtual void Set_LOD_Bias(float bias)
float Get_Position_Random(void) const
void Set_Burst_Size(int size)
int Is_Freeze_Random(void) const
virtual ~ParticleEmitterClass(void)
Vector3 Get_Start_Velocity(void) const
virtual void On_Frame_Update(void)
ParticleEmitterClass(float emit_rate, unsigned int burst_size, Vector3Randomizer *pos_rnd, Vector3 base_vel, Vector3Randomizer *vel_rnd, float out_vel, float vel_inherit_factor, ParticlePropertyStruct< Vector3 > &color, ParticlePropertyStruct< float > &opacity, ParticlePropertyStruct< float > &size, ParticlePropertyStruct< float > &rotation, float orient_rnd, ParticlePropertyStruct< float > &frames, ParticlePropertyStruct< float > &blur_times, Vector3 accel, float max_age, float future_start, TextureClass *tex, ShaderClass shader=ShaderClass::_PresetAdditiveSpriteShader, int max_particles=0, int max_buffer_size=-1, bool pingpong=false, int render_mode=W3D_EMITTER_RENDER_MODE_TRI_PARTICLES, int frame_mode=W3D_EMITTER_FRAME_MODE_1x1, const W3dEmitterLinePropertiesStruct *line_props=NULL)
virtual int Class_ID(void) const
virtual void Restart(void)
virtual void Set_Visible(int onoff)
virtual void Set_Hidden(int onoff)
virtual void Set_Force_Visible(int onoff)
@ CLASSID_PARTICLEEMITTER
virtual void Set_Animation_Hidden(int onoff)
static ShaderClass _PresetAdditiveSpriteShader
WWINLINE void Set(float x, float y, float z)
__inline void Copy_Emitter_Property_Struct(ParticlePropertyStruct< T > &dest, const ParticlePropertyStruct< T > &src)
unsigned int NumKeyFrames