blob: 1c5d687c9287565a225fedb16643555ac278779c [file] [log] [blame]
package com.jme3.effect.shapes;
import com.jme3.math.FastMath;
import com.jme3.math.Vector3f;
import com.jme3.scene.Mesh;
import java.util.List;
/**
* This emiter shape emits the particles from the given shape's interior constrained by its convex hull
* (a geometry that tightly wraps the mesh). So in case of multiple meshes some vertices may appear
* in a space between them.
* @author Marcin Roguski (Kaelthas)
*/
public class EmitterMeshConvexHullShape extends EmitterMeshFaceShape {
/**
* Empty constructor. Sets nothing.
*/
public EmitterMeshConvexHullShape() {
}
/**
* Constructor. It stores a copy of vertex list of all meshes.
* @param meshes
* a list of meshes that will form the emitter's shape
*/
public EmitterMeshConvexHullShape(List<Mesh> meshes) {
super(meshes);
}
/**
* This method fills the point with coordinates of randomly selected point inside a convex hull
* of randomly selected mesh.
* @param store
* the variable to store with coordinates of randomly selected selected point inside a convex hull
* of randomly selected mesh
*/
@Override
public void getRandomPoint(Vector3f store) {
super.getRandomPoint(store);
// now move the point from the meshe's face towards the center of the mesh
// the center is in (0, 0, 0) in the local coordinates
store.multLocal(FastMath.nextRandomFloat());
}
/**
* This method fills the point with coordinates of randomly selected point inside a convex hull
* of randomly selected mesh.
* The normal param is not used.
* @param store
* the variable to store with coordinates of randomly selected selected point inside a convex hull
* of randomly selected mesh
* @param normal
* not used in this class
*/
@Override
public void getRandomPointAndNormal(Vector3f store, Vector3f normal) {
super.getRandomPointAndNormal(store, normal);
// now move the point from the meshe's face towards the center of the mesh
// the center is in (0, 0, 0) in the local coordinates
store.multLocal(FastMath.nextRandomFloat());
}
}