• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2009-2010 jMonkeyEngine
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 package com.jme3.effect;
34 
35 import com.jme3.material.RenderState;
36 import com.jme3.math.Matrix3f;
37 import com.jme3.renderer.Camera;
38 import com.jme3.scene.Mesh;
39 
40 /**
41  * The <code>ParticleMesh</code> is the underlying visual implementation of a
42  * {@link ParticleEmitter particle emitter}.
43  *
44  * @author Kirill Vainer
45  */
46 public abstract class ParticleMesh extends Mesh {
47 
48     /**
49      * Type of particle mesh
50      */
51     public enum Type {
52         /**
53          * The particle mesh is composed of points. Each particle is a point.
54          * This can be used in conjuction with {@link RenderState#setPointSprite(boolean) point sprites}
55          * to render particles the usual way.
56          */
57         Point,
58 
59         /**
60          * The particle mesh is composed of triangles. Each particle is
61          * two triangles making a single quad.
62          */
63         Triangle;
64     }
65 
66     /**
67      * Initialize mesh data.
68      *
69      * @param emitter The emitter which will use this <code>ParticleMesh</code>.
70      * @param numParticles The maxmimum number of particles to simulate
71      */
initParticleData(ParticleEmitter emitter, int numParticles)72     public abstract void initParticleData(ParticleEmitter emitter, int numParticles);
73 
74     /**
75      * Set the images on the X and Y coordinates
76      * @param imagesX Images on the X coordinate
77      * @param imagesY Images on the Y coordinate
78      */
setImagesXY(int imagesX, int imagesY)79     public abstract void setImagesXY(int imagesX, int imagesY);
80 
81     /**
82      * Update the particle visual data. Typically called every frame.
83      */
updateParticleData(Particle[] particles, Camera cam, Matrix3f inverseRotation)84     public abstract void updateParticleData(Particle[] particles, Camera cam, Matrix3f inverseRotation);
85 
86 }
87