package rajawali.primitives; import rajawali.BaseObject3D; import rajawali.Camera; import rajawali.materials.AParticleMaterial; import rajawali.util.RajLog; import android.opengl.GLES20; public class Particle extends BaseObject3D { protected float mPointSize = 10.0f; protected AParticleMaterial mParticleShader; public Particle() { super(); init(); } public void setPointSize(float pointSize) { mPointSize = pointSize; } public float getPointSize() { return mPointSize; } protected void init() { setDrawingMode(GLES20.GL_POINTS); setTransparent(true); float[] vertices = new float[] { 0, 0, 0 }; float[] textureCoords = new float[] { 0, 0, 0 }; float[] normals = new float[] { 0.0f, 0.0f, 1.0f }; float[] colors = new float[] { 1.0f, 1.0f, 1.0f, 1.0f }; int[] indices = new int[] { 0 }; setData(vertices, normals, textureCoords, colors, indices); } public void setMaterial(AParticleMaterial material) { super.setMaterial(material); mParticleShader = material; } public void setMaterial(AParticleMaterial material, boolean copyTextures) { super.setMaterial(material, copyTextures); mParticleShader = material; } @Override protected void setShaderParams(Camera camera) { super.setShaderParams(camera); if(mParticleShader == null) { RajLog.e("[" +getClass().getName()+ "] You need to set a particle material first."); throw new RuntimeException("You need to set a particle material first."); } mParticleShader.setCamera(camera); mParticleShader.setCameraPosition(camera.getPosition()); mParticleShader.setPointSize(mPointSize); } }