001: /*
002: *
003: * Copyright (c) 2000-2001 Silvere Martin-Michiellot All Rights Reserved.
004: *
005: * Silvere Martin-Michiellot grants you ("Licensee") a non-exclusive,
006: * royalty free, license to use, modify but not to redistribute this
007: * software in source and binary code form,
008: * provided that i) this copyright notice and license appear on all copies of
009: * the software; and ii) Licensee does not utilize the software in a manner
010: * which is disparaging to Silvere Martin-Michiellot.
011: *
012: * This software is provided "AS IS," without a warranty of any kind. ALL
013: * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
014: * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
015: * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. Silvere Martin-Michiellot
016: * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
017: * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
018: * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
019: * Silvere Martin-Michiellot OR ITS LICENSORS BE LIABLE
020: * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
021: * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
022: * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
023: * OR INABILITY TO USE SOFTWARE, EVEN IF Silvere Martin-Michiellot HAS BEEN
024: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
025: *
026: * This software is not designed or intended for use in on-line control of
027: * aircraft, air traffic, aircraft navigation or aircraft communications; or in
028: * the design, construction, operation or maintenance of any nuclear
029: * facility. Licensee represents and warrants that it will not use or
030: * redistribute the Software for such purposes.
031: *
032: * @Author: Silvere Martin-Michiellot
033: *
034: */
035:
036: package com.db.loaders;
037:
038: import java.util.Hashtable;
039:
040: import javax.media.j3d.Behavior;
041: import javax.media.j3d.BranchGroup;
042: import javax.media.j3d.TransformGroup;
043: import javax.media.j3d.Light;
044: import javax.media.j3d.Background;
045: import javax.media.j3d.Fog;
046: import javax.media.j3d.Sound;
047:
048: /**
049: * The Scene interface is a set of methods used to extract
050: * Java 3D scene graph information from a file loader utility.
051: * Ideally this data was loaded into the loader utility via
052:
053: * The interface is used to give loaders of various
054: * file formats a common public interface.
055: */
056: public interface Scene {
057:
058: /**
059: * This method returns the BranchGroup containing the overall
060: * scene loaded by the loader. All enabled items will be loaded
061: * into this scene except for Behaviors (the Behavior group must be
062: * retrieved separately so that users can choose whether and when
063: * to activate behaviors).
064: */
065: public BranchGroup getSceneGroup();
066:
067: /**
068: * This method returns an array of all View Groups defined in the file.
069: * Each View Group is a TransformGroup that is already placed within
070: * the scene that is returned in the getSceneGroup() call. This
071: * TransformGroup holds the position/orientation of the view
072: * as defined by the file. A user might request these references to
073: * the groups in order to look at the data stored there or
074: * to place ViewPlatforms within these groups and allow the
075: * View to activate these ViewPlatforms so that the user would
076: * see the scene from the viewpoints defined in the file.
077: */
078: public TransformGroup[] getViewGroups();
079:
080: /**
081: * This method returns an array of floats with the horizontal field
082: * of view. The entries in the array will correspond to those in the
083: * array returned by the method getViewGroups. The entries from these
084: * two arrays together provide all the information needed to recreate
085: * the viewing parameters associated with a scene graph.
086: */
087: public float[] getHorizontalFOVs();
088:
089: /**
090: * This method returns an array of all Lights defined in the file.
091: * If no lights are defined, null is returned.
092: */
093: public Light[] getLightNodes();
094:
095: /**
096: * This method returns a Hashtable which contains a list of all named
097: * objects in the file and their associated scene graph objects. The
098: * naming scheme for file objects is file-type dependent, but may include
099: * such names as the DEF names of Vrml or filenames of objects (as
100: * in Lightwave 3D). If no named objects are defined, null is returned.
101: */
102: public Hashtable getNamedObjects();
103:
104: /**
105: * This method returns an array of all Background nodes defined in the
106: * file. IF no Background nodes are defined, null is returned.
107: */
108: public Background[] getBackgroundNodes();
109:
110: /**
111: * This method returns an array of all Fog nodes defined in the
112: * file. If no fog nodes are defined, null is returned.
113: */
114: public Fog[] getFogNodes();
115:
116: /**
117: * This method returns an array of all the behavior nodes
118: * in the scene. If no Behavior nodes are defined, null is returned.
119: */
120: public Behavior[] getBehaviorNodes();
121:
122: /**
123: * This method returns an array of all of the Sound nodes defined
124: * in the file. If no Sound nodes are defined, null is returned.
125: */
126: public Sound[] getSoundNodes();
127:
128: /**
129: * This method returns the text description of the file. If no
130: * such description exists, this method should return null.
131: */
132: public String getDescription();
133:
134: }
|