/** * 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; }