00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef COIN_SOCENTERBALLDRAGGER_H
00021
#define COIN_SOCENTERBALLDRAGGER_H
00022
00023
#include <Inventor/draggers/SoDragger.h>
00024
#include <Inventor/fields/SoSFRotation.h>
00025
#include <Inventor/fields/SoSFVec3f.h>
00026
00027
class SoSensor;
00028
class SoFieldSensor;
00029
00030
00031 class COIN_DLL_API SoCenterballDragger :
public SoDragger {
00032
typedef SoDragger inherited;
00033
00034 SO_KIT_HEADER(SoCenterballDragger);
00035
00036 SO_KIT_CATALOG_ENTRY_HEADER(XAxis);
00037 SO_KIT_CATALOG_ENTRY_HEADER(XAxisSwitch);
00038 SO_KIT_CATALOG_ENTRY_HEADER(XCenterChanger);
00039 SO_KIT_CATALOG_ENTRY_HEADER(XRotator);
00040 SO_KIT_CATALOG_ENTRY_HEADER(YAxis);
00041 SO_KIT_CATALOG_ENTRY_HEADER(YAxisSwitch);
00042 SO_KIT_CATALOG_ENTRY_HEADER(YCenterChanger);
00043 SO_KIT_CATALOG_ENTRY_HEADER(YRotator);
00044 SO_KIT_CATALOG_ENTRY_HEADER(ZAxis);
00045 SO_KIT_CATALOG_ENTRY_HEADER(ZAxisSwitch);
00046 SO_KIT_CATALOG_ENTRY_HEADER(ZCenterChanger);
00047 SO_KIT_CATALOG_ENTRY_HEADER(ZRotator);
00048 SO_KIT_CATALOG_ENTRY_HEADER(antiSquish);
00049 SO_KIT_CATALOG_ENTRY_HEADER(lightModel);
00050 SO_KIT_CATALOG_ENTRY_HEADER(rot2X90);
00051 SO_KIT_CATALOG_ENTRY_HEADER(rotX90);
00052 SO_KIT_CATALOG_ENTRY_HEADER(rotY90);
00053 SO_KIT_CATALOG_ENTRY_HEADER(rotator);
00054 SO_KIT_CATALOG_ENTRY_HEADER(surroundScale);
00055 SO_KIT_CATALOG_ENTRY_HEADER(translateToCenter);
00056
00057
public:
00058
static void initClass(
void);
00059 SoCenterballDragger(
void);
00060
00061
virtual void saveStartParameters(
void);
00062
00063
SoSFRotation rotation;
00064
SoSFVec3f center;
00065
00066
protected:
00067 ~SoCenterballDragger();
00068
void transferCenterDraggerMotion(
SoDragger * childdragger);
00069
void setSwitches(
SoDragger * activechild);
00070
virtual SbBool setUpConnections(SbBool onoff, SbBool doitalways = FALSE);
00071
virtual void setDefaultOnNonWritingFields(
void);
00072
00073
static void fieldSensorCB(
void * f,
SoSensor * s);
00074
static void valueChangedCB(
void * f,
SoDragger * d);
00075
static void kidStartCB(
void * f,
SoDragger * d);
00076
static void kidFinishCB(
void * f,
SoDragger * d);
00077
00078
virtual void getBoundingBox(
SoGetBoundingBoxAction * action);
00079
virtual void getMatrix(
SoGetMatrixAction * action);
00080
00081
SoFieldSensor * rotFieldSensor;
00082
SoFieldSensor * centerFieldSensor;
00083
00084
private:
00085
SbVec3f savedtransl;
00086
SbVec3f savedcenter;
00087
void addChildDragger(
SoDragger *child);
00088
void removeChildDragger(
const char *childname);
00089 };
00090
00091
#endif // !COIN_SOCENTERBALLDRAGGER_H