Beispiel #1
0
  /**
   * Devuelve una instancia de la clase, a partir de los par�metros, y de la descripci�n XML en
   * infoNode.
   *
   * @param infoNode Descripci�n XML de la instacia a crear
   * @param nodes Rama XML con las descripciones de los recursos de la escena
   * @param resources Lista de recursos de la escena
   * @param reader Instancia capaz de crear recursos que a�n no se han creado
   * @param render Render para el que se est� creando la escena
   * @param scene Escena que se est� creando
   * @return Instancia de la clase con la informaci�n especificada
   */
  public static N3PersistentResource loadInstance(
      Element infoNode,
      NodeList nodes,
      N3PersistentResourceList resources,
      N3SceneReader reader,
      N3Render render,
      N3Scene scene)
      throws Exception {
    Element data = (Element) infoNode.getElementsByTagName("ambiental").item(0);
    int index = Integer.parseInt(data.getAttribute("index"));
    N3ColorRGBA ambiental = (N3ColorRGBA) reader.getResource(index, nodes);

    data = (Element) infoNode.getElementsByTagName("diffuse").item(0);
    index = Integer.parseInt(data.getAttribute("index"));
    N3ColorRGBA diffuse = (N3ColorRGBA) reader.getResource(index, nodes);

    data = (Element) infoNode.getElementsByTagName("specular").item(0);
    index = Integer.parseInt(data.getAttribute("index"));
    N3ColorRGBA specular = (N3ColorRGBA) reader.getResource(index, nodes);

    data = (Element) infoNode.getElementsByTagName("direction").item(0);
    index = Integer.parseInt(data.getAttribute("index"));
    N3Vector3D direction = (N3Vector3D) reader.getResource(index, nodes);

    data = (Element) infoNode.getElementsByTagName("positional").item(0);
    boolean positional = (new Boolean(data.getAttribute("value"))).booleanValue();

    data = (Element) infoNode.getElementsByTagName("angle").item(0);
    float angle = Float.parseFloat(data.getAttribute("value"));

    data = (Element) infoNode.getElementsByTagName("spotExponent").item(0);
    float spotExponent = Float.parseFloat(data.getAttribute("value"));

    data = (Element) infoNode.getElementsByTagName("attenuation").item(0);
    float constant = Float.parseFloat(data.getAttribute("constant"));
    float linear = Float.parseFloat(data.getAttribute("linear"));
    float quadratic = Float.parseFloat(data.getAttribute("quadratic"));

    N3LightData result = new N3LightData(ambiental, specular, diffuse);
    result.setPositional(positional);
    result.setAngle(angle);
    result.setSpotExponent(spotExponent);
    result.setConstantAttenuation(constant);
    result.setLinearAttenuation(linear);
    result.setQuadraticAttenuation(quadratic);
    result.setDirection(direction);

    return result;
  }