public class SwitchedPortrayal3D extends SimplePortrayal3D
DEFAULT_APPEARANCE
Constructor and Description |
---|
SwitchedPortrayal3D(SimplePortrayal3D child) |
Modifier and Type | Method and Description |
---|---|
SimplePortrayal3D |
getChild(java.lang.Object object) |
Inspector |
getInspector(LocationWrapper wrapper,
GUIState state)
Provide an inspector for an object.
|
javax.media.j3d.TransformGroup |
getModel(java.lang.Object obj,
javax.media.j3d.TransformGroup previousTransformGroup)
Provides a TransformGroup which defines the node(s) to place in
the scenegraph.
|
java.lang.String |
getName(LocationWrapper wrapper)
Returns a static, one-line name for the given object that is useful for a human
to distinguish it from other objects.
|
boolean |
getShowsChild(java.lang.Object obj) |
javax.media.j3d.PolygonAttributes |
polygonAttributes()
Provides a PolygonAttributes which can be modified to change
the underlying model's attributes (culling, vertex versus point versus fill).
|
void |
setCurrentDisplay(Display3D display)
Sets the current display both here and in the child.
|
void |
setCurrentFieldPortrayal(FieldPortrayal3D p)
Sets the current field portrayal both here and in the child.
|
boolean |
setSelected(LocationWrapper wrapper,
boolean selected)
If the object is selected, adds it to a hash table of selected objects for which
this SimplePortrayal3D's isSelected() method will return TRUE.
|
appearanceForColor, appearanceForColors, appearanceForImage, clearPickableFlags, getCurrentDisplay, getCurrentFieldPortrayal, getCurrentGUIState, getStatus, isSelected, setAppearanceFlags, setPickableFlags, setPickableFlags
public SwitchedPortrayal3D(SimplePortrayal3D child)
public javax.media.j3d.PolygonAttributes polygonAttributes()
Portrayal3D
polygonAttributes
in interface Portrayal3D
polygonAttributes
in class SimplePortrayal3D
public Inspector getInspector(LocationWrapper wrapper, GUIState state)
Portrayal
getInspector
in interface Portrayal
getInspector
in class SimplePortrayal3D
public java.lang.String getName(LocationWrapper wrapper)
Portrayal
getName
in interface Portrayal
getName
in class SimplePortrayal3D
public void setCurrentDisplay(Display3D display)
setCurrentDisplay
in interface Portrayal3D
setCurrentDisplay
in class SimplePortrayal3D
public void setCurrentFieldPortrayal(FieldPortrayal3D p)
setCurrentFieldPortrayal
in class SimplePortrayal3D
public boolean setSelected(LocationWrapper wrapper, boolean selected)
SimplePortrayal3D
There are two implications to this approach. First, it means that after you've selected an object, there's a hash table attached to its portrayal. If you're using the same portrayal for lots of stuff, that's no big deal. But if you've got per-object portrayals and a lot of objects (or if the objects are themselves SimplePortrayal3D subclasses) then that's a fair number of hash tables. This is a minor memory issue but if you don't care about testing for whether you've been selected or not, you could just override this method to always return TRUE (and don't call super.selected(...) ) and the hash table will never be created. Note that isSelected will always return FALSE for your portrayal in this situation.
Second, though you can test for selection with the isSelected() method, if you want to, say, change the look of your portrayal based on whether or not it's selected, you will need to test isSelected() each time getModel() is called and modify the model accordingly. This could be a bit expensive. We're working on an approach for you to be able to test if the object was RECENTLY selected or deselected so you could only test then, but it's nontrivial to do without using up a lot of memory.
setSelected
in interface Portrayal
setSelected
in class SimplePortrayal3D
public SimplePortrayal3D getChild(java.lang.Object object)
public boolean getShowsChild(java.lang.Object obj)
public javax.media.j3d.TransformGroup getModel(java.lang.Object obj, javax.media.j3d.TransformGroup previousTransformGroup)
Portrayal3D
You should hang your model off of the TransformGroup provided. You should not transform that TransformGroup in any way -- it is used elsewhere. Instead if you wish to transform your model (rotate it etc.) you should add your own additional TransformGroup as necessary.
The provided TransformGroup can be null; in this case you need to create and return the outer TransformGroup for the object. If the provided TransformGroup is non-null, you should modify it and return the same.
SimplePortrayals should assume the following contract: at the point that getModel(...) is called, the field portrayal and display will have already been set if it exists, else it will be null.
getModel
in interface Portrayal3D
getModel
in class SimplePortrayal3D