/* Copyright 2006 by Sean Luke and George Mason University Licensed under the Academic Free License version 3.0 See the file "LICENSE" for more information */ package sim.portrayal3d.simple; import sim.portrayal3d.*; import sim.portrayal.*; import javax.media.j3d.*; /** * @author Gabriel Balan * * Wraps a non-pickable SharedGroup into a SimplePortrayal3D. * You are responsible for compiling the Shared Group if you so * desire. */ public class SharedGroupPortrayal3D extends SimplePortrayal3D { SharedGroup group; public SharedGroupPortrayal3D(SharedGroup group) { this.group = group; group.setCapability(Group.ALLOW_CHILDREN_READ); group.clearCapabilityIsFrequent(Group.ALLOW_CHILDREN_READ); } public TransformGroup getModel(Object obj, TransformGroup j3dModel) { if(j3dModel==null) { j3dModel = new TransformGroup(); j3dModel.setCapability(Group.ALLOW_CHILDREN_READ); // make a Link Link link = new Link(group); link.setCapability(Link.ALLOW_SHARED_GROUP_READ); link.clearCapabilityIsFrequent(Link.ALLOW_SHARED_GROUP_READ); // make it unpickable clearPickableFlags(link); // the next four lines are boilerplate, but in fact I think that // since this isn't pickable, it doesn't matter // build a LocationWrapper for the object LocationWrapper pickI = new LocationWrapper(obj, null, parentPortrayal); // Store the LocationWrapper in the user data link.setUserData(pickI); j3dModel.addChild(link); } return j3dModel; } }