CrystalSpace

Public API Reference

Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

csParticleSystem Class Reference
[Common Plugin Classes]

This class represents a particle system. More...

#include <csplugincommon/particlesys/partgen.h>

Inheritance diagram for csParticleSystem:

iMeshObject iBase csNewtonianParticleSystem List of all members.

Public Member Functions

 csParticleSystem (iObjectRegistry *object_reg, iMeshObjectFactory *factory)
 Make a new system.
virtual ~csParticleSystem ()
 Destroy particle system, and all particles.
virtual void SetParticleCount (size_t num)
 Set the number of particles to use.
size_t GetParticleCount () const
 Get the number of particles.
size_t GetNumParticles () const
 How many particles the system currently has.
iParticleGetParticle (size_t idx) const
 Get a particle.
void RemoveParticles ()
 Remove all particles.
void AppendParticle (iParticle *part, iSprite2DState *spr2d)
 Add a new particle, increases num_particles. Do a DecRef yourself.
void AppendRectSprite (float width, float height, iMaterialWrapper *mat, bool lighted)
 Add an rectangle shaped sprite2d particle.
void AppendRegularSprite (int n, float radius, iMaterialWrapper *mat, bool lighted)
 Add a sprite2d n-gon with material, and given radius.
void SetSelfDestruct (csTicks t)
 Set selfdestruct mode on, and msec to live.
void UnSetSelfDestruct ()
 system will no longer self destruct
bool GetSelfDestruct () const
 returns whether the system will self destruct
csTicks GetTimeToLive () const
 if the system will self destruct, returns the time to live in msec.
void SetChangeColor (const csColor &col)
 Change color of all particles, by col per second.
void UnsetChangeColor ()
 Stop change of color.
bool GetChangeColor (csColor &col) const
 see if change color is enabled, and get a copy if so.
void SetChangeSize (float factor)
 Change size of all particles, by factor per second.
void UnsetChangeSize ()
 Stop change of size.
bool GetChangeSize (float &factor) const
 see if change size is enabled, and get the value if so.
void SetAlpha (float alpha)
 Set the alpha of particles.
float GetAlpha () const
 Get the probable alpha of the particles.
void SetChangeAlpha (float factor)
 Change alpha of all particles, by factor per second.
void UnsetChangeAlpha ()
 Stop change of alpha.
bool GetChangeAlpha (float &factor) const
 see if change alpha is enabled, and get the value if so.
void SetChangeRotation (float angle)
 Change rotation of all particles, by angle in radians per second.
void UnsetChangeRotation ()
 Stop change of rotation.
bool GetChangeRotation (float &angle) const
 see if change rotation is enabled, and get the angle if so.
const csBox3GetBoundingBox () const
 Get the bounding box for this particle system.
virtual void SetupColor ()
 Set particle colors, convenience function.
virtual void AddColor (const csColor &col)
 Add particle colors, convenience function.
virtual void ScaleBy (float factor)
 Scale all particles.
virtual void SetupMixMode ()
 Set particle mixmodes, convenience function.
virtual void Rotate (float angle)
 Rotate all particles.
virtual void Update (csTicks elapsed_time)
 Update the state of the particles as time has passed.
virtual iMeshObjectFactoryGetFactory () const
 Get the reference to the factory that created this mesh object.
virtual csFlagsGetFlags ()
 Get flags for this object.
virtual csPtr< iMeshObjectClone ()
 Creates a copy of this object and returns the clone.
virtual csRenderMesh ** GetRenderMeshes (int &n, iRenderView *rview, iMovable *movable, uint32 frustum_mask)
 Returns the set of render meshes.
virtual void SetVisibleCallback (iMeshObjectDrawCallback *cb)
 Register a callback to the mesh object which will be called from within Draw() if the mesh object thinks that the object is really visible.
virtual iMeshObjectDrawCallbackGetVisibleCallback () const
 Get the current visible callback.
virtual void NextFrame (csTicks current_time, const csVector3 &)
 Control animation of this object.
virtual bool HitBeamOutline (const csVector3 &, const csVector3 &, csVector3 &, float *)
 Check if this mesh is hit by this object space vector.
virtual bool HitBeamObject (const csVector3 &, const csVector3 &, csVector3 &, float *, int *=0)
 Check if this mesh is hit by this object space vector.
virtual void SetLogicalParent (iBase *lp)
 Set a reference to some logical parent in the context that holds the mesh objects.
virtual iBaseGetLogicalParent () const
 Get the logical parent for this mesh object.
virtual iObjectModelGetObjectModel ()
 Get the generic interface describing the geometry of this mesh.
virtual bool SetColor (const csColor &col)
 Set the base color of the mesh.
virtual bool GetColor (csColor &col) const
 Get the base color of the mesh.
virtual bool SetMaterialWrapper (iMaterialWrapper *mat)
 Set the material of the mesh.
virtual iMaterialWrapperGetMaterialWrapper () const
 Get the material of the mesh.
virtual void InvalidateMaterialHandles ()
 Material changed.
virtual void PositionChild (iMeshObject *child, csTicks current_time)
 see imesh/object.h for specification.

Protected Member Functions

void SetupBuffers (size_t part_sides)
 Setup the buffers for the particles.
virtual void SetupObject ()
 Setup this object.
csVector3 GetRandomDirection ()
 Return vector with -1..+1 members. Varying length.
csVector3 GetRandomDirection (csVector3 const &magnitude, csVector3 const &offset)
 Return vector with -1..+1 members. Varying length.
csVector3 GetRandomPosition (csBox3 const &box)
 Return vector with random position within box.

Protected Attributes

csVector3 radius
 Object space radius.
csRefArray< iSprite2DStatesprite2ds
 iParticle ptrs to the particles.
bool self_destruct
 Self destruct and when.
csColor color
 Color of all particles.
csRef< iMaterialWrappermat
 Material for all particles.
uint MixMode
 MixMode for all particles.
bool change_color
 Color change.
bool change_size
 Size change.
bool change_alpha
 Alpha change.
bool change_rotation
 Rotate particles, angle in radians.
csBox3 bbox
 bounding box in 3d of all particles in this system.
csRef< iMeshObjectFactoryspr_factory
 Pointer to a mesh object factory for 2D sprites.
csTicks prev_time
 Previous time.
csVector3part_pos
 particle position

Detailed Description

This class represents a particle system.

It is a set of iParticles. Subclasses of this class may be of more interest to users. More specialised particle systems can be found below.

Definition at line 59 of file partgen.h.


Constructor & Destructor Documentation

csParticleSystem::csParticleSystem iObjectRegistry object_reg,
iMeshObjectFactory factory
 

Make a new system.

Also adds the particle system to the list of the current engine.

virtual csParticleSystem::~csParticleSystem  )  [virtual]
 

Destroy particle system, and all particles.


Member Function Documentation

virtual void csParticleSystem::AddColor const csColor col  )  [virtual]
 

Add particle colors, convenience function.

void csParticleSystem::AppendParticle iParticle part,
iSprite2DState spr2d
[inline]
 

Add a new particle, increases num_particles. Do a DecRef yourself.

Definition at line 186 of file partgen.h.

void csParticleSystem::AppendRectSprite float  width,
float  height,
iMaterialWrapper mat,
bool  lighted
 

Add an rectangle shaped sprite2d particle.

Pass along half w and h. adds sprite to engine list.

void csParticleSystem::AppendRegularSprite int  n,
float  radius,
iMaterialWrapper mat,
bool  lighted
 

Add a sprite2d n-gon with material, and given radius.

adds sprite to engine list.

virtual csPtr<iMeshObject> csParticleSystem::Clone  )  [inline, virtual]
 

Creates a copy of this object and returns the clone.

Implements iMeshObject.

Definition at line 301 of file partgen.h.

float csParticleSystem::GetAlpha  )  const [inline]
 

Get the probable alpha of the particles.

Definition at line 238 of file partgen.h.

const csBox3& csParticleSystem::GetBoundingBox  )  const [inline]
 

Get the bounding box for this particle system.

Definition at line 258 of file partgen.h.

bool csParticleSystem::GetChangeAlpha float &  factor  )  const [inline]
 

see if change alpha is enabled, and get the value if so.

Definition at line 245 of file partgen.h.

bool csParticleSystem::GetChangeColor csColor col  )  const [inline]
 

see if change color is enabled, and get a copy if so.

Definition at line 222 of file partgen.h.

bool csParticleSystem::GetChangeRotation float &  angle  )  const [inline]
 

see if change rotation is enabled, and get the angle if so.

Definition at line 254 of file partgen.h.

bool csParticleSystem::GetChangeSize float &  factor  )  const [inline]
 

see if change size is enabled, and get the value if so.

Definition at line 231 of file partgen.h.

virtual bool csParticleSystem::GetColor csColor col  )  const [inline, virtual]
 

Get the base color of the mesh.

Will return false if not supported.

Implements iMeshObject.

Definition at line 360 of file partgen.h.

virtual iMeshObjectFactory* csParticleSystem::GetFactory  )  const [inline, virtual]
 

Get the reference to the factory that created this mesh object.

Implements iMeshObject.

Definition at line 299 of file partgen.h.

virtual csFlags& csParticleSystem::GetFlags  )  [inline, virtual]
 

Get flags for this object.

The following flags are at least supported:

  • #CS_MESH_STATICPOS: mesh will never move.
  • #CS_MESH_STATICSHAPE: mesh will never animate.
Mesh objects may implement additional flags. These mesh object specific flags must be equal to at least 0x00010000.

Implements iMeshObject.

Definition at line 300 of file partgen.h.

virtual iBase* csParticleSystem::GetLogicalParent  )  const [inline, virtual]
 

Get the logical parent for this mesh object.

See SetLogicalParent() for more information.

Implements iMeshObject.

Definition at line 332 of file partgen.h.

virtual iMaterialWrapper* csParticleSystem::GetMaterialWrapper  )  const [inline, virtual]
 

Get the material of the mesh.

If not supported this will return 0.

Implements iMeshObject.

Definition at line 371 of file partgen.h.

size_t csParticleSystem::GetNumParticles  )  const [inline]
 

How many particles the system currently has.

Definition at line 178 of file partgen.h.

virtual iObjectModel* csParticleSystem::GetObjectModel  )  [inline, virtual]
 

Get the generic interface describing the geometry of this mesh.

If the factory supports this you should preferably use the object model from the factory instead.

Implements iMeshObject.

Definition at line 353 of file partgen.h.

iParticle* csParticleSystem::GetParticle size_t  idx  )  const [inline]
 

Get a particle.

Definition at line 180 of file partgen.h.

size_t csParticleSystem::GetParticleCount  )  const [inline]
 

Get the number of particles.

Definition at line 173 of file partgen.h.

csVector3 csParticleSystem::GetRandomDirection csVector3 const &  magnitude,
csVector3 const &  offset
[protected]
 

Return vector with -1..+1 members. Varying length.

csVector3 csParticleSystem::GetRandomDirection  )  [protected]
 

Return vector with -1..+1 members. Varying length.

csVector3 csParticleSystem::GetRandomPosition csBox3 const &  box  )  [protected]
 

Return vector with random position within box.

virtual csRenderMesh** csParticleSystem::GetRenderMeshes int &  n,
iRenderView rview,
iMovable movable,
uint32  frustum_mask
[virtual]
 

Returns the set of render meshes.

The frustum_mask is given by the culler and contains a mask with all relevant planes for the given object. These planes correspond with the clip planes kept by iRenderView.

Implements iMeshObject.

bool csParticleSystem::GetSelfDestruct  )  const [inline]
 

returns whether the system will self destruct

Definition at line 212 of file partgen.h.

csTicks csParticleSystem::GetTimeToLive  )  const [inline]
 

if the system will self destruct, returns the time to live in msec.

Definition at line 214 of file partgen.h.

References csTicks.

virtual iMeshObjectDrawCallback* csParticleSystem::GetVisibleCallback  )  const [inline, virtual]
 

Get the current visible callback.

Implements iMeshObject.

Definition at line 312 of file partgen.h.

virtual bool csParticleSystem::HitBeamObject const csVector3 ,
const csVector3 ,
csVector3 ,
float *  ,
int *  = 0
[inline, virtual]
 

Check if this mesh is hit by this object space vector.

Return the collision point in object space coordinates. This is the most detailed version (and also the slowest). The returned hit will be guaranteed to be the point closest to the 'start' of the beam. If the object supports this then an index of the hit polygon will be returned (or -1 if not supported or no hit).

Implements iMeshObject.

Definition at line 329 of file partgen.h.

virtual bool csParticleSystem::HitBeamOutline const csVector3 ,
const csVector3 ,
csVector3 ,
float * 
[inline, virtual]
 

Check if this mesh is hit by this object space vector.

This will do a test based on the outline of the object. This means that it is more accurate than HitBeamBBox(). Note that this routine will typically be faster than HitBeamObject(). The hit may be on the front or the back of the object, but will indicate that it iterrupts the beam.

Implements iMeshObject.

Definition at line 326 of file partgen.h.

virtual void csParticleSystem::InvalidateMaterialHandles  )  [inline, virtual]
 

Material changed.

This is an 'event' that the engine (or another party managing materials) will send out as soon as the material handles are changed in some way which requires the mesh object to fetch it again (i.e. to call materialwrapper->GetMaterialHandle()) again.

Implements iMeshObject.

Definition at line 372 of file partgen.h.

virtual void csParticleSystem::NextFrame csTicks  current_time,
const csVector3
[inline, virtual]
 

Control animation of this object.

Implements iMeshObject.

Definition at line 316 of file partgen.h.

References csTicks.

virtual void csParticleSystem::PositionChild iMeshObject child,
csTicks  current_time
[inline, virtual]
 

see imesh/object.h for specification.

The default implementation does nothing.

Implements iMeshObject.

Definition at line 377 of file partgen.h.

void csParticleSystem::RemoveParticles  ) 
 

Remove all particles.

virtual void csParticleSystem::Rotate float  angle  )  [virtual]
 

Rotate all particles.

virtual void csParticleSystem::ScaleBy float  factor  )  [virtual]
 

Scale all particles.

void csParticleSystem::SetAlpha float  alpha  )  [inline]
 

Set the alpha of particles.

Definition at line 235 of file partgen.h.

References CS_FX_SETALPHA.

void csParticleSystem::SetChangeAlpha float  factor  )  [inline]
 

Change alpha of all particles, by factor per second.

Definition at line 240 of file partgen.h.

void csParticleSystem::SetChangeColor const csColor col  )  [inline]
 

Change color of all particles, by col per second.

Definition at line 217 of file partgen.h.

void csParticleSystem::SetChangeRotation float  angle  )  [inline]
 

Change rotation of all particles, by angle in radians per second.

Definition at line 249 of file partgen.h.

void csParticleSystem::SetChangeSize float  factor  )  [inline]
 

Change size of all particles, by factor per second.

Definition at line 226 of file partgen.h.

virtual bool csParticleSystem::SetColor const csColor col  )  [inline, virtual]
 

Set the base color of the mesh.

This color will be added to whatever color is set for lighting. Not all meshes need to support this. This function will return true if it worked.

Implements iMeshObject.

Definition at line 354 of file partgen.h.

virtual void csParticleSystem::SetLogicalParent iBase lp  )  [inline, virtual]
 

Set a reference to some logical parent in the context that holds the mesh objects.

When a mesh object is used in the context of the 3D engine then this will be an iMeshWrapper. In case it is used in the context of the isometric engine this will be an iIsoMeshSprite. Note that this function should NOT increase the ref-count of the given logical parent because this would cause a circular reference (since the logical parent already holds a reference to this mesh object).

Implements iMeshObject.

Definition at line 331 of file partgen.h.

virtual bool csParticleSystem::SetMaterialWrapper iMaterialWrapper mat  )  [inline, virtual]
 

Set the material of the mesh.

This only works for single-material meshes. If not supported this function will return false.

Implements iMeshObject.

Definition at line 365 of file partgen.h.

References mat.

virtual void csParticleSystem::SetParticleCount size_t  num  )  [inline, virtual]
 

Set the number of particles to use.

Definition at line 167 of file partgen.h.

void csParticleSystem::SetSelfDestruct csTicks  t  )  [inline]
 

Set selfdestruct mode on, and msec to live.

Definition at line 207 of file partgen.h.

void csParticleSystem::SetupBuffers size_t  part_sides  )  [protected]
 

Setup the buffers for the particles.

virtual void csParticleSystem::SetupColor  )  [virtual]
 

Set particle colors, convenience function.

virtual void csParticleSystem::SetupMixMode  )  [virtual]
 

Set particle mixmodes, convenience function.

virtual void csParticleSystem::SetupObject  )  [protected, virtual]
 

Setup this object.

virtual void csParticleSystem::SetVisibleCallback iMeshObjectDrawCallback cb  )  [inline, virtual]
 

Register a callback to the mesh object which will be called from within Draw() if the mesh object thinks that the object is really visible.

Depending on the type of mesh object this can be very accurate or not accurate at all. But in all cases it will certainly be called if the object is visible.

Implements iMeshObject.

Definition at line 306 of file partgen.h.

References iBase::DecRef(), and iBase::IncRef().

void csParticleSystem::UnsetChangeAlpha  )  [inline]
 

Stop change of alpha.

Definition at line 243 of file partgen.h.

void csParticleSystem::UnsetChangeColor  )  [inline]
 

Stop change of color.

Definition at line 220 of file partgen.h.

void csParticleSystem::UnsetChangeRotation  )  [inline]
 

Stop change of rotation.

Definition at line 252 of file partgen.h.

void csParticleSystem::UnsetChangeSize  )  [inline]
 

Stop change of size.

Definition at line 229 of file partgen.h.

void csParticleSystem::UnSetSelfDestruct  )  [inline]
 

system will no longer self destruct

Definition at line 210 of file partgen.h.

virtual void csParticleSystem::Update csTicks  elapsed_time  )  [virtual]
 

Update the state of the particles as time has passed.

i.e. move the particles, retexture, recolor ... this member function will set to_delete if self_destruct is enabled and time is up.

Reimplemented in csNewtonianParticleSystem.


Member Data Documentation

csBox3 csParticleSystem::bbox [protected]
 

bounding box in 3d of all particles in this system.

the particle system subclass has to give this a reasonable value. no particle may exceed the bbox.

Definition at line 94 of file partgen.h.

bool csParticleSystem::change_alpha [protected]
 

Alpha change.

Definition at line 86 of file partgen.h.

bool csParticleSystem::change_color [protected]
 

Color change.

Definition at line 82 of file partgen.h.

bool csParticleSystem::change_rotation [protected]
 

Rotate particles, angle in radians.

Definition at line 88 of file partgen.h.

bool csParticleSystem::change_size [protected]
 

Size change.

Definition at line 84 of file partgen.h.

csColor csParticleSystem::color [protected]
 

Color of all particles.

Definition at line 76 of file partgen.h.

csRef<iMaterialWrapper> csParticleSystem::mat [protected]
 

Material for all particles.

Definition at line 78 of file partgen.h.

Referenced by SetMaterialWrapper().

uint csParticleSystem::MixMode [protected]
 

MixMode for all particles.

Definition at line 80 of file partgen.h.

csVector3* csParticleSystem::part_pos [protected]
 

particle position

Definition at line 109 of file partgen.h.

csTicks csParticleSystem::prev_time [protected]
 

Previous time.

Definition at line 100 of file partgen.h.

csVector3 csParticleSystem::radius [protected]
 

Object space radius.

Definition at line 68 of file partgen.h.

bool csParticleSystem::self_destruct [protected]
 

Self destruct and when.

Definition at line 73 of file partgen.h.

csRef<iMeshObjectFactory> csParticleSystem::spr_factory [protected]
 

Pointer to a mesh object factory for 2D sprites.

Definition at line 98 of file partgen.h.

csRefArray<iSprite2DState> csParticleSystem::sprite2ds [protected]
 

iParticle ptrs to the particles.

Definition at line 70 of file partgen.h.


The documentation for this class was generated from the following file:
Generated for Crystal Space by doxygen 1.3.9.1