Provided by: inventor-doc_2.1.5-10-24_all bug

NAME

       SoDragPointDragger — object you can translate in 3D by dragging with the mouse

INHERITS FROM

       SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoDragPointDragger

SYNOPSIS

       #include <Inventor/draggers/SoDragPointDragger.h>

          Fields from class SoDragPointDragger:

     SoSFVec3f           translation

          Fields from class SoDragger:

     SoSFBool            isActive

          Fields from class SoInteractionKit:

     SoSFEnum            renderCaching
     SoSFEnum            boundingBoxCaching
     SoSFEnum            renderCulling
     SoSFEnum            pickCulling

          Parts from class SoBaseKit:

     (SoNodeKitListPart)  callbackList

          Methods from class SoDragPointDragger:

                         SoDragPointDragger()
     void                setJumpLimit(float limit)
     float               getJumpLimit() const
     void                showNextDraggerSet()
     static const SoNodekitCatalog *
                         getClassNodekitCatalog() const
     static SoType       getClassTypeId()

          Methods from class SoDragger:

     void                addStartCallback(SoDraggerCB *f, void *userData = NULL)
     void                removeStartCallback(SoDraggerCB *f, void *userData = NULL)
     void                addMotionCallback(SoDraggerCB *f, void *userData = NULL)
     void                removeMotionCallback(SoDraggerCB *f, void *userData = NULL)
     void                addFinishCallback(SoDraggerCB *f, void *userData = NULL)
     void                removeFinishCallback(SoDraggerCB *f, void *userData = NULL)
     void                addValueChangedCallback(SoDraggerCB *f, void *userData = NULL)
     void                removeValueChangedCallback(SoDraggerCB *f, void *userData = NULL)
     SbBool              enableValueChangedCallbacks()
     void                setMinGesture(int pixels)
     int                 getMinGesture() const
     static void         setMinScale(float newMinScale)
     static float        getMinScale()

          Methods from class SoInteractionKit:

     virtual SbBool      setPartAsPath(const SbName &partName, SoPath *surrogatePath )

          Methods from class SoBaseKit:

     virtual const SoNodekitCatalog *
                              getNodekitCatalog() const
     virtual SoNode *         getPart(const SbName &partName, SbBool makeIfNeeded)
     SbString                 getPartString(const SoBase *part)
     virtual  SoNodeKitPath  *  createPathToPart(const  SbName  &partName,  SbBool  makeIfNeeded,  const  SoPath
                                   *pathToExtend = NULL)
     virtual SbBool           setPart(const SbName &partName, SoNode *newPart)
     SbBool                   set(char *partName, char *parameters)
     SbBool                   set(char *nameValuePairs)
     static SbBool            isSearchingChildren()
     static void              setSearchingChildren(SbBool newVal)

          Methods from class SoNode:

     void                setOverride(SbBool state)
     SbBool              isOverride() const
     SoNode *            copy(SbBool copyConnections = FALSE) const
     virtual SbBool      affectsState() const
     static SoNode *     getByName(const SbName &name)
     static int          getByName(const SbName &name, SoNodeList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const SoFieldContainer *fc, SbBool copyConnections = FALSE)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName) const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const

          Macros from class SoBaseKit:

     SO_GET_PART(kit, partName, partClass)
     SO_CHECK_PART(kit, partName, partClass)

DESCRIPTION

       SoDragPointDragger is a compound dragger that translates in all three dimensions when  dragged  with  the
       mouse.

       It  is  made up of six smaller draggers, which it displays two at a time. Each pair has one plane dragger
       and one line dragger. The line dragger is oriented perpendicular to the plane, so together the plane/line
       pair lets you move through all of 3-space.

       DragPoint  has  a  total of three such pairs, oriented along the x, y, and z axes of its local space. You
       can cycle through the three pairs by hitting the <Control> key with the cursor  over  the  dragger.  (You
       need not press the mouse button.)

       The  line  draggers are SoTranslate1Draggers and the plane draggers are SoTranslate2Draggers.  So you can
       use the <Shift> key to constrain the motion of a plane dragger along one  of  the  two  axes  within  the
       plane, as described in the SoTranslate2Draggers man page.

       DragPoint  adds  extra  feedback parts to provide a more intuitive idea of where you are placed in three-
       space. There are three feedback planes and three feedback axes; each corresponds to one of the  plane  or
       line draggers, but spans a much greater distance. When you drag along a line, that line's larger feedback
       axis is displayed, and remains anchored in space while the dragger slides along it. This helps  establish
       the motion of the dragger relative to the rest of the scene. Similarly, when you drag within a plane, the
       larger (but transparent) feedback plane establishes a ground plane for you to move upon. The location  of
       the  dragger  within  the plane is pinpointed by two intersecting axes that always cross below the cursor
       and extend to the edges of the plane. When you move dragPoint to the  edge  of  the  feedback  plane  (or
       line),  the  feedback will jump to a new location in that direction, so that the dragger never leaves the
       feedback behind.

       The primary directions of motion are given by the local space of the dragger. Transforms earlier  in  the
       scene will affect the dragger, its children, and the orientation of its directions of motion.

       This  node  has  a translation field which always reflects its position in local space. Setting the field
       moves the dragger to that point. You can also connect fields of other nodes or engines from this  one  to
       make them follow the dragger's motion.

       Although the child draggers each have their own resources defining default part geometries, the dragPoint
       dragger overrides these with a new set of resources. It also defines resources  for  the  feedback  parts
       that  it  adds. These are detailed in the Dragger Resources section of the online reference page for this
       class. You can change the parts in any instance of this dragger using setPart().

       You can  make  your  program  use  different  default  resources  for  the  parts  by  copying  the  file
       /usr/share/data/draggerDefaults/dragPointDragger.iv  into  your own directory, editing the file, and then
       setting the environment variable SO_DRAGGER_DIR to be a path to that directory.

FIELDS

     SoSFVec3f           translation
          Position of the dragger.

METHODS

                         SoDragPointDragger()
          Constructor.

     void                setJumpLimit(float limit)
     float               getJumpLimit() const
          Set and get the point at which the feedback axes will jump to a new position. For example, if  set  to
          .1 (the default), the feedback axes will jump when the dragger gets within 10% of the end of the axis.

     void                showNextDraggerSet()
          The  dragPoint  dragger  contains  three pairs of draggers, each containing a plane dragger and a line
          dragger (see the Description above). The dragger starts with  the  (y-line/xz-plane)  pair  displayed.
          Calling this method will cycle next through the (z-line/xy-plane), then the (x-line/yz-plane).

     static const SoNodekitCatalog *
                         getClassNodekitCatalog() const
          Returns an SoNodekitCatalog for this class

     static SoType       getClassTypeId()
          Returns type identifier for this class.

CATALOG PARTS

       ┌──────────────────────────────────────────────────────────┐
       │                        All parts                         │
       │                                                  NULL by │
       │Part Name      Part Type           Default Type   Default │
       │                                                          │
       │callbackList   NodeKitListPart     --               yes   │
       │xTranslator    Translate1Dragger   --               yes   │
       │xyTranslator   Translate2Dragger   --               yes   │
       │xzTranslator   Translate2Dragger   --               yes   │
       │zTranslator    Translate1Dragger   --               yes   │
       │yzTranslator   Translate2Dragger   --               yes   │
       │yTranslator    Translate1Dragger   --               yes   │
       │xFeedback      Separator           --               yes   │
       │yFeedback      Separator           --               yes   │
       │zFeedback      Separator           --               yes   │
       │yzFeedback     Separator           --               yes   │
       │xzFeedback     Separator           --               yes   │
       │xyFeedback     Separator           --               yes   │
       │                                                          │
       └──────────────────────────────────────────────────────────┘
       ┌───────────────────────────────────────────────────────────────┐
       │      Extra information for list parts from above table        │
       │                                                               │
       │Part Name      Container Type   Permissible Types              │
       │                                                               │
       │callbackList   Separator        Callback, EventCallback        │
       │                                                               │
       └───────────────────────────────────────────────────────────────┘

DRAGGER RESOURCES

       .in 0n+.5i
     Resource:         dragPointXTranslatorTranslator
       .in 0n+.5i
     Part:             xTranslator.translator
     Appearance:       white cylinder with axis aligned in X direction
     Description:      picking this initiates linear motion in X direction

                         .in 0n+.5i
     Resource:         dragPointXTranslatorTranslatorActive
                         .in 0n+.5i
     Part:             xTranslator.translatorActive
     Appearance:       yellow cylinder with axis aligned in X direction
     Description:      shown when moving in X direction

                         .in 0n+.5i
     Resource:         dragPointYTranslatorTranslator
                         .in 0n+.5i
     Part:             yTranslator.translator
     Appearance:       white cylinder with axis aligned in Y direction
     Description:      picking this initiates linear motion in Y direction

                         .in 0n+.5i
     Resource:         dragPointYTranslatorTranslatorActive
                         .in 0n+.5i
     Part:             yTranslator.translatorActive
     Appearance:       yellow cylinder with axis aligned in Y direction
     Description:      shown when moving in Y direction

                         .in 0n+.5i
     Resource:         dragPointZTranslatorTranslator
                         .in 0n+.5i
     Part:             zTranslator.translator
     Appearance:       white cylinder with axis aligned in Z direction
     Description:      picking this initiates linear motion in Z direction

                         .in 0n+.5i
     Resource:         dragPointZTranslatorTranslatorActive
                         .in 0n+.5i
     Part:             zTranslator.translatorActive
     Appearance:       yellow cylinder with axis aligned in Z direction
     Description:      shown when moving in Z direction

                         .in 0n+.5i
     Resource:         dragPointYZTranslatorTranslator
                         .in 0n+.5i
     Part:             yzTranslator.translator
     Appearance:       white flattened cube within the yz plane of motion
     Description:      picking this initiates planar motion in yz plane

                         .in 0n+.5i
     Resource:         dragPointYZTranslatorTranslatorActive
                         .in 0n+.5i
     Part:             yzTranslator.translatorActive
     Appearance:       yellow flattened cube within the yz plane of motion
     Description:      shown when moving in yz plane

                         .in 0n+.5i
     Resource:         dragPointXZTranslatorTranslator
                         .in 0n+.5i
     Part:             xzTranslator.translator
     Appearance:       white flattened cube within the xz plane of motion
     Description:      picking this initiates planar motion in xz plane

                         .in 0n+.5i
     Resource:         dragPointXZTranslatorTranslatorActive
                         .in 0n+.5i
     Part:             xzTranslator.translatorActive
     Appearance:       yellow flattened cube within the xz plane of motion
     Description:      shown when moving in xz plane

                         .in 0n+.5i
     Resource:         dragPointXYTranslatorTranslator
                         .in 0n+.5i
     Part:             xyTranslator.translator
     Appearance:       white flattened cube within the xy plane of motion
     Description:      picking this initiates planar motion in xy plane

                         .in 0n+.5i
     Resource:         dragPointXYTranslatorTranslatorActive
                         .in 0n+.5i
     Part:             xyTranslator.translatorActive
     Appearance:       yellow flattened cube within the xy plane of motion
     Description:      shown when moving in xy plane

                         .in 0n+.5i
     Resource:         dragPointXFeedback
                         .in 0n+.5i
     Part:             xFeedback
     Appearance:       douple-headed purple arrow
     Description:      feedback for motion in x direction

                         .in 0n+.5i
     Resource:         dragPointYFeedback
                         .in 0n+.5i
     Part:             yFeedback
     Appearance:       douple-headed purple arrow
     Description:      feedback for motion in y direction

                         .in 0n+.5i
     Resource:         dragPointZFeedback
                         .in 0n+.5i
     Part:             zFeedback
     Appearance:       douple-headed purple arrow
     Description:      feedback for motion in z direction

                         .in 0n+.5i
     Resource:         dragPointYZFeedback
                         .in 0n+.5i
     Part:             yzFeedback
     Appearance:       semi-transparent green square in yz plane
     Description:      feedback for motion in yz plane

                         .in 0n+.5i
     Resource:         dragPointXZFeedback
                         .in 0n+.5i
     Part:             xzFeedback
     Appearance:       semi-transparent green square in yz plane
     Description:      feedback for motion in xz plane

                         .in 0n+.5i
     Resource:         dragPointXYFeedback
                         .in 0n+.5i
     Part:             xyFeedback
     Appearance:       semi-transparent green square in yz plane
     Description:      feedback for motion in xy plane

FILE FORMAT/DEFAULTS

       DragPointDragger {
          renderCaching                  AUTO
          boundingBoxCaching             AUTO
          renderCulling                  AUTO
          pickCulling                    AUTO
          isActive                       FALSE
          translation                    0 0 0
          callbackList                   NULL
          xTranslator                    Translate1Dragger {
          }

          xyTranslator                   Translate2Dragger {
          }

          xzTranslator                   Translate2Dragger {
          }

          zTranslator                    Translate1Dragger {
          }

          yzTranslator                   Translate2Dragger {
          }

          yTranslator                    Translate1Dragger {
          }

          xFeedback                      <dragPointXFeedback resource>
          yFeedback                      <dragPointYFeedback resource>
          zFeedback                      <dragPointZFeedback resource>
          yzFeedback                     <dragPointYZFeedback resource>
          xzFeedback                     <dragPointXZFeedback resource>
          xyFeedback                     <dragPointXYFeedback resource>
          xTranslator.translator         <dragPointXTranslatorTranslator resource>
          xTranslator.translatorActive   <dragPointXTranslatorTranslatorActive resource>
          yTranslator.translator         <dragPointYTranslatorTranslator resource>
          yTranslator.translatorActive   <dragPointYTranslatorTranslatorActive resource>
          zTranslator.translator         <dragPointZTranslatorTranslator resource>
          zTranslator.translatorActive   <dragPointZTranslatorTranslatorActive resource>
          yzTranslator.translator        <dragPointYZTranslatorTranslator resource>
          yzTranslator.translatorActive  <dragPointYZTranslatorTranslatorActive resource>
          xzTranslator.translator        <dragPointXZTranslatorTranslator resource>
          xzTranslator.translatorActive  <dragPointXZTranslatorTranslatorActive resource>
          xyTranslator.translator        <dragPointXYTranslatorTranslator resource>
          xyTranslator.translatorActive  <dragPointXYTranslatorTranslatorActive resource>
     }

SEE ALSO

       SoInteractionKit,  SoDragger, SoCenterballDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger,
       SoPointLightDragger,    SoRotateCylindricalDragger,    SoRotateDiscDragger,     SoRotateSphericalDragger,
       SoScale1Dragger,   SoScale2Dragger,  SoScale2UniformDragger,  SoScaleUniformDragger,  SoSpotLightDragger,
       SoTabBoxDragger,  SoTabPlaneDragger,  SoTrackballDragger,  SoTransformBoxDragger,   SoTransformerDragger,
       SoTranslate1Dragger, SoTranslate2Dragger

                                                                                       SoDragPointDragger(3IV)()