18 #define CPLUSPLUS_ONLY
27 class diguyParticleManager;
58 virtual const char * get_name() = 0;
59 virtual void set_name(
const char * name) = 0;
62 virtual int update(
float dt);
64 virtual void start_emitting() = 0;
65 virtual void stop_emitting() = 0;
66 virtual void pause_emitting() = 0;
67 virtual void stop_all_particles() = 0;
68 virtual void restart_particle_system() = 0;
71 virtual void pause_update() {}
72 virtual void resume_update() {}
74 virtual int get_emitting() = 0;
76 virtual int get_active_count() = 0;
78 virtual void set_position(
double x,
double y,
double z ) = 0;
79 virtual void get_position(
double* x,
double* y,
double* z ) = 0;
81 virtual int set_visible(
int visible ) { m_visible = visible;
return 0; }
82 virtual int get_visible() {
return m_visible; }
85 virtual void set_orientation(
float * matrix) = 0;
86 virtual void set_scale(
float scale) = 0;
87 virtual void set_scale(
float scale_x,
float scale_y,
float scale_z) = 0;
88 virtual void set_time_scale(
float t) = 0;
93 virtual void reset_prev_position_next_update() = 0;
98 void set_particle_manager(diguyParticleManager * manager){ m_particle_manager = manager; }
99 diguyParticleManager * get_particle_manager() {
return m_particle_manager; }
105 m_renderer = renderer;
109 virtual int get_ready_for_garbage_collection(){
return m_ready_for_garbage_collection; }
110 virtual void set_ready_for_garbage_collection(
int value){ m_ready_for_garbage_collection = value; }
111 virtual float get_system_life_time_override(){
return m_system_life_time_override; }
112 virtual void set_system_life_time_override(
float value){ m_system_life_time_override = value; }
114 virtual int get_spawned_system(){
return m_spawned_system; }
115 virtual void set_spawned_system(
int value) { m_spawned_system = value; }
118 virtual void add_collision_plane(
const bdiVec3f & vPlaneNormal,
const bdiVec3f & vPoint,
119 float fBounceFactor = 1.0f,
int nCollisionResult = 0) {
124 diguyParticleManager * m_particle_manager;
129 float m_system_life_time_override;
130 int m_ready_for_garbage_collection;
131 int m_spawned_system;
153 virtual void setup_particle_rendering(
int render_pass_flags) = 0;
156 virtual void end_particle_rendering(
int render_pass_flags) = 0;
159 virtual void draw_particle_buffer(
const diguyParticleDrawDesc * draw_desc,
void * particle_data) = 0;
162 float m_camera_matrix[16];
163 float m_world_rotation_matrix[16];
An interface class that represents a particle system that has been created by diguy's appearance effe...
Definition: diguyParticleSystem.h:51
int m_num_verts_per_primitive
Normally 4 for GL_QUADS, but can also be 2 for GL_LINES.
Definition: diguyParticleSystem.h:225
float m_brightness_multiplier
optional per particle system override for IR shader
Definition: diguyParticleSystem.h:231
int m_src_blend_func
OpenGL src blending function constant.
Definition: diguyParticleSystem.h:207
int m_particle_data_size
How large in bytes each particle is, needed for VBO stride calculations.
Definition: diguyParticleSystem.h:216
diguyParticleDrawDesc()
Definition: diguyParticleSystem.h:173
int m_active_count
number of active particles for this draw call
Definition: diguyParticleSystem.h:228
int m_particle_offset_for_normals
Definition: diguyParticleSystem.h:221
float m_alpha_thresh
alpha threshold for clipping the edges of particle system
Definition: diguyParticleSystem.h:213
diguyViewCamera * m_camera
Pointer to current diguy camera.
Definition: diguyParticleSystem.h:192
An Structure that represents a particle system draw state. This struct allows you to feed rendering i...
Definition: diguyParticleSystem.h:171
A class that represents a shared texture.
Definition: diguyGraphicsTexture.h:124
int m_render_pass_flags
current render pass flags (shadow/intersection pass etc)
Definition: diguyParticleSystem.h:234
diguyGraphicsTexture * m_texture
Texture to bind for rendering this particle system.
Definition: diguyParticleSystem.h:186
int m_particle_offset_for_colors
Following are needed for VBO stride and offset calculations.
Definition: diguyParticleSystem.h:219
The class that represents a DI-Guy Entity in the world.
Definition: diguyCharacter.h:81
int m_dst_blend_func
OpenGL dst blending function constant.
Definition: diguyParticleSystem.h:210
int m_particle_offset_for_textures
Definition: diguyParticleSystem.h:222
int m_depth_write
Should depth writing be active for this particle.
Definition: diguyParticleSystem.h:195
int m_world_space
Is this particle in world space (usually yes)
Definition: diguyParticleSystem.h:198
An interface class that allows diguy to trigger an immediate mode rendering of a diguy particle syste...
Definition: diguyParticleSystem.h:143
The class that represents a camera in the world.
Definition: diguyViewCamera.h:260
float m_scale_x
Scale values for non world space particles.
Definition: diguyParticleSystem.h:201
float m_scale_y
Definition: diguyParticleSystem.h:201
diguyGraphicsShaderProgram * m_shader
Shader that should be used to draw particle system. If null then use the Fixed Function Pipeline...
Definition: diguyParticleSystem.h:183
float m_scale_z
Definition: diguyParticleSystem.h:201
int m_particle_offset_for_verts
Definition: diguyParticleSystem.h:220
diguyParticleSystem * m_system
Pointer to actual particle system interface class.
Definition: diguyParticleSystem.h:189
This class implements shader programs for use with DI-Guy character graphics.
Definition: diguyGraphicsShaderProgram.h:94
int m_blend
Should blending be enabled.
Definition: diguyParticleSystem.h:204