home *** CD-ROM | disk | FTP | other *** search
/ Late Night VRML 2.0 with Java CD-ROM / code.zip / Ch13 / nff / Scene.java < prev    next >
Text File  |  1996-11-27  |  2KB  |  53 lines

  1. // A class for NFF scenes
  2.  
  3. // Written by Bernie Roehl, November 1996
  4.  
  5. package nff;
  6.  
  7. import java.io.*;
  8. import java.util.*;
  9.  
  10. public class Scene {
  11.     protected float version = 2.1f;
  12.     protected Vec3f viewpos, viewdir;
  13.     protected Vector objects = new Vector();    
  14.  
  15.     public float getVersion() { return version; }
  16.     public Vec3f getViewpos() { return viewpos; }
  17.     public Vec3f getViewdir() { return viewdir; }
  18.     public int getNumberOfObjects() { return objects.size(); }
  19.     public Obj getObject(int n) { return (Obj) objects.elementAt(n); }
  20.  
  21.     public void dump() {
  22.        System.out.println("Version " + version);
  23.        if (viewpos != null)
  24.            System.out.println("viewpos = " + viewpos);
  25.        if (viewdir != null)
  26.            System.out.println("viewdir = " + viewdir);
  27.        System.out.println(objects.size() + " object(s)");
  28.        Enumeration e = objects.elements();
  29.        while (e.hasMoreElements())
  30.            ((Obj) e.nextElement()).dump();
  31.     }
  32.  
  33.     public Scene(DataInputStream in)
  34.         throws IOException, NffSyntaxException  {
  35.         String line;
  36.     CommentStripperInputStream input = new CommentStripperInputStream(in);
  37.         if (!input.readLine().startsWith("nff"))
  38.             throw new NffSyntaxException("missing 'nff' signature");
  39.         while ((line = input.readLine()) != null) {
  40.             StringTokenizer s = new StringTokenizer(line);
  41.             String first_token = s.nextToken();
  42.             if (first_token.equals("version"))
  43.                 version = (new Float(s.nextToken())).floatValue(); 
  44.             else if (first_token.equals("viewpos"))
  45.                 viewpos = new Vec3f(s);
  46.             else if (first_token.equals("viewdir"))
  47.                 viewdir = new Vec3f(s);
  48.             else  // name of an object
  49.                 objects.addElement(new Obj(first_token, input));
  50.         }
  51.     }
  52. }
  53.