SoTranslate2Dragger(3)

πŸ“¦ version 2.5.0, in fedora 43, fedora 44

SoTranslate2Dragger πŸ’…

okay so bestie, welcome to the Library Functions Manual entry for SoTranslate2Dragger β€” that's the (3) one, so it's a library page, not something you type into a shell. Sit down, grab a snack, we're doing this. πŸ“

🌸 NAME 🌸

SoTranslate2Dragger β€” the class that hands your end-user a whole mechanism for translating stuff in a plane. That's it. That's the gig. She drags, they translate, the plane stays a plane. ✨

✨ SYNOPSIS ✨

First things first, pull in the header or nothing happens, no cap:

#include <Inventor/draggers/SoTranslate2Dragger.h>

And she inherits SoDragger, which means everything a dragger can do? She can do too. Inherited main character energy, fr fr. πŸ‘‘


πŸ’– Public Member Functions πŸ’–

These are her own, homegrown, hand-rolled methods:

virtual SoType getTypeId (void) const
virtual const SoNodekitCatalog * getNodekitCatalog (void) const
SoTranslate2Dragger (void)

That's the whole starter pack. Yes, really. The rest is generational wealth. πŸ’Έ


🫢 Public Member Functions inherited from SoDragger

Everything below is hers by inheritance β€” she didn't write it, she just has it, like a really good hand-me-down jacket:

virtual void callback (SoCallbackAction *action)
virtual void GLRender (SoGLRenderAction *action)
virtual void getMatrix (SoGetMatrixAction *action)
virtual void rayPick (SoRayPickAction *action)
virtual void search (SoSearchAction *action)
virtual void write (SoWriteAction *action)
virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)
void addStartCallback (SoDraggerCB *func, void *data=NULL)
void removeStartCallback (SoDraggerCB *func, void *data=NULL)
void addMotionCallback (SoDraggerCB *func, void *data=NULL)
void removeMotionCallback (SoDraggerCB *func, void *data=NULL)
void addFinishCallback (SoDraggerCB *func, void *data=NULL)
void removeFinishCallback (SoDraggerCB *func, void *data=NULL)
void addValueChangedCallback (SoDraggerCB *func, void *data=NULL)
void removeValueChangedCallback (SoDraggerCB *func, void *data=NULL)
void setMinGesture (int pixels)
int getMinGesture (void) const
SbBool enableValueChangedCallbacks (SbBool newval)
const SbMatrix & getMotionMatrix (void)
void addOtherEventCallback (SoDraggerCB *func, void *data=NULL)
void removeOtherEventCallback (SoDraggerCB *func, void *data=NULL)
void registerChildDragger (SoDragger *child)
void unregisterChildDragger (SoDragger *child)
void registerChildDraggerMovingIndependently (SoDragger *child)
void unregisterChildDraggerMovingIndependently (SoDragger *child)
SbMatrix getLocalToWorldMatrix (void)
SbMatrix getWorldToLocalMatrix (void)
SbVec3f getLocalStartingPoint (void)
SbVec3f getWorldStartingPoint (void)
void getPartToLocalMatrix (const SbName &partname, SbMatrix &parttolocalmatrix, SbMatrix &localtopartmatrix)
void transformMatrixLocalToWorld (const SbMatrix &frommatrix, SbMatrix &tomatrix)
void transformMatrixWorldToLocal (const SbMatrix &frommatrix, SbMatrix &tomatrix)
void transformMatrixToLocalSpace (const SbMatrix &frommatrix, SbMatrix &tomatrix, const SbName &fromspacepartname)
void setMotionMatrix (const SbMatrix &newmatrix)
void valueChanged (void)
const SbMatrix & getStartMotionMatrix (void)
virtual void saveStartParameters (void)
const SoPath * getPickPath (void) const
const SoEvent * getEvent (void) const
SoPath * createPathToThis (void)
const SoPath * getSurrogatePartPickedOwner (void) const
const SbName & getSurrogatePartPickedName (void) const
const SoPath * getSurrogatePartPickedPath (void) const
void setStartingPoint (const SoPickedPoint *newpoint)
void setStartingPoint (const SbVec3f &newpoint)
const SbViewVolume & getViewVolume (void)
void setViewVolume (const SbViewVolume &vol)
const SbViewportRegion & getViewportRegion (void)
void setViewportRegion (const SbViewportRegion &reg)
SoHandleEventAction * getHandleEventAction (void) const
void setHandleEventAction (SoHandleEventAction *newAction)
void setTempPathToThis (const SoPath *somethingclose)
virtual void grabEventsSetup (void)
virtual void grabEventsCleanup (void)
void workFieldsIntoTransform (SbMatrix &mtx)
void setFrontOnProjector (ProjectorFrontSetting newval)
ProjectorFrontSetting getFrontOnProjector (void) const

The way that list just keeps going 😭 callbacks for start, motion, finish, value-changed, other-events β€” add them, remove them, the whole group chat. Periodt.


🧚 Public Member Functions inherited from SoInteractionKit

SoInteractionKit (void)
virtual SbBool setPartAsPath (const SbName &partname, SoPath *path)
virtual SbBool setPartAsDefault (const SbName &partname, SoNode *node, SbBool onlyifdefault=1)
virtual SbBool setPartAsDefault (const SbName &partname, const SbName &nodename, SbBool onlyifdefault=1)
SbBool isPathSurrogateInMySubgraph (const SoPath *path, SoPath *&pathToOwner, SbName &surrogatename, SoPath *&surrogatepath, SbBool fillargs=1)
SbBool isPathSurrogateInMySubgraph (const SoPath *path)
virtual SbBool setPart (const SbName &partname, SoNode *from)

Surrogate parts, default parts, setting parts β€” it's giving very "I have a guy for every slot" energy. πŸ’…


πŸ¦‹ Public Member Functions inherited from SoBaseKit

SoBaseKit (void)
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)
SbBool set (const char *namevaluepairliststring)
SbBool set (const char *partnamestring, const char *parameterstring)
virtual void doAction (SoAction *action)
virtual SoChildList * getChildren (void) const
void printDiagram (void)
void printSubDiagram (const SbName &rootname, int level)
void printTable (void)
virtual void addWriteReference (SoOutput *out, SbBool isfromfield=0)
SbBool forceChildDrivenWriteRefs (SoOutput *out)

printDiagram and printTable?? lowkey iconic, she will literally draw you a picture of herself. πŸŽ€


🌈 Public Member Functions inherited from SoNode

void setOverride (const SbBool state)
SbBool isOverride (void) const
void setNodeType (const NodeType type)
NodeType getNodeType (void) const
virtual SoNode * copy (SbBool copyconnections=0) const
virtual SbBool affectsState (void) const
virtual void GLRenderBelowPath (SoGLRenderAction *action)
virtual void GLRenderInPath (SoGLRenderAction *action)
virtual void GLRenderOffPath (SoGLRenderAction *action)
virtual void pick (SoPickAction *action)
virtual void audioRender (SoAudioRenderAction *action)
virtual void startNotify (void)
virtual void notify (SoNotList *l)
uint32_t getNodeId (void) const
virtual void writeInstance (SoOutput *out)
virtual SoFieldContainer * copyThroughConnection (void) const

Note the =0 default on copy's copyconnections and don't come for me about it, it's literally in the source. πŸ™ˆ


πŸ’œ Public Member Functions inherited from SoFieldContainer

void setToDefaults (void)
SbBool hasDefaultValues (void) const
SbBool fieldsAreEqual (const SoFieldContainer *container) const
void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=0)
SbBool set (const char *const fielddata)
void get (SbString &fielddata)
virtual int getFields (SoFieldList &l) const
virtual int getAllFields (SoFieldList &l) const
virtual SoField * getField (const SbName &name) const
virtual SoField * getEventIn (const SbName &name) const
virtual SoField * getEventOut (const SbName &name) const
SbBool getFieldName (const SoField *const field, SbName &name) const
SbBool enableNotify (const SbBool flag)
SbBool isNotifyEnabled (void) const
SbBool set (const char *fielddata, SoInput *in)
void get (SbString &fielddata, SoOutput *out)
virtual SbBool validateNewFieldValue (SoField *field, void *newval)
SbBool getIsBuiltIn (void) const
void setUserData (void *userdata) const
void * getUserData (void) const

Two sets and two gets because of course there are, she contains multitudes. ⭐


🌸 Public Member Functions inherited from SoBase

void ref (void) const
void unref (void) const
void unrefNoDelete (void) const
int32_t getRefCount (void) const
void touch (void)
SbBool isOfType (SoType type) const
virtual SbName getName (void) const
virtual void setName (const SbName &newname)
void addAuditor (void *const auditor, const SoNotRec::Type type)
void removeAuditor (void *const auditor, const SoNotRec::Type type)
const SoAuditorList & getAuditors (void) const
SbBool shouldWrite (void)
void assertAlive (void) const

ref / unref / unrefNoDelete β€” the reference-counting love triangle, we've all been there. πŸ’€


πŸ‘‘ Static Public Member Functions πŸ‘‘

Her own statics:

static SoType getClassTypeId (void)
static const SoNodekitCatalog * getClassNodekitCatalog (void)
static void initClass (void)

🫢 Static Public Member Functions inherited from SoDragger

static SoType getClassTypeId (void)
static const SoNodekitCatalog * getClassNodekitCatalog (void)
static void setMinScale (float newminscale)
static float getMinScale (void)
static void workValuesIntoTransform (SbMatrix &mtx, const SbVec3f *translationptr, const SbRotation *rotationptr, const SbVec3f *scalefactorptr, const SbRotation *scaleorientationptr, const SbVec3f *centerptr)
static void getTransformFast (SbMatrix &mtx, SbVec3f &translation, SbRotation &rotation, SbVec3f &scalefactor, SbRotation &scaleorientation, const SbVec3f &center)
static void getTransformFast (SbMatrix &mtx, SbVec3f &translation, SbRotation &rotation, SbVec3f &scalefactor, SbRotation &scaleorientation)
static SbMatrix appendTranslation (const SbMatrix &mtx, const SbVec3f &translation, const SbMatrix *conversion=NULL)
static SbMatrix appendScale (const SbMatrix &mtx, const SbVec3f &scale, const SbVec3f &scalecenter, const SbMatrix *conversion=NULL)
static SbMatrix appendRotation (const SbMatrix &mtx, const SbRotation &rot, const SbVec3f &rotcenter, const SbMatrix *conversion=NULL)
static void initClass (void)
static void initClasses (void)

Two getTransformFast overloads (one takes a center, one doesn't) and every single append* has that conversion=NULL trailing default. Chef's kiss consistency. 😌


🧚 Static Public Member Functions inherited from SoInteractionKit

static SoType getClassTypeId (void)
static const SoNodekitCatalog * getClassNodekitCatalog (void)
static void initClass (void)
static void setSwitchValue (SoNode *node, const int newVal)

πŸ¦‹ Static Public Member Functions inherited from SoBaseKit

static SoType getClassTypeId (void)
static void initClass (void)
static const SoNodekitCatalog * getClassNodekitCatalog (void)
static SbBool isSearchingChildren (void)
static void setSearchingChildren (const SbBool newval)
static SoNode * typeCheck (const SbName &partname, const SoType &parttype, SoNode *node)

🌈 Static Public Member Functions inherited from SoNode

static uint32_t getCompatibilityTypes (const SoType &nodetype)
static SoType getClassTypeId (void)
static SoNode * getByName (const SbName &name)
static int getByName (const SbName &name, SoNodeList &l)
static void initClass (void)
static void initClasses (void)
static uint32_t getNextNodeId (void)
static int getActionMethodIndex (const SoType type)
static void getBoundingBoxS (SoAction *action, SoNode *node)
static void GLRenderS (SoAction *action, SoNode *node)
static void callbackS (SoAction *action, SoNode *node)
static void getMatrixS (SoAction *action, SoNode *node)
static void handleEventS (SoAction *action, SoNode *node)
static void pickS (SoAction *action, SoNode *node)
static void rayPickS (SoAction *action, SoNode *node)
static void searchS (SoAction *action, SoNode *node)
static void writeS (SoAction *action, SoNode *node)
static void audioRenderS (SoAction *action, SoNode *node)
static void getPrimitiveCountS (SoAction *action, SoNode *node)

The whole ...S squad β€” every action gets its static counterpart, and yeah, getByName is also overloaded. Because one is never enough, apparently. πŸ”₯


and that's literally just the SYNOPSIS, bestie β€” we haven't even gotten to the actual descriptions yet πŸ’€

🌟 Static Public Member Functions inherited from SoFieldContainer

Your girl SoTranslate2Dragger didn't come into this world alone, bestie β€” she inherited a whole little family of statics. Here they all are, no skips, no cuts:

  • static void initClass (void) β€” the classic setup ritual πŸ’…
  • static SoType getClassTypeId (void) β€” hands you the class type id
  • static void initCopyDict (void) β€” spins up the copy dictionary
  • static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy) β€” books a copy into the ledger, orig to copy
  • static SoFieldContainer * checkCopy (const SoFieldContainer *orig) β€” checks up on a copy
  • static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections) β€” hunts the copy down, and yes copyconnections is part of the ask
  • static void copyDone (void) β€” that's a wrap on the copying 🎬

🌸 Static Public Member Functions inherited from SoBase

The origin-story statics, fr fr:

  • static void initClass (void) β€” setup, again, because every layer does it
  • static SoType getClassTypeId (void) β€” the type id, served fresh
  • static void addName (SoBase *const base, const char *const name) β€” sticks name onto base
  • static void removeName (SoBase *const base, const char *const name) β€” takes it right back off
  • static void incrementCurrentWriteCounter (void) β€” bump that write counter ⬆️
  • static void decrementCurrentWriteCounter (void) β€” and back down ⬇️
  • static SoBase * getNamedBase (const SbName &name, SoType type) β€” name plus type, gets you a base
  • static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type) β€” same energy but plural, dumps into baselist, returns an int
  • static SbBool read (SoInput *in, SoBase *&base, SoType expectedtype) β€” reading time, in in, base out, expectedtype as the vibe check
  • static void setInstancePrefix (const SbString &c) β€” sets the instance prefix to c
  • static void setTraceRefs (SbBool trace) β€” flips ref tracing with trace
  • static SbBool getTraceRefs (void) β€” tells you where ref tracing stands
  • static SbBool connectRoute (SoInput *in, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname) β€” wires a route from fromnodename/fromfieldname to tonodename/tofieldname, through in
  • static SbBool readRoute (SoInput *in) β€” reads a route out of in

πŸ‘‘ Public Attributes

  • SoSFVec3f translation β€” the main-character field, lowkey. A vector field holding the translation. This is the thing the dragger is dragging around, no cap.

πŸ’– Public Attributes inherited from SoDragger

  • SoSFBool isActive β€” boolean, telling you whether the dragger is currently active

✨ Public Attributes inherited from SoInteractionKit

  • SoSFEnum renderCaching β€” enum switch for render caching
  • SoSFEnum boundingBoxCaching β€” enum switch for bounding box caching
  • SoSFEnum renderCulling β€” enum switch for render culling
  • SoSFEnum pickCulling β€” enum switch for pick culling

πŸ› οΈ Protected Member Functions

  • virtual const SoFieldData * getFieldData (void) const β€” returns the field data, const and proud
  • ~SoTranslate2Dragger () β€” the destructor, she's protected, don't touch πŸ™ˆ
  • virtual SbBool setUpConnections (SbBool onoff, SbBool doitalways=0) β€” sets up (or tears down) connections; onoff decides the direction, doitalways defaults to 0
  • void dragStart (void) β€” fires when the drag begins
  • void drag (void) β€” the dragging itself, every motion step
  • void dragFinish (void) β€” and the moment the drag is done πŸŽ€

πŸ¦‹ Protected Member Functions inherited from SoDragger

  • SoDragger (void) β€” constructor
  • virtual ~SoDragger () β€” destructor
  • SbVec2f getNormalizedLocaterPosition (void) β€” normalized locater position as an SbVec2f
  • SbVec2s getLocaterPosition (void) β€” locater position as an SbVec2s
  • SbVec2s getStartLocaterPosition (void) const β€” where the locater was when it all started
  • void setStartLocaterPosition (SbVec2s p) β€” sets that start position to p
  • SbBool isAdequateConstraintMotion (void) β€” is the constraint motion adequate? returns an SbBool
  • virtual SbBool shouldGrabBasedOnSurrogate (const SoPath *pickpath, const SoPath *surrogatepath) β€” should it grab, judged by the surrogate, using pickpath and surrogatepath
  • void setCameraInfo (SoAction *action) β€” stashes camera info off action
  • virtual void handleEvent (SoHandleEventAction *ha) β€” event handling, ha in hand
  • void transferMotion (SoDragger *child) β€” passes the motion down to child
  • void setIgnoreInBbox (SbBool newval) β€” sets ignore-in-bbox to newval
  • SbBool isIgnoreInBbox (void) β€” are we ignoring it in the bbox or not
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action) β€” bbox retrieval via action
  • void setActiveChildDragger (SoDragger *newchilddragger) β€” makes newchilddragger the active child dragger
  • SoDragger * getActiveChildDragger (void) const β€” and this one gives her back to you
  • virtual void setDefaultOnNonWritingFields (void) β€” defaults on the non-writing fields
  • void updateDraggerCache (const SoPath *path) β€” refreshes the dragger cache along path

🌈 Protected Member Functions inherited from SoInteractionKit

  • virtual ~SoInteractionKit () β€” destructor
  • virtual void copyContents (const SoFieldContainer *fromFC, SbBool copyConnections) β€” copies contents over from fromFC, copyConnections says whether connections come too
  • virtual SbBool setPart (const int partNum, SoNode *node) β€” sets part number partNum to node
  • virtual SbBool readInstance (SoInput *in, unsigned short flags) β€” reads an instance from in with flags
  • virtual SbBool setAnyPartAsDefault (const SbName &partname, SoNode *node, SbBool anypart=1, SbBool onlyifdefault=1) β€” defaults partname to node; anypart and onlyifdefault both default to 1
  • virtual SbBool setAnyPartAsDefault (const SbName &partname, const SbName &nodename, SbBool anypart=1, SbBool onlyifdefault=1) β€” same deal but you name the node by name, nodename; again anypart=1, onlyifdefault=1
  • SbBool setAnySurrogatePath (const SbName &name, SoPath *path, SbBool leafcheck=0, SbBool publiccheck=0) β€” sets the surrogate path for name to path, with leafcheck=0 and publiccheck=0 as the defaults
  • void connectSeparatorFields (SoSeparator *dest, SbBool onOff) β€” connects separator fields to dest, toggled by onOff

πŸ“ Protected Member Functions inherited from SoBaseKit

  • virtual ~SoBaseKit () β€” destructor
  • virtual SoNode * addToCopyDict (void) const β€” adds itself to the copy dictionary, const
  • SoGroup * getContainerNode (const SbName &listname, SbBool makeifneeded=1) β€” grabs the container node for listname; makeifneeded defaults to 1
  • virtual SoNode * getAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0) β€” gets any part named partname, with makeifneeded, leafcheck=0, publiccheck=0
  • virtual SoNodeKitPath * createPathToAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0, const SoPath *pathtoextend=NULL) β€” builds a path to any part; leafcheck=0, publiccheck=0, pathtoextend=NULL
  • virtual SbBool setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=1) β€” sets any part partname from from, anypart defaulting to 1
  • void createNodekitPartsList (void) β€” builds the nodekit parts list
  • void createFieldList (void) β€” builds the field list
  • virtual void createDefaultParts (void) β€” builds the default parts
  • const SoNodekitParts * getNodekitPartsList (void) const β€” returns the nodekit parts list
  • const SbList< SoSFNode * > & getCatalogInstances (void) const β€” returns the catalog instances
  • void catalogError (void) β€” the catalog oopsie handler πŸ’€
  • void countMyFields (SoOutput *out) β€” counts the fields into out

πŸ’œ Protected Member Functions inherited from SoNode

  • SoNode (void) β€” constructor
  • virtual ~SoNode () β€” destructor

πŸŽ€ Protected Member Functions inherited from SoFieldContainer

  • SoFieldContainer (void) β€” constructor
  • ~SoFieldContainer () β€” destructor

🌟 Protected Member Functions inherited from SoBase

  • SoBase (void) β€” constructor
  • virtual ~SoBase () β€” destructor
  • virtual void destroy (void) β€” destruction duties
  • SbBool hasMultipleWriteRefs (void) const β€” does it have multiple write refs? const answer
  • SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const β€” writes the header to out, with isgroup and isengine
  • void writeFooter (SoOutput *out) const β€” writes the footer to out
  • virtual const char * getFileFormatName (void) const β€” hands back the file format name

⭐ Static Protected Member Functions

  • static const SoFieldData ** getFieldDataPtr (void) β€” pointer-to-pointer to the field data
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void) β€” pointer-to-pointer to the class nodekit catalog
  • static void startCB (void *f, SoDragger *d) β€” the start callback, f and d
  • static void motionCB (void *f, SoDragger *d) β€” the motion callback
  • static void finishCB (void *f, SoDragger *d) β€” the finish callback
  • static void metaKeyChangeCB (void *f, SoDragger *d) β€” the meta key change callback
  • static void fieldSensorCB (void *f, SoSensor *s) β€” the field sensor callback
  • static void valueChangedCB (void *f, SoDragger *d) β€” the value changed callback

🫢 Static Protected Member Functions inherited from SoDragger

  • static const SoFieldData ** getFieldDataPtr (void) β€” pointer-to-pointer to the field data
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void) β€” pointer-to-pointer to the class nodekit catalog
  • static void childTransferMotionAndValueChangedCB (void *, SoDragger *) β€” child transfer motion and value changed callback, all in one
  • static void childValueChangedCB (void *, SoDragger *) β€” child value changed callback
  • static void childStartCB (void *, SoDragger *) β€” child start callback
  • static void childMotionCB (void *, SoDragger *) β€” child motion callback
  • static void childFinishCB (void *, SoDragger *) β€” child finish callback
  • static void childOtherEventCB (void *, SoDragger *) β€” the child "other event" callback

🌸 Static Protected Member Functions inherited from SoInteractionKit

  • static const SoFieldData ** getFieldDataPtr (void) β€” pointer-to-pointer to the field data
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void) β€” pointer-to-pointer to the class nodekit catalog
  • static void readDefaultParts (const char *fileName, const char defaultBuffer[], int defBufSize) β€” reads default parts from fileName, out of defaultBuffer[], sized defBufSize
  • static void fieldSensorCB (void *, SoSensor *) β€” the field sensor callback

🧚 Static Protected Member Functions inherited from SoBaseKit

  • static const SoFieldData ** getFieldDataPtr (void) β€” pointer-to-pointer to the field data
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void) β€” pointer-to-pointer to the class nodekit catalog

πŸ’… Static Protected Member Functions inherited from SoNode

  • static const SoFieldData ** getFieldDataPtr (void) β€” pointer-to-pointer to the field data
  • static void setNextActionMethodIndex (int index) β€” sets the next action method index to index
  • static int getNextActionMethodIndex (void) β€” gets that index back
  • static void incNextActionMethodIndex (void) β€” bumps it up
  • static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask) β€” sets compatibility types for nodetype with bitmask

🌈 Static Protected Member Functions inherited from SoBase

  • static uint32_t getCurrentWriteCounter (void) β€” the current write counter, as a uint32_t
  • static void staticDataLock (void) β€” locks the static data πŸ”’
  • static void staticDataUnlock (void) β€” unlocks it πŸ”“

πŸ”₯ Protected Attributes

  • SoSFNode axisFeedbackSwitch β€” node field for the axis feedback switch
  • SoSFNode feedback β€” the feedback node
  • SoSFNode feedbackActive β€” feedback, but the active one
  • SoSFNode feedbackSwitch β€” the feedback switch node
  • SoSFNode translator β€” the translator node
  • SoSFNode translatorActive β€” the active translator node
  • SoSFNode translatorSwitch β€” the translator switch node
  • SoSFNode xAxisFeedback β€” X-axis feedback node
  • SoSFNode yAxisFeedback β€” Y-axis feedback node
  • SoFieldSensor * fieldSensor β€” pointer to the field sensor
  • SbVec3f worldRestartPt β€” the world restart point
  • SbPlaneProjector * planeProj β€” pointer to the plane projector

πŸ‘‘ Protected Attributes inherited from SoDragger

  • SoSFNode motionMatrix β€” the motion matrix node field

πŸŽ€ Protected Attributes inherited from SoInteractionKit

  • SoSFNode geomSeparator β€” the geometry separator node field
  • SoSFNode topSeparator β€” the top separator node field
  • SoFieldSensor * fieldSensor β€” pointer to the field sensor
  • SoSeparator * oldTopSep β€” pointer to the old top separator

πŸ¦‹ Protected Attributes inherited from SoBaseKit

  • SoSFNode callbackList β€” the callback list node field
  • SoChildList * children β€” pointer to the child list
  • SbBool connectionsSetUp β€” have the connections been set up or nah

⭐ Protected Attributes inherited from SoNode

  • uint32_t uniqueId β€” the unique id, as a uint32_t

πŸ’– Protected Attributes inherited from SoFieldContainer

  • SbBool isBuiltIn β€” is it built in? boolean says yes or no

🌟 Additional Inherited Members

🫢 Public Types inherited from SoDragger

  • enum ProjectorFrontSetting { FRONT, BACK, USE_PICK } β€” three moods: FRONT, BACK, and USE_PICK

✨ Public Types inherited from SoInteractionKit

  • enum CacheEnabled { OFF, ON, AUTO } β€” OFF, ON, or AUTO, pick your fighter

πŸ’« Public Types inherited from SoNode

  • enum NodeType { INVENTOR = 0x0000, VRML1 = 0x0001, VRML2 = 0x0002, INVENTOR_1 = 0x0004, INVENTOR_2_0 = 0x0008, INVENTOR_2_1 = 0x0010, INVENTOR_2_5 = 0x0020, INVENTOR_2_6 = 0x0040, COIN_1_0 = 0x0080, COIN_2_0 = 0x0100, EXTENSION = 0x0200, COIN_2_2 = 0x0400, COIN_2_3 = 0x0800, COIN_2_4 = 0x1000, INVENTOR_5_0 = 0x2000, COIN_2_5 = 0x4000 } β€” the full node type lineup, every single value preserved, do not lose a single hex digit bestie

🧚 Protected Types inherited from SoBase

  • enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 } β€” two flags and two flags only: IS_ENGINE and IS_GROUP

🌈 Static Protected Attributes inherited from SoNode

  • static uint32_t nextUniqueId = 0 β€” starts at 0
  • static int nextActionMethodIndex = 0 β€” also starts at 0

πŸ’– Detailed Description

Okay so the whole moment here: the SoTranslate2Dragger class provides a mechanism for the end-user to translate in a plane. That's it, that's the gig. 🫢

Here's how the dragger looks with its default geometry in the inactive state:

πŸ“Έ picture this: the dragger, default geometry, just sitting there inactive, minding her business

Use this dragger to allow the end-user of your application to translate along the X-axis and the Y-axis at the same time, ie freely inside a 3D plane. (Use a transformation node in front of the dragger to position it and re-orient it to translate in any plane.)

And the lil party trick: by holding down a SHIFT key, the end-user can temporarily constrain the dragger to a single one of the two axes. Constraint queen behavior, honestly. πŸ‘‘

πŸ‘€ See also

  • SoTranslate1Dragger
  • SoDragPointDragger

πŸŽ€ Constructor & Destructor Documentation πŸŽ€

SoTranslate2Dragger::SoTranslate2Dragger (void )

Default constructor, bestie πŸ’– β€” it sets up the dragger nodekit catalog with all the interaction and feedback geometry. Like, the whole vibe is prepped and ready.

Node kit structure (new entries versus parent class marked with arrow prefix):

CLASS SoTranslate2Dragger
-->"this"
      "callbackList"
      "topSeparator"
         "motionMatrix"
         "geomSeparator"
-->         "translatorSwitch"
-->            "translator"
-->            "translatorActive"
-->         "feedbackSwitch"
-->            "feedback"
-->            "feedbackActive"
-->         "axisFeedbackSwitch"
-->            "xAxisFeedback"
-->            "yAxisFeedback"

(See SoBaseKit::printDiagram() for information about the output formatting.)

Detailed information on catalog parts:

CLASS SoTranslate2Dragger
PVT   "this",  SoTranslate2Dragger  ---
      "callbackList",  SoNodeKitListPart [ SoCallback, SoEventCallback ]
PVT   "topSeparator",  SoSeparator  ---
PVT   "motionMatrix",  SoMatrixTransform  ---
PVT   "geomSeparator",  SoSeparator  ---
PVT   "translatorSwitch",  SoSwitch  ---
      "translator",  SoSeparator  ---
      "translatorActive",  SoSeparator  ---
PVT   "feedbackSwitch",  SoSwitch  ---
      "feedback",  SoSeparator  ---
      "feedbackActive",  SoSeparator  ---
PVT   "axisFeedbackSwitch",  SoSwitch  ---
      "xAxisFeedback",  SoSeparator  ---
      "yAxisFeedback",  SoSeparator  ---

(See SoBaseKit::printTable() for information about the output formatting.)

References SoDragger::addFinishCallback(), SoDragger::addMotionCallback(), SoDragger::addOtherEventCallback(), SoDragger::addStartCallback(), SoDragger::addValueChangedCallback(), fieldSensor, fieldSensorCB(), finishCB(), metaKeyChangeCB(), motionCB(), planeProj, SoInteractionKit::readDefaultParts(), SoInteractionKit::setPartAsDefault(), SoInteractionKit::setSwitchValue(), setUpConnections(), SoTranslate2Dragger(), startCB(), translation, and valueChangedCB().

Referenced by fieldSensorCB(), finishCB(), getFieldData(), metaKeyChangeCB(), motionCB(), SoTranslate2Dragger(), startCB(), and valueChangedCB().


SoTranslate2Dragger::~SoTranslate2Dragger () [protected]

Protected destructor 🫢.

(Dragger classes are derived from SoBase, so they are reference counted and automatically destroyed when their reference count goes to 0. No cap, that's just how it works.)

References fieldSensor, and planeProj.


✨ Member Function Documentation ✨

SoType SoTranslate2Dragger::getTypeId (void ) const [virtual]

Returns the type identification of an object derived from a class inheriting SoBase. This is used for run-time type checking and "downward" casting. iykyk πŸ’…

Usage example:

void foo(SoNode * node)
{
  if (node->getTypeId() == SoFile::getClassTypeId()) {
    SoFile * filenode = (SoFile *)node;  // safe downward cast, knows the type
  }
  else if (node->getTypeId().isOfType(SoGroup::getClassTypeId())) {
    SoGroup * group = (SoGroup *)node;  // safe downward cast, knows the type
  }
}

For application programmers wanting to extend the library with new nodes, engines, nodekits, draggers or others: this method needs to be overridden in all subclasses. This is typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the pre-defined macros available through for instance Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on.

For more information on writing Coin extensions, see the class documentation of the toplevel superclasses for the various class groups.

Reimplemented from SoDragger.


const SoFieldData * SoTranslate2Dragger::getFieldData (void ) const [protected], [virtual]

Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL.

Reimplemented from SoDragger.

References SoTranslate2Dragger().


const SoNodekitCatalog * SoTranslate2Dragger::getNodekitCatalog (void ) const [virtual]

Returns the nodekit catalog which defines the layout of this class' kit. Iconic. πŸ‘‘

Reimplemented from SoDragger.


SbBool SoTranslate2Dragger::setUpConnections (SbBool onoff, SbBool doitalways = 0) [protected], [virtual]

Sets up all internal connections for instances of this class.

(This method will usually not be of interest to the application programmer, unless you want to extend the library with new custom nodekits or dragger classes. If so, see the SoBaseKit class documentation.)

Reimplemented from SoInteractionKit.

References SoBaseKit::connectionsSetUp, fieldSensor, fieldSensorCB(), SoBaseKit::setUpConnections(), and translation.

Referenced by SoTranslate2Dragger().


void SoTranslate2Dragger::startCB (void * f, SoDragger * d) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. lowkey just saying.

References dragStart(), SoDragger::SoDragger(), and SoTranslate2Dragger().

Referenced by SoTranslate2Dragger().


void SoTranslate2Dragger::motionCB (void * f, SoDragger * d) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

References drag(), SoDragger::SoDragger(), and SoTranslate2Dragger().

Referenced by SoTranslate2Dragger().


void SoTranslate2Dragger::finishCB (void * f, SoDragger * d) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

References dragFinish(), SoDragger::SoDragger(), and SoTranslate2Dragger().

Referenced by SoTranslate2Dragger().


void SoTranslate2Dragger::metaKeyChangeCB (void * f, SoDragger * d) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

References drag(), SoDragger::getEvent(), SoDragger::isActive, SoDragger::SoDragger(), and SoTranslate2Dragger().

Referenced by SoTranslate2Dragger().


void SoTranslate2Dragger::fieldSensorCB (void * d, SoSensor * s) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

References SoDragger::getMotionMatrix(), SoDragger::setMotionMatrix(), SoTranslate2Dragger(), and translation.

Referenced by setUpConnections(), and SoTranslate2Dragger().


void SoTranslate2Dragger::valueChangedCB (void * f, SoDragger * d) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

References SoFieldSensor::attach(), SoFieldSensor::detach(), fieldSensor, SoDragger::getMotionMatrix(), SoDragger::SoDragger(), SoTranslate2Dragger(), and translation.

Referenced by SoTranslate2Dragger().


void SoTranslate2Dragger::dragStart (void ) [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Called when dragger is selected (picked) by the user. main character energy πŸŽ€

References SoDragger::getEvent(), SoDragger::getLocalStartingPoint(), SoDragger::getLocalToWorldMatrix(), SbMatrix::multVecMatrix(), planeProj, SoInteractionKit::setSwitchValue(), and worldRestartPt.

Referenced by startCB().


void SoTranslate2Dragger::drag (void ) [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Called when user drags the mouse after picking the dragger. πŸ–±οΈβœ¨

References SoDragger::appendTranslation(), SoDragger::getEvent(), SoDragger::getLocalStartingPoint(), SoDragger::getLocalToWorldMatrix(), SoDragger::getNormalizedLocaterPosition(), SoDragger::getStartMotionMatrix(), SoDragger::getViewVolume(), SoDragger::getWorldToLocalMatrix(), SoDragger::isAdequateConstraintMotion(), SbMatrix::multVecMatrix(), planeProj, SoDragger::setMotionMatrix(), SoDragger::setStartingPoint(), SoDragger::setStartLocaterPosition(), SoInteractionKit::setSwitchValue(), and worldRestartPt.

Referenced by metaKeyChangeCB(), and motionCB().


void SoTranslate2Dragger::dragFinish (void ) [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Called when mouse button is released after picking and interacting with the dragger. πŸ¦‹

References SoInteractionKit::setSwitchValue().

Referenced by finishCB().


πŸ’– Member Data Documentation πŸ’–

SoSFVec3f SoTranslate2Dragger::translation

Continuously updated to contain the current translation from the dragger's local origo position. Only the first two components (the X and Y values) can be changed by the end-user. Only X and Y, bestie β€” Z is not invited to the party. πŸ’…

The application programmer applying this dragger in his code should connect the relevant node fields in the scene to this field to make it follow the dragger.

Referenced by fieldSensorCB(), setUpConnections(), SoTranslate2Dragger(), and valueChangedCB().


SoFieldSensor* SoTranslate2Dragger::fieldSensor [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Referenced by setUpConnections(), SoTranslate2Dragger(), valueChangedCB(), and ~SoTranslate2Dragger().


SbVec3f SoTranslate2Dragger::worldRestartPt [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Referenced by drag(), and dragStart().


SbPlaneProjector* SoTranslate2Dragger::planeProj [protected]

The SbPlaneProjector instance used for projecting from 2D mouse cursor positions to 3D points. Not me being obsessed with this little projector. 😭✨

Referenced by drag(), dragStart(), SoTranslate2Dragger(), and ~SoTranslate2Dragger().


🌸 Author 🌸

Generated automatically by Doxygen for Coin from the source code.


And that's the whole page, bestie! 🫢 This absolute icon of a manpage is from Coin, Version 2.5.0, and it's the SoTranslate2Dragger(3) page. Slay, read it, use it, no cap. πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from