SOROTATESPHERICALDRAGGER(3coin2)
๐ SoRotateSphericalDragger(3) โ Library Functions Manual ๐
๐ธ NAME ๐ธ
SoRotateSphericalDragger โ the SoRotateSphericalDragger class is for rotating geometry in any direction. No cap, literally any direction. Main character energy only. ๐
โจ
โจ SYNOPSIS โจ
#include <Inventor/draggers/SoRotateSphericalDragger.h>
Inherits SoDragger.
๐ Public Member Functions ๐
okay so these are the ones you actually get on this class:
virtual SoType getTypeId (void) constvirtual const SoNodekitCatalog * getNodekitCatalog (void) constSoRotateSphericalDragger (void)void setProjector (SbSphereProjector *p)const SbSphereProjector * getProjector (void) const
๐ซถ Public Member Functions inherited from SoDragger ๐ซถ
inherited, but still yours to call, periodt:
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 ๐ฆ
these came from the interaction kit, but they're still part of the whole vibe:
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 ๐
base kit stuff, still iconic, still yours:
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 ๐
node behavior, inherited but never forgotten:
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 ๐
field container bestie, all inherited, all here:
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 ๐
the base of all bases, still giving:
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 โญ
static queen behavior:
static SoType getClassTypeId (void)static const SoNodekitCatalog * getClassNodekitCatalog (void)static void initClass (void)
โจ Static Public Member Functions inherited from SoDragger โจ
inherited static magic, no cap:
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)
๐ Static Public Member Functions inherited from SoFieldContainer ๐
these are the static besties you're borrowing from SoFieldContainer, no cap:
static void initClass(void)โ sets the class up, does the whole registry thing ๐static SoType getClassTypeId(void)โ hands you back the class'sSoTypeโจstatic void initCopyDict(void)โ kicks off the copy dictionary, like opening a fresh notes app ๐static void addCopy(const SoFieldContainer *orig, const SoFieldContainer *copy)โ registers a copy under its original ๐ซถstatic SoFieldContainer * checkCopy(const SoFieldContainer *orig)โ peeks to see if that original already has a copy ๐static SoFieldContainer * findCopy(const SoFieldContainer *orig, const SbBool copyconnections)โ finds the copy, and whether connections come along is literally up tocopyconnections๐ฆstatic void copyDone(void)โ done copying, we can all go home ๐
๐ธ Static Public Member Functions inherited from SoBase ๐ธ
more borrowed statics, and yes they all live here too:
static void initClass(void)โ class init, the usual ritual โญstatic SoType getClassTypeId(void)โ returns theSoType๐static void addName(SoBase *const base, const char *const name)โ givesbasethe namename๐static void removeName(SoBase *const base, const char *const name)โ takes that name right back off ๐static void incrementCurrentWriteCounter(void)โ bumps the current write counter up โฌ๏ธstatic void decrementCurrentWriteCounter(void)โ and bumps it back down โฌ๏ธstatic SoBase * getNamedBase(const SbName &name, SoType type)โ hunts down the base with thatnameand thattype๐static int getNamedBases(const SbName &name, SoBaseList &baselist, SoType type)โ same vibe but it grabs a whole list of them intobaselist๐งบstatic SbBool read(SoInput *in, SoBase *&base, SoType expectedtype)โ reads a base in fromin, and yeah it wants thatexpectedtype๐static void setInstancePrefix(const SbString &c)โ sets the instance prefix tocโ๏ธstatic void setTraceRefs(SbBool trace)โ flips reference tracing on or off ๐ต๏ธstatic SbBool getTraceRefs(void)โ tells you if it's on ๐ซงstatic SbBool connectRoute(SoInput *in, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)โ wires a route fromfromnodename.fromfieldnameover totonodename.tofieldname๐static SbBool readRoute(SoInput *in)โ reads a route in fromin๐ฃ๏ธ
๐ซ Public Attributes ๐ซ
SoSFRotation rotationโ the rotation field. this is literally the whole point of the dragger, bestie ๐ฅ
๐ Public Attributes inherited from SoDragger ๐
SoSFBool isActiveโ whether the dragger is currently active or just vibing ๐
โจ Public Attributes inherited from SoInteractionKit โจ
SoSFEnum renderCachingโ the render caching setting ๐จSoSFEnum boundingBoxCachingโ the bounding box caching setting ๐ฆSoSFEnum renderCullingโ the render culling setting โ๏ธSoSFEnum pickCullingโ the pick culling setting ๐ฏ
๐ฆ Protected Member Functions ๐ฆ
the internal ones, lowkey the mechanics of the whole thing:
virtual const SoFieldData * getFieldData(void) constโ returns the field data ๐~SoRotateSphericalDragger()โ destructor, say bye ๐virtual SbBool setUpConnections(SbBool onoff, SbBool doitalways=0)โ sets up (or tears down) the connections,onoffstyle. anddoitalwaysdefaults to0๐virtual void copyContents(const SoFieldContainer *fromfc, SbBool copyconnections)โ copies the contents over fromfromfc, withcopyconnectionsdeciding about connections ๐void dragStart(void)โ fires when the drag starts ๐void drag(void)โ fires while you're dragging, the main character moment ๐บvoid dragFinish(void)โ fires when the drag is over, periodt ๐
๐
Protected Member Functions inherited from SoDragger ๐
SoDragger(void)โ constructor ๐ฃvirtual ~SoDragger()โ destructor ๐ซงSbVec2f getNormalizedLocaterPosition(void)โ the locater position, but normalized ๐งญSbVec2s getLocaterPosition(void)โ the raw locater position ๐SbVec2s getStartLocaterPosition(void) constโ where the locater was when it all started ๐ฐ๏ธvoid setStartLocaterPosition(SbVec2s p)โ sets that start position topโ๏ธSbBool isAdequateConstraintMotion(void)โ is the constraint motion adequate? enquiring minds ๐คvirtual SbBool shouldGrabBasedOnSurrogate(const SoPath *pickpath, const SoPath *surrogatepath)โ should it grab based on the surrogate?pickpathandsurrogatepathsay ๐ญvoid setCameraInfo(SoAction *action)โ sets camera info fromaction๐ทvirtual void handleEvent(SoHandleEventAction *ha)โ handles the event viahaโกvoid transferMotion(SoDragger *child)โ passes the motion along tochild๐คvoid setIgnoreInBbox(SbBool newval)โ sets the ignore-in-bbox flag tonewval๐ซSbBool isIgnoreInBbox(void)โ is it ignored in the bbox? ๐คจvirtual void getBoundingBox(SoGetBoundingBoxAction *action)โ grabs the bounding box viaaction๐void setActiveChildDragger(SoDragger *newchilddragger)โ makesnewchilddraggerthe active child dragger ๐ถSoDragger * getActiveChildDragger(void) constโ returns the active child dragger ๐ซดvirtual void setDefaultOnNonWritingFields(void)โ sets defaults on the non-writing fields ๐ชvoid updateDraggerCache(const SoPath *path)โ refreshes the dragger cache forpath๐
๐ท Protected Member Functions inherited from SoInteractionKit ๐ท
virtual ~SoInteractionKit()โ destructor ๐virtual SbBool setPart(const int partNum, SoNode *node)โ sets part numberpartNumtonode๐งฉvirtual SbBool readInstance(SoInput *in, unsigned short flags)โ reads an instance frominwith thoseflags๐ฅvirtual SbBool setAnyPartAsDefault(const SbName &partname, SoNode *node, SbBool anypart=1, SbBool onlyifdefault=1)โ sets the part calledpartnameas default fromnode;anypartdefaults to1,onlyifdefaultdefaults to1๐virtual SbBool setAnyPartAsDefault(const SbName &partname, const SbName &nodename, SbBool anypart=1, SbBool onlyifdefault=1)โ same deal but you're naming the node bynodenameinstead ๐ท๏ธSbBool setAnySurrogatePath(const SbName &name, SoPath *path, SbBool leafcheck=0, SbBool publiccheck=0)โ sets the surrogate path forname;leafcheckdefaults to0,publiccheckdefaults to0๐ค๏ธvoid connectSeparatorFields(SoSeparator *dest, SbBool onOff)โ connects the separator fields todest, toggled byonOff๐
๐ง Protected Member Functions inherited from SoBaseKit ๐ง
virtual ~SoBaseKit()โ destructor ๐ซvirtual SoNode * addToCopyDict(void) constโ adds itself to the copy dictionary ๐SoGroup * getContainerNode(const SbName &listname, SbBool makeifneeded=1)โ gets the container node forlistname;makeifneededdefaults to1๐๏ธvirtual SoNode * getAnyPart(const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0)โ gets the part calledpartname;leafcheckandpubliccheckboth default to0๐virtual SoNodeKitPath * createPathToAnyPart(const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0, const SoPath *pathtoextend=NULL)โ builds a path topartname;leafcheck=0,publiccheck=0, andpathtoextenddefaults toNULL๐ฃ๏ธvirtual SbBool setAnyPart(const SbName &partname, SoNode *from, SbBool anypart=1)โ sets the partpartnamefromfrom;anypartdefaults to1๐งทvoid createNodekitPartsList(void)โ builds the nodekit parts list ๐void createFieldList(void)โ builds the field list ๐virtual void createDefaultParts(void)โ creates the default parts ๐งฑconst SoNodekitParts * getNodekitPartsList(void) constโ returns the nodekit parts list ๐const SbList< SoSFNode * > & getCatalogInstances(void) constโ returns the catalog instances ๐๏ธvoid catalogError(void)โ complains about a catalog problem ๐จvoid countMyFields(SoOutput *out)โ counts the fields intoout๐ข
โญ Protected Member Functions inherited from SoNode โญ
SoNode(void)โ constructor ๐ฃvirtual ~SoNode()โ destructor ๐
๐ Protected Member Functions inherited from SoFieldContainer ๐
SoFieldContainer(void)โ constructor ๐ฃ~SoFieldContainer()โ destructor ๐
๐ Protected Member Functions inherited from SoBase ๐
SoBase(void)โ constructor ๐ฃvirtual ~SoBase()โ destructor ๐virtual void destroy(void)โ destroys it ๐ฅSbBool hasMultipleWriteRefs(void) constโ does it have multiple write refs? ๐SbBool writeHeader(SoOutput *out, SbBool isgroup, SbBool isengine) constโ writes the header toout, withisgroupandisengine๐ท๏ธvoid writeFooter(SoOutput *out) constโ writes the footer toout๐ฆถvirtual const char * getFileFormatName(void) constโ returns the file format name ๐
๐ฅ Static Protected Member Functions ๐ฅ
static const SoFieldData ** getFieldDataPtr(void)โ hands back the pointer to the field data ๐static const SoNodekitCatalog ** getClassNodekitCatalogPtr(void)โ hands back the pointer to the class nodekit catalog ๐๏ธstatic void startCB(void *f, SoDragger *d)โ the start callback, withfandd๐ฆ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)โ field data pointer ๐static const SoNodekitCatalog ** getClassNodekitCatalogPtr(void)โ class nodekit catalog pointer ๐๏ธstatic void childTransferMotionAndValueChangedCB(void *, SoDragger *)โ the child transfer-motion-and-value-changed callback ๐คstatic void childValueChangedCB(void *, SoDragger *)โ the child value-changed callback ๐ฅstatic void childStartCB(void *, SoDragger *)โ the child start callback ๐ฆstatic void childMotionCB(void *, SoDragger *)โ the child motion callback ๐static void childFinishCB(void *, SoDragger *)โ the child finish callback ๐static void childOtherEventCB(void *, SoDragger *)โ the child other-event callback ๐ช
๐ซถ Static Protected Member Functions inherited from SoInteractionKit ๐ซถ
static const SoFieldData ** getFieldDataPtr(void)โ field data pointer ๐static const SoNodekitCatalog ** getClassNodekitCatalogPtr(void)โ class nodekit catalog pointer ๐๏ธstatic void readDefaultParts(const char *fileName, const char defaultBuffer[], int defBufSize)โ reads the default parts fromfileName, usingdefaultBuffer[]anddefBufSize๐ฅstatic void fieldSensorCB(void *, SoSensor *)โ the field sensor callback ๐ก
โจ Static Protected Member Functions inherited from SoBaseKit โจ
static const SoFieldData ** getFieldDataPtr(void)โ field data pointer ๐static const SoNodekitCatalog ** getClassNodekitCatalogPtr(void)โ class nodekit catalog pointer ๐๏ธ
๐ธ Static Protected Member Functions inherited from SoNode ๐ธ
static const SoFieldData ** getFieldDataPtr(void)โ field data pointer ๐static void setNextActionMethodIndex(int index)โ sets the next action method index toindex๐ขstatic int getNextActionMethodIndex(void)โ returns that index ๐ขstatic void incNextActionMethodIndex(void)โ increments it โฌ๏ธstatic void setCompatibilityTypes(const SoType &nodetype, const uint32_t bitmask)โ sets the compatibility types fornodetypewith thatbitmask๐งฌ
๐ Static Protected Member Functions inherited from SoBase ๐
static uint32_t getCurrentWriteCounter(void)โ returns the current write counter ๐ขstatic void staticDataLock(void)โ locks the static data ๐static void staticDataUnlock(void)โ unlocks it ๐
๐ Protected Attributes ๐
SoSFNode feedbackโ the feedback node ๐ขSoSFNode feedbackActiveโ the active feedback node โกSoSFNode feedbackSwitchโ the switch that decides which feedback shows ๐SoSFNode rotatorโ the rotator node ๐กSoSFNode rotatorActiveโ the active rotator node โกSoSFNode rotatorSwitchโ the switch for the rotator ๐SoFieldSensor * fieldSensorโ pointer to the field sensor ๐กSbMatrix prevMotionMatrixโ the previous motion matrix ๐งฎSbVec3f prevWorldHitPtโ the previous world hit point ๐ฏSbSphereProjector * sphereProjโ pointer to the sphere projector ๐ฎSbBool userProjโ whether a user projector is in play ๐
๐ Protected Attributes inherited from SoDragger ๐
SoSFNode motionMatrixโ the motion matrix ๐งฎ
๐ฆ Protected Attributes inherited from SoInteractionKit ๐ฆ
SoSFNode geomSeparatorโ the geometry separator ๐ฆSoSFNode topSeparatorโ the top separator ๐SoFieldSensor * fieldSensorโ pointer to the field sensor ๐กSoSeparator * oldTopSepโ pointer to the old top separator ๐ฐ๏ธ
๐ Protected Attributes inherited from SoBaseKit ๐
SoSFNode callbackListโ the callback list ๐SoChildList * childrenโ pointer to the child list ๐ถSbBool connectionsSetUpโ whether the connections are set up ๐
๐ Protected Attributes inherited from SoNode ๐
uint32_t uniqueIdโ the node's unique id ๐
โจ Protected Attributes inherited from SoFieldContainer โจ
SbBool isBuiltInโ is it built in? ๐
๐ Additional Inherited Members ๐
๐ญ Public Types inherited from SoDragger ๐ญ
enum ProjectorFrontSetting { FRONT, BACK, USE_PICK }โ the projector front setting options:FRONT,BACK,USE_PICK๐ช
๐ช Public Types inherited from SoInteractionKit ๐ช
enum CacheEnabled { OFF, ON, AUTO }โ caching options: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 }โ all the node type flags, each with its own hex value, exactly as listed ๐
๐ Protected Types inherited from SoBase ๐
enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }โ the base flags:IS_ENGINE = 0x01andIS_GROUP = 0x02๐ฉ
โญ Static Protected Attributes inherited from SoNode โญ
static uint32_t nextUniqueId = 0โ the next unique id, starting at0๐ขstatic int nextActionMethodIndex = 0โ the next action method index, starting at0๐ข
๐ฆ Detailed Description ๐ฆ
okay so the SoRotateSphericalDragger class is for rotating geometry in any direction. like, any. all of them. no limits ๐ซ
Here's how the dragger looks with its default geometry in the inactive state:
๐ผ๏ธ (picture of the dragger sitting there, inactive, looking cute and slightly bored)
Use an instance of this dragger class in your scenegraph to let the end-users of your application rotate geometry freely in any direction. give the people what they want ๐ฅ
For the initial dragger orientation and the dragger geometry positioning itself, use some kind of transformation node in your scenegraph, as usual. you already know this one, bestie ๐
๐ Constructor & Destructor Documentation ๐
๐ SoRotateSphericalDragger::SoRotateSphericalDragger (void)
Okay bestie, this is the default constructor, and no cap it does a LOT โ it sets up the dragger nodekit catalog with all the interaction and feedback geometry. She's built different fr fr.
Node kit structure, and heads up: new entries versus the parent class get marked with an arrow prefix ๐
CLASS SoRotateSphericalDragger
-->"this"
"callbackList"
"topSeparator"
"motionMatrix"
"geomSeparator"
--> "rotatorSwitch"
--> "rotator"
--> "rotatorActive"
--> "feedbackSwitch"
--> "feedback"
--> "feedbackActive"
(See SoBaseKit::printDiagram() for information about the output formatting.)
The deets on the catalog parts, bestie:
CLASS SoRotateSphericalDragger
PVT "this", SoRotateSphericalDragger ---
"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 ---
(See SoBaseKit::printTable() for information about the output formatting.)
References: SoDragger::addFinishCallback(), SoDragger::addMotionCallback(), SoDragger::addStartCallback(), SoDragger::addValueChangedCallback(), doneCB(), fieldSensor, fieldSensorCB(), motionCB(), SoInteractionKit::readDefaultParts(), rotation, SoInteractionKit::setPartAsDefault(), SoInteractionKit::setSwitchValue(), setUpConnections(), SoRotateSphericalDragger(), sphereProj, startCB(), userProj, and valueChangedCB().
Referenced by copyContents(), doneCB(), fieldSensorCB(), getFieldData(), motionCB(), SoRotateSphericalDragger(), startCB(), and valueChangedCB().
๐ธ SoRotateSphericalDragger::~SoRotateSphericalDragger () [protected]
Protected destructor, bestie ๐ซถ
(Dragger classes are derived from SoBase, so they are reference counted and automatically destroyed when their reference count goes to 0. She leaves when nobody's holding on anymore, iconic behaviour tbh.)
References: fieldSensor, sphereProj, and userProj.
โจ Member Function Documentation โจ
๐ฆ SoType SoRotateSphericalDragger::getTypeId (void ) const [virtual]
Returns the type identification of an object derived from a class inheriting SoBase. This is what you use for run-time type checking and "downward" casting. Very much the vibe check of the type system ๐
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 * SoRotateSphericalDragger::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. That's it, that's the whole thing โจ
Reimplemented from SoDragger.
References: SoRotateSphericalDragger().
โญ const SoNodekitCatalog * SoRotateSphericalDragger::getNodekitCatalog (void ) const [virtual]
Returns the nodekit catalog which defines the layout of this class' kit. The blueprint, the floor plan, the whole layout bestie ๐
Reimplemented from SoDragger.
๐ void SoRotateSphericalDragger::setProjector (SbSphereProjector * p)
Replace the default sphere projection strategy. You may wanna do this if you change the dragger geometry, for instance.
The default projection is an SbSpherePlaneProjector.
See also: SbSphereSectionProjector, SbSphereSheetProjector
References: sphereProj, and userProj.
๐ const SbSphereProjector * SoRotateSphericalDragger::getProjector (void ) const
Returns the projector instance used for converting from user interaction dragger movements to 3D dragger re-orientation. Lowkey the translator between your mouse and 3D space ๐ธ
See also: setProjector()
References: sphereProj.
๐ SbBool SoRotateSphericalDragger::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(), rotation, and SoBaseKit::setUpConnections().
Referenced by SoRotateSphericalDragger().
๐ง void SoRotateSphericalDragger::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 are not handled automatically.
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(), SoBase::isOfType(), SoRotateSphericalDragger(), sphereProj, and userProj.
๐ void SoRotateSphericalDragger::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. ๐
References: dragStart(), SoDragger::SoDragger(), and SoRotateSphericalDragger().
Referenced by SoRotateSphericalDragger().
๐ฅ void SoRotateSphericalDragger::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 SoRotateSphericalDragger().
Referenced by SoRotateSphericalDragger().
๐ธ void SoRotateSphericalDragger::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 SoRotateSphericalDragger().
Referenced by SoRotateSphericalDragger().
๐ void SoRotateSphericalDragger::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 SoRotateSphericalDragger().
Referenced by setUpConnections(), and SoRotateSphericalDragger().
๐ void SoRotateSphericalDragger::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 SoRotateSphericalDragger().
Referenced by SoRotateSphericalDragger().
๐ฆ void SoRotateSphericalDragger::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 moment โจ
References: SoDragger::BACK, SoDragger::FRONT, SoDragger::getFrontOnProjector(), SoDragger::getLocalStartingPoint(), SoDragger::getLocalToWorldMatrix(), SoDragger::getMotionMatrix(), SoDragger::getNormalizedLocaterPosition(), SoDragger::getViewVolume(), SbVec3f::length(), SbMatrix::multVecMatrix(), prevMotionMatrix, prevWorldHitPt, SoInteractionKit::setSwitchValue(), sphereProj, and SoDragger::USE_PICK.
Referenced by startCB().
๐ void SoRotateSphericalDragger::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. That's the whole moment-to-moment vibe right there ๐ซถ
References: SoDragger::appendRotation(), SoDragger::getLocalToWorldMatrix(), SoDragger::getNormalizedLocaterPosition(), SoDragger::getViewVolume(), SoDragger::getWorldToLocalMatrix(), SbMatrix::multVecMatrix(), prevMotionMatrix, prevWorldHitPt, SoDragger::setMotionMatrix(), and sphereProj.
Referenced by motionCB().
๐ void SoRotateSphericalDragger::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. The little goodbye moment ๐
References: SoInteractionKit::setSwitchValue().
Referenced by doneCB().
โจ Member Data Documentation โจ
Okay bestie, these are the data members โ the little fields that hold the dragger's whole vibe. Let's get into it. ๐
SoSFRotation SoRotateSphericalDragger::rotation
This field is continuously updated to contain the rotation of the current direction vector of the dragger. ๐ซ
The application programmer using this dragger in his scenegraph should connect the relevant node fields in the scene to this field to make them follow the dragger orientation. Periodt.
Referenced by fieldSensorCB(), setUpConnections(), SoRotateSphericalDragger(), and valueChangedCB().
SoFieldSensor* SoRotateSphericalDragger::fieldSensor [protected]
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. (iykyk, it's giving backend bestie. ๐ซถ)
Referenced by setUpConnections(), SoRotateSphericalDragger(), valueChangedCB(), and ~SoRotateSphericalDragger().
SbMatrix SoRotateSphericalDragger::prevMotionMatrix [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().
SbVec3f SoRotateSphericalDragger::prevWorldHitPt [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().
SbSphereProjector* SoRotateSphericalDragger::sphereProj [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 copyContents(), drag(), dragStart(), getProjector(), setProjector(), SoRotateSphericalDragger(), and ~SoRotateSphericalDragger().
SbBool SoRotateSphericalDragger::userProj [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 copyContents(), setProjector(), SoRotateSphericalDragger(), and ~SoRotateSphericalDragger().
๐ Author
Generated automatically by Doxygen for Coin from the source code. No cap, the robot did it. โจ
This page is from Coin, version 2.5.0 โ and if a date was supposed to be here, it's not in the footer, bestie. Either way, 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