#include <particleSystem.h>
Inheritance diagram for ParticleSystem:
Public Member Functions | |
ParticleSystem (int pool_size=0) | |
Default Constructor. | |
ParticleSystem (const ParticleSystem ©) | |
Copy Constructor. | |
~ParticleSystem (void) | |
You get the ankles and I'll get the wrists. | |
void | set_pool_size (int size) |
void | set_birth_rate (float new_br) |
void | set_litter_size (int new_ls) |
void | set_litter_spread (int new_ls) |
void | set_local_velocity_flag (bool lv) |
void | set_system_grows_older_flag (bool sgo) |
void | set_system_lifespan (float sl) |
void | set_system_age (float age) |
void | set_active_system_flag (bool a) |
void | set_spawn_on_death_flag (bool sod) |
void | set_spawn_render_node (PandaNode *node) |
void | set_template_system_flag (bool tsf) |
void | set_render_parent (PandaNode *node) |
void | set_renderer (BaseParticleRenderer *r) |
void | set_emitter (BaseParticleEmitter *e) |
void | set_factory (BaseParticleFactory *f) |
int | get_pool_size (void) const |
float | get_birth_rate (void) const |
int | get_litter_size (void) const |
int | get_litter_spread (void) const |
bool | get_local_velocity_flag (void) const |
bool | get_system_grows_older_flag (void) const |
float | get_system_lifespan (void) const |
float | get_system_age (void) const |
bool | get_active_system_flag (void) const |
bool | get_spawn_on_death_flag (void) const |
PandaNode * | get_spawn_render_node (void) const |
bool | get_i_was_spawned_flag (void) const |
int | get_living_particles (void) const |
PandaNode * | get_render_parent (void) const |
BaseParticleRenderer * | get_renderer (void) const |
BaseParticleEmitter * | get_emitter (void) const |
BaseParticleFactory * | get_factory (void) const |
void | add_spawn_template (ParticleSystem *ps) |
void | clear_spawn_templates (void) |
void | render (void) |
Populates an attached GeomNode structure with the particle geometry for rendering. | |
void | induce_labor (void) |
Forces the birth of a particle litter this frame by resetting _tics_since_birth. | |
void | update (float dt) |
Updates the particle system. | |
PhysicsManager * | get_physics_manager (void) const |
PhysicalNode * | get_physical_node (void) const |
PhysicsObject * | get_phys_body (void) const |
void | clear_linear_forces (void) |
Erases the linear force list. | |
void | clear_angular_forces (void) |
Erases the angular force list. | |
void | clear_physics_objects (void) |
Erases the object list. | |
void | add_linear_force (LinearForce *f) |
Adds a linear force to the force list. | |
void | add_angular_force (AngularForce *f) |
Adds an angular force to the force list. | |
void | add_physics_object (PhysicsObject *po) |
Adds an object to the physics object vector. | |
void | remove_linear_force (LinearForce *f) |
removes a linear force from the force list | |
void | remove_angular_force (AngularForce *f) |
removes an angular force from the force list | |
int | get_num_linear_forces (void) const |
PointerTo< LinearForce > | get_linear_force (int index) const |
int | get_num_angular_forces (void) const |
PointerTo< AngularForce > | get_angular_force (int index) const |
const pvector< PointerTo< PhysicsObject > > & | get_object_vector (void) const |
const pvector< PointerTo< LinearForce > > & | get_linear_forces (void) const |
const pvector< PointerTo< AngularForce > > & | get_angular_forces (void) const |
virtual TypeHandle | get_type (void) const |
virtual TypeHandle | force_init_type () |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. | |
int | get_ref_count () const |
Returns the current reference count. | |
int | ref () const |
Explicitly increments the reference count. | |
int | unref () const |
Explicitly decrements the reference count. | |
void | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
Static Public Member Functions | |
TypeHandle | get_class_type (void) |
void | init_type (void) |
Protected Attributes | |
pvector< PointerTo< PhysicsObject > > | _physics_objects |
pvector< PointerTo< LinearForce > > | _linear_forces |
pvector< PointerTo< AngularForce > > | _angular_forces |
PhysicsObject * | _phys_body |
Private Member Functions | |
bool | birth_particle (void) |
A new particle is born. | |
void | kill_particle (int pool_index) |
Kills a particle, returns its slot to the empty stack. | |
void | birth_litter (void) |
spawns a new batch of particles | |
void | resize_pool (int size) |
Resizes the particle pool. | |
void | spawn_child_system (BaseParticle *bp) |
Creates a new particle system based on local template info and adds it to the ps and physics managers. | |
Private Attributes | |
pdeque< int > | _free_particle_fifo |
int | _particle_pool_size |
int | _living_particles |
float | _birth_rate |
float | _tics_since_birth |
int | _litter_size |
int | _litter_spread |
float | _system_age |
float | _system_lifespan |
PointerTo< BaseParticleFactory > | _factory |
PointerTo< BaseParticleEmitter > | _emitter |
PointerTo< BaseParticleRenderer > | _renderer |
ParticleSystemManager * | _manager |
bool | _template_system_flag |
PointerTo< PandaNode > | _render_parent |
PointerTo< PandaNode > | _render_node |
bool | _active_system_flag |
bool | _local_velocity_flag |
bool | _system_grows_older_flag |
bool | _spawn_on_death_flag |
PointerTo< PandaNode > | _spawn_render_node |
pvector< PointerTo< ParticleSystem > > | _spawn_templates |
bool | _i_was_spawned_flag |
Friends | |
class | ParticleSystemManager |
class | PhysicsManager |
class | PhysicalNode |
Definition at line 53 of file particleSystem.h.
|
Default Constructor.
Definition at line 49 of file particleSystem.cxx. |
|
Copy Constructor.
Definition at line 94 of file particleSystem.cxx. References _birth_rate, _emitter, _factory, _i_was_spawned_flag, _living_particles, _local_velocity_flag, _render_node, _render_parent, _renderer, _spawn_on_death_flag, _system_grows_older_flag, _system_lifespan, and _tics_since_birth. |
|
You get the ankles and I'll get the wrists.
Definition at line 131 of file particleSystem.cxx. References _free_particle_fifo, _living_particles, and _particle_pool_size. |
|
Adds an angular force to the force list.
Definition at line 88 of file physical.I. References Physical::_linear_forces. |
|
Adds a linear force to the force list.
Definition at line 75 of file physical.I. References Physical::_linear_forces, INLINE, and PT. |
|
Adds an object to the physics object vector.
Definition at line 145 of file physical.I. References Physical::_physical_node. |
|
Definition at line 276 of file particleSystem.I. References _litter_spread, and INLINE. |
|
spawns a new batch of particles
Definition at line 226 of file particleSystem.cxx. References _spawn_templates, PandaNode::get_num_parents(), PandaNode::get_parent(), and Physical::get_physical_node(). |
|
A new particle is born. This doesn't allocate, resets an element from the particle pool. Definition at line 153 of file particleSystem.cxx. |
|
Erases the angular force list.
Definition at line 47 of file physical.I. References Physical::_physics_objects, and INLINE. |
|
Erases the linear force list.
Definition at line 33 of file physical.I. References Physical::_angular_forces, and INLINE. |
|
Erases the object list.
Definition at line 61 of file physical.I. References Physical::_linear_forces. Referenced by set_renderer(). |
|
Definition at line 287 of file particleSystem.I. |
|
Reimplemented from TypedReferenceCount. Definition at line 113 of file physical.h. |
|
Definition at line 391 of file particleSystem.I. References _render_parent, and INLINE. Referenced by ParticleSystemManager::do_particles(). |
|
|
|
|
|
Definition at line 314 of file particleSystem.I. References _living_particles, and INLINE. |
|
Reimplemented from TypedReferenceCount. Definition at line 102 of file physical.h. References TypedReferenceCount::get_class_type(). |
|
Definition at line 358 of file particleSystem.I. References _system_lifespan, and INLINE. |
|
Definition at line 369 of file particleSystem.I. References _system_age, and INLINE. |
|
Definition at line 457 of file particleSystem.I. |
|
|
|
Referenced by BaseIntegrator::~BaseIntegrator(). |
|
Definition at line 325 of file particleSystem.I. References _active_system_flag. |
|
Definition at line 336 of file particleSystem.I. |
|
Definition at line 380 of file particleSystem.I. References _i_was_spawned_flag. |
|
Definition at line 402 of file particleSystem.I. |
|
Definition at line 245 of file physical.I. |
|
Definition at line 222 of file physical.I. |
|
Referenced by LinearIntegrator::~LinearIntegrator(). |
|
Definition at line 167 of file physical.I. References Physical::_angular_forces, and INLINE. |
|
Definition at line 178 of file physical.I. References Physical::_linear_forces, and INLINE. Referenced by birth_litter(), and BaseIntegrator::~BaseIntegrator(). |
|
Definition at line 156 of file physical.I. |
|
Definition at line 303 of file particleSystem.I. |
|
Returns the current reference count.
Definition at line 183 of file referenceCount.I. Referenced by RenderState::determine_bin_index(), RenderEffects::determine_show_bounds(), FontPool::ns_garbage_collect(), TexturePool::ns_garbage_collect(), MaterialPool::ns_get_material(), and TexturePool::ns_release_texture(). |
|
Definition at line 479 of file particleSystem.I. |
|
Definition at line 347 of file particleSystem.I. References _system_grows_older_flag, and INLINE. |
|
Definition at line 413 of file particleSystem.I. |
|
Definition at line 468 of file particleSystem.I. |
|
Definition at line 446 of file particleSystem.I. Referenced by ParticleSystemManager::do_particles(). |
|
Definition at line 424 of file particleSystem.I. Referenced by ParticleSystemManager::do_particles(). |
|
Definition at line 435 of file particleSystem.I. Referenced by ParticleSystemManager::do_particles(). |
|
Reimplemented from TypedReferenceCount. Definition at line 110 of file physical.h. |
|
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. This is equivalent to get_type().get_index(). Definition at line 71 of file typedObject.I. References TypeHandle::get_name(), TypedObject::get_type(), and INLINE. |
|
Forces the birth of a particle litter this frame by resetting _tics_since_birth.
Definition at line 52 of file particleSystem.I. References INLINE, and resize_pool(). |
|
Reimplemented from TypedReferenceCount. Definition at line 105 of file physical.h. References TypedReferenceCount::get_class_type(), and TypedReferenceCount::init_type(). |
|
Returns true if the current object is the indicated type exactly.
Definition at line 101 of file typedObject.I. Referenced by PT(), and CollisionNode::xform(). |
|
|
Kills a particle, returns its slot to the empty stack.
Definition at line 321 of file particleSystem.cxx. References _factory, _particle_pool_size, Physical::_physics_objects, _renderer, PointerTo< BaseParticleRenderer >::is_null(), and PointerTo< BaseParticleFactory >::is_null(). |
|
Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 225 of file referenceCount.I. Referenced by ClientDevice::ClientDevice(), EggGroupNode::find_textures(), EggGroupNode::r_apply_texmats(), EggGroupNode::r_flatten_transforms(), and EggGroupNode::reverse_vertex_ordering(). |
|
removes an angular force from the force list
Definition at line 124 of file physical.I. References Physical::_physics_manager, and INLINE. |
|
removes a linear force from the force list
Definition at line 101 of file physical.I. References Physical::_angular_forces. |
|
Populates an attached GeomNode structure with the particle geometry for rendering. This is a wrapper for accessability. Definition at line 36 of file particleSystem.I. References _birth_rate, _tics_since_birth, and INLINE. Referenced by ParticleSystemManager::do_particles(). |
|
Resizes the particle pool.
Definition at line 354 of file particleSystem.cxx. References _factory, and Physical::_physics_objects. Referenced by induce_labor(). |
|
Definition at line 164 of file particleSystem.I. References _system_grows_older_flag, and INLINE. |
|
Definition at line 80 of file particleSystem.I. References _litter_spread, and INLINE. |
|
Definition at line 136 of file particleSystem.I. References _active_system_flag. |
|
Definition at line 148 of file particleSystem.I. |
|
Definition at line 93 of file particleSystem.I. References _particle_pool_size, _render_node, _render_parent, _renderer, INLINE, and PointerTo< PandaNode >::is_null(). |
|
Definition at line 105 of file particleSystem.I. |
|
Definition at line 176 of file particleSystem.I. References _system_lifespan. |
|
Definition at line 68 of file particleSystem.I. References _litter_size, and INLINE. Referenced by set_renderer(). |
|
Definition at line 248 of file particleSystem.I. References _particle_pool_size, and INLINE. |
|
Definition at line 117 of file particleSystem.I. References _factory, _particle_pool_size, Physical::clear_physics_objects(), INLINE, and set_pool_size(). |
|
Definition at line 188 of file particleSystem.I. |
|
Definition at line 236 of file particleSystem.I. References _spawn_templates, and INLINE. |
|
Definition at line 224 of file particleSystem.I. References _spawn_templates, and INLINE. Referenced by ParticleSystemManager::do_particles(). |
|
Definition at line 200 of file particleSystem.I. References _render_node, _render_parent, _renderer, INLINE, and PointerTo< PandaNode >::is_null(). |
|
Definition at line 212 of file particleSystem.I. References _render_parent. |
|
Definition at line 265 of file particleSystem.I. References _litter_size, and INLINE. |
|
Creates a new particle system based on local template info and adds it to the ps and physics managers.
Definition at line 253 of file particleSystem.cxx. References _manager, and _spawn_render_node. |
|
Does some easy checks to make sure that the reference count isn't completely bogus.
Definition at line 328 of file referenceCount.I. References INLINE. Referenced by EggNode::determine_bin(), and ReferenceCount::~ReferenceCount(). |
|
Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic; plus, we don't have a virtual destructor anyway.) However, see the helper function unref_delete(). User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 293 of file referenceCount.I. References INLINE. Referenced by RenderState::determine_bin_index(), and RenderEffects::determine_show_bounds(). |
|
Updates the particle system. Call once per frame. Definition at line 497 of file particleSystem.cxx. Referenced by ParticleSystemManager::do_particles(). |
|
Definition at line 159 of file particleSystem.h. |
|
Definition at line 99 of file physical.h. |
|
Definition at line 98 of file physical.h. |
|
Definition at line 89 of file particleSystem.h. Referenced by get_litter_size(), and set_emitter(). |
|
Definition at line 59 of file physical.h. Referenced by Physical::clear_linear_forces(), Physical::get_phys_body(), Physical::Physical(), and Physical::remove_linear_force(). |
|
Definition at line 69 of file particleSystem.h. Referenced by ParticleSystem(), and render(). |
|
Definition at line 77 of file particleSystem.h. Referenced by ParticleSystem(), and set_litter_spread(). |
|
Definition at line 76 of file particleSystem.h. Referenced by get_pool_size(), kill_particle(), ParticleSystem(), resize_pool(), and set_renderer(). |
|
Definition at line 65 of file particleSystem.h. Referenced by ~ParticleSystem(). |
|
Definition at line 102 of file particleSystem.h. Referenced by get_living_particles(), and ParticleSystem(). |
|
Definition at line 58 of file physical.h. Referenced by Physical::add_angular_force(), Physical::add_linear_force(), Physical::clear_physics_objects(), and Physical::get_physical_node(). |
|
Definition at line 71 of file particleSystem.h. Referenced by set_pool_size(), and set_template_system_flag(). |
|
Definition at line 72 of file particleSystem.h. Referenced by add_spawn_template(), and set_birth_rate(). |
|
Definition at line 68 of file particleSystem.h. Referenced by get_birth_rate(), ParticleSystem(), and ~ParticleSystem(). |
|
Definition at line 90 of file particleSystem.h. Referenced by ParticleSystem(). |
|
Definition at line 79 of file particleSystem.h. Referenced by ParticleSystemManager::get_frame_stepping(), and spawn_child_system(). |
|
Definition at line 67 of file particleSystem.h. Referenced by kill_particle(), set_litter_size(), set_render_parent(), set_renderer(), and ~ParticleSystem(). |
|
Definition at line 66 of file physical.h. |
|
Definition at line 57 of file physical.h. Referenced by Physical::clear_angular_forces(), kill_particle(), and resize_pool(). |
|
Definition at line 87 of file particleSystem.h. Referenced by ParticleSystem(), set_litter_size(), and set_system_grows_older_flag(). |
|
Definition at line 86 of file particleSystem.h. Referenced by get_active_system_flag(), ParticleSystem(), set_litter_size(), set_system_grows_older_flag(), and set_system_lifespan(). |
|
Definition at line 78 of file particleSystem.h. Referenced by clear_spawn_templates(), kill_particle(), ParticleSystem(), set_litter_size(), and set_system_grows_older_flag(). |
|
Definition at line 95 of file particleSystem.h. Referenced by ParticleSystem(). |
|
Definition at line 96 of file particleSystem.h. Referenced by spawn_child_system(). |
|
Definition at line 97 of file particleSystem.h. Referenced by birth_litter(), set_spawn_render_node(), and set_system_age(). |
|
Definition at line 73 of file particleSystem.h. Referenced by get_factory(). |
|
Definition at line 91 of file particleSystem.h. Referenced by get_renderer(), ParticleSystem(), and set_active_system_flag(). |
|
Definition at line 74 of file particleSystem.h. Referenced by get_emitter(), ParticleSystem(), and set_local_velocity_flag(). |
|
Definition at line 81 of file particleSystem.h. |
|
Definition at line 70 of file particleSystem.h. Referenced by ParticleSystem(), and render(). |