001: /*
002: * $RCSfile: Scene.java,v $
003: *
004: * @(#)Scene.java 1.14 98/11/05 20:35:46
005: *
006: * Copyright (c) 1996-1998 Sun Microsystems, Inc. All Rights Reserved.
007: *
008: * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
009: * modify and redistribute this software in source and binary code form,
010: * provided that i) this copyright notice and license appear on all copies of
011: * the software; and ii) Licensee does not utilize the software in a manner
012: * which is disparaging to Sun.
013: *
014: * This software is provided "AS IS," without a warranty of any kind. ALL
015: * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
016: * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
017: * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
018: * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
019: * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
020: * LICENSORS BE LIABLE 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 SUN HAS BEEN ADVISED OF THE
024: * 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: * $Revision: 1.2 $
033: * $Date: 2005/02/03 23:07:02 $
034: * $State: Exp $
035: */
036: /*
037: * @Author: Rick Goldberg
038: * @Author: Doug Gehringer
039: *
040: */
041: package org.jdesktop.j3d.loaders.vrml97.impl;
042:
043: import java.util.Hashtable;
044: import java.util.Vector;
045: import javax.media.j3d.SharedGroup;
046:
047: /**
048: * This is an internal class used by the Loader.
049: * <p>
050: * Collects elements loaded by the Loader into a lists
051: */
052: public class Scene implements Namespace {
053: /** Description of the Field */
054: public Vector objects = new Vector();
055: /** Description of the Field */
056: public Vector viewpoints = new Vector();
057: /** Description of the Field */
058: public Vector navInfos = new Vector();
059: /** Description of the Field */
060: public WorldInfo worldInfo;
061: /** Description of the Field */
062: public Vector backgrounds = new Vector();
063: /** Description of the Field */
064: public Vector fogs = new Vector();
065: /** Description of the Field */
066: public Vector lights = new Vector();
067: /** Description of the Field */
068: public Vector sharedGroups = new Vector();
069: /** Description of the Field */
070: public Vector timeSensors = new Vector();
071: /** Description of the Field */
072: public Vector visibilitySensors = new Vector();
073: /** Description of the Field */
074: public Vector touchSensors = new Vector();
075: /** Description of the Field */
076: public Vector audioClips = new Vector();
077: /** Description of the Field */
078: public Hashtable defTable = new Hashtable();
079: /** Description of the Field */
080: public Proto firstProto = null;
081: /** Description of the Field */
082: public Hashtable protos = new Hashtable();
083: /** Description of the Field */
084: public String description = null;
085: /** Description of the Field */
086: public int numTris;
087:
088: /**
089: * Adds a feature to the Object attribute of the Scene object
090: *
091: *@param object The feature to be added to the Object attribute
092: */
093: void addObject(org.jdesktop.j3d.loaders.vrml97.impl.BaseNode object) {
094: if (object != null) {
095: objects.addElement(object);
096: numTris += object.getNumTris();
097: }
098: }
099:
100: /**
101: * Adds a feature to the Viewpoint attribute of the Scene object
102: *
103: *@param viewpoint The feature to be added to the Viewpoint attribute
104: */
105: void addViewpoint(Viewpoint viewpoint) {
106: viewpoints.addElement(viewpoint);
107: }
108:
109: /**
110: * Adds a feature to the NavigationInfo attribute of the Scene object
111: *
112: *@param navInfo The feature to be added to the NavigationInfo attribute
113: */
114: void addNavigationInfo(NavigationInfo navInfo) {
115: navInfos.addElement(navInfo);
116: }
117:
118: /**
119: * Adds a feature to the Background attribute of the Scene object
120: *
121: *@param background The feature to be added to the Background attribute
122: */
123: void addBackground(Background background) {
124: backgrounds.addElement(background);
125: }
126:
127: /**
128: * Adds a feature to the Fog attribute of the Scene object
129: *
130: *@param fog The feature to be added to the Fog attribute
131: */
132: void addFog(Fog fog) {
133: fogs.addElement(fog);
134: }
135:
136: /**
137: * Adds a feature to the Light attribute of the Scene object
138: *
139: *@param light The feature to be added to the Light attribute
140: */
141: void addLight(Light light) {
142: lights.addElement(light);
143: }
144:
145: /**
146: * Adds a feature to the SharedGroup attribute of the Scene object
147: *
148: *@param sg The feature to be added to the SharedGroup attribute
149: */
150: void addSharedGroup(SharedGroup sg) {
151: sharedGroups.addElement(sg);
152: }
153:
154: /**
155: * Adds a feature to the TimeSensor attribute of the Scene object
156: *
157: *@param ts The feature to be added to the TimeSensor attribute
158: */
159: void addTimeSensor(TimeSensor ts) {
160: timeSensors.addElement(ts);
161: }
162:
163: /**
164: * Adds a feature to the VisibilitySensor attribute of the Scene object
165: *
166: *@param vs The feature to be added to the VisibilitySensor attribute
167: */
168: void addVisibilitySensor(VisibilitySensor vs) {
169: visibilitySensors.addElement(vs);
170: }
171:
172: /**
173: * Adds a feature to the TouchSensor attribute of the Scene object
174: *
175: *@param ts The feature to be added to the TouchSensor attribute
176: */
177: void addTouchSensor(TouchSensor ts) {
178: touchSensors.addElement(ts);
179: }
180:
181: /**
182: * Adds a feature to the AudioClip attribute of the Scene object
183: *
184: *@param ac The feature to be added to the AudioClip attribute
185: */
186: void addAudioClip(AudioClip ac) {
187: audioClips.addElement(ac);
188: }
189:
190: // for now, worldInfo is a single field, ie not a
191: // bindable node or stack/vector.
192: /**
193: * Sets the worldInfo attribute of the Scene object
194: *
195: *@param wi The new worldInfo value
196: */
197: void setWorldInfo(WorldInfo wi) {
198: // cant set the description, since at this point,
199: // the parser hasn't read the fields yet. we only
200: // know were done parsing within the browser.doParse();
201: worldInfo = wi;
202: }
203:
204: /**
205: * Sets the description attribute of the Scene object
206: *
207: *@param desc The new description value
208: */
209: void setDescription(String desc) {
210: description = desc;
211: }
212:
213: // these are the def/use for the scene's namespace
214: /**
215: * Description of the Method
216: *
217: *@param defName Description of the Parameter
218: *@param node Description of the Parameter
219: */
220: public void define(String defName, BaseNode node) {
221: defTable.put(defName, node);
222: }
223:
224: /**
225: * Description of the Method
226: *
227: *@param defName Description of the Parameter
228: *@return Description of the Return Value
229: */
230: public BaseNode use(String defName) {
231: return (BaseNode) defTable.get(defName);
232: }
233: }
|