755 void addOtherEventCallback(
SoDraggerCB *f,
void *userData = NULL);
756 void removeOtherEventCallback(
SoDraggerCB *f,
void *userData = NULL);
757 void clearOtherEventCallbacks();
767 void registerChildDragger(
SoDragger *child);
768 void unregisterChildDragger(
SoDragger *child);
775 void registerChildDraggerMovingIndependently(
SoDragger *child);
776 void unregisterChildDraggerMovingIndependently(
SoDragger *child);
783 SbVec3f getLocalStartingPoint();
785 SbVec3f getWorldStartingPoint();
796 void getPartToLocalMatrix(
const SbName &partName,
801 void transformMatrixLocalToWorld(
const SbMatrix &fromMatrix,
803 void transformMatrixWorldToLocal(
const SbMatrix &fromMatrix,
805 void transformMatrixToLocalSpace(
const SbMatrix &fromMatrix,
819 const SbMatrix &getStartMotionMatrix() {
return startMotionMatrix; }
825 virtual void saveStartParameters();
828 const SoPath *getPickPath()
const;
829 const SoEvent *getEvent()
const;
835 SoPath *createPathToThis();
843 const SoPath *getSurrogatePartPickedOwner()
const
844 {
return pathToSurrogatePickOwner;}
847 const SbName &getSurrogatePartPickedName()
const
848 {
return surrogateNameInPickOwner; }
853 const SoPath *getSurrogatePartPickedPath()
const
854 {
return surrogatePathInPickOwner;}
862 void setStartingPoint(
const SbVec3f &newPoint );
887 const SbViewVolume &getViewVolume() {
return viewVolume; }
890 void setViewVolume(
const SbViewVolume &vol) { viewVolume = vol; }
907 void setTempPathToThis(
const SoPath *somethingClose);
910 virtual void grabEventsSetup();
911 virtual void grabEventsCleanup();
926 void workFieldsIntoTransform(
SbMatrix &mtx );
930 static void workValuesIntoTransform(
SbMatrix &mtx,
955 const SbMatrix *conversion = NULL );
958 const SbMatrix *conversion = NULL );
961 const SbMatrix *conversion = NULL );
964 SbBool isTrackerDirectMode()
const;
969 static void initClass();
970 static void exitClass();
971 SB_THREAD_TLS_HEADER();
974 static void initClasses();
975 static void exitClasses();
982 enum ProjectorFrontSetting {
983 FRONT, BACK, USE_PICK
985 void setFrontOnProjector( ProjectorFrontSetting newVal )
986 { projectorFrontSetting = newVal; }
987 ProjectorFrontSetting getFrontOnProjector()
const
988 {
return projectorFrontSetting;}
990 inline void setInteracting(
bool flag) { m_draggerInteracting = flag; }
1001 static void enableCB(
void *,
SoSensor * );
1008 SbVec2f getNormalizedLocaterPosition();
1009 const SbVec2f& getLocaterPosition();
1015 const SbVec2f& getStartLocaterPosition()
const {
return startLocater; }
1020 void setStartLocaterPosition(
const SbVec2f& p) { startLocater = p; }
1024 SbBool isAdequateConstraintMotion();
1034 virtual SbBool shouldGrabBasedOnSurrogate(
const SoPath *pickPath,
1035 const SoPath *surrogatePath );
1040 void setCameraInfo(
SoAction *action );
1057 void setIgnoreInBbox(
SbBool newVal ) { ignoreInBbox = newVal; }
1058 SbBool isIgnoreInBbox() {
return ignoreInBbox; }
1067 static void childTransferMotionAndValueChangedCB(
void *,
SoDragger *);
1068 static void childValueChangedCB(
void *,
SoDragger *);
1069 static void childStartCB(
void *,
SoDragger *);
1070 static void childMotionCB(
void *,
SoDragger *);
1071 static void childFinishCB(
void *,
SoDragger *);
1072 static void childOtherEventCB(
void *,
SoDragger *);
1077 void setActiveChildDragger(
SoDragger *newChildDragger );
1078 SoDragger *getActiveChildDragger()
const {
return activeChildDragger; }
1098 virtual void setDefaultOnNonWritingFields();
1102 virtual SbBool applyTrackerMotion();
1138 SbBool valueChangedCallbacksEnabled;
1158 void setPickPath(
SoPath *newPickPath);
1162 void setNoPickedSurrogate();
1163 void setPickedSurrogate(
SoPath *pathToOwner,
SbName &nameUsedByOwner,
1164 SoPath *pathUsedByOwner );
1166 SbName surrogateNameInPickOwner;
1167 SoPath *pathToSurrogatePickOwner;
1168 SoPath *surrogatePathInPickOwner;
1178 SoTempPath *tempPathToThis;
1183 SbBool isTempPathToThisOk();
1185 SoTempPath *createTempPathFromFullPath(
const SoFullPath *fp )
const;
1194 static float minScale;
1202 void validateMatrices(
SoAction* );
1210 SbBool cachedPathToThisValid;
1211 SbBool cachedMotionMatrixValid;
1225 bool m_draggerInteracting;
1227 ProjectorFrontSetting projectorFrontSetting;
void SoDraggerCB(void *userData, SoDragger *dragger)
#define SO_KIT_CATALOG_ENTRY_HEADER(partName)
#define SO_KIT_HEADER(className)
Character string stored in a hash table.
List of generic (void *) pointers.
Class for representing a rotation.
Class for representing a viewport.
Abstract base class for all actions.
Manages a list of callbacks and associated data.
Base class for nodekits that move in response to click-drag-release mouse events.
void setMinGesture(int pixels)
Sets the number of pixels of movement required to initiate a constraint gesture.
void removeMotionCallback(SoDraggerCB *f, void *userData=NULL)
Removes motion callback.
void removeFinishCallback(SoDraggerCB *f, void *userData=NULL)
Removes finish callback.
SoSFBool enableCallbacks
If set to FALSE, motion, start and finish callbacks are disabled.
SoSFBool isActive
TRUE when mouse is down and dragging, else FALSE.
TrackerDirectMode getTrackerDirectMode() const
Get the current tracker direct mode for this dragger.
void setMinGesture(float pixels)
Float version of setMinGesture.
void addFinishCallback(SoDraggerCB *f, void *userData=NULL)
Adds finish callback.
TrackerDirectMode
Tracker direct mode.
@ NONE
Dragger will not use tracker values directly (default).
@ MOVE
Dragger will use tracker position values directly.
@ DEFAULT
Dragger will use its natural default direct behavior (which will be NONE, MOVE, ROTATE,...
@ FREE
Dragger will use tracker position and orientation directly.
@ ROTATE
Dragger will use tracker orientation values directly.
void addStartCallback(SoDraggerCB *f, void *userData=NULL)
Adds start callback.
static TrackerDirectMode getInitialTrackerDirectMode()
Get the initial tracker direct mode.
void removeStartCallback(SoDraggerCB *f, void *userData=NULL)
Removes start callback.
float getMinGestureFloat() const
Float version of getMinGesture.
void removeValueChangedCallback(SoDraggerCB *f, void *userData=NULL)
Removes value-changed callback.
static void setMinScale(float newMinScale)
Sets the smallest scale that any dragger will write.
void setMotionMatrix(const SbMatrix &newMatrix)
Set the motion matrix.
int getMinGesture() const
Gets the number of pixels of movement required to initiate a constraint gesture.
void addMotionCallback(SoDraggerCB *f, void *userData=NULL)
Adds motion callback.
void addValueChangedCallback(SoDraggerCB *f, void *userData=NULL)
Adds value-changed callback.
SbBool enableValueChangedCallbacks(SbBool newVal)
You can temporarily disable a dragger's valueChangedCallbacks.
static float getMinScale()
Gets the smallest scale that any dragger will write.
const SbMatrix & getMotionMatrix()
Get the motion matrix.
static void setInitialTrackerDirectMode(TrackerDirectMode mode=DEFAULT)
Set the initial tracker direct mode for draggers not yet created.
void setTrackerDirectMode(TrackerDirectMode mode=DEFAULT)
Sets the tracker direct mode for this dragger (see description above).
Base class for all events.
Sensor class that can be attached to Open Inventor fields.
Path that allows access to hidden children.
Renders a scene graph using Open Inventor's Render Engine.
Computes bounding box of a scene.
Computes transformation matrix for a subgraph.
Allows nodes in a graph to receive input events.
Base class for all interaction nodekit classes.
Path that points to a list of hierarchical nodes.
Represents point on surface of picked object.
Field containing a single Boolean value.
Searches for nodes in a scene graph.
Abstract base class for Open Inventor sensors.