/**
   * Load the texture linked by given file and set its wrap modes based on given values.
   *
   * @param file The <code>String</code> file location.
   * @param maxU The <code>Float</code> maximum u value.
   * @param maxV The <code>Float</code> maximum v value.
   * @return The loaded <code>Texture</code> instance.
   */
  private Texture loadTexture(String file, float maxU, float maxV) {
    // Add a locator according to the texture string.
    int last = file.lastIndexOf("/") + 1;
    if (last < 0) last = file.length();
    File path = new File(file.substring(0, last));

    try {
      if (path != null) {
        SimpleResourceLocator locator = new SimpleResourceLocator(path.toURI().toURL());
        ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_TEXTURE, locator);
      }
    } catch (URISyntaxException e) {
      e.printStackTrace();
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
    // Load URL.
    URL url = ResourceLocatorTool.locateResource(ResourceLocatorTool.TYPE_TEXTURE, file);
    // Load the texture and set the wrap mode.
    Texture map =
        TextureManager.loadTexture(url, this.miniFilter, this.magFilter, this.anisotropic, true);
    if (map != null) {
      if (maxU > 1) map.setWrap(Texture.WrapAxis.S, Texture.WrapMode.Repeat);
      else map.setWrap(Texture.WrapAxis.S, Texture.WrapMode.Clamp);
      if (maxV > 1) map.setWrap(Texture.WrapAxis.T, Texture.WrapMode.Repeat);
      else map.setWrap(Texture.WrapAxis.T, Texture.WrapMode.Clamp);
    }
    return map;
  }
 static {
   // Set locations to find resources
   try {
     ResourceLocatorTool.addResourceLocator(
         ResourceLocatorTool.TYPE_TEXTURE,
         new SimpleResourceLocator(Engine.class.getClassLoader().getResource("textures/")));
     ResourceLocatorTool.addResourceLocator(
         ResourceLocatorTool.TYPE_AUDIO,
         new SimpleResourceLocator(Engine.class.getClassLoader().getResource("sounds/")));
     ResourceLocatorTool.addResourceLocator(
         "script", new SimpleResourceLocator(Engine.class.getClassLoader().getResource("lib/")));
   } catch (URISyntaxException e) {
     e.printStackTrace();
   }
 }
Exemple #3
0
  private TrailManager(final Node root) {
    this.root = root;

    trails = new HashMap<Spatial, TrailMesh>();

    Renderer r = DisplaySystem.getDisplaySystem().getRenderer();
    ts = r.createTextureState();
    ts.setEnabled(true);
    Texture t1 =
        TextureManager.loadTexture(
            ResourceLocatorTool.locateResource(ResourceLocatorTool.TYPE_TEXTURE, "trail_y1.png"),
            Texture.MinificationFilter.Trilinear,
            Texture.MagnificationFilter.Bilinear);
    ts.setTexture(t1);

    bs = r.createBlendState();
    bs.setBlendEnabled(true);
    bs.setSourceFunction(BlendState.SourceFunction.SourceAlpha);
    bs.setDestinationFunction(BlendState.DestinationFunction.One);
    bs.setTestEnabled(true);

    zs = r.createZBufferState();
    zs.setWritable(false);

    cs = r.createCullState();
    cs.setCullFace(CullState.Face.None);
    cs.setEnabled(true);
  }
  /** creates the floor and two walls standing on the floor. */
  private void createFloor(float width, float length) {
    Texture tex =
        TextureManager.loadTexture(
            ResourceLocatorTool.locateResource(ResourceLocatorTool.TYPE_TEXTURE, "floor.png"),
            false);
    tex.setScale(new Vector3f(10, 10, 10));
    tex.setWrap(WrapMode.Repeat);
    TextureState tsCarpet = DisplaySystem.getDisplaySystem().getRenderer().createTextureState();
    tsCarpet.setTexture(tex);

    StaticPhysicsNode floor = makeWall("floor", width, 0.5f, length, new Vector3f(0, -1, 0), null);
    floor.setRenderState(tsCarpet);
    rootNode.attachChild(floor);

    rootNode.attachChild(
        makeWall(
            "back wall", width / 2, 5, 1, new Vector3f(0, 5, -width / 2), MaterialType.GRANITE));
    rootNode.attachChild(
        makeWall(
            "left wall", 1, 5, width / 2, new Vector3f(-width / 2, 5, 0), MaterialType.GRANITE));
  }
  /**
   * 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);
  }