SoRotateCy...calDragger(3)

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

🌸 SoRotateCy...calDragger(3) β€” Library Functions Manual 🌸

okay bestie, sit down, hydrate, because this is the SoRotateCylindricalDragger page and she is long. This is part 1 of 4, so pace yourself, we're not even at the juicy bits yet. πŸ’–


✨ NAME ✨

SoRotateCylindricalDragger β€” the SoRotateCylindricalDragger class is for rotating geometry around a single axis.

periodt, that's the whole vibe. one axis. rotating. iconic. πŸ’…


✨ SYNOPSIS ✨

#include <Inventor/draggers/SoRotateCylindricalDragger.h>

Inherits SoDragger.

so it's giving dragger lineage, as expected β€” let's get into the receipts. 🧾✨


πŸ’… Public Member Functions

  • virtual SoType getTypeId (void) const
  • virtual const SoNodekitCatalog * getNodekitCatalog (void) const
  • SoRotateCylindricalDragger (void)
  • void setProjector (SbCylinderProjector *p)
  • const SbCylinderProjector * getProjector (void) const

🫢 Public Member Functions inherited from SoDragger

bestie she's not doing this alone, she's got a whole support system:

  • 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

🌈 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)

πŸŽ€ 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)

⭐ 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

πŸ¦‹ 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

πŸ’œ 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 girlies that don't need an instance, they just are:

  • 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)

🌸 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)

and that's the synopsis, bestie!! that was a LOT of signatures, ngl. part 2 is right behind this one, so don't go anywhere πŸ’–βœ¨

✨ Static Public Member Functions (inherited from SoFieldContainer) ✨

bestie these aren't your dragger's own functions, they're the hand-me-downs from SoFieldContainer, and yes they're all static πŸ’…

  • static void initClass (void) β€” the once-and-done class init hook, inherited straight up 🫢
  • static SoType getClassTypeId (void) β€” gimme the SoType for this class, ty
  • static void initCopyDict (void) β€” spins up the copy dictionary
  • static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy) β€” files an orig β†’ copy pair into it
  • static SoFieldContainer * checkCopy (const SoFieldContainer *orig) β€” is this one in the copy dict? asking for a friend
  • static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections) β€” digs the copy back out
  • static void copyDone (void) β€” copy time is over, wrap it up πŸŽ€

✨ Static Public Member Functions (inherited from SoBase) ✨

more inherited static besties, this time from SoBase:

  • static void initClass (void) β€” class init, the sequel
  • static SoType getClassTypeId (void) β€” the SoType, again, iconic
  • static void addName (SoBase *const base, const char *const name) β€” gives a base a name
  • static void removeName (SoBase *const base, const char *const name) β€” takes it back, no hard feelings
  • static void incrementCurrentWriteCounter (void) β€” bumps the write counter up
  • static void decrementCurrentWriteCounter (void) β€” bumps it back down
  • static SoBase * getNamedBase (const SbName &name, SoType type) β€” fetches one named base of that type
  • static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type) β€” fetches all of them into baselist
  • static SbBool read (SoInput *in, SoBase *&base, SoType expectedtype) β€” reads a base in from SoInput
  • static void setInstancePrefix (const SbString &c) β€” sets the instance prefix
  • static void setTraceRefs (SbBool trace) β€” turns ref tracing on/off
  • static SbBool getTraceRefs (void) β€” tells you where ref tracing is at
  • static SbBool connectRoute (SoInput *in, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname) β€” wires up a route from one node+field to another
  • static SbBool readRoute (SoInput *in) β€” reads a route in from SoInput

🌈 Public Attributes 🌈

  • SoSFRotation rotation β€” the actual rotation field, the whole point of the whole thing, main character energy fr fr πŸ‘‘

Public Attributes inherited from SoDragger

  • SoSFBool isActive β€” whether the dragger is active rn

Public Attributes inherited from SoInteractionKit

  • SoSFEnum renderCaching
  • SoSFEnum boundingBoxCaching
  • SoSFEnum renderCulling
  • SoSFEnum pickCulling

(no cap, those four are just sitting there doing their caching-and-culling thing ✨)


πŸ¦‹ Protected Member Functions πŸ¦‹

  • virtual const SoFieldData * getFieldData (void) const β€” the field data getter
  • ~SoRotateCylindricalDragger () β€” the destructor, she's protected, she's fine
  • virtual SbBool setUpConnections (SbBool onoff, SbBool doitalways=0) β€” sets up (or tears down) the connections; doitalways defaults to 0
  • virtual void copyContents (const SoFieldContainer *fromfc, SbBool copyconnections) β€” copies the guts over from fromfc
  • void dragStart (void) β€” drag starts πŸ’«
  • void drag (void) β€” dragging, happening, live
  • void dragFinish (void) β€” drag's done, thank u next

Protected Member Functions inherited from SoDragger

  • SoDragger (void) β€” constructor
  • virtual ~SoDragger () β€” destructor
  • SbVec2f getNormalizedLocaterPosition (void) β€” normalized locater position
  • SbVec2s getLocaterPosition (void) β€” locater position, raw
  • SbVec2s getStartLocaterPosition (void) const β€” where the locater started
  • void setStartLocaterPosition (SbVec2s p) β€” sets that start position to p
  • SbBool isAdequateConstraintMotion (void) β€” is this constraint motion adequate? vibe check 🧚
  • virtual SbBool shouldGrabBasedOnSurrogate (const SoPath *pickpath, const SoPath *surrogatepath) β€” should it grab based on the surrogate?
  • void setCameraInfo (SoAction *action) β€” stashes camera info from action
  • virtual void handleEvent (SoHandleEventAction *ha) β€” handles the event
  • void transferMotion (SoDragger *child) β€” hands motion off to child
  • void setIgnoreInBbox (SbBool newval) β€” sets the ignore-in-bbox flag to newval
  • SbBool isIgnoreInBbox (void) β€” reads that flag back
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action) β€” bounding box biz
  • void setActiveChildDragger (SoDragger *newchilddragger) β€” sets the active child dragger to newchilddragger
  • SoDragger * getActiveChildDragger (void) const β€” and gets it back
  • virtual void setDefaultOnNonWritingFields (void) β€” defaults the non-writing fields
  • void updateDraggerCache (const SoPath *path) β€” refreshes the dragger cache for path

Protected Member Functions inherited from SoInteractionKit

  • virtual ~SoInteractionKit ()
  • 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 in
  • virtual SbBool setAnyPartAsDefault (const SbName &partname, SoNode *node, SbBool anypart=1, SbBool onlyifdefault=1) β€” sets any part named partname as default; 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 nodename; defaults again 1 and 1
  • SbBool setAnySurrogatePath (const SbName &name, SoPath *path, SbBool leafcheck=0, SbBool publiccheck=0) β€” sets a surrogate path; leafcheck=0, publiccheck=0
  • void connectSeparatorFields (SoSeparator *dest, SbBool onOff) β€” connects separator fields to dest, toggled by onOff

Protected Member Functions inherited from SoBaseKit

  • virtual ~SoBaseKit ()
  • virtual SoNode * addToCopyDict (void) const β€” adds itself to the copy dict
  • SoGroup * getContainerNode (const SbName &listname, SbBool makeifneeded=1) β€” grabs the container node for listname; makeifneeded=1
  • virtual SoNode * getAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0) β€” grabs any part; 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; pathtoextend defaults to NULL
  • virtual SbBool setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=1) β€” sets any part from from; anypart=1
  • void createNodekitPartsList (void) β€” makes the nodekit parts list
  • void createFieldList (void) β€” makes the field list
  • virtual void createDefaultParts (void) β€” makes the default parts
  • const SoNodekitParts * getNodekitPartsList (void) const β€” returns that parts list
  • const SbList< SoSFNode * > & getCatalogInstances (void) const β€” returns the catalog instances
  • void catalogError (void) β€” the catalog-error handler 😭
  • void countMyFields (SoOutput *out) β€” counts the fields into out

Protected Member Functions inherited from SoNode

  • SoNode (void)
  • virtual ~SoNode ()

Protected Member Functions inherited from SoFieldContainer

  • SoFieldContainer (void)
  • ~SoFieldContainer ()

Protected Member Functions inherited from SoBase

  • SoBase (void)
  • virtual ~SoBase ()
  • virtual void destroy (void) β€” destroys
  • SbBool hasMultipleWriteRefs (void) const β€” multiple write refs? yes or no
  • SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const β€” writes the header
  • void writeFooter (SoOutput *out) const β€” writes the footer
  • virtual const char * getFileFormatName (void) const β€” name of the file format

πŸ’œ Static Protected Member Functions πŸ’œ

  • static const SoFieldData ** getFieldDataPtr (void)
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)
  • static void startCB (void *f, SoDragger *d) β€” the start callback
  • static void motionCB (void *f, SoDragger *d) β€” the motion callback
  • static void doneCB (void *f, SoDragger *d) β€” the done 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)
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)
  • static void childTransferMotionAndValueChangedCB (void *, SoDragger *)
  • static void childValueChangedCB (void *, SoDragger *)
  • static void childStartCB (void *, SoDragger *)
  • static void childMotionCB (void *, SoDragger *)
  • static void childFinishCB (void *, SoDragger *)
  • static void childOtherEventCB (void *, SoDragger *)

Static Protected Member Functions inherited from SoInteractionKit

  • static const SoFieldData ** getFieldDataPtr (void)
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)
  • static void readDefaultParts (const char *fileName, const char defaultBuffer[], int defBufSize) β€” reads default parts out of fileName
  • static void fieldSensorCB (void *, SoSensor *)

Static Protected Member Functions inherited from SoBaseKit

  • static const SoFieldData ** getFieldDataPtr (void)
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)

Static Protected Member Functions inherited from SoNode

  • static const SoFieldData ** getFieldDataPtr (void)
  • static void setNextActionMethodIndex (int index) β€” sets the next action method index
  • static int getNextActionMethodIndex (void) β€” gets it
  • static void incNextActionMethodIndex (void) β€” increments it
  • static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask) β€” sets compat types for nodetype from 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 feedback
  • SoSFNode feedbackActive
  • SoSFNode feedbackSwitch
  • SoSFNode rotator
  • SoSFNode rotatorActive
  • SoSFNode rotatorSwitch
  • SoFieldSensor * fieldSensor
  • SbCylinderProjector * cylinderProj
  • SbBool userProj

Protected Attributes inherited from SoDragger

  • SoSFNode motionMatrix

Protected Attributes inherited from SoInteractionKit

  • SoSFNode geomSeparator
  • SoSFNode topSeparator
  • SoFieldSensor * fieldSensor
  • SoSeparator * oldTopSep

Protected Attributes inherited from SoBaseKit

  • SoSFNode callbackList
  • SoChildList * children
  • SbBool connectionsSetUp

Protected Attributes inherited from SoNode

  • uint32_t uniqueId

Protected Attributes inherited from SoFieldContainer

  • SbBool isBuiltIn

🌸 Additional Inherited Members 🌸

Public Types inherited from SoDragger

  • enum ProjectorFrontSetting { FRONT, BACK, USE_PICK }

Public Types inherited from SoInteractionKit

  • enum CacheEnabled { OFF, ON, AUTO }

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 }
okay that enum is giving ✨encyclopedia✨, every single bitmask value is in there, do not lose a single one bestie πŸ™ˆ

Protected Types inherited from SoBase

  • enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }

Static Protected Attributes inherited from SoNode

  • static uint32_t nextUniqueId = 0
  • static int nextActionMethodIndex = 0

✨ Detailed Description ✨

The SoRotateCylindricalDragger class is for rotating geometry around a single axis. that's it, that's the girl πŸ’«

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

πŸ–ΌοΈ (yes there's a picture in the real page, imagine the cutest little cylinder rotator, inactive, just vibing)

Use an instance of this dragger class in your scenegraph to let the end-users of your application rotate geometry around a pre-defined axis vector in 3D. fr fr, that's the whole job πŸ”₯

For the dragger orientation and positioning itself, use some kind of transformation node in your scenegraph, as usual. periodt πŸŽ€

πŸ› οΈ Constructor & Destructor Documentation πŸ› οΈ

SoRotateCylindricalDragger::SoRotateCylindricalDragger (void )

okay bestie, this is the default constructor πŸ’– and what it does is set up the dragger nodekit catalog with the interaction and feedback geometry. that's it, that's the job. iconic.

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

CLASS SoRotateCylindricalDragger
-->"this"
      "callbackList"
      "topSeparator"
         "motionMatrix"
         "geomSeparator"
-->         "rotatorSwitch"
-->            "rotator"
-->            "rotatorActive"
-->         "feedbackSwitch"
-->            "feedback"
-->            "feedbackActive"

(pssst β€” see SoBaseKit::printDiagram() if you wanna know about how that output formatting works πŸ’…)

Detailed information on catalog parts:

CLASS SoRotateCylindricalDragger
PVT   "this",  SoRotateCylindricalDragger  ---
      "callbackList",  SoNodeKitListPart [ SoCallback, SoEventCallback ]
PVT   "topSeparator",  SoSeparator  ---
PVT   "motionMatrix",  SoMatrixTransform  ---
PVT   "geomSeparator",  SoSeparator  ---
PVT   "rotatorSwitch",  SoSwitch  ---
      "rotator",  SoSeparator  ---
      "rotatorActive",  SoSeparator  ---
PVT   "feedbackSwitch",  SoSwitch  ---
      "feedback",  SoSeparator  ---
      "feedbackActive",  SoSeparator  ---

(and for that output formatting, see SoBaseKit::printTable() 🫢)

References SoDragger::addFinishCallback(), SoDragger::addMotionCallback(), SoDragger::addStartCallback(), SoDragger::addValueChangedCallback(), cylinderProj, doneCB(), fieldSensor, fieldSensorCB(), motionCB(), SoInteractionKit::readDefaultParts(), rotation, SoInteractionKit::setPartAsDefault(), SoInteractionKit::setSwitchValue(), setUpConnections(), SoRotateCylindricalDragger(), startCB(), userProj, and valueChangedCB().

Referenced by copyContents(), doneCB(), fieldSensorCB(), getFieldData(), motionCB(), SoRotateCylindricalDragger(), startCB(), and valueChangedCB().


SoRotateCylindricalDragger::~SoRotateCylindricalDragger () [protected]

the protected destructor πŸŽ€

(Dragger classes are derived from SoBase, so they're reference counted and they get automatically destroyed when their reference count hits 0. no manual cleanup era, we love to see it ✨)

References cylinderProj, fieldSensor, and userProj.


🌸 Member Function Documentation 🌸

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

Returns the type identification of an object derived from a class inheriting SoBase. This is what powers run-time type checking and "downward" casting, bestie. very main character of it.

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 * SoRotateCylindricalDragger::getFieldData (void ) const [protected], [virtual]

Returns a pointer to the class-wide field data storage object for this instance. If there are no fields present, it returns NULL. that's the whole vibe 🌈

Reimplemented from SoDragger.

References SoRotateCylindricalDragger().


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

Returns the nodekit catalog which defines the layout of this class' kit. basically the blueprint of the whole situation πŸ’…

Reimplemented from SoDragger.


void SoRotateCylindricalDragger::setProjector (SbCylinderProjector * p)

Replace the default cylinder projection strategy. You may wanna do this if you change the dragger geometry, for instance. lowkey a glow-up for your dragger ✨

The default cylinder projection is an SbCylinderPlaneProjector.

See also SbCylinderSectionProjector, SbCylinderSheetProjector

References cylinderProj, and userProj.


const SbCylinderProjector * SoRotateCylindricalDragger::getProjector (void ) const

Returns the projector instance used for converting from user interaction dragger movements to 3D dragger re-orientation. it's literally the translator between ur mouse and the 3D world πŸ¦‹

See also setProjector()

References cylinderProj.


SbBool SoRotateCylindricalDragger::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 wanna extend the library with new custom nodekits or dragger classes. if that's you, go read the SoBaseKit class documentation. iykyk 🧚)

Reimplemented from SoInteractionKit.

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

Referenced by SoRotateCylindricalDragger().


void SoRotateCylindricalDragger::copyContents (const SoFieldContainer * from, SbBool copyconnections) [protected], [virtual]

Makes a deep copy of all data of from into this instance, except external scenegraph references if copyconnections is FALSE.

This is the protected method that should be overridden by extension node / engine / dragger / whatever subclasses which needs to account for internal data that isn't handled automatically. it's giving "i'll handle the extra bits myself" energy πŸ’ͺ

For copying nodes from application code, you should not invoke this function directly, but rather call the SoNode::copy() function:

SoNode * mynewnode = templatenode->copy();

The same also goes for engines.

Make sure that when you override the copyContents() method in your extension class that you also make it call upwards to it's parent superclass in the inheritance hierarchy, as copyContents() in for instance SoNode and SoFieldContainer does important work. It should go something like this:

void
MyCoinExtensionNode::copyContents(const SoFieldContainer * from,
                                  SbBool copyconnections)
{
  // let parent superclasses do their thing (copy fields, copy
  // instance name, etc etc)
  SoNode::copyContents(from, copyconnections);

  // [..then copy internal data..]
}

Reimplemented from SoInteractionKit.

References SbProjector::copy(), SoFieldContainer::copyContents(), cylinderProj, SoBase::isOfType(), SoRotateCylindricalDragger(), and userProj.


void SoRotateCylindricalDragger::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. (fr fr, stay out of this one πŸ™ˆ)

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

Referenced by SoRotateCylindricalDragger().


void SoRotateCylindricalDragger::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 SoRotateCylindricalDragger().

Referenced by SoRotateCylindricalDragger().


void SoRotateCylindricalDragger::doneCB (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 SoRotateCylindricalDragger().

Referenced by SoRotateCylindricalDragger().


void SoRotateCylindricalDragger::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(), SbMatrix::getTransform(), rotation, SoDragger::setMotionMatrix(), SbMatrix::setTransform(), and SoRotateCylindricalDragger().

Referenced by setUpConnections(), and SoRotateCylindricalDragger().


void SoRotateCylindricalDragger::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(), SbMatrix::getTransform(), rotation, SoDragger::SoDragger(), and SoRotateCylindricalDragger().

Referenced by SoRotateCylindricalDragger().


void SoRotateCylindricalDragger::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 the dragger is selected (picked) by the user. that's the moment it gets chosen πŸ’–βœ¨

References SoDragger::BACK, cylinderProj, SoDragger::FRONT, SbLine::getClosestPoint(), SoDragger::getFrontOnProjector(), SoDragger::getLocalStartingPoint(), SoDragger::getLocalToWorldMatrix(), SoDragger::getViewVolume(), SoInteractionKit::setSwitchValue(), and SoDragger::USE_PICK.

Referenced by startCB().


void SoRotateCylindricalDragger::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 the user drags the mouse after picking the dragger. yeahhh that's the drag era πŸ–±οΈπŸ”₯

References SoDragger::appendRotation(), cylinderProj, SoDragger::getLocalStartingPoint(), SoDragger::getLocalToWorldMatrix(), SoDragger::getNormalizedLocaterPosition(), SoDragger::getStartMotionMatrix(), SoDragger::getViewVolume(), and SoDragger::setMotionMatrix().

Referenced by motionCB().


void SoRotateCylindricalDragger::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 the mouse button is released after picking and interacting with the dragger. the little "ok we're done here" moment πŸ’…

References SoInteractionKit::setSwitchValue().

Referenced by doneCB().

πŸ’– Member Data Documentation πŸ’–


SoSFRotation SoRotateCylindricalDragger::rotation

Okay bestie, this is THE field, the moment, the whole point of the dragger's existence 🫢

This field is continuously updated to contain the rotation of the current direction vector of the dragger. Like, nonstop, every time stuff moves. It's giving main character energy fr fr.

So if you're the application programmer using this dragger in your scenegraph, you should connect the relevant node fields in the scene to this field so they follow the dragger orientation. That's the whole assignment, no cap. Wire it up and everything stays in sync ✨

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


SoFieldSensor* SoRotateCylindricalDragger::fieldSensor [protected]

This API member is considered internal to the library, because it is not likely to be of interest to the application programmer. πŸ’…

So like… it's there, it's doing its job, but it's not for you, babe. It's backstage. Let it cook.

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


SbCylinderProjector* SoRotateCylindricalDragger::cylinderProj [protected]

Also internal to the library, also not likely to be of interest to the application programmer. Same vibe, different variable πŸŽ€

It's the cylinder projector hanging out behind the scenes, doing cylinder projector things. Nothing to see here unless you're deep in the Coin source (iykyk).

Referenced by copyContents(), drag(), dragStart(), getProjector(), setProjector(), SoRotateCylindricalDragger(), and ~SoRotateCylindricalDragger().


SbBool SoRotateCylindricalDragger::userProj [protected]

Yep, you guessed it β€” internal to the library too, and not likely to be of interest to the application programmer 🌸

It's a little boolean keeping track of projector business. Protected, tucked away, living its soft private life.

Referenced by copyContents(), setProjector(), SoRotateCylindricalDragger(), and ~SoRotateCylindricalDragger().


πŸ¦‹ Author πŸ¦‹

Generated automatically by Doxygen for Coin from the source code. Not a human, not a poet, just a doc generator doing its little thing πŸ’œ


And that's a wrap on this whole page, bestie!! πŸŽ‰ You made it to the end, crown behavior honestly πŸ‘‘ The original footer tells us this one came from Coin, Version 2.5.0, and yes, the docs were generated automatically by Doxygen from the source code β€” so if you ever wanna fact-check me, the source is right there, no cap. Go rotate something cylindrical and slay βœ¨πŸŽ€πŸ’…

πŸ“¦ where this page comes from