@c -*-texinfo-*-
@node MeshObject Fountain, MeshObject Fire, MeshObject PartSys, MeshObject
@subsection Fountain Mesh Object
@cindex MeshObject
@cindex Fountain Particle System
@cindex @code{iMeshObject}
@cindex @code{iMeshObjectFactory}
@cindex @code{iMeshObjectType}
@cindex @code{iFountainState}
@cindex @code{iParticleState}

@emph{Written by Jorrit Tyberghein,
@email{jorrit.tyberghein@@gmail.com}.}

A fountain is a particle system that emulates a fountain of water drops.  Also
see the general particle system documentation which is valid for all particle
systems.  @xref{MeshObject PartSys}.

@subsubheading Basic Structure

The following @sc{scf} class names are used (for @code{csLoadPlugin}):

@itemize @bullet
@item
Type plugin: @samp{crystalspace.mesh.object.fountain}
@item
Loader plugin: @samp{crystalspace.mesh.loader.fountain}
@item
Factory loader plugin: @samp{crystalspace.mesh.loader.factory.fountain}
@end itemize

Objects in this plugin implement the following @sc{scf} interfaces (get
with @code{scfQueryInterface}):

@itemize @bullet
@item
@emph{MeshObject}
@itemize @bullet
@item
Implements @samp{iMeshObject}
@item
Implements @samp{iParticleState}
@item
Implements @samp{iFountainState}
@end itemize
@item
@emph{MeshObjectFactory}
@itemize @bullet
@item
Implements @samp{iMeshObjectFactory}
@end itemize
@item
@emph{MeshObjectFactory}
@itemize @bullet
@item
Implements @samp{iMeshObjectType}
@end itemize
@end itemize

@subsubheading Factory State Interface

This plugin has no factory state interface.

@subsubheading Factory Loader

The fountain mesh factory loader has no parameters.

@subsubheading Object State Interface

@samp{iFountainState} is the @sc{scf} interface that you can
use to set/get settings for a fountain object. The definition of this
interface can be found in @file{CS/include/imesh/fountain.h} and that's also the
include file you need to include in your applications to use this plugin.
Using this interface you can access the number of particles, the size
of the particles, and various other fountain parameters.

In addition you can use @samp{iParticleState}.

@subsubheading Object Loader

Also see the general documentation for particle systems for other recognized
keywords.  @xref{MeshObject PartSys}.

@table @code
@item <dropsize w="" h="" />
Size of the droplets for the fountain (width and height).
@item <origin x="" y="" z="" />
Origin of the fountain.  Usually this is (0,0,0) and the engine is responsible
for setting the correct position of the fountain.  This works better for
hierarchical transformations.
@item <accel x="" y="" z="" />
Acceleration of the particles (x, y, and z acceleration).
@item <speed>speedValue</speed>
Speed of the particles.
@item <opening>openingValue</opening>
Opening of the fountain sprinkler.
@item <azimuth>azimuthValue</azimuth>
Azimuth.
@item <elevation>elevationValue</elevation>
Elevation.
@item <falltime>falltimeValue</falltime>
Falltime.
@item <lighting>yes/no</lighting>
Disable or enable lighting for the fountain particles.
@item <number>nrParticles</number>
Number of particles to use.
@end table
