int GLWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QGLWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: clicked(); break; case 1: selectedRobot(); break; case 2: closeSignal((*reinterpret_cast< bool(*)>(_a[1]))); break; case 3: toggleFullScreen((*reinterpret_cast< bool(*)>(_a[1]))); break; case 4: robotTurnedOnOff((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; case 5: moveRobot(); break; case 6: resetRobot(); break; case 7: selectRobot(); break; case 8: moveCurrentRobot(); break; case 9: resetCurrentRobot(); break; case 10: moveBall(); break; case 11: changeCameraMode(); break; case 12: yellowRobotsMenuTriggered((*reinterpret_cast< QAction*(*)>(_a[1]))); break; case 13: blueRobotsMenuTriggered((*reinterpret_cast< QAction*(*)>(_a[1]))); break; case 14: switchRobotOnOff(); break; case 15: moveRobotHere(); break; case 16: moveBallHere(); break; case 17: lockCameraToRobot(); break; case 18: lockCameraToBall(); break; default: ; } _id -= 19; } return _id; }
RangeSensorWidget::RangeSensorWidget(int& argc, char * argv[]) : QWidget(), client_(argc, argv), sensor_(), robotName_(client_.namingContextName.c_str()), sensorName_("Sonar"), group_(0), timer_(0), drawCones_(false) { // set widget size resize(400, 400); // init menu menuBar_ = new QMenuBar(this); menuFile_ = new QPopupMenu(this); menuView_ = new QPopupMenu(this); menuView_->setCheckable(true); menuBar_->insertItem("&Robot", menuFile_); menuBar_->insertItem("&View", menuView_); menuFile_->insertItem("Select robot", this, SLOT(selectRobot())); menuFile_->insertItem("Select sensor", this, SLOT(selectSensor())); groupIndex_ = menuFile_->insertItem("Select group", this, SLOT(selectGroup())); menuFile_->setItemEnabled(groupIndex_, false); menuFile_->insertSeparator(); menuFile_->insertItem("Quit", qApp, SLOT(quit())); coneIndex_ = menuView_->insertItem("Draw Cone", this, SLOT(toggleCone())); }
void HumanPlayer::controlRobotAt(int index) { selectRobotView(robots.at(0)); changeCamera(CAMERA_ROBOT); selectRobot(index); aRobotIsSelected = true; robots.at(0)->isRobotBeingControlled = true; }
GLWidget::GLWidget(QWidget *parent,ConfigWidget* _cfg) : QGLWidget(parent) { frames = 0; state = 0; first_time = true; cfg = _cfg; forms[0] = new RobotsFomation(-1); //outside forms[1] = new RobotsFomation(-2); //outside forms[2] = new RobotsFomation(1); //inside type 1 forms[3] = new RobotsFomation(2); //inside type 2 forms[4] = new RobotsFomation(3); //inside type 1 forms[5] = new RobotsFomation(4); //inside type 2 ssl = new SSLWorld(this,cfg,forms[2],forms[2]); Current_robot = 0; Current_team = 0; cammode = 0; setMouseTracking(true); blueRobotsMenu = new QMenu("&Blue Robots"); yellowRobotsMenu = new QMenu("&Yellow Robots"); blueRobotsMenu->addAction(tr("Put all inside with formation 1")); blueRobotsMenu->addAction(tr("Put all inside with formation 2")); blueRobotsMenu->addAction(tr("Put all outside")); blueRobotsMenu->addAction(tr("Put all out of field")); yellowRobotsMenu->addAction(tr("Put all inside with formation 1")); yellowRobotsMenu->addAction(tr("Put all inside with formation 2")); yellowRobotsMenu->addAction(tr("Put all outside")); yellowRobotsMenu->addAction(tr("Put all out of field")); robpopup = new QMenu(this); moveRobotAct = new QAction(tr("&Locate robot"),this); selectRobotAct = new QAction(tr("&Select robot"),this); resetRobotAct = new QAction(tr("&Reset robot"),this); onOffRobotAct = new QAction(tr("Turn &off"),this); lockToRobotAct = new QAction(tr("Loc&k camera to this robot"),this); robpopup->addAction(moveRobotAct); robpopup->addAction(resetRobotAct); robpopup->addAction(onOffRobotAct); robpopup->addAction(lockToRobotAct); robpopup->addMenu(blueRobotsMenu); robpopup->addMenu(yellowRobotsMenu); moveBallAct = new QAction(tr("&Locate ball"),this); lockToBallAct = new QAction(tr("Loc&k camera to ball"),this); ballpopup = new QMenu(this); ballpopup->addAction(moveBallAct); ballpopup->addAction(lockToBallAct); moveRobotHereAct = new QAction(tr("Locate current &robot here"),this); moveBallHereAct = new QAction(tr("Locate &ball here"),this); mainpopup = new QMenu(this); mainpopup->addAction(moveBallHereAct); mainpopup->addAction(moveRobotHereAct); cameraMenu = new QMenu("&Camera"); changeCamModeAct=new QAction(tr("Change &mode"),this); changeCamModeAct->setShortcut(QKeySequence("C")); cameraMenu->addAction(changeCamModeAct); cameraMenu->addAction(lockToRobotAct); cameraMenu->addAction(lockToBallAct); mainpopup->addMenu(cameraMenu); mainpopup->addMenu(blueRobotsMenu); mainpopup->addMenu(yellowRobotsMenu); connect(moveRobotAct, SIGNAL(triggered()), this, SLOT(moveRobot())); connect(selectRobotAct, SIGNAL(triggered()), this, SLOT(selectRobot())); connect(resetRobotAct, SIGNAL(triggered()), this, SLOT(resetRobot())); connect(moveBallAct, SIGNAL(triggered()), this, SLOT(moveBall())); connect(onOffRobotAct, SIGNAL(triggered()), this, SLOT(switchRobotOnOff())); connect(yellowRobotsMenu,SIGNAL(triggered(QAction*)),this,SLOT(yellowRobotsMenuTriggered(QAction*))); connect(blueRobotsMenu,SIGNAL(triggered(QAction*)),this,SLOT(blueRobotsMenuTriggered(QAction*))); connect(moveBallHereAct, SIGNAL(triggered()),this , SLOT(moveBallHere())); connect(moveRobotHereAct, SIGNAL(triggered()),this , SLOT(moveRobotHere())); connect(lockToRobotAct, SIGNAL(triggered()), this, SLOT(lockCameraToRobot())); connect(lockToBallAct, SIGNAL(triggered()), this, SLOT(lockCameraToBall())); connect(changeCamModeAct,SIGNAL(triggered()),this,SLOT(changeCameraMode())); setFocusPolicy(Qt::StrongFocus); fullScreen = false; ctrl = false; alt = false; kickingball = false; kickpower = 3.0; }
void GLWidget::mousePressEvent(QMouseEvent *event) { if (!ssl->g->isGraphicsEnabled()) return; lastPos = event->pos(); if (event->buttons() & Qt::LeftButton) { if (state==1) { if (moving_robot_id!=-1) { ssl->robots[moving_robot_id]->setXY(ssl->cursor_x,ssl->cursor_y); state = 0; ssl->show3DCursor = false; } } else if (state==2) { ssl->ball->setBodyPosition(ssl->cursor_x,ssl->cursor_y,cfg->v_BallRadius->getValue()*1.1*20.0); dBodySetAngularVel(ssl->ball->body,0,0,0); dBodySetLinearVel(ssl->ball->body,0,0,0); ssl->show3DCursor = false; state = 0; } else { if (ssl->selected>=0){ clicked_robot = ssl->selected; selectRobot(); } if (kickingball) { dReal x,y,z; ssl->ball->getBodyPosition(x,y,z); x = ssl->cursor_x - x; y = ssl->cursor_y - y; dReal lxy = hypot(x,y); x /= lxy; y /= lxy; x *= kickpower; y *= kickpower; dBodySetLinearVel(ssl->ball->body,x,y,0); dBodySetAngularVel(ssl->ball->body,-y/cfg->v_BallRadius->getValue(),x/cfg->v_BallRadius->getValue(),0); } } } if (event->buttons() & Qt::RightButton) { if (ssl->selected!=-1 && ssl->selected!=-2) { clicked_robot = ssl->selected; selectRobot(); if (ssl->robots[ssl->selected]->on) onOffRobotAct->setText("Turn &off"); else onOffRobotAct->setText("Turn &on"); robpopup->exec(event->globalPos()); } else clicked_robot=-1; if (ssl->selected==-2) ballpopup->exec(event->globalPos()); if (ssl->selected==-1) mainpopup->exec(event->globalPos()); } }