82#ifndef _SO_TRACKBALL_DRAGGER_
83#define _SO_TRACKBALL_DRAGGER_
288 SCALE, USER_AXIS_ADJUST, USER_AXIS_ROTATE, SPINNING };
324 void initSphereProjectorInternal(
SbVec3f center,
float radius,
SbVec3f startWorkSpaceHitPt,
SbMatrix workingSpace);
327 void initStripeProjectorInternal(
SbLine axis,
float radius,
SbVec3f startWorkSpaceHitPt,
SbMatrix workingSpace);
329 void setHighlights();
333 bool userStripeDrag();
336 static const unsigned char geomBuffer[];
339 bool animationEnabled;
346 int firstIndex, lastIndex;
352 static void spinSensorCB(
void *,
SoSensor *);
354 void resetSpinStuff();
360 bool wasSpinningAtDragStart;
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
#define SO_KIT_CATALOG_ENTRY_HEADER(partName)
This defines an SoSFNode field for the catalog part given.
#define SO_KIT_HEADER(className)
This is a dictionary mapping (size_t) integer keys to (void *) data pointers.
Base class for representing projectors.
Class for representing a rotation.
Class for representation of a time.
Base class for nodekits that move in response to click-drag-release mouse events.
Sensor class that can be attached to Inventor fields.
Base class for all group nodes.
Node representing a 3D rotation about an arbitrary axis.
Field containing a rotation.
Field containing a three-dimensional vector.
Abstract base class for Inventor sensors.
Sensor that triggers callback repeatedly at regular intervals.
Striped ball you can rotate or scale uniformly by dragging with the mouse.
virtual SbProjector * initStripeProjector(SbLine axis, float radius, SbVec3f startWorkSpaceHitPt, SbMatrix workingSpace)
Setup the projector at start of constrained rotation.
static void valueChangedCB(void *, SoDragger *)
SoFieldSensor * scaleFieldSensor
virtual void setAllPartsActive(bool onOrOff)
void dragStart()
These really do the work during startCB, motionCB, and finishCB.
SoFieldSensor * rotFieldSensor
virtual ~SoTrackballDragger()
SoTrackballDragger()
Constructor.
void setAnimationEnabled(bool newVal)
If the mouse is moving while you release it, the trackball will continue to spin afterwards.
static void startCB(void *, SoDragger *)
Callbacks for drag start, motion, and finish.
SbCylinderProjector * stripeProj
static void fieldSensorCB(void *, SoSensor *)
SbSphereProjector * sphereProj
Moved variables from private to protected.
static void finishCB(void *, SoDragger *)
virtual bool setUpConnections(bool onOff, bool doItAlways=FALSE)
detach/attach any sensors, callbacks, and/or field connections.
static void metaKeyChangeCB(void *, SoDragger *)
Callback for pressing and releasing the meta keys.
static void initClass()
initialize the class
virtual void initDragState()
Determines the State based on the current pick path.
virtual SbProjector * initSphereProjector(SbVec3f center, float radius, SbVec3f startWorkSpaceHitPt, SbMatrix workingSpace)
Setup the projector at start of free rotation.
bool isAnimationEnabled()
static void motionCB(void *, SoDragger *)
virtual void setDefaultOnNonWritingFields()
Called by the SoBaseKit::write() method.
virtual void getSphereDeltaRotation(SbRotation &deltaRot, SbVec3f &newHitPt, SbVec3f prevHitPt, SbMatrix workingSpace)
Compute newHitPt and derive the delta rotation based on prevHitPt and newHitPt.
virtual void getStripeDeltaRotation(SbRotation &deltaRot, SbVec3f &newHitPt, SbVec3f prevHitPt, SbMatrix workingSpace)
Compute newHitPt and derive the delta rotation based on prevHitPt and newHitPt.