SOJACKDRAGGER(3iv)

πŸ¦‹ SoJackDragger(3IV) πŸ¦‹

okay bestie, buckle up, this is the manual page for SoJackDragger (the 3IV one) and honestly? it's giving main character energy. it's a dragger. it's shaped like a jack. you drag it. it's iconic.


✨ NAME ✨

SoJackDragger β€” jack-shaped object you rotate, translate, or scale by dragging with the mouse πŸŽ€


🌸 INHERITS FROM 🌸

SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoJackDragger

like yes, she comes from a long line of distinguished ancestors, no cap πŸ’…


🌈 SYNOPSIS 🌈

#include <Inventor/draggers/SoJackDragger.h>

Fields from class SoJackDragger:

SoSFRotation        rotation
SoSFVec3f           scaleFactor
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 SoJackDragger:

                     SoJackDragger()
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 πŸ’–

so. SoJackDragger is a composite dragger shaped like a jack β€” yeah, like the actual metal jack from the children's game jacks, that one, she's that girl πŸŽ€

Three lines running along the x, y, and z axes form the central star shape, and you can drag that with the mouse to rotate the jack. Then there's these tiny cubes mounted at the end of each axis β€” drag any of those and you'll scale the jack uniformly in all 3 dimensions (all of them, at once, together, no favourites πŸ’…). And at the very core of the jack lives an SoDragPointDragger, which is what handles translating the jack.

Each of these shapes is its own separate dragger, just with the default geometry swapped out. All of them are parts of the jack dragger, which is what keeps them moving together as one little squad. Breaking it down:

  • The star is an SoRotateSphericalDragger, and dragging it updates the rotation field of the jack dragger.
  • The small cubes are an SoScaleUniformDragger, tied to the scaleFactor field.
  • The position of the SoDragPointDragger is given by the translation field.

And as with all draggers β€” if you change the fields, the dragger will move to match the new settings. she listens. she's responsive. periodt ✨

Remember, bestie: This is not an SoTransform! 😭

If you want to move other objects with this dragger, you've got two options:

  1. [a] Use an SoJackManip, which is subclassed from SoTransform. It creates one of these draggers and uses it as the interface to change its fields. (see the SoJackManip man page).
  2. [b] Use field-to-field connections to connect the fields of this dragger to those of any SoTransformation node.

You can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoJackDragger class, and they're detailed in the Dragger Resources section of the online reference page for this class. If you want your program to use different default resources for the parts, here's the move: copy the file /usr/share/data/draggerDefaults/jackDragger.iv into your own directory, edit that file, and then set the environment variable SO_DRAGGER_DIR to be a path to that directory. slay 🫢


πŸŽ€ FIELDS πŸŽ€

  • SoSFRotation rotation β€” Orientation of the dragger.
  • SoSFVec3f scaleFactor β€” Scale of the dragger.
  • SoSFVec3f translation β€” Position of the dragger.

πŸ’… METHODS πŸ’…

  • SoJackDragger() β€” Constructor.
  • static const SoNodekitCatalog * getClassNodekitCatalog() const β€” Returns an SoNodekitCatalog for this class
  • static SoType getClassTypeId() β€” Returns type identifier for this class.

πŸ“¦ CATALOG PARTS πŸ“¦

All parts 🌟

  • callbackList β€” Part Type: NodeKitListPart β€” Default Type: -- β€” NULL by Default: yes
  • surroundScale β€” Part Type: SurroundScale β€” Default Type: -- β€” NULL by Default: yes
  • antiSquish β€” Part Type: AntiSquish β€” Default Type: -- β€” NULL by Default: no
  • scaler β€” Part Type: ScaleUniformDragger β€” Default Type: -- β€” NULL by Default: yes
  • rotator β€” Part Type: RotateSphericalDragger β€” Default Type: -- β€” NULL by Default: yes
  • translator β€” Part Type: DragPointDragger β€” Default Type: -- β€” NULL by Default: yes

Extra information for list parts from above table πŸ”

  • callbackList β€” Container Type: Separator β€” Permissible Types: Callback, EventCallback

okay so that's the whole setup, the fields, the methods, the parts, the whole vibe check β€” and there's still more coming, so don't go anywhere bestie, part 2 is right there πŸ’œ

✨ DRAGGER RESOURCES ✨

okay bestie, this is the part where we go shopping through the whole dragger catalog πŸ›οΈ β€” every single resource, what part it lives on, what it looks like, and what it does. no skipping, we're looking at all of them πŸ’…


  • jackRotatorRotator
    • Part: rotator.rotator
    • Appearance: the 'star' of the jack. a set of 3 white axes (lines) ⭐
    • Description: picking that star is what starts the rotational dragging of the jackDragger. main character energy fr.
  • jackRotatorRotatorActive
    • Part: rotator.rotatorActive
    • Appearance: the yellow version of the rotator.rotator part πŸ’›
    • Description: this is what shows up while the jackDragger is actively being rotated.
  • jackRotatorFeedback
    • Part: rotator.feedback
    • Appearance: empty separator
    • Description: removes any feedback geometry that got created in the constructor of the SoRotateSphericalDragger. it's giving "nothing to see here" πŸ«₯
  • jackRotatorFeedbackActive
    • Part: rotator.feedbackActive
    • Appearance: empty separator
    • Description: removes any feedbackActive geometry created in the constructor of the SoRotateSphericalDragger. same vibe, active edition.
  • jackScalerScaler
    • Part: scaler.scaler
    • Appearance: six small white cubes 🧊 β€” they're the tips of the rotator star
    • Description: picking one of these kicks off uniform 3D scaling of the dragger. glow up incoming ✨
  • jackScalerScalerActive
    • Part: scaler.scalerActive
    • Appearance: yellow version of the scaler.scaler resource
    • Description: displayed while the dragger is being scaled. she's working πŸ’…
  • jackScalerFeedback
    • Part: scaler.feedback
    • Appearance: empty separator
    • Description: removes any feedback geometry created in the constructor of the SoScaleUniformDragger.
  • jackScalerFeedbackActive
    • Part: scaler.feedbackActive
    • Appearance: empty separator
    • Description: removes any feedbackActive geometry created in the constructor of the SoScaleUniformDragger.
  • jackTranslatorLineTranslator
    • Parts:
      • translator.xTranslator.translator
      • translator.yTranslator.translator
      • translator.zTranslator.translator
    • Appearance: skinny white cylinder aligned with the axes of motion πŸ₯’
    • Description: picking these parts initiates dragging in the x, y, and z linear draggers respectively.
  • jackTranslatorLineTranslatorActive
    • Parts:
      • translator.xTranslator.translatorActive
      • translator.yTranslator.translatorActive
      • translator.zTranslator.translatorActive
    • Appearance: skinny yellow cylinder aligned with the axes of motion
    • Description: shown during linear dragging in the x, y, and z directions respectively.
  • jackTranslatorPlaneTranslator
    • Parts:
      • translator.yzTranslator.translator
      • translator.xzTranslator.translator
      • translator.xyTranslator.translator
    • Appearance: white flattened cube, drawn in wireframe πŸ”²
    • Description: picking these parts initiates dragging by the yz, xz, and xy planar draggers respectively.
  • jackTranslatorPlaneTranslatorActive
    • Parts:
      • translator.yzTranslator.translatorActive
      • translator.xzTranslator.translatorActive
      • translator.xyTranslator.translatorActive
    • Appearance: yellow flattened cube, drawn in wireframe
    • Description: shown during planar dragging in the yz, xz, and xy planes respectively.
  • jackTranslatorXFeedback
    • Part: xFeedback
    • Appearance: double-headed purple arrow πŸ’œ
    • Description: feedback for motion in the x direction
  • jackTranslatorYFeedback
    • Part: yFeedback
    • Appearance: double-headed purple arrow
    • Description: feedback for motion in the y direction
  • jackTranslatorZFeedback
    • Part: zFeedback
    • Appearance: double-headed purple arrow
    • Description: feedback for motion in the z direction
  • jackTranslatorYZFeedback
    • Part: yzFeedback
    • Appearance: semi-transparent green square in the yz plane 🟩
    • Description: feedback for motion in the yz plane
  • jackTranslatorXZFeedback
    • Part: xzFeedback
    • Appearance: semi-transparent green square in the yz plane
    • Description: feedback for motion in the xz plane
  • jackTranslatorXYFeedback
    • Part: xyFeedback
    • Appearance: semi-transparent green square in the yz plane
    • Description: feedback for motion in the xy plane

πŸŽ€ FILE FORMAT/DEFAULTS πŸŽ€

this is literally the whole vibe of the node out of the box, no cap. every default, exactly as it ships:

JackDragger {
   renderCaching                             AUTO
   boundingBoxCaching                        AUTO
   renderCulling                             AUTO
   pickCulling                               AUTO
   isActive                                  FALSE
   rotation                                  0 0 1  0
   translation                               0 0 0
   scaleFactor                               1 1 1
   callbackList                              NULL
   surroundScale                             NULL
   antiSquish                                AntiSquish {
       sizing BIGGEST_DIMENSION }

   scaler                                    ScaleUniformDragger {
   }

   rotator                                   RotateSphericalDragger {
   }

   translator                                DragPointDragger {
   }

   rotator.rotator                           <jackRotatorRotator resource>
   rotator.rotatorActive                     <jackRotatorRotatorActive resource>
   rotator.feedback                          <jackRotatorFeedback resource>
   rotator.feedbackActive                    <jackRotatorFeedbackActive resource>
   scaler.scaler                             <jackScalerScaler resource>
   scaler.scalerActive                       <jackScalerScalerActive resource>
   scaler.feedback                           <jackScalerFeedback resource>
   scaler.feedbackActive                     <jackScalerFeedbackActive resource>
   translator.xTranslator.translator         <jackTranslatorLineTranslator resource>
   translator.yTranslator.translator         <jackTranslatorLineTranslator resource>
   translator.zTranslator.translator         <jackTranslatorLineTranslator resource>
   translator.xTranslator.translatorActive   <jackTranslatorLineTranslatorActive resource>
   translator.yTranslator.translatorActive   <jackTranslatorLineTranslatorActive resource>
   translator.zTranslator.translatorActive   <jackTranslatorLineTranslatorActive resource>
   translator.yzTranslator.translator        <jackTranslatorPlaneTranslator resource>
   translator.xzTranslator.translator        <jackTranslatorPlaneTranslator resource>
   translator.xyTranslator.translator        <jackTranslatorPlaneTranslator resource>
   translator.yzTranslator.translatorActive  <jackTranslatorPlaneTranslatorActive resource>
   translator.xzTranslator.translatorActive  <jackTranslatorPlaneTranslatorActive resource>
   translator.xyTranslator.translatorActive  <jackTranslatorPlaneTranslatorActive resource>
   xFeedback                                 <jackTranslatorXFeedback resource>
   yFeedback                                 <jackTranslatorYFeedback resource>
   zFeedback                                 <jackTranslatorZFeedback resource>
   yzFeedback                                <jackTranslatorYZFeedback resource>
   xzFeedback                                <jackTranslatorXZFeedback resource>
   xyFeedback                                <jackTranslatorXYFeedback resource>
}

🌈 SEE ALSO 🌈

if you're gonna fall down the dragger rabbit hole (and bestie, you are πŸ•³οΈβœ¨), here's the whole squad:

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


and that's the whole page, babe 🫢 this one's the SoJackDragger(3IV) manual, tagged SoJackDragger(3IV)() down in the footer β€” version and date field included, keeping it iconic ⭐ go forth and drag, you've got this πŸ’–