00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _sensorinputdlg_h_
00027 #define _sensorinputdlg_h_
00028
00029 #include <QDialog>
00030
00031 #include "matvec3D.h"
00032
00033 class SoSensor;
00034 class SoTimerSensor;
00035 class Flock;
00036 class CyberGlove;
00037 class World;
00038
00039 #include "ui_sensorInputDlg.h"
00040
00042
00053 class SensorInputDlg : public QDialog, public Ui::SensorsDlgUI
00054 {
00055 Q_OBJECT
00056 public:
00058
00072 enum FlockMode{FLOCK_RELATIVE, FLOCK_ABSOLUTE, FLOCK_CAMERA};
00073 private:
00075 World *mWorld;
00077 bool mFlockRunning;
00079 bool mGloveRunning;
00081 SoTimerSensor *mTimerSensor;
00083 Flock *mFlock;
00085 CyberGlove *mGlove;
00087 FlockMode mFlockMode;
00089 FlockTransf mCameraFlockTran;
00091 int mNumBirds;
00093 int mMasterBird;
00094
00096 void init(World *w);
00098 bool initFlock();
00100 bool initGlove();
00101
00103 static void timerStaticCB(void *data, SoSensor*);
00105 void timerInternalCB();
00106
00108 void processGlove();
00109
00111 void processFlockBodies(std::vector<transf> &birdTransf);
00113 void processFlockCamera(std::vector<transf> &birdTransf);
00115 void processFlockRobots(std::vector<transf> &birdTransf);
00116
00118 void flockAndGloveFuzzyGrasp(std::vector<transf> &birdTransf);
00119
00121 transf SensorInputDlg::getBirdTran(int b);
00122
00123 private slots:
00125 void resetFlock();
00126
00127 public:
00128 SensorInputDlg(World *w, QWidget *parent = 0) : QDialog(parent) {
00129 setupUi(this);
00130 QObject::connect(exitButton, SIGNAL(clicked()), this, SLOT(exitButton_clicked()));
00131 QObject::connect(gloveStartButton, SIGNAL(clicked()), this,
00132 SLOT(gloveStartButton_clicked()));
00133 QObject::connect(flockStartButton, SIGNAL(clicked()), this,
00134 SLOT(flockStartButton_clicked()));
00135 QObject::connect(resetFlockButton, SIGNAL(clicked()), this,
00136 SLOT(resetFlock()));
00137 init(w);
00138 }
00139
00140 public slots:
00142 void exitButton_clicked();
00144 void gloveStartButton_clicked();
00146 void flockStartButton_clicked();
00147 };
00148
00149 #endif