SoTranslate2Dragger(3)
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 ®)
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 ¢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)
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 idstatic void initCopyDict (void)β spins up the copy dictionarystatic void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)β books a copy into the ledger,origtocopystatic SoFieldContainer * checkCopy (const SoFieldContainer *orig)β checks up on a copystatic SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)β hunts the copy down, and yescopyconnectionsis part of the askstatic 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 itstatic SoType getClassTypeId (void)β the type id, served freshstatic void addName (SoBase *const base, const char *const name)β sticksnameontobasestatic void removeName (SoBase *const base, const char *const name)β takes it right back offstatic void incrementCurrentWriteCounter (void)β bump that write counter β¬οΈstatic void decrementCurrentWriteCounter (void)β and back down β¬οΈstatic SoBase * getNamedBase (const SbName &name, SoType type)β name plustype, gets you a basestatic int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)β same energy but plural, dumps intobaselist, returns anintstatic SbBool read (SoInput *in, SoBase *&base, SoType expectedtype)β reading time,inin,baseout,expectedtypeas the vibe checkstatic void setInstancePrefix (const SbString &c)β sets the instance prefix tocstatic void setTraceRefs (SbBool trace)β flips ref tracing withtracestatic SbBool getTraceRefs (void)β tells you where ref tracing standsstatic SbBool connectRoute (SoInput *in, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)β wires a route fromfromnodename/fromfieldnametotonodename/tofieldname, throughinstatic SbBool readRoute (SoInput *in)β reads a route out ofin
π 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 cachingSoSFEnum boundingBoxCachingβ enum switch for bounding box cachingSoSFEnum renderCullingβ enum switch for render cullingSoSFEnum 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;onoffdecides the direction,doitalwaysdefaults to0void dragStart (void)β fires when the drag beginsvoid drag (void)β the dragging itself, every motion stepvoid dragFinish (void)β and the moment the drag is done π
π¦ Protected Member Functions inherited from SoDragger
SoDragger (void)β constructorvirtual ~SoDragger ()β destructorSbVec2f getNormalizedLocaterPosition (void)β normalized locater position as anSbVec2fSbVec2s getLocaterPosition (void)β locater position as anSbVec2sSbVec2s getStartLocaterPosition (void) constβ where the locater was when it all startedvoid setStartLocaterPosition (SbVec2s p)β sets that start position topSbBool isAdequateConstraintMotion (void)β is the constraint motion adequate? returns anSbBoolvirtual SbBool shouldGrabBasedOnSurrogate (const SoPath *pickpath, const SoPath *surrogatepath)β should it grab, judged by the surrogate, usingpickpathandsurrogatepathvoid setCameraInfo (SoAction *action)β stashes camera info offactionvirtual void handleEvent (SoHandleEventAction *ha)β event handling,hain handvoid transferMotion (SoDragger *child)β passes the motion down tochildvoid setIgnoreInBbox (SbBool newval)β sets ignore-in-bbox tonewvalSbBool isIgnoreInBbox (void)β are we ignoring it in the bbox or notvirtual void getBoundingBox (SoGetBoundingBoxAction *action)β bbox retrieval viaactionvoid setActiveChildDragger (SoDragger *newchilddragger)β makesnewchilddraggerthe active child draggerSoDragger * getActiveChildDragger (void) constβ and this one gives her back to youvirtual void setDefaultOnNonWritingFields (void)β defaults on the non-writing fieldsvoid updateDraggerCache (const SoPath *path)β refreshes the dragger cache alongpath
π Protected Member Functions inherited from SoInteractionKit
virtual ~SoInteractionKit ()β destructorvirtual void copyContents (const SoFieldContainer *fromFC, SbBool copyConnections)β copies contents over fromfromFC,copyConnectionssays whether connections come toovirtual SbBool setPart (const int partNum, SoNode *node)β sets part numberpartNumtonodevirtual SbBool readInstance (SoInput *in, unsigned short flags)β reads an instance frominwithflagsvirtual SbBool setAnyPartAsDefault (const SbName &partname, SoNode *node, SbBool anypart=1, SbBool onlyifdefault=1)β defaultspartnametonode;anypartandonlyifdefaultboth default to1virtual SbBool setAnyPartAsDefault (const SbName &partname, const SbName &nodename, SbBool anypart=1, SbBool onlyifdefault=1)β same deal but you name the node by name,nodename; againanypart=1,onlyifdefault=1SbBool setAnySurrogatePath (const SbName &name, SoPath *path, SbBool leafcheck=0, SbBool publiccheck=0)β sets the surrogate path fornametopath, withleafcheck=0andpubliccheck=0as the defaultsvoid connectSeparatorFields (SoSeparator *dest, SbBool onOff)β connects separator fields todest, toggled byonOff
π Protected Member Functions inherited from SoBaseKit
virtual ~SoBaseKit ()β destructorvirtual SoNode * addToCopyDict (void) constβ adds itself to the copy dictionary, constSoGroup * getContainerNode (const SbName &listname, SbBool makeifneeded=1)β grabs the container node forlistname;makeifneededdefaults to1virtual SoNode * getAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0)β gets any part namedpartname, withmakeifneeded,leafcheck=0,publiccheck=0virtual 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=NULLvirtual SbBool setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=1)β sets any partpartnamefromfrom,anypartdefaulting to1void createNodekitPartsList (void)β builds the nodekit parts listvoid createFieldList (void)β builds the field listvirtual void createDefaultParts (void)β builds the default partsconst SoNodekitParts * getNodekitPartsList (void) constβ returns the nodekit parts listconst SbList< SoSFNode * > & getCatalogInstances (void) constβ returns the catalog instancesvoid catalogError (void)β the catalog oopsie handler π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)β constructor~SoFieldContainer ()β destructor
π Protected Member Functions inherited from SoBase
SoBase (void)β constructorvirtual ~SoBase ()β destructorvirtual void destroy (void)β destruction dutiesSbBool hasMultipleWriteRefs (void) constβ does it have multiple write refs? const answerSbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constβ writes the header toout, withisgroupandisenginevoid writeFooter (SoOutput *out) constβ writes the footer tooutvirtual 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 datastatic const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)β pointer-to-pointer to the class nodekit catalogstatic void startCB (void *f, SoDragger *d)β the start callback,fanddstatic 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)β pointer-to-pointer to the field datastatic const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)β pointer-to-pointer to the class nodekit catalogstatic void childTransferMotionAndValueChangedCB (void *, SoDragger *)β child transfer motion and value changed callback, all in onestatic void childValueChangedCB (void *, SoDragger *)β child value changed callbackstatic void childStartCB (void *, SoDragger *)β child start callbackstatic void childMotionCB (void *, SoDragger *)β child motion callbackstatic void childFinishCB (void *, SoDragger *)β child finish callbackstatic 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 datastatic const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)β pointer-to-pointer to the class nodekit catalogstatic void readDefaultParts (const char *fileName, const char defaultBuffer[], int defBufSize)β reads default parts fromfileName, out ofdefaultBuffer[], sizeddefBufSizestatic 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 datastatic 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 datastatic void setNextActionMethodIndex (int index)β sets the next action method index toindexstatic int getNextActionMethodIndex (void)β gets that index backstatic void incNextActionMethodIndex (void)β bumps it upstatic void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)β sets compatibility types fornodetypewithbitmask
π 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 data πstatic void staticDataUnlock (void)β unlocks it π
π₯ Protected Attributes
SoSFNode axisFeedbackSwitchβ node field for the axis feedback switchSoSFNode feedbackβ the feedback nodeSoSFNode feedbackActiveβ feedback, but the active oneSoSFNode feedbackSwitchβ the feedback switch nodeSoSFNode translatorβ the translator nodeSoSFNode translatorActiveβ the active translator nodeSoSFNode translatorSwitchβ the translator switch nodeSoSFNode xAxisFeedbackβ X-axis feedback nodeSoSFNode yAxisFeedbackβ Y-axis feedback nodeSoFieldSensor * fieldSensorβ pointer to the field sensorSbVec3f worldRestartPtβ the world restart pointSbPlaneProjector * 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 fieldSoSFNode topSeparatorβ the top separator node fieldSoFieldSensor * fieldSensorβ pointer to the field sensorSoSeparator * oldTopSepβ pointer to the old top separator
π¦ Protected Attributes inherited from SoBaseKit
SoSFNode callbackListβ the callback list node fieldSoChildList * childrenβ pointer to the child listSbBool connectionsSetUpβ have the connections been set up or nah
β Protected Attributes inherited from SoNode
uint32_t uniqueIdβ the unique id, as auint32_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, andUSE_PICK
β¨ Public Types inherited from SoInteractionKit
enum CacheEnabled { OFF, ON, AUTO }βOFF,ON, orAUTO, 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_ENGINEandIS_GROUP
π Static Protected Attributes inherited from SoNode
static uint32_t nextUniqueId = 0β starts at0static int nextActionMethodIndex = 0β also starts at0
π 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
SoTranslate1DraggerSoDragPointDragger
π 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
- fedora 43: Coin2-devel 2.5.0-52.fc43 Β· GPL-2.0-only
- fedora 43: Coin2-devel 2.5.0-52.fc43 Β· GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.fc44 Β· GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.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