public static void setTranslucent(Spatial spatial) {
    MaterialState rs = (MaterialState) doRemoveRenderState(spatial, StateType.Material);
    if (rs != null) {
      materials.put(spatial.getName(), rs);

      MaterialState newState = DisplaySystem.getDisplaySystem().getRenderer().createMaterialState();

      ColorRGBA ambient = rs.getAmbient();
      ambient.a = .5f;
      ColorRGBA diffuse = rs.getDiffuse();
      diffuse.a = .5f;
      ColorRGBA emissive = rs.getEmissive();
      emissive.a = .5f;
      ColorRGBA specular = rs.getSpecular();
      specular.a = .5f;

      newState.setAmbient(ambient);
      newState.setColorMaterial(rs.getColorMaterial());
      newState.setDiffuse(diffuse);
      newState.setEmissive(emissive);
      newState.setMaterialFace(rs.getMaterialFace());
      newState.setShininess(rs.getShininess());
      newState.setSpecular(specular);
    }
    spatial.updateRenderState();
    if (spatial instanceof Node && ((Node) spatial).getChildren() != null) {
      for (int i = 0; i < ((Node) spatial).getChildren().size(); i++) {
        colorStripper(((Node) spatial).getChildren().get(i));
      }
    }
  }
 /**
  * Strips a specified RenderState from a Spatial and all of its children if there are any.
  *
  * @param s The spatial to strip
  * @param state The RenderState to be removed
  * @see RenderState
  */
 public static void removeRenderState(Spatial s, StateType state) {
   doRemoveRenderState(s, state);
   if (s instanceof Node && ((Node) s).getChildren() != null) {
     for (int i = 0; i < ((Node) s).getChildren().size(); i++) {
       removeRenderState(((Node) s).getChildren().get(i), state);
     }
   }
   s.updateRenderState();
 }
 public static void completeColorStripper(Spatial spatial) {
   spatial.clearRenderState(StateType.Material);
   spatial.clearRenderState(StateType.Texture);
   spatial.clearRenderState(StateType.Shade);
   spatial.clearRenderState(StateType.Light);
   spatial.updateRenderState();
   if (spatial instanceof Node && ((Node) spatial).getChildren() != null) {
     for (int i = 0; i < ((Node) spatial).getChildren().size(); i++) {
       colorStripper(((Node) spatial).getChildren().get(i));
     }
   }
 }
示例#4
0
  public void frameUpdate(float timePerFrame) {
    // TODO Auto-generated method stub
    // TODO Play Frame, when in the right time => Sync-Playback-rate
    /*
     *
    // Put A Frame according to its Framerate
     * TODO: Declare    private long controller;
      						private long frameWait;
      						private long starttime;
      						private int iteration;

      			 Initialize starttime = System.currentTimeMillis();
    					controller = System.currentTimeMillis();
    					frameWait = 1000 / perf.getFramerate();
    					iteration = 0;

    This one into the update function:

    if (System.currentTimeMillis() >= (controller + frameWait)){
    		controller = System.currentTimeMillis();
    		System.out.println("There you go: " + System.currentTimeMillis());
    		drawFrame();
    		iteration++;
    }

    if (System.currentTimeMillis() > (starttime + (iteration*frameWait)+frameWait)) {
    	// skip Frame

    	iteration += 2;
    	System.out.println("Look ma, no hands: " + iteration);
    }
     */
    // timer.getTimePerFrame();

    if (oggDecoder.isReady()) {
      oggDecoder.readBody();
      TextureManager.releaseTexture(texture.getTextureKey());

      texture =
          TextureManager.loadTexture(
              Toolkit.getDefaultToolkit().createImage(oggDecoder.getYUVBuffer()),
              MinificationFilter.BilinearNearestMipMap,
              MagnificationFilter.Bilinear,
              true);
      if (texture != null) {
        if (textureState != null)
          textureState = DisplaySystem.getDisplaySystem().getRenderer().createTextureState();
        textureState.setTexture(texture);
        quad.setRenderState(textureState);
        quad.updateRenderState();
      }
    }
  }
 public static void replaceMaterials(Spatial s) {
   MaterialState ms = materials.remove(s.getName());
   if (ms != null) {
     s.setRenderState(ms);
   }
   s.updateRenderState();
   if (s instanceof Node) {
     if (((Node) s).getChildren() != null) {
       for (Spatial child : ((Node) s).getChildren()) {
         replaceMaterials(child);
       }
     }
   }
 }
 /**
  * Applies color to a Spatial in the form of a <code>MaterialState</code>.
  *
  * @param spatial
  * @param diffuseColor
  * @param ambientColor
  * @see MaterialState
  */
 public static MaterialState applyColor(
     Spatial spatial, ColorRGBA diffuseColor, ColorRGBA ambientColor) {
   colorStripper(spatial);
   MaterialState targetMaterial =
       DisplaySystem.getDisplaySystem().getRenderer().createMaterialState();
   targetMaterial.setDiffuse(diffuseColor);
   targetMaterial.setAmbient(ambientColor);
   spatial.setRenderState(targetMaterial);
   spatial.updateRenderState();
   if (workingState != null) {
     MaterialState ms = (MaterialState) workingState;
     workingState = null;
     return ms;
   } else return null;
 }
 public static void colorStripper(Spatial spatial) {
   // exception for the nodes used for building edit function
   if (spatial.getName().startsWith("$editorWidget")) {
     // logger.info(spatial.getName() + " is a editor widget");
     return;
   }
   // logger.info(spatial.getName() + " is not editor widget");
   MaterialState rs = (MaterialState) doRemoveRenderState(spatial, StateType.Material);
   if (rs != null) {
     materials.put(spatial.getName(), rs);
   }
   spatial.updateRenderState();
   if (spatial instanceof Node && ((Node) spatial).getChildren() != null) {
     for (int i = 0; i < ((Node) spatial).getChildren().size(); i++) {
       colorStripper(((Node) spatial).getChildren().get(i));
     }
   }
 }
 public static void stripWireframe(Spatial s) {
   doWireframeApplication(s, false, null);
   replaceMaterials(s);
   s.updateRenderState();
 }
 public static void applyWireframe(Spatial s) {
   WireframeState ws = DisplaySystem.getDisplaySystem().getRenderer().createWireframeState();
   colorStripper(s);
   doWireframeApplication(s, true, ws);
   s.updateRenderState();
 }
 public static void applyMaterial(Spatial spatial, MaterialState ms) {
   colorStripper(spatial);
   spatial.setRenderState(ms);
   spatial.updateRenderState();
 }