public static ParticleMesh getExplosion() { for (int x = 0, tSize = explosions.size(); x < tSize; x++) { ParticleMesh e = (ParticleMesh) explosions.get(x); if (!e.isActive()) { return e; } } return createExplosion(); }
public static ParticleMesh getSmallExplosion() { for (int x = 0, tSize = smallExplosions.size(); x < tSize; x++) { ParticleMesh e = (ParticleMesh) explosions.get(x); if (!e.getParticleController().isActive()) { return e; } } return createSmallExplosion(); }
@Override public void processCollisions() { for (int i = 0; i < getNumber(); i++) { Spatial target = getCollisionData(i).getTargetMesh(); if (target instanceof Shot) { ParticleMesh explosion = ExplosionFactory.getSmallExplosion(); explosion.setOriginOffset(getModel().getLocalTranslation()); explosion.forceRespawn(); detachChild(getModel()); setModel(explosion); } } }
public static void cleanExplosions() { int count = 0; for (int x = 0, tSize = explosions.size(); x < tSize; x++) { ParticleMesh e = (ParticleMesh) explosions.get(x); if (!e.isActive()) { if (e.getParent() != null) e.removeFromParent(); count++; if (count > 5) { explosions.remove(x); tSize--; } } } int scount = 0; for (int x = 0, tSize = smallExplosions.size(); x < tSize; x++) { ParticleMesh e = (ParticleMesh) smallExplosions.get(x); if (!e.isActive()) { if (e.getParent() != null) e.removeFromParent(); scount++; if (scount > 5) { smallExplosions.remove(x); tSize--; } } } }
/** * set up the scene * * @see com.jme.app.AbstractGame#initGame() */ protected void simpleInitGame() { display.setTitle("Joint Animation"); display.setVSyncEnabled(true); cam.setLocation(new Vector3f(0.0f, 0.0f, 200.0f)); cam.update(); ((FirstPersonHandler) input).getKeyboardLookHandler().setActionSpeed(100); lightState.setEnabled(false); try { ResourceLocatorTool.addResourceLocator( ResourceLocatorTool.TYPE_TEXTURE, new SimpleResourceLocator( TestFireMilk.class.getClassLoader().getResource("jmetest/data/model/msascii/"))); ResourceLocatorTool.addResourceLocator( ResourceLocatorTool.TYPE_TEXTURE, new SimpleResourceLocator( TestFireMilk.class.getClassLoader().getResource("jmetest/data/texture/"))); } catch (URISyntaxException e1) { logger.log(Level.WARNING, "unable to setup texture directories.", e1); } MilkToJme converter = new MilkToJme(); URL MSFile = TestFireMilk.class.getClassLoader().getResource("jmetest/data/model/msascii/run.ms3d"); ByteArrayOutputStream BO = new ByteArrayOutputStream(); try { converter.convert(MSFile.openStream(), BO); } catch (IOException e) { logger.info("IO problem writting the file!!!"); logger.info(e.getMessage()); System.exit(0); } i = null; try { i = (Node) BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray())); } catch (IOException e) { logger.info("darn exceptions:" + e.getMessage()); } ((JointController) i.getController(0)).setSpeed(1.0f); ((JointController) i.getController(0)).setRepeatType(Controller.RT_CYCLE); i.setRenderQueueMode(Renderer.QUEUE_OPAQUE); rootNode.attachChild(i); AlphaState as1 = display.getRenderer().createAlphaState(); as1.setBlendEnabled(true); as1.setSrcFunction(AlphaState.SB_SRC_ALPHA); as1.setDstFunction(AlphaState.DB_ONE); as1.setTestEnabled(true); as1.setTestFunction(AlphaState.TF_GREATER); as1.setEnabled(true); TextureState ts = display.getRenderer().createTextureState(); ts.setTexture( TextureManager.loadTexture("flaresmall.jpg", Texture.MM_LINEAR_LINEAR, Texture.FM_LINEAR)); ts.setEnabled(true); ParticleMesh manager = ParticleFactory.buildParticles("particles", 200); manager.setEmissionDirection(new Vector3f(0.0f, 1.0f, 0.0f)); manager.setMaximumAngle(0.20943952f); manager.getParticleController().setSpeed(1.0f); manager.setMinimumLifeTime(150.0f); manager.setMaximumLifeTime(225.0f); manager.setStartSize(8.0f); manager.setEndSize(4.0f); manager.setStartColor(new ColorRGBA(1.0f, 0.312f, 0.121f, 1.0f)); manager.setEndColor(new ColorRGBA(1.0f, 0.312f, 0.121f, 0.0f)); manager.getParticleController().setControlFlow(false); manager.setInitialVelocity(0.12f); manager.setGeometry((Geometry) (i.getChild(0))); manager.warmUp(60); manager.setRenderState(ts); manager.setRenderState(as1); manager.setLightCombineMode(LightState.OFF); manager.setTextureCombineMode(TextureState.REPLACE); ZBufferState zstate = display.getRenderer().createZBufferState(); zstate.setEnabled(false); manager.setRenderState(zstate); rootNode.attachChild(manager); }
private static ParticleMesh createSmallExplosion() { ParticleMesh explosion = ParticleFactory.buildParticles("small", 40); explosion.setEmissionDirection(new Vector3f(0.0f, 1.0f, 0.0f)); explosion.setMaximumAngle(FastMath.PI); explosion.setSpeed(0.7f); explosion.setMinimumLifeTime(600.0f); explosion.setStartSize(4.0f); explosion.setEndSize(8.0f); explosion.setStartColor(new ColorRGBA(1.0f, 0.312f, 0.121f, 1.0f)); explosion.setEndColor(new ColorRGBA(1.0f, 0.24313726f, 0.03137255f, 0.0f)); explosion.setControlFlow(false); explosion.setInitialVelocity(0.02f); explosion.setParticleSpinSpeed(0.0f); explosion.setRepeatType(Controller.RT_CLAMP); explosion.warmUp(1000); explosion.setRenderState(ts); explosion.setRenderState(bs); explosion.setRenderState(zstate); explosion.updateRenderState(); explosions.add(explosion); return explosion; }