Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## sim.portrayal3d.simple
Class CircledPortrayal3D

    java.lang.Object
      sim.portrayal3d.SimplePortrayal3D
          sim.portrayal3d.simple.CircledPortrayal3D

All Implemented Interfaces:
  java.io.Serializable, Portrayal, Portrayal3D

    public class CircledPortrayal3D

extends SimplePortrayal3D

A wrapper for other Portrayal3Ds which also draws a big translucent sphere around them -- useful for distinguishing one object from other similar-looking objects. When you create this CirclePortrayal3D, you will pass in an underlying Portrayal3D which is supposed to draw the actual object; CirclePortrayal3D will then add on the sphere. If the object will draw itself (it's its own Portrayal3D), you can signify this by passing in null for the underlying Portrayal3D.

There are certain guidelines you can specify for when the sphere is to be drawn. At construction time you can state that the sphere should only be drawn when the object is selected. Additionally if you call the setCircleShowing(...) function, you can turn off or on sphere drawing entirely for this CirclePortrayal3D.

You may specify a color or appearance for the sphere (the default is 25%-opaque flat white). If you specify a color with some degree of alpha, the sphere will be drawn to that degree of transparency. You can also specify a scale -- equivalent to the diameter of the sphere. The default scale (2.0f) draws the sphere in the (-1,-1,-1) to (1,1,1) box.

Why's it not called a "SpheredPortrayal3D?" One, because there's no such word as "sphered", you big goof. More importantly, we thought it'd be useful to stay consistent with CircledPortrayal2D.

See Also:
  Serialized Form

Field Summary
`static javax.media.j3d.Appearance` | `DEFAULT_CIRCLED_APPEARANCE`
`static double` | `DEFAULT_SCALE`

Fields inherited from class sim.portrayal3d.SimplePortrayal3D
`DEFAULT_APPEARANCE`

Constructor Summary
`CircledPortrayal3D(SimplePortrayal3D child)`
`CircledPortrayal3D(SimplePortrayal3D child, javax.media.j3d.Appearance appearance, double scale, boolean onlyCircleWhenSelected)`
`CircledPortrayal3D(SimplePortrayal3D child, java.awt.Color color)`
`CircledPortrayal3D(SimplePortrayal3D child, java.awt.Color color, double scale, boolean onlyCircleWhenSelected)`
`CircledPortrayal3D(SimplePortrayal3D child, double scale)`
`CircledPortrayal3D(SimplePortrayal3D child, double scale, boolean onlyCircleWhenSelected)`

Method Summary
`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 j3dModel)` 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` | `getOnlyCircleWhenSelected()`
`boolean` | `isCircleShowing()`
`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` | `setCircleShowing(boolean val)`
`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.
`void` | `setOnlyCircleWhenSelected(boolean val)`
`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.

Methods inherited from class sim.portrayal3d.SimplePortrayal3D
`appearanceForColor, appearanceForColors, appearanceForImage, clearPickableFlags, getCurrentDisplay, getCurrentFieldPortrayal, getCurrentGUIState, getStatus, isSelected, setAppearanceFlags, setPickableFlags, setPickableFlags`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_CIRCLED_APPEARANCE

    public static final javax.media.j3d.Appearance DEFAULT_CIRCLED_APPEARANCE

### DEFAULT_SCALE

    public static final double DEFAULT_SCALE

See Also:
  Constant Field Values

Constructor Detail

### CircledPortrayal3D

    public CircledPortrayal3D(SimplePortrayal3D child)

### CircledPortrayal3D

    public CircledPortrayal3D(SimplePortrayal3D child,
                              double scale)

### CircledPortrayal3D

    public CircledPortrayal3D(SimplePortrayal3D child,
                              double scale,
                              boolean onlyCircleWhenSelected)

### CircledPortrayal3D

    public CircledPortrayal3D(SimplePortrayal3D child,
                              java.awt.Color color)

### CircledPortrayal3D

    public CircledPortrayal3D(SimplePortrayal3D child,
                              java.awt.Color color,
                              double scale,
                              boolean onlyCircleWhenSelected)

### CircledPortrayal3D

    public CircledPortrayal3D(SimplePortrayal3D child,
                              javax.media.j3d.Appearance appearance,
                              double scale,
                              boolean onlyCircleWhenSelected)

Method Detail

### polygonAttributes

    public javax.media.j3d.PolygonAttributes polygonAttributes()

  Description copied from interface: `Portrayal3D`
  Provides a PolygonAttributes which can be modified to change the underlying model's attributes (culling, vertex versus point versus fill). This is an optional function: you are free to return null

  Specified by:
    `polygonAttributes` in interface `Portrayal3D`
  Overrides:
    `polygonAttributes` in class `SimplePortrayal3D`

### getInspector

    public Inspector getInspector(LocationWrapper wrapper,
                                  GUIState state)

  Description copied from interface: `Portrayal`
  Provide an inspector for an object.

  Specified by:
    `getInspector` in interface `Portrayal`
  Overrides:
    `getInspector` in class `SimplePortrayal3D`

### getName

    public java.lang.String getName(LocationWrapper wrapper)

  Description copied from interface: `Portrayal`
  Returns a static, one-line name for the given object that is useful for a human to distinguish it from other objects. A simple default would be just to return "" + object.

  Specified by:
    `getName` in interface `Portrayal`
  Overrides:
    `getName` in class `SimplePortrayal3D`

### setCurrentDisplay

    public void setCurrentDisplay(Display3D display)

  Sets the current display both here and in the child.

  Specified by:
    `setCurrentDisplay` in interface `Portrayal3D`
  Overrides:
    `setCurrentDisplay` in class `SimplePortrayal3D`

### setCurrentFieldPortrayal

    public void setCurrentFieldPortrayal(FieldPortrayal3D p)

  Sets the current field portrayal both here and in the child.

  Overrides:
    `setCurrentFieldPortrayal` in class `SimplePortrayal3D`

### setSelected

    public boolean setSelected(LocationWrapper wrapper,
                               boolean selected)

  Description copied from class: `SimplePortrayal3D`
  If the object is selected, adds it to a hash table of selected objects for which this SimplePortrayal3D's isSelected() method will return TRUE. If the object is deselected, removes it from the hash table. Always returns TRUE. The hash table doesn't exist until this method is first called.

  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.

  Specified by:
    `setSelected` in interface `Portrayal`
  Overrides:
    `setSelected` in class `SimplePortrayal3D`

### getChild

    public SimplePortrayal3D getChild(java.lang.Object object)

### setOnlyCircleWhenSelected

    public void setOnlyCircleWhenSelected(boolean val)

### getOnlyCircleWhenSelected

    public boolean getOnlyCircleWhenSelected()

### isCircleShowing

    public boolean isCircleShowing()

### setCircleShowing

    public void setCircleShowing(boolean val)

### getModel

    public javax.media.j3d.TransformGroup getModel(java.lang.Object obj,
                                                   javax.media.j3d.TransformGroup j3dModel)

  Description copied from interface: `Portrayal3D`
  Provides a TransformGroup which defines the node(s) to place in the scenegraph. This is the Portrayal3D equivalent of Portrayal2D's draw(object, graphics, drawinfo) method.

  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.

  Specified by:
    `getModel` in interface `Portrayal3D`
  Overrides:
    `getModel` in class `SimplePortrayal3D`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD