SoRotateCy...calDragger(3)
πΈ 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) constvirtual const SoNodekitCatalog * getNodekitCatalog (void) constSoRotateCylindricalDragger (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) constSbBool 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) constconst SoEvent * getEvent (void) constSoPath * createPathToThis (void)const SoPath * getSurrogatePartPickedOwner (void) constconst SbName & getSurrogatePartPickedName (void) constconst SoPath * getSurrogatePartPickedPath (void) constvoid 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) constvoid 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) constvoid 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) constvoid setNodeType (const NodeType type)NodeType getNodeType (void) constvirtual SoNode * copy (SbBool copyconnections=0) constvirtual SbBool affectsState (void) constvirtual 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) constvirtual void writeInstance (SoOutput *out)virtual SoFieldContainer * copyThroughConnection (void) const
π¦ Public Member Functions inherited from SoFieldContainer
void setToDefaults (void)SbBool hasDefaultValues (void) constSbBool fieldsAreEqual (const SoFieldContainer *container) constvoid copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=0)SbBool set (const char *const fielddata)void get (SbString &fielddata)virtual int getFields (SoFieldList &l) constvirtual int getAllFields (SoFieldList &l) constvirtual SoField * getField (const SbName &name) constvirtual SoField * getEventIn (const SbName &name) constvirtual SoField * getEventOut (const SbName &name) constSbBool getFieldName (const SoField *const field, SbName &name) constSbBool enableNotify (const SbBool flag)SbBool isNotifyEnabled (void) constSbBool set (const char *fielddata, SoInput *in)void get (SbString &fielddata, SoOutput *out)virtual SbBool validateNewFieldValue (SoField *field, void *newval)SbBool getIsBuiltIn (void) constvoid setUserData (void *userdata) constvoid * getUserData (void) const
π Public Member Functions inherited from SoBase
void ref (void) constvoid unref (void) constvoid unrefNoDelete (void) constint32_t getRefCount (void) constvoid touch (void)SbBool isOfType (SoType type) constvirtual SbName getName (void) constvirtual 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) constSbBool 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 ¢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 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 theSoTypefor this class, tystatic void initCopyDict (void)β spins up the copy dictionarystatic void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)β files an orig β copy pair into itstatic SoFieldContainer * checkCopy (const SoFieldContainer *orig)β is this one in the copy dict? asking for a friendstatic SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)β digs the copy back outstatic 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 sequelstatic SoType getClassTypeId (void)β theSoType, again, iconicstatic void addName (SoBase *const base, const char *const name)β gives a base a namestatic void removeName (SoBase *const base, const char *const name)β takes it back, no hard feelingsstatic void incrementCurrentWriteCounter (void)β bumps the write counter upstatic void decrementCurrentWriteCounter (void)β bumps it back downstatic SoBase * getNamedBase (const SbName &name, SoType type)β fetches one named base of thattypestatic int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)β fetches all of them intobaseliststatic SbBool read (SoInput *in, SoBase *&base, SoType expectedtype)β reads a base in fromSoInputstatic void setInstancePrefix (const SbString &c)β sets the instance prefixstatic void setTraceRefs (SbBool trace)β turns ref tracing on/offstatic SbBool getTraceRefs (void)β tells you where ref tracing is atstatic 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 anotherstatic SbBool readRoute (SoInput *in)β reads a route in fromSoInput
π 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 renderCachingSoSFEnum boundingBoxCachingSoSFEnum renderCullingSoSFEnum 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 finevirtual SbBool setUpConnections (SbBool onoff, SbBool doitalways=0)β sets up (or tears down) the connections;doitalwaysdefaults to0virtual void copyContents (const SoFieldContainer *fromfc, SbBool copyconnections)β copies the guts over fromfromfcvoid dragStart (void)β drag starts π«void drag (void)β dragging, happening, livevoid dragFinish (void)β drag's done, thank u next
Protected Member Functions inherited from SoDragger
SoDragger (void)β constructorvirtual ~SoDragger ()β destructorSbVec2f getNormalizedLocaterPosition (void)β normalized locater positionSbVec2s getLocaterPosition (void)β locater position, rawSbVec2s getStartLocaterPosition (void) constβ where the locater startedvoid setStartLocaterPosition (SbVec2s p)β sets that start position topSbBool 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 fromactionvirtual void handleEvent (SoHandleEventAction *ha)β handles the eventvoid transferMotion (SoDragger *child)β hands motion off tochildvoid setIgnoreInBbox (SbBool newval)β sets the ignore-in-bbox flag tonewvalSbBool isIgnoreInBbox (void)β reads that flag backvirtual void getBoundingBox (SoGetBoundingBoxAction *action)β bounding box bizvoid setActiveChildDragger (SoDragger *newchilddragger)β sets the active child dragger tonewchilddraggerSoDragger * getActiveChildDragger (void) constβ and gets it backvirtual void setDefaultOnNonWritingFields (void)β defaults the non-writing fieldsvoid updateDraggerCache (const SoPath *path)β refreshes the dragger cache forpath
Protected Member Functions inherited from SoInteractionKit
virtual ~SoInteractionKit ()virtual SbBool setPart (const int partNum, SoNode *node)β sets part numberpartNumtonodevirtual SbBool readInstance (SoInput *in, unsigned short flags)β reads an instance invirtual SbBool setAnyPartAsDefault (const SbName &partname, SoNode *node, SbBool anypart=1, SbBool onlyifdefault=1)β sets any part namedpartnameas default;anypartandonlyifdefaultboth default to1virtual SbBool setAnyPartAsDefault (const SbName &partname, const SbName &nodename, SbBool anypart=1, SbBool onlyifdefault=1)β same deal but you name the node bynodename; defaults again1and1SbBool setAnySurrogatePath (const SbName &name, SoPath *path, SbBool leafcheck=0, SbBool publiccheck=0)β sets a surrogate path;leafcheck=0,publiccheck=0void connectSeparatorFields (SoSeparator *dest, SbBool onOff)β connects separator fields todest, toggled byonOff
Protected Member Functions inherited from SoBaseKit
virtual ~SoBaseKit ()virtual SoNode * addToCopyDict (void) constβ adds itself to the copy dictSoGroup * getContainerNode (const SbName &listname, SbBool makeifneeded=1)β grabs the container node forlistname;makeifneeded=1virtual SoNode * getAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0)β grabs any part;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;pathtoextenddefaults toNULLvirtual SbBool setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=1)β sets any part fromfrom;anypart=1void createNodekitPartsList (void)β makes the nodekit parts listvoid createFieldList (void)β makes the field listvirtual void createDefaultParts (void)β makes the default partsconst SoNodekitParts * getNodekitPartsList (void) constβ returns that parts listconst SbList< SoSFNode * > & getCatalogInstances (void) constβ returns the catalog instancesvoid catalogError (void)β the catalog-error handler πvoid countMyFields (SoOutput *out)β counts the fields intoout
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)β destroysSbBool hasMultipleWriteRefs (void) constβ multiple write refs? yes or noSbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constβ writes the headervoid writeFooter (SoOutput *out) constβ writes the footervirtual 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 callbackstatic void motionCB (void *f, SoDragger *d)β the motion callbackstatic void doneCB (void *f, SoDragger *d)β the done 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)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 offileNamestatic 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 indexstatic int getNextActionMethodIndex (void)β gets itstatic void incNextActionMethodIndex (void)β increments itstatic void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)β sets compat types fornodetypefrombitmask
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 feedbackSoSFNode feedbackActiveSoSFNode feedbackSwitchSoSFNode rotatorSoSFNode rotatorActiveSoSFNode rotatorSwitchSoFieldSensor * fieldSensorSbCylinderProjector * cylinderProjSbBool userProj
Protected Attributes inherited from SoDragger
SoSFNode motionMatrix
Protected Attributes inherited from SoInteractionKit
SoSFNode geomSeparatorSoSFNode topSeparatorSoFieldSensor * fieldSensorSoSeparator * oldTopSep
Protected Attributes inherited from SoBaseKit
SoSFNode callbackListSoChildList * childrenSbBool 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 = 0static 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
- 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