com.threerings.opengl.effect
Class BaseParticleSystem

java.lang.Object
  extended by com.threerings.expr.SimpleScope
      extended by com.threerings.opengl.model.Model.Implementation
          extended by com.threerings.opengl.effect.BaseParticleSystem
All Implemented Interfaces:
Scope, ScopeUpdateListener, Compositable, Enqueueable, Intersectable, Tickable
Direct Known Subclasses:
MetaParticleSystem, ParticleSystem

public abstract class BaseParticleSystem
extends Model.Implementation
implements Enqueueable

Base class for ParticleSystem and MetaParticleSystem.


Nested Class Summary
static class BaseParticleSystem.Layer
          A single layer of the system.
 
Field Summary
protected  Box _bounds
          The bounds of the system.
protected  boolean _completed
          If true, the particle system has completed.
protected  BaseParticleSystemConfig _config
          The system configuration.
protected  GlContext _ctx
          The application context.
protected  Box[] _groupBounds
          World space bounds of each group.
protected  int _influenceFlags
          Flags indicating which influences can affect the system.
protected  BaseParticleSystem.Layer[] _layers
          The layers of the system.
protected  Transform3D _localTransform
          The local transform.
protected  Box _nbounds
          Holds the bounds of the model when updating.
protected  Transform3D _parentViewTransform
          The parent view transform.
protected  Transform3D _parentWorldTransform
          The parent world transform.
protected  SceneElement.TickPolicy _tickPolicy
          The model's tick policy.
protected static Vector3f _vector
          Working vector.
protected  Transform3D _viewTransform
          The view transform.
protected  boolean _warmed
          If true, the particle system has warmed up.
protected  Transform3D _worldTransform
          The world transform.
 
Fields inherited from class com.threerings.expr.SimpleScope
_parentScope
 
Fields inherited from interface com.threerings.expr.Scope
EPOCH, NOW
 
Constructor Summary
BaseParticleSystem(GlContext ctx, Scope parentScope)
          Creates a new particle system implementation.
 
Method Summary
 void composite()
          Adds this object's Dependencys and Enqueueables to the compositor in preparation for rendering.
protected abstract  BaseParticleSystem.Layer createLayer(BaseParticleSystemConfig.Layer config)
          Creates a new layer for the supplied config.
 void drawBounds()
          Draws the bounds of the model in immediate mode.
 void enqueue()
          Enqueues this object for rendering.
 Box getBounds()
          Returns a reference to the bounds of the model.
 int getInfluenceFlags()
          Returns a set of flags indicating the types of influences that affect the model.
 SceneElement.TickPolicy getTickPolicy()
          Returns the tick policy of the model.
 boolean hasCompleted()
          Determines whether the model (such as a transient effect) has completed.
 void reset()
          Resets the state of this model.
protected  void resetBounds()
          Resets the bounds before the tick.
 void setConfig(BaseParticleSystemConfig config)
          Sets the configuration of this system.
 void tick(float elapsed)
          Updates the state of this object based on the elapsed time in seconds.
 void updateBounds()
          Updates the bounds of the model.
protected  void updateFromConfig()
          Updates the model to match its new or modified configuration.
 
Methods inherited from class com.threerings.opengl.model.Model.Implementation
attach, createAnimation, createSurface, createSurfaces, createSurfaces, detach, detachAll, getAnimation, getAnimations, getIntersection, getPlayingAnimations, getPointWorldTransform, getScopeName, isImplementation, setTickPolicy, wasAdded, willBeRemoved
 
Methods inherited from class com.threerings.expr.SimpleScope
addListener, dispose, get, getParentScope, removeListener, scopeUpdated
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_ctx

protected GlContext _ctx
The application context.


_config

protected BaseParticleSystemConfig _config
The system configuration.


_layers

protected BaseParticleSystem.Layer[] _layers
The layers of the system.


_parentWorldTransform

@Bound(value="worldTransform")
protected Transform3D _parentWorldTransform
The parent world transform.


_parentViewTransform

@Bound(value="viewTransform")
protected Transform3D _parentViewTransform
The parent view transform.


_localTransform

@Bound
protected Transform3D _localTransform
The local transform.


_worldTransform

@Scoped
protected Transform3D _worldTransform
The world transform.


_viewTransform

@Scoped
protected Transform3D _viewTransform
The view transform.


_influenceFlags

protected int _influenceFlags
Flags indicating which influences can affect the system.


_bounds

@Scoped
protected Box _bounds
The bounds of the system.


_nbounds

@Scoped
protected Box _nbounds
Holds the bounds of the model when updating.


_groupBounds

protected Box[] _groupBounds
World space bounds of each group.


_tickPolicy

protected SceneElement.TickPolicy _tickPolicy
The model's tick policy.


_warmed

protected boolean _warmed
If true, the particle system has warmed up.


_completed

protected boolean _completed
If true, the particle system has completed.


_vector

protected static Vector3f _vector
Working vector.

Constructor Detail

BaseParticleSystem

public BaseParticleSystem(GlContext ctx,
                          Scope parentScope)
Creates a new particle system implementation.

Method Detail

setConfig

public void setConfig(BaseParticleSystemConfig config)
Sets the configuration of this system.


enqueue

public void enqueue()
Description copied from interface: Enqueueable
Enqueues this object for rendering.

Specified by:
enqueue in interface Enqueueable

hasCompleted

public boolean hasCompleted()
Description copied from class: Model.Implementation
Determines whether the model (such as a transient effect) has completed.

Overrides:
hasCompleted in class Model.Implementation

reset

public void reset()
Description copied from class: Model.Implementation
Resets the state of this model.

Overrides:
reset in class Model.Implementation

getInfluenceFlags

public int getInfluenceFlags()
Description copied from class: Model.Implementation
Returns a set of flags indicating the types of influences that affect the model.

Overrides:
getInfluenceFlags in class Model.Implementation

getBounds

public Box getBounds()
Description copied from class: Model.Implementation
Returns a reference to the bounds of the model.

Overrides:
getBounds in class Model.Implementation

updateBounds

public void updateBounds()
Description copied from class: Model.Implementation
Updates the bounds of the model.

Overrides:
updateBounds in class Model.Implementation

drawBounds

public void drawBounds()
Description copied from class: Model.Implementation
Draws the bounds of the model in immediate mode.

Overrides:
drawBounds in class Model.Implementation

getTickPolicy

public SceneElement.TickPolicy getTickPolicy()
Description copied from class: Model.Implementation
Returns the tick policy of the model.

Overrides:
getTickPolicy in class Model.Implementation

tick

public void tick(float elapsed)
Description copied from interface: Tickable
Updates the state of this object based on the elapsed time in seconds.

Specified by:
tick in interface Tickable
Overrides:
tick in class Model.Implementation

composite

public void composite()
Description copied from interface: Compositable
Adds this object's Dependencys and Enqueueables to the compositor in preparation for rendering.

Specified by:
composite in interface Compositable
Overrides:
composite in class Model.Implementation

updateFromConfig

protected void updateFromConfig()
Updates the model to match its new or modified configuration.


createLayer

protected abstract BaseParticleSystem.Layer createLayer(BaseParticleSystemConfig.Layer config)
Creates a new layer for the supplied config.


resetBounds

protected void resetBounds()
Resets the bounds before the tick.