|
| SoJackDragger (void) |
|
virtual const SoNodekitCatalog * | getNodekitCatalog (void) const |
|
virtual SoType | getTypeId (void) const |
|
void | addFinishCallback (SoDraggerCB *func, void *data=NULL) |
|
void | addMotionCallback (SoDraggerCB *func, void *data=NULL) |
|
void | addOtherEventCallback (SoDraggerCB *func, void *data=NULL) |
|
void | addStartCallback (SoDraggerCB *func, void *data=NULL) |
|
void | addValueChangedCallback (SoDraggerCB *func, void *data=NULL) |
|
virtual void | callback (SoCallbackAction *action) |
|
SoPath * | createPathToThis (void) |
|
SbBool | enableValueChangedCallbacks (SbBool newval) |
|
const SoEvent * | getEvent (void) const |
|
ProjectorFrontSetting | getFrontOnProjector (void) const |
|
SoHandleEventAction * | getHandleEventAction (void) const |
|
SbVec3f | getLocalStartingPoint (void) |
|
SbMatrix | getLocalToWorldMatrix (void) |
|
virtual void | getMatrix (SoGetMatrixAction *action) |
|
int | getMinGesture (void) const |
|
const SbMatrix & | getMotionMatrix (void) |
|
void | getPartToLocalMatrix (const SbName &partname, SbMatrix &parttolocalmatrix, SbMatrix &localtopartmatrix) |
|
const SoPath * | getPickPath (void) const |
|
virtual void | getPrimitiveCount (SoGetPrimitiveCountAction *action) |
|
float | getProjectorEpsilon (void) const |
|
const SbMatrix & | getStartMotionMatrix (void) |
|
const SbName & | getSurrogatePartPickedName (void) const |
|
const SoPath * | getSurrogatePartPickedOwner (void) const |
|
const SoPath * | getSurrogatePartPickedPath (void) const |
|
const SbViewportRegion & | getViewportRegion (void) |
|
const SbViewVolume & | getViewVolume (void) |
|
SbVec3f | getWorldStartingPoint (void) |
|
SbMatrix | getWorldToLocalMatrix (void) |
|
virtual void | GLRender (SoGLRenderAction *action) |
|
virtual void | grabEventsCleanup (void) |
|
virtual void | grabEventsSetup (void) |
|
virtual void | rayPick (SoRayPickAction *action) |
|
void | registerChildDragger (SoDragger *child) |
|
void | registerChildDraggerMovingIndependently (SoDragger *child) |
|
void | removeFinishCallback (SoDraggerCB *func, void *data=NULL) |
|
void | removeMotionCallback (SoDraggerCB *func, void *data=NULL) |
|
void | removeOtherEventCallback (SoDraggerCB *func, void *data=NULL) |
|
void | removeStartCallback (SoDraggerCB *func, void *data=NULL) |
|
void | removeValueChangedCallback (SoDraggerCB *func, void *data=NULL) |
|
virtual void | saveStartParameters (void) |
|
virtual void | search (SoSearchAction *action) |
|
void | setFrontOnProjector (ProjectorFrontSetting newval) |
|
void | setHandleEventAction (SoHandleEventAction *newAction) |
|
void | setMinGesture (int pixels) |
|
virtual void | setMotionMatrix (const SbMatrix &newmatrix) |
|
void | setProjectorEpsilon (const float epsilon) |
|
void | setStartingPoint (const SbVec3f &newpoint) |
|
void | setStartingPoint (const SoPickedPoint *newpoint) |
|
void | setTempPathToThis (const SoPath *somethingclose) |
|
void | setViewportRegion (const SbViewportRegion ®) |
|
void | setViewVolume (const SbViewVolume &vol) |
|
void | transformMatrixLocalToWorld (const SbMatrix &frommatrix, SbMatrix &tomatrix) |
|
void | transformMatrixToLocalSpace (const SbMatrix &frommatrix, SbMatrix &tomatrix, const SbName &fromspacepartname) |
|
void | transformMatrixWorldToLocal (const SbMatrix &frommatrix, SbMatrix &tomatrix) |
|
void | unregisterChildDragger (SoDragger *child) |
|
void | unregisterChildDraggerMovingIndependently (SoDragger *child) |
|
void | valueChanged (void) |
|
void | workFieldsIntoTransform (SbMatrix &mtx) |
|
virtual void | write (SoWriteAction *action) |
|
| SoInteractionKit (void) |
|
SbBool | isPathSurrogateInMySubgraph (const SoPath *path) |
|
SbBool | isPathSurrogateInMySubgraph (const SoPath *path, SoPath *&pathToOwner, SbName &surrogatename, SoPath *&surrogatepath, SbBool fillargs=TRUE) |
|
virtual SbBool | setPart (const SbName &partname, SoNode *from) |
|
virtual SbBool | setPartAsDefault (const SbName &partname, const SbName &nodename, SbBool onlyifdefault=TRUE) |
|
virtual SbBool | setPartAsDefault (const SbName &partname, SoNode *node, SbBool onlyifdefault=TRUE) |
|
virtual SbBool | setPartAsPath (const SbName &partname, SoPath *path) |
|
| SoBaseKit (void) |
|
virtual void | addWriteReference (SoOutput *out, SbBool isfromfield=FALSE) |
|
virtual SoNodeKitPath * | createPathToPart (const SbName &partname, SbBool makeifneeded, const SoPath *pathtoextend=NULL) |
|
virtual void | doAction (SoAction *action) |
|
SbBool | forceChildDrivenWriteRefs (SoOutput *out) |
|
virtual SoChildList * | getChildren (void) const |
|
virtual SoNode * | getPart (const SbName &partname, SbBool makeifneeded) |
|
SbString | getPartString (const SoBase *part) |
|
void | printDiagram (void) |
|
void | printSubDiagram (const SbName &rootname, int level) |
|
void | printTable (void) |
|
SbBool | set (const char *namevaluepairliststring) |
|
SbBool | set (const char *partnamestring, const char *parameterstring) |
|
virtual SbBool | affectsState (void) const |
|
virtual void | audioRender (SoAudioRenderAction *action) |
|
virtual SoNode * | copy (SbBool copyconnections=FALSE) const |
|
virtual SoFieldContainer * | copyThroughConnection (void) const |
|
SbUniqueId | getNodeId (void) const |
|
NodeType | getNodeType (void) const |
|
virtual void | GLRenderBelowPath (SoGLRenderAction *action) |
|
virtual void | GLRenderInPath (SoGLRenderAction *action) |
|
virtual void | GLRenderOffPath (SoGLRenderAction *action) |
|
SbBool | isOverride (void) const |
|
virtual void | notify (SoNotList *l) |
|
virtual void | pick (SoPickAction *action) |
|
void | setNodeType (const NodeType type) |
|
void | setOverride (const SbBool state) |
|
virtual void | startNotify (void) |
|
virtual void | writeInstance (SoOutput *out) |
|
void | copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE) |
|
SbBool | enableNotify (const SbBool flag) |
|
SbBool | fieldsAreEqual (const SoFieldContainer *container) const |
|
void | get (SbString &fielddata) |
|
void | get (SbString &fielddata, SoOutput *out) |
|
virtual int | getAllFields (SoFieldList &l) const |
|
virtual SoField * | getEventIn (const SbName &name) const |
|
virtual SoField * | getEventOut (const SbName &name) const |
|
virtual SoField * | getField (const SbName &name) const |
|
SbBool | getFieldName (const SoField *const field, SbName &name) const |
|
virtual int | getFields (SoFieldList &l) const |
|
virtual void | getFieldsMemorySize (size_t &managed, size_t &unmanaged) const |
|
SbBool | getIsBuiltIn (void) const |
|
void * | getUserData (void) const |
|
SbBool | hasDefaultValues (void) const |
|
SbBool | isNotifyEnabled (void) const |
|
SbBool | set (const char *const fielddata) |
|
SbBool | set (const char *fielddata, SoInput *input) |
|
void | setToDefaults (void) |
|
void | setUserData (void *userdata) const |
|
virtual SbBool | validateNewFieldValue (SoField *field, void *newval) |
|
void | addAuditor (void *const auditor, const SoNotRec::Type type) |
|
void | assertAlive (void) const |
|
const SoAuditorList & | getAuditors (void) const |
|
virtual SbName | getName (void) const |
|
int32_t | getRefCount (void) const |
|
SbBool | isOfType (SoType type) const |
| Returns TRUE if the type of this object is either of the same type or inherited from type.
|
|
void | ref (void) const |
|
void | removeAuditor (void *const auditor, const SoNotRec::Type type) |
|
virtual void | setName (const SbName &newname) |
|
SbBool | shouldWrite (void) |
|
void | touch (void) |
|
void | unref (void) const |
|
void | unrefNoDelete (void) const |
|
|
static const SoNodekitCatalog * | getClassNodekitCatalog (void) |
|
static SoType | getClassTypeId (void) |
|
static void | initClass (void) |
|
static SbMatrix | appendRotation (const SbMatrix &mtx, const SbRotation &rot, const SbVec3f &rotcenter, const SbMatrix *conversion=NULL) |
|
static SbMatrix | appendScale (const SbMatrix &mtx, const SbVec3f &scale, const SbVec3f &scalecenter, const SbMatrix *conversion=NULL) |
|
static SbMatrix | appendTranslation (const SbMatrix &mtx, const SbVec3f &translation, const SbMatrix *conversion=NULL) |
|
static const SoNodekitCatalog * | getClassNodekitCatalog (void) |
|
static SoType | getClassTypeId (void) |
|
static float | getMinScale (void) |
|
static void | getTransformFast (SbMatrix &mtx, SbVec3f &translation, SbRotation &rotation, SbVec3f &scalefactor, SbRotation &scaleorientation) |
|
static void | getTransformFast (SbMatrix &mtx, SbVec3f &translation, SbRotation &rotation, SbVec3f &scalefactor, SbRotation &scaleorientation, const SbVec3f ¢er) |
|
static void | initClass (void) |
|
static void | initClasses (void) |
|
static void | setMinScale (float newminscale) |
|
static void | workValuesIntoTransform (SbMatrix &mtx, const SbVec3f *translationptr, const SbRotation *rotationptr, const SbVec3f *scalefactorptr, const SbRotation *scaleorientationptr, const SbVec3f *centerptr) |
|
static const SoNodekitCatalog * | getClassNodekitCatalog (void) |
|
static SoType | getClassTypeId (void) |
|
static void | initClass (void) |
| Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
|
|
static void | setSwitchValue (SoNode *node, const int newVal) |
|
static const SoNodekitCatalog * | getClassNodekitCatalog (void) |
|
static SoType | getClassTypeId (void) |
|
static void | initClass (void) |
|
static SbBool | isSearchingChildren (void) |
|
static void | setSearchingChildren (const SbBool newval) |
|
static void | audioRenderS (SoAction *action, SoNode *node) |
|
static void | callbackS (SoAction *action, SoNode *node) |
|
static int | getActionMethodIndex (const SoType type) |
|
static void | getBoundingBoxS (SoAction *action, SoNode *node) |
|
static SoNode * | getByName (const SbName &name) |
|
static int | getByName (const SbName &name, SoNodeList &l) |
|
static SoType | getClassTypeId (void) |
|
static uint32_t | getCompatibilityTypes (const SoType &nodetype) |
|
static void | getMatrixS (SoAction *action, SoNode *node) |
|
static SbUniqueId | getNextNodeId (void) |
|
static void | getPrimitiveCountS (SoAction *action, SoNode *node) |
|
static void | GLRenderS (SoAction *action, SoNode *node) |
|
static void | handleEventS (SoAction *action, SoNode *node) |
|
static void | initClass (void) |
| Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
|
|
static void | initClasses (void) |
|
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 | addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy) |
|
static SoFieldContainer * | checkCopy (const SoFieldContainer *orig) |
|
static void | cleanupClass (void) |
|
static void | copyDone (void) |
|
static SoFieldContainer * | findCopy (const SoFieldContainer *orig, const SbBool copyconnections) |
|
static SoType | getClassTypeId (void) |
| This static method returns the SoType object associated with objects of this class.
|
|
static void | initClass (void) |
| Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
|
|
static void | initCopyDict (void) |
|
static void | addName (SoBase *const base, const char *const name) |
|
static SbBool | connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname) |
|
static void | decrementCurrentWriteCounter (void) |
|
static SoType | getClassTypeId (void) |
| This static method returns the SoType object associated with objects of this class.
|
|
static SoBase * | getNamedBase (const SbName &name, SoType type) |
|
static int | getNamedBases (const SbName &name, SoBaseList &baselist, SoType type) |
|
static SbBool | getTraceRefs (void) |
|
static void | incrementCurrentWriteCounter (void) |
|
static void | initClass (void) |
| Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
|
|
static SbBool | read (SoInput *input, SoBase *&base, SoType expectedtype) |
|
static SbBool | readRoute (SoInput *input) |
|
static void | removeName (SoBase *const base, const char *const name) |
|
static void | setInstancePrefix (const SbString &c) |
|
static void | setTraceRefs (SbBool trace) |
|
|
virtual | ~SoJackDragger (void) |
|
virtual const SoFieldData * | getFieldData (void) const |
|
virtual void | setDefaultOnNonWritingFields (void) |
|
virtual SbBool | setUpConnections (SbBool onoff, SbBool doitalways=FALSE) |
|
| SoDragger (void) |
|
virtual | ~SoDragger (void) |
|
SoDragger * | getActiveChildDragger (void) const |
|
virtual void | getBoundingBox (SoGetBoundingBoxAction *action) |
|
SbVec2s | getLocaterPosition (void) |
|
SbVec2f | getNormalizedLocaterPosition (void) |
|
virtual const SoPickedPoint * | getPickedPointForStart (SoHandleEventAction *action) |
|
SbVec2s | getStartLocaterPosition (void) const |
|
virtual void | handleEvent (SoHandleEventAction *ha) |
|
SbBool | isAdequateConstraintMotion (void) |
|
SbBool | isIgnoreInBbox (void) |
|
void | setActiveChildDragger (SoDragger *newchilddragger) |
|
void | setCameraInfo (SoAction *action) |
|
void | setIgnoreInBbox (SbBool newval) |
|
void | setStartLocaterPosition (SbVec2s p) |
|
virtual SbBool | shouldGrabBasedOnSurrogate (const SoPath *pickpath, const SoPath *surrogatepath) |
|
void | transferMotion (SoDragger *child) |
|
void | updateDraggerCache (const SoPath *path) |
|
virtual | ~SoInteractionKit () |
|
void | connectSeparatorFields (SoSeparator *dest, SbBool onOff) |
|
virtual void | copyContents (const SoFieldContainer *fromFC, SbBool copyConnections) |
|
virtual SbBool | readInstance (SoInput *in, unsigned short flags) |
|
virtual SbBool | setAnyPartAsDefault (const SbName &partname, const SbName &nodename, SbBool anypart=TRUE, SbBool onlyifdefault=TRUE) |
|
virtual SbBool | setAnyPartAsDefault (const SbName &partname, SoNode *node, SbBool anypart=TRUE, SbBool onlyifdefault=TRUE) |
|
SbBool | setAnySurrogatePath (const SbName &name, SoPath *path, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE) |
|
virtual SbBool | setPart (const int partNum, SoNode *node) |
|
virtual | ~SoBaseKit () |
|
virtual SoNode * | addToCopyDict (void) const |
|
void | catalogError (void) |
|
void | countMyFields (SoOutput *out) |
|
virtual void | createDefaultParts (void) |
|
void | createFieldList (void) |
|
void | createNodekitPartsList (void) |
|
virtual SoNodeKitPath * | createPathToAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE, const SoPath *pathtoextend=NULL) |
|
virtual SoNode * | getAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE) |
|
const SbList< SoSFNode * > & | getCatalogInstances (void) const |
|
SoGroup * | getContainerNode (const SbName &listname, SbBool makeifneeded=TRUE) |
|
const SoNodekitParts * | getNodekitPartsList (void) const |
|
virtual SbBool | setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=TRUE) |
|
| SoNode (void) |
|
virtual | ~SoNode () |
|
| SoFieldContainer (void) |
|
virtual | ~SoFieldContainer () |
|
| SoBase (void) |
|
virtual | ~SoBase () |
|
virtual SoNotRec | createNotRec (void) |
|
virtual void | destroy (void) |
|
virtual const char * | getFileFormatName (void) const |
|
SbBool | hasMultipleWriteRefs (void) const |
|
void | writeFooter (SoOutput *out) const |
|
SbBool | writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const |
|
The SoJackDragger class is a dragger you can translate, rotate and scale.
Here's how the dragger looks with its default geometry in the inactive state:
Screen Shot of Default Dragger
Translation is done with this dragger by picking the flat transparent box ("x-z" translation) or the solid middle part of the axis ("y"-axis translation). Press a SHIFT-key while translating in x-z to constrain to one of the principal axes.
Uniform scale operations can be done by dragging any of the 6 cubes. Non-uniform scale operations cannot be done with this dragger.
Rotations are invoked by clicking and dragging the line parts of the 3 principal "axes" of the dragger geometry.
NB: How to rotate the dragger might be a bit unintuitive for the end user. If the dragger is to be used 'out of the box', a good documentation should be added to your application. An alternative is to modify the geometry to increase the affordance of the dragger. See the SoDragger documentation on how to change the geometry of a dragger.
An "action shot" of the SoJackDragger used within an SoClipPlaneManip:
Action Shot of Jack Dragger in a Clip Plane Manipulator
The name "Jack dragger" probably stems from this dragger being implemented by SGI for interacting with a "jack-in-the-box" type model way back in the Inventor history.
For programmer convenience, this dragger comes fully wrapped within instances of the SoJackManip class. The SoClipPlaneManip manipulator also uses this dragger, for controlling an SoClipPlane node.
SoJackDragger::SoJackDragger |
( |
void | | ) |
|
Default constructor, sets up the dragger nodekit catalog with the interaction and feedback geometry.
Nodekit structure (new entries versus parent class marked with arrow prefix):
CLASS SoJackDragger
-->"this"
"callbackList"
"topSeparator"
"motionMatrix"
--> "surroundScale"
--> "antiSquish"
--> "scaler"
--> "rotator"
--> "translator"
"geomSeparator"
(See SoBaseKit::printDiagram() for information about the output formatting.)
Detailed information on catalog parts:
CLASS SoJackDragger
PVT "this", SoJackDragger ---
"callbackList", SoNodeKitListPart [ SoCallback, SoEventCallback ]
PVT "topSeparator", SoSeparator ---
PVT "motionMatrix", SoMatrixTransform ---
"surroundScale", SoSurroundScale ---
"antiSquish", SoAntiSquish ---
"scaler", SoScaleUniformDragger ---
"rotator", SoRotateSphericalDragger ---
"translator", SoDragPointDragger ---
PVT "geomSeparator", SoSeparator ---
(See SoBaseKit::printTable() for information about the output formatting.)
void SoJackDragger::setDefaultOnNonWritingFields |
( |
void | | ) |
|
|
protectedvirtual |
(Be aware that this method is unlikely to be of interest to the application programmer who does not want to extend the library with new custom nodekits or draggers. If you indeed are writing extensions, see the information in the SoBaseKit class documentation.)
This is a virtual method, and the code in it should call SoField::setDefault() with argument TRUE
on part fields that should not be written upon scene graph export operations.
This is typically done when:
-
field value is NULL
and part is NULL
by default
-
it is a leaf SoGroup or SoSeparator node with no children
-
it is a leaf listpart with no children and an SoGroup or SoSeparator container
-
it is a non-leaf part and it is of SoGroup type and all fields are at their default values
Subclasses should usually override this to do additional settings for new member fields. From the subclass, do remember to call "upwards" to your superclass' setDefaultOnNonWritingFields() method.
Reimplemented from SoDragger.