home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Late Night VRML 2.0 with Java CD-ROM
/
code.zip
/
Ch13
/
nff
/
Scene.java
< prev
next >
Wrap
Text File
|
1996-11-27
|
2KB
|
53 lines
// A class for NFF scenes
// Written by Bernie Roehl, November 1996
package nff;
import java.io.*;
import java.util.*;
public class Scene {
protected float version = 2.1f;
protected Vec3f viewpos, viewdir;
protected Vector objects = new Vector();
public float getVersion() { return version; }
public Vec3f getViewpos() { return viewpos; }
public Vec3f getViewdir() { return viewdir; }
public int getNumberOfObjects() { return objects.size(); }
public Obj getObject(int n) { return (Obj) objects.elementAt(n); }
public void dump() {
System.out.println("Version " + version);
if (viewpos != null)
System.out.println("viewpos = " + viewpos);
if (viewdir != null)
System.out.println("viewdir = " + viewdir);
System.out.println(objects.size() + " object(s)");
Enumeration e = objects.elements();
while (e.hasMoreElements())
((Obj) e.nextElement()).dump();
}
public Scene(DataInputStream in)
throws IOException, NffSyntaxException {
String line;
CommentStripperInputStream input = new CommentStripperInputStream(in);
if (!input.readLine().startsWith("nff"))
throw new NffSyntaxException("missing 'nff' signature");
while ((line = input.readLine()) != null) {
StringTokenizer s = new StringTokenizer(line);
String first_token = s.nextToken();
if (first_token.equals("version"))
version = (new Float(s.nextToken())).floatValue();
else if (first_token.equals("viewpos"))
viewpos = new Vec3f(s);
else if (first_token.equals("viewdir"))
viewdir = new Vec3f(s);
else // name of an object
objects.addElement(new Obj(first_token, input));
}
}
}