/**
* Copyright (c) 1999 Justin Couch Java Source Raw J3D
* Tutorial Version History Date Version Programmer
* ---------- ------- ------------------------------------------
* 01/08/1998 1.0.0 Justin Couch
*/
package com.bbn.openmap.tools.j3d;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Group;
import javax.media.j3d.Locale;
import javax.media.j3d.Node;
import javax.media.j3d.VirtualUniverse;
/**
* Test class for representing a universe
* <P>
*
* Basic universe consisting of a default Locale and three branch
* graphs for objects that exist in the display and world spaces, as
* well as a separate branch for cameras.
*
* @author Justin Couch
* @version Who Cares!
*/
public class UniverseManager extends VirtualUniverse {
private Locale locale;
private BranchGroup view_group;
private BranchGroup world_object_group;
/**
* Create the basic universe and all of the supporting
* infrastructure that is needed by a J3D application. The default
* setup just uses a single local located at the origin.
*/
public UniverseManager() {
this(null);
}
/**
* Create the basic universe and all of the supporting
* infrastructure that is needed by a J3D application. The default
* setup just uses a single local located at the origin.
*
* @param worldGroup Description of the Parameter
*/
public UniverseManager(BranchGroup worldGroup) {
locale = new Locale(this);
view_group = new BranchGroup();
view_group.setCapability(Group.ALLOW_CHILDREN_EXTEND);
if (worldGroup == null) {
world_object_group = new BranchGroup();
world_object_group.setCapability(Group.ALLOW_CHILDREN_EXTEND);
} else {
world_object_group = worldGroup;
}
}
/**
* Add a camera to the world.
*
* @param cam The camera that may be added
*/
public void addCamera(Camera cam) {
view_group.addChild(cam.getNode());
}
/**
* Add an object to the world object group.
*
* @param node The node that may be added
*/
public void addWorldObject(Node node) {
world_object_group.addChild(node);
}
public BranchGroup getWorldBranchGroup() {
return world_object_group;
}
/**
* Make the universe live by adding the objects to the locale
*/
public void makeLive() {
view_group.compile();
world_object_group.compile();
locale.addBranchGraph(view_group);
locale.addBranchGraph(world_object_group);
}
}