SoHandleBoxDragger(3)
πΈ SoHandleBoxDragger πΈ
okay so before we even get into it β hi bestie, this is the SoHandleBoxDragger(3) page, from the Library Functions Manual. She's a whole vibe and she's about to hand you interactive scaling AND translation in one gorgeous package. let's get into it π
β¨ NAME β¨
SoHandleBoxDragger β the class that gives you support for interactive scaling and translation. that's it, that's the girl. π
π¦ SYNOPSIS π¦
#include <Inventor/draggers/SoHandleBoxDragger.h>
Inherits SoDragger. (so she's got a whole family tree, and we're listing every single one of them because we love thoroughness in this house β¨)
π Public Member Functions π
virtual SoType getTypeId (void) const
virtual const SoNodekitCatalog * getNodekitCatalog (void) const
SoHandleBoxDragger (void)
π«Ά Public Member Functions inherited from SoDragger π«Ά
like, she inherits ALL of this. it's giving generous.
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 setProjectorEpsilon (const float epsilon)
float getProjectorEpsilon (void) const
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)
virtual 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 ®)
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
π§ 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=TRUE)
virtual SbBool setPartAsDefault (const SbName &partname, const SbName &nodename, SbBool onlyifdefault=TRUE)
SbBool isPathSurrogateInMySubgraph (const SoPath *path, SoPath *&pathToOwner, SbName &surrogatename, SoPath *&surrogatepath, SbBool fillargs=TRUE)
SbBool isPathSurrogateInMySubgraph (const SoPath *path)
virtual SbBool setPart (const SbName &partname, SoNode *from)
π 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=FALSE)
SbBool forceChildDrivenWriteRefs (SoOutput *out)
π 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=FALSE) 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
π 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=FALSE)
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 *input)
void get (SbString &fielddata, SoOutput *out)
virtual SbBool validateNewFieldValue (SoField *field, void *newval)
SbBool getIsBuiltIn (void) const
virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) const
void setUserData (void *userdata) const
void * getUserData (void) const
π 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
β Static Public Member Functions β
the static girlies β no instance needed, they just exist:
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 ¢er)
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)
π 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 Public Member Functions inherited from SoNode π₯
okay this one's a whole list, she's popular:
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)
and that's just the SYNOPSIS bestie π the rest is coming β stay with me, we are SO not done here π«Ά
π« Static Public Member Functions inherited from SoFieldContainer π«
bestie these are the ones your class gets handed down like vintage jeans from a cooler older cousin π«Ά
static void initClass (void)β sets the class up so the whole type system knows it existsstatic SoType getClassTypeId (void)β hands you back theSoTypefor this classstatic void cleanupClass (void)β the tidy-up-at-the-end girliestatic void initCopyDict (void)β kicks off the copy dictionarystatic void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)β files a copy under its originalstatic SoFieldContainer * checkCopy (const SoFieldContainer *orig)β "is this one already in the dict?" energystatic SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)β goes looking for the copy, connections and allstatic void copyDone (void)β copy session over, bye π
π¦ Static Public Member Functions inherited from SoBase π¦
static void initClass (void)β classic initClass, iconic, never missesstatic SoType getClassTypeId (void)β theSoTypeplease and thank youstatic void addName (SoBase *const base, const char *const name)β gives a base a namestatic void removeName (SoBase *const base, const char *const name)β takes that name right backstatic void incrementCurrentWriteCounter (void)β bumps the write counter upstatic void decrementCurrentWriteCounter (void)β bumps it back downstatic SoBase * getNamedBase (const SbName &name, SoType type)β finds a named base of a given typestatic int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)β same vibe but it collects them all intobaselistand returns a countstatic SbBool read (SoInput *input, SoBase *&base, SoType expectedtype)β reads a base in frominputstatic void setInstancePrefix (const SbString &c)β sets the instance prefix stringstatic void setTraceRefs (SbBool trace)β turns ref tracing on or offstatic SbBool getTraceRefs (void)β tells you if ref tracing is onstatic SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)β wires up a route from one node/field to anotherstatic SbBool readRoute (SoInput *input)β reads a route in
π Public Attributes π
SoSFVec3f scaleFactorβ the scale factor, a 3-float vector, doing the most β¨SoSFVec3f translationβ the translation vector, also 3 floats, also slaying
Public Attributes inherited from SoDragger
SoSFBool isActiveβ are we active rn? a bool, a mood
Public Attributes inherited from SoInteractionKit
SoSFEnum renderCachingβ render caching mode, an enumSoSFEnum boundingBoxCachingβ bounding box caching mode, an enumSoSFEnum renderCullingβ render culling mode, an enumSoSFEnum pickCullingβ pick culling mode, an enum
π Protected Member Functions π
virtual const SoFieldData * getFieldData (void) constβ the field data hookup, const-correct and unbotheredvirtual ~SoHandleBoxDragger (void)β the destructor, virtual as evervirtual SbBool setUpConnections (SbBool onoff, SbBool doitalways=FALSE)β sets up (or tears down) the connectionsvirtual void setDefaultOnNonWritingFields (void)β sets defaults on the non-writing fieldsvoid dragStart (void)β a drag begins, it's giving beginningvoid drag (void)β mid-drag, the main character momentvoid dragFinish (void)β drag's done, credits rollvoid setAllPartsActive (SbBool onoroff)β flips every part active or not, all at once
Protected Member Functions inherited from SoDragger
SoDragger (void)β the constructorvirtual ~SoDragger (void)β the destructorSbVec2f getNormalizedLocaterPosition (void)β the locater position, but normalizedSbVec2s getLocaterPosition (void)β the locater position, unnormalized, raw, unfilteredSbVec2s getStartLocaterPosition (void) constβ where the locater started, constvoid setStartLocaterPosition (SbVec2s p)β sets where the locater started topSbBool isAdequateConstraintMotion (void)β is this motion adequate for the constraint?virtual SbBool shouldGrabBasedOnSurrogate (const SoPath *pickpath, const SoPath *surrogatepath)β should we grab based on the surrogate path?void setCameraInfo (SoAction *action)β stashes camera info fromactionvirtual void handleEvent (SoHandleEventAction *ha)β handles the event, as one doesvoid transferMotion (SoDragger *child)β passes motion along to the child draggervoid setIgnoreInBbox (SbBool newval)β sets whether to ignore this in the bboxSbBool isIgnoreInBbox (void)β are we ignoring it in the bbox? asking for a friendvirtual void getBoundingBox (SoGetBoundingBoxAction *action)β fetches the bounding boxvoid setActiveChildDragger (SoDragger *newchilddragger)β sets the active child draggerSoDragger * getActiveChildDragger (void) constβ gets the active child draggervoid updateDraggerCache (const SoPath *path)β refreshes the dragger cache forpath
Protected Member Functions inherited from SoInteractionKit
virtual ~SoInteractionKit ()β destructorvirtual void copyContents (const SoFieldContainer *fromFC, SbBool copyConnections)β copies the contents over, connections optionalvirtual SbBool setPart (const int partNum, SoNode *node)β sets a part by numbervirtual SbBool readInstance (SoInput *in, unsigned short flags)β reads the instancevirtual SbBool setAnyPartAsDefault (const SbName &partname, SoNode *node, SbBool anypart=TRUE, SbBool onlyifdefault=TRUE)β sets any part as default, from a nodevirtual SbBool setAnyPartAsDefault (const SbName &partname, const SbName &nodename, SbBool anypart=TRUE, SbBool onlyifdefault=TRUE)β same thing but from a node nameSbBool setAnySurrogatePath (const SbName &name, SoPath *path, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE)β sets a surrogate pathvoid connectSeparatorFields (SoSeparator *dest, SbBool onOff)β connects the separator fields ondest
Protected Member Functions inherited from SoBaseKit
virtual ~SoBaseKit ()β destructorvirtual SoNode * addToCopyDict (void) constβ adds this to the copy dict, constSoGroup * getContainerNode (const SbName &listname, SbBool makeifneeded=TRUE)β gets the container node for a listvirtual SoNode * getAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE)β gets any part by namevirtual SoNodeKitPath * createPathToAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE, const SoPath *pathtoextend=NULL)β builds a path all the way to any partvirtual SbBool setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=TRUE)β sets any part from a nodevoid createNodekitPartsList (void)β makes the nodekit parts listvoid createFieldList (void)β makes the field listvirtual void createDefaultParts (void)β makes the default partsconst SoNodekitParts * getNodekitPartsList (void) constβ gets the nodekit parts listconst SbList< SoSFNode * > & getCatalogInstances (void) constβ gets the catalog instances listvoid catalogError (void)β the catalog error handler, we don't talk about her πvoid countMyFields (SoOutput *out)β counts the fields intoout
Protected Member Functions inherited from SoNode
SoNode (void)β constructorvirtual ~SoNode ()β destructor
Protected Member Functions inherited from SoFieldContainer
SoFieldContainer (void)β constructorvirtual ~SoFieldContainer ()β destructor
Protected Member Functions inherited from SoBase
SoBase (void)β constructorvirtual ~SoBase ()β destructorvirtual void destroy (void)β destroys itSbBool hasMultipleWriteRefs (void) constβ does it have multiple write refs?SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constβ writes the header outvoid writeFooter (SoOutput *out) constβ writes the footer outvirtual const char * getFileFormatName (void) constβ the file format name, as aconst char *
π Static Protected Member Functions π
static const SoFieldData ** getFieldDataPtr (void)β pointer to the field data pointer, don't think about it too hardstatic const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)β pointer to the class nodekit catalog pointerstatic void startCB (void *f, SoDragger *d)β the start callbackstatic void motionCB (void *f, SoDragger *d)β the motion callbackstatic void finishCB (void *f, SoDragger *d)β the finish callbackstatic void metaKeyChangeCB (void *f, SoDragger *d)β the meta-key-change callbackstatic void fieldSensorCB (void *f, SoSensor *s)β the field sensor callbackstatic void valueChangedCB (void *f, SoDragger *d)β the value-changed callback
Static Protected Member Functions inherited from SoDragger
static const SoFieldData ** getFieldDataPtr (void)β field data pointer, againstatic const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)β nodekit catalog pointer, againstatic void childTransferMotionAndValueChangedCB (void *, SoDragger *)β child callback: transfer motion and value changedstatic void childValueChangedCB (void *, SoDragger *)β child callback: value changedstatic void childStartCB (void *, SoDragger *)β child callback: startstatic void childMotionCB (void *, SoDragger *)β child callback: motionstatic void childFinishCB (void *, SoDragger *)β child callback: finishstatic void childOtherEventCB (void *, SoDragger *)β child callback: other events
Static Protected Member Functions inherited from SoInteractionKit
static const SoFieldData ** getFieldDataPtr (void)β field data pointer, encorestatic const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)β nodekit catalog pointer, encorestatic void readDefaultParts (const char *fileName, const char defaultBuffer[], int defBufSize)β reads the default parts from a file or bufferstatic void fieldSensorCB (void *, SoSensor *)β field sensor callback
Static Protected Member Functions inherited from SoBaseKit
static const SoFieldData ** getFieldDataPtr (void)β field data pointer, the remixstatic const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)β nodekit catalog pointer, the remix
Static Protected Member Functions inherited from SoNode
static const SoFieldData ** getFieldDataPtr (void)β field data pointer, part 4static void setNextActionMethodIndex (int index)β sets the next action method indexstatic int getNextActionMethodIndex (void)β gets the next action method indexstatic void incNextActionMethodIndex (void)β increments the next action method indexstatic void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)β sets compatibility types via auint32_tbitmask
Static Protected Member Functions inherited from SoBase
static uint32_t getCurrentWriteCounter (void)β the current write counter as auint32_tstatic void staticDataLock (void)β locks the static datastatic void staticDataUnlock (void)β unlocks the static data
π Protected Attributes π
okay so this is the long bit, bestie. buckle up. every single part of this dragger lives here π§
SoSFNode arrow1β arrow number oneSoSFNode arrow1Switchβ arrow one's switchSoSFNode arrow2β arrow twoSoSFNode arrow2Switchβ arrow two's switchSoSFNode arrow3β arrow threeSoSFNode arrow3Switchβ arrow three's switchSoSFNode arrow4β arrow fourSoSFNode arrow4Switchβ arrow four's switchSoSFNode arrow5β arrow fiveSoSFNode arrow5Switchβ arrow five's switchSoSFNode arrow6β arrow sixSoSFNode arrow6Switchβ arrow six's switchSoSFNode arrowTranslationβ the arrows' translationSoSFNode drawStyleβ the draw styleSoSFNode extruder1β extruder oneSoSFNode extruder1Activeβ extruder one's active flagSoSFNode extruder1Switchβ extruder one's switchSoSFNode extruder2β extruder twoSoSFNode extruder2Activeβ extruder two's active flagSoSFNode extruder2Switchβ extruder two's switchSoSFNode extruder3β extruder threeSoSFNode extruder3Activeβ extruder three's active flagSoSFNode extruder3Switchβ extruder three's switchSoSFNode extruder4β extruder fourSoSFNode extruder4Activeβ extruder four's active flagSoSFNode extruder4Switchβ extruder four's switchSoSFNode extruder5β extruder fiveSoSFNode extruder5Activeβ extruder five's active flagSoSFNode extruder5Switchβ extruder five's switchSoSFNode extruder6β extruder sixSoSFNode extruder6Activeβ extruder six's active flagSoSFNode extruder6Switchβ extruder six's switchSoSFNode surroundScaleβ the surround scaleSoSFNode translator1β translator oneSoSFNode translator1Activeβ translator one's active flagSoSFNode translator1Switchβ translator one's switchSoSFNode translator2β translator twoSoSFNode translator2Activeβ translator two's active flagSoSFNode translator2Switchβ translator two's switchSoSFNode translator3β translator threeSoSFNode translator3Activeβ translator three's active flagSoSFNode translator3Switchβ translator three's switchSoSFNode translator4β translator fourSoSFNode translator4Activeβ translator four's active flagSoSFNode translator4Switchβ translator four's switchSoSFNode translator5β translator fiveSoSFNode translator5Activeβ translator five's active flagSoSFNode translator5Switchβ translator five's switchSoSFNode translator6β translator sixSoSFNode translator6Activeβ translator six's active flagSoSFNode translator6Switchβ translator six's switchSoSFNode uniform1β uniform oneSoSFNode uniform1Activeβ uniform one's active flagSoSFNode uniform1Switchβ uniform one's switchSoSFNode uniform2β uniform twoSoSFNode uniform2Activeβ uniform two's active flagSoSFNode uniform2Switchβ uniform two's switchSoSFNode uniform3β uniform threeSoSFNode uniform3Activeβ uniform three's active flagSoSFNode uniform3Switchβ uniform three's switchSoSFNode uniform4β uniform fourSoSFNode uniform4Activeβ uniform four's active flagSoSFNode uniform4Switchβ uniform four's switchSoSFNode uniform5β uniform fiveSoSFNode uniform5Activeβ uniform five's active flagSoSFNode uniform5Switchβ uniform five's switchSoSFNode uniform6β uniform sixSoSFNode uniform6Activeβ uniform six's active flagSoSFNode uniform6Switchβ uniform six's switchSoSFNode uniform7β uniform sevenSoSFNode uniform7Activeβ uniform seven's active flagSoSFNode uniform7Switchβ uniform seven's switchSoSFNode uniform8β uniform eightSoSFNode uniform8Activeβ uniform eight's active flagSoSFNode uniform8Switchβ uniform eight's switchSoFieldSensor * translFieldSensorβ the translation field sensorSoFieldSensor * scaleFieldSensorβ the scale field sensor
Protected Attributes inherited from SoDragger
SoSFNode motionMatrixβ the motion matrix
Protected Attributes inherited from SoInteractionKit
SoSFNode geomSeparatorβ the geometry separatorSoSFNode topSeparatorβ the top separatorSoFieldSensor * fieldSensorβ the field sensorSoSeparator * oldTopSepβ the old top separator, keeping her around
Protected Attributes inherited from SoBaseKit
SoSFNode callbackListβ the callback listSoChildList * childrenβ the childrenSbBool connectionsSetUpβ are the connections set up? a whole bool for that
Protected Attributes inherited from SoNode
uint32_t uniqueIdβ auint32_tunique id, no two the same π
Protected Attributes inherited from SoFieldContainer
SbBool isBuiltInβ is it built in?
β¨ Additional Inherited Members β¨
Public Types inherited from SoDragger
enum ProjectorFrontSetting { FRONT, BACK, USE_PICK }β pick your projector front:FRONT,BACK, orUSE_PICK
Public Types inherited from SoInteractionKit
enum CacheEnabled { OFF, ON, AUTO }β caching, your choice:OFF,ON, orAUTO
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, COIN_3_0 = 0x8000, INVENTOR_6_0 = 0x10000 }β the whole node-type bitmask roster, every version of every era, all accounted for β
Protected Types inherited from SoBase
enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }β base flags:IS_ENGINEorIS_GROUP
Static Protected Attributes inherited from SoNode
static uint32_t nextUniqueId = 1β the next unique id, starting at1static int nextActionMethodIndex = 0β the next action method index, starting at0
π¦ Detailed Description π¦
Okay so bestie, meet SoHandleBoxDragger β the class that has your back for interactive scaling and translation. Both. At the same time. Multitasking queen behavior. π
Here's how the dragger looks with its default geometry in the inactive state:
(yep, there's a whole picture of it in the original docs β go peek, she's serving default geometry while inactive β¨)
A handlebox dragger is literally the move when you want the user to interact with geometry that can be scaled (uniformly or in a non-uniform way, both are valid and we don't judge) and translated in 3D. π
The dragger is built from a "cube" of interaction geometry. The end-user can click and drag any side of the cube to translate the dragger, and click and drag any of the corner or edge markers for scaling operations. Cube sides = move it, corners and edges = stretch it. Simple as. π
β¨ Constructor & Destructor Documentation β¨
πΈ SoHandleBoxDragger::SoHandleBoxDragger (void )
Default constructor, and she comes fully set up β it builds the dragger nodekit catalog with the interaction geometry and the feedback geometry. No extra assembly required, periodt. π
Node kit structure (new entries versus parent class marked with arrow prefix):
CLASS SoHandleBoxDragger
-->"this"
"callbackList"
"topSeparator"
"motionMatrix"
--> "surroundScale"
"geomSeparator"
--> "drawStyle"
--> "translator1Switch"
--> "translator1"
--> "translator1Active"
--> "translator2Switch"
--> "translator2"
--> "translator2Active"
--> "translator3Switch"
--> "translator3"
--> "translator3Active"
--> "translator4Switch"
--> "translator4"
--> "translator4Active"
--> "translator5Switch"
--> "translator5"
--> "translator5Active"
--> "translator6Switch"
--> "translator6"
--> "translator6Active"
--> "extruder1Switch"
--> "extruder1"
--> "extruder1Active"
--> "extruder2Switch"
--> "extruder2"
--> "extruder2Active"
--> "extruder3Switch"
--> "extruder3"
--> "extruder3Active"
--> "extruder4Switch"
--> "extruder4"
--> "extruder4Active"
--> "extruder5Switch"
--> "extruder5"
--> "extruder5Active"
--> "extruder6Switch"
--> "extruder6"
--> "extruder6Active"
--> "uniform1Switch"
--> "uniform1"
--> "uniform1Active"
--> "uniform2Switch"
--> "uniform2"
--> "uniform2Active"
--> "uniform3Switch"
--> "uniform3"
--> "uniform3Active"
--> "uniform4Switch"
--> "uniform4"
--> "uniform4Active"
--> "uniform5Switch"
--> "uniform5"
--> "uniform5Active"
--> "uniform6Switch"
--> "uniform6"
--> "uniform6Active"
--> "uniform7Switch"
--> "uniform7"
--> "uniform7Active"
--> "uniform8Switch"
--> "uniform8"
--> "uniform8Active"
--> "arrowTranslation"
--> "arrow1Switch"
--> "arrow1"
--> "arrow2Switch"
--> "arrow2"
--> "arrow3Switch"
--> "arrow3"
--> "arrow4Switch"
--> "arrow4"
--> "arrow5Switch"
--> "arrow5"
--> "arrow6Switch"
--> "arrow6"
(See SoBaseKit::printDiagram() for information about the output formatting.)
Six translators, six extruders, eight uniforms, six arrows β the catalog is stacked, iykyk. π
Detailed information on catalog parts:
CLASS SoHandleBoxDragger
PVT "this", SoHandleBoxDragger ---
"callbackList", SoNodeKitListPart [ SoCallback, SoEventCallback ]
PVT "topSeparator", SoSeparator ---
PVT "motionMatrix", SoMatrixTransform ---
"surroundScale", SoSurroundScale ---
PVT "geomSeparator", SoSeparator ---
PVT "drawStyle", SoDrawStyle ---
PVT "translator1Switch", SoSwitch ---
"translator1", SoSeparator ---
"translator1Active", SoSeparator ---
PVT "translator2Switch", SoSwitch ---
"translator2", SoSeparator ---
"translator2Active", SoSeparator ---
PVT "translator3Switch", SoSwitch ---
"translator3", SoSeparator ---
"translator3Active", SoSeparator ---
PVT "translator4Switch", SoSwitch ---
"translator4", SoSeparator ---
"translator4Active", SoSeparator ---
PVT "translator5Switch", SoSwitch ---
"translator5", SoSeparator ---
"translator5Active", SoSeparator ---
PVT "translator6Switch", SoSwitch ---
"translator6", SoSeparator ---
"translator6Active", SoSeparator ---
PVT "extruder1Switch", SoSwitch ---
"extruder1", SoSeparator ---
"extruder1Active", SoSeparator ---
PVT "extruder2Switch", SoSwitch ---
"extruder2", SoSeparator ---
"extruder2Active", SoSeparator ---
PVT "extruder3Switch", SoSwitch ---
"extruder3", SoSeparator ---
"extruder3Active", SoSeparator ---
PVT "extruder4Switch", SoSwitch ---
"extruder4", SoSeparator ---
"extruder4Active", SoSeparator ---
PVT "extruder5Switch", SoSwitch ---
"extruder5", SoSeparator ---
"extruder5Active", SoSeparator ---
PVT "extruder6Switch", SoSwitch ---
"extruder6", SoSeparator ---
"extruder6Active", SoSeparator ---
PVT "uniform1Switch", SoSwitch ---
"uniform1", SoSeparator ---
"uniform1Active", SoSeparator ---
PVT "uniform2Switch", SoSwitch ---
"uniform2", SoSeparator ---
"uniform2Active", SoSeparator ---
PVT "uniform3Switch", SoSwitch ---
"uniform3", SoSeparator ---
"uniform3Active", SoSeparator ---
PVT "uniform4Switch", SoSwitch ---
"uniform4", SoSeparator ---
"uniform4Active", SoSeparator ---
PVT "uniform5Switch", SoSwitch ---
"uniform5", SoSeparator ---
"uniform5Active", SoSeparator ---
PVT "uniform6Switch", SoSwitch ---
"uniform6", SoSeparator ---
"uniform6Active", SoSeparator ---
PVT "uniform7Switch", SoSwitch ---
"uniform7", SoSeparator ---
"uniform7Active", SoSeparator ---
PVT "uniform8Switch", SoSwitch ---
"uniform8", SoSeparator ---
"uniform8Active", SoSeparator ---
PVT "arrowTranslation", SoTranslation ---
PVT "arrow1Switch", SoSwitch ---
"arrow1", SoSeparator ---
PVT "arrow2Switch", SoSwitch ---
"arrow2", SoSeparator ---
PVT "arrow3Switch", SoSwitch ---
"arrow3", SoSeparator ---
PVT "arrow4Switch", SoSwitch ---
"arrow4", SoSeparator ---
PVT "arrow5Switch", SoSwitch ---
"arrow5", SoSeparator ---
PVT "arrow6Switch", SoSwitch ---
"arrow6", SoSeparator ---
(See SoBaseKit::printTable() for information about the output formatting.)
Every single part, type, and PVT flag right there. Not me memorizing the whole table... okay maybe me. π
π SoHandleBoxDragger::~SoHandleBoxDragger (void ) [protected], [virtual]
Protected destructor. π«Ά
(Dragger classes are derived from SoBase, so they are reference counted and automatically destroyed when their reference count goes to 0.)
Heads up bestie: she's protected β you don't call this one yourself. She's ref-counted and cleans herself up the moment that reference count hits zero. Self-care, honestly. π
and there's still more coming, don't go anywhere β¨
π Member Function Documentation π
β¨ SoType SoHandleBoxDragger::getTypeId (void ) const [virtual]
okay so this one returns the type identification of an object derived from a class inheriting SoBase. it's used for run-time type checking and "downward" casting. very main character energy for the type system, fr fr.
Usage example:
void foo(SoNode * node)
{
if (node->getTypeId() == SoFile::getClassTypeId()) {
SoFile * filenode = (SoFile *)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 * SoHandleBoxDragger::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.
π¦ const SoNodekitCatalog * SoHandleBoxDragger::getNodekitCatalog (void ) const [virtual]
Returns the nodekit catalog which defines the layout of this class' kit.
Reimplemented from SoDragger.
π
SbBool SoHandleBoxDragger::setUpConnections (SbBool onoff, SbBool doitalways = FALSE) [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.
π void SoHandleBoxDragger::setDefaultOnNonWritingFields (void ) [protected], [virtual]
(Be aware that this method is unlikely to be of interest to the application programmer who does not want to extend the library with new custom nodekits or draggers. If you indeed are writing extensions, see the information in the SoBaseKit class documentation.)
This is a virtual method, and the code in it should call SoField::setDefault() with argument TRUE on part fields that should not be written upon scenegraph export operations.
This is typically done when:
- field value is
NULLand part isNULLby default - it is a leaf
SoGrouporSoSeparatornode with no children - it is a leaf listpart with no children and an
SoGrouporSoSeparatorcontainer - it is a non-leaf part and it's of
SoGrouptype and all fields are at their default values
Subclasses should usually override this to do additional settings for new member fields. From the subclass, do remember to call "upwards" to your superclass' setDefaultOnNonWritingFields() method.
Reimplemented from SoDragger.
β void SoHandleBoxDragger::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.
β void SoHandleBoxDragger::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.
β void SoHandleBoxDragger::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.
β void SoHandleBoxDragger::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.
β void SoHandleBoxDragger::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.
β void SoHandleBoxDragger::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.
π₯ void SoHandleBoxDragger::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.
π₯ void SoHandleBoxDragger::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.
π₯ void SoHandleBoxDragger::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.
π void SoHandleBoxDragger::setAllPartsActive (SbBool onoroff) [protected]
Activate or deactive all dragger geometry parts.
π Member Data Documentation π
π SoSFVec3f SoHandleBoxDragger::scaleFactor
Continuously updated to contain the current vector of scaling along the X, Y and Z axes.
π SoSFVec3f SoHandleBoxDragger::translation
Continuously updated to contain the current translation from the dragger's local origo position.
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.
π§ SoFieldSensor* SoHandleBoxDragger::translFieldSensor [protected]
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.
π§ SoFieldSensor* SoHandleBoxDragger::scaleFieldSensor [protected]
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.
π Author π
Generated automatically by Doxygen for Coin from the source code.
and that's the whole vibe, bestie π this page came from Coin, version 3.1.3, and the footer's date is doing its little timestamp thing down there β you know the one. mwah πβ¨
π¦ where this page comes from
- fedora 43: Coin3-devel 3.1.3-40.fc43 Β· GPL-2.0-only
- fedora 43: Coin3-devel 3.1.3-40.fc43 Β· GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 Β· GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms