示例#1
0
 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();
 }
示例#2
0
 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();
 }
示例#3
0
 @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);
     }
   }
 }
示例#4
0
  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--;
        }
      }
    }
  }
示例#5
0
  /**
   * 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);
  }
示例#6
0
  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;
  }