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;
}
Example #4
0
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;
}
Example #5
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());
    }
}