Provided by: inventor-doc_2.1.5-10-18_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)()