Skip to content

Commit 59058ec

Browse files
authored
Merge pull request #123 from kkimurak/enumerize
Add enums for statements (camera mode, camera motion mode, 3D cursor mode)
2 parents 0568391 + 13971db commit 59058ec

File tree

4 files changed

+58
-36
lines changed

4 files changed

+58
-36
lines changed

Diff for: include/glwidget.h

+20-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,23 @@ class GLWidget : public QGLWidget {
3232

3333
Q_OBJECT
3434
public:
35+
enum class CursorMode {
36+
STEADY = 0,
37+
PLACE_ROBOT = 1,
38+
PLACE_BALL = 2,
39+
};
40+
enum class CameraMode {
41+
BIRDS_EYE_FROM_TOUCH_LINE = 0,
42+
CURRENT_ROBOT_VIEW = 1,
43+
TOP_VIEW = 2,
44+
BIRDS_EYE_FROM_OPPOSITE_TOUCH_LINE = 3,
45+
BIRDS_EYE_FROM_BLUE = 4,
46+
BIRDS_EYE_FROM_YELLOW = 5,
47+
MAX_ACTIVE_MODE_FOR_CHANGEMODE=BIRDS_EYE_FROM_YELLOW,
48+
// non-avaliable modes when "toggle camera mode" called
49+
LOCK_TO_ROBOT = -1,
50+
LOCK_TO_BALL = -2,
51+
};
3552
GLWidget(QWidget *parent,ConfigWidget* _cfg);
3653
~GLWidget();
3754
dReal getFPS();
@@ -51,7 +68,7 @@ class GLWidget : public QGLWidget {
5168
QAction* moveRobotHereAct;
5269
QAction* changeCamModeAct;
5370
QMenu *cameraMenu;
54-
int Current_robot,Current_team,cammode;
71+
int Current_robot,Current_team;
5572
int lockedIndex;
5673
bool ctrl,alt,kickingball,altTrigger;
5774
bool chiping;
@@ -92,7 +109,8 @@ public slots:
92109
void keyReleaseEvent(QKeyEvent* event);
93110
void closeEvent(QCloseEvent *event);
94111
private:
95-
int state;
112+
CursorMode state;
113+
CameraMode cammode;
96114
int moving_robot_id,clicked_robot;
97115
int frames;
98116
bool first_time;

Diff for: include/graphics.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ Copyright (C) 2011, Parsian Robotic Center (eew.aut.ac.ir/~parsian/grsim)
2626
#include <QGLWidget>
2727
#include <QString>
2828

29+
enum CameraMotionMode {
30+
ROTATE_VIEW_POINT = 1,
31+
MOVE_POSITION_FREELY = 2,
32+
MOVE_POSITION_LR = 4,
33+
};
2934

3035
class CGraphics
3136
{
@@ -61,7 +66,7 @@ class CGraphics
6166
dReal renderDepth();
6267
void setRenderDepth(dReal depth);
6368
void setViewpoint (dReal x,dReal y,dReal z,dReal h,dReal p,dReal r);
64-
void cameraMotion (int mode, int deltax, int deltay);
69+
void cameraMotion (CameraMotionMode mode, int deltax, int deltay);
6570
void lookAt(dReal x,dReal y,dReal z);
6671
void getCameraForward(dReal& x,dReal& y,dReal& z);
6772
void getCameraRight(dReal& x,dReal& y,dReal& z);

Diff for: src/glwidget.cpp

+28-29
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ GLWidget::GLWidget(QWidget *parent, ConfigWidget* _cfg)
3131
: QGLWidget(parent)
3232
{
3333
frames = 0;
34-
state = 0;
34+
state = CursorMode::STEADY;
3535
first_time = true;
3636
cfg = _cfg;
3737

@@ -44,7 +44,7 @@ GLWidget::GLWidget(QWidget *parent, ConfigWidget* _cfg)
4444
ssl = new SSLWorld(this,cfg,forms[2],forms[2]);
4545
Current_robot = 0;
4646
Current_team = 0;
47-
cammode = 0;
47+
cammode = CameraMode::BIRDS_EYE_FROM_TOUCH_LINE;
4848
setMouseTracking(true);
4949

5050
blueRobotsMenu = new QMenu("&Blue Robots");
@@ -127,15 +127,15 @@ void GLWidget::moveRobot()
127127
{
128128
ssl->show3DCursor = true;
129129
ssl->cursor_radius = cfg->robotSettings.RobotRadius;
130-
state = 1;
130+
state = CursorMode::PLACE_ROBOT;
131131
moving_robot_id = clicked_robot;
132132
}
133133

134134
void GLWidget::unselectRobot()
135135
{
136136
ssl->show3DCursor = false;
137137
ssl->cursor_radius = cfg->robotSettings.RobotRadius;
138-
state = 0;
138+
state = CursorMode::STEADY;
139139
moving_robot_id= ssl->robotIndex(Current_robot,Current_team);
140140
}
141141

@@ -173,15 +173,15 @@ void GLWidget::moveCurrentRobot()
173173
{
174174
ssl->show3DCursor = true;
175175
ssl->cursor_radius = cfg->robotSettings.RobotRadius;
176-
state = 1;
176+
state = CursorMode::PLACE_ROBOT;
177177
moving_robot_id = ssl->robotIndex(Current_robot,Current_team);
178178
}
179179

180180
void GLWidget::moveBall()
181181
{
182182
ssl->show3DCursor = true;
183183
ssl->cursor_radius = cfg->BallRadius();
184-
state = 2;
184+
state = CursorMode::PLACE_BALL;
185185
}
186186

187187
void GLWidget::mousePressEvent(QMouseEvent *event)
@@ -190,22 +190,22 @@ void GLWidget::mousePressEvent(QMouseEvent *event)
190190
lastPos = event->pos();
191191
if (event->buttons() & Qt::LeftButton)
192192
{
193-
if (state==1)
193+
if (state==CursorMode::PLACE_ROBOT)
194194
{
195195
if (moving_robot_id!=-1)
196196
{
197197
ssl->robots[moving_robot_id]->setXY(ssl->cursor_x,ssl->cursor_y);
198-
state = 0;
198+
state = CursorMode::STEADY;
199199
ssl->show3DCursor = false;
200200
}
201201
}
202-
else if (state==2)
202+
else if (state==CursorMode::PLACE_BALL)
203203
{
204204
ssl->ball->setBodyPosition(ssl->cursor_x,ssl->cursor_y,cfg->BallRadius()*1.1*20.0);
205205
dBodySetAngularVel(ssl->ball->body,0,0,0);
206206
dBodySetLinearVel(ssl->ball->body,0,0,0);
207207
ssl->show3DCursor = false;
208-
state = 0;
208+
state = CursorMode::STEADY;
209209
}
210210
else {
211211
if (ssl->selected>=0){
@@ -303,13 +303,13 @@ void GLWidget::mouseMoveEvent(QMouseEvent *event)
303303
int dy = -(event->y() - lastPos.y());
304304
if (event->buttons() & Qt::LeftButton) {
305305
if (ctrl)
306-
ssl->g->cameraMotion(4,dx,dy);
306+
ssl->g->cameraMotion(CameraMotionMode::MOVE_POSITION_FREELY,dx,dy);
307307
else
308-
ssl->g->cameraMotion(1,dx,dy);
308+
ssl->g->cameraMotion(CameraMotionMode::ROTATE_VIEW_POINT,dx,dy);
309309
}
310310
else if (event->buttons() & Qt::MidButton)
311311
{
312-
ssl->g->cameraMotion(2,dx,dy);
312+
ssl->g->cameraMotion(CameraMotionMode::MOVE_POSITION_LR,dx,dy);
313313
}
314314
lastPos = event->pos();
315315
update3DCursor(event->x(),event->y());
@@ -360,20 +360,20 @@ void GLWidget::step()
360360
void GLWidget::paintGL()
361361
{
362362
if (!ssl->g->isGraphicsEnabled()) return;
363-
if (cammode==1)
363+
if (cammode==CameraMode::CURRENT_ROBOT_VIEW)
364364
{
365365
dReal x,y,z;
366366
int R = ssl->robotIndex(Current_robot,Current_team);
367367
ssl->robots[R]->getXY(x,y);z = 0.3;
368368
ssl->g->setViewpoint(x,y,z,ssl->robots[R]->getDir(),-25,0);
369369
}
370-
if (cammode==-1)
370+
if (cammode==CameraMode::LOCK_TO_ROBOT)
371371
{
372372
dReal x,y,z;
373373
ssl->robots[lockedIndex]->getXY(x,y);z = 0.1;
374374
ssl->g->lookAt(x,y,z);
375375
}
376-
if (cammode==-2)
376+
else if(cammode==CameraMode::LOCK_TO_BALL)
377377
{
378378
dReal x,y,z;
379379
ssl->ball->getBodyPosition(x,y,z);
@@ -400,22 +400,21 @@ void GLWidget::paintGL()
400400
void GLWidget::changeCameraMode()
401401
{
402402
static dReal xyz[3],hpr[3];
403-
if (cammode<0) cammode=0;
404-
else cammode ++;
405-
cammode %= 6;
406-
if (cammode==0)
403+
if(static_cast<int>(cammode)<0) cammode=CameraMode::BIRDS_EYE_FROM_TOUCH_LINE;
404+
cammode = static_cast<CameraMode>(static_cast<int>(cammode) + 1);
405+
cammode = static_cast<CameraMode>(static_cast<int>(cammode)%(static_cast<int>(CameraMode::MAX_ACTIVE_MODE_FOR_CHANGEMODE)+1));
406+
407+
if (cammode==CameraMode::BIRDS_EYE_FROM_TOUCH_LINE)
407408
ssl->g->setViewpoint(0,-(cfg->Field_Width()+cfg->Field_Margin()*2.0f)/2.0f,3,90,-45,0);
408-
else if (cammode==1)
409-
{
409+
else if (cammode==CameraMode::CURRENT_ROBOT_VIEW)
410410
ssl->g->getViewpoint(xyz,hpr);
411-
}
412-
else if (cammode==2)
411+
else if (cammode==CameraMode::TOP_VIEW)
413412
ssl->g->setViewpoint(0,0,5,0,-90,0);
414-
else if (cammode==3)
413+
else if (cammode==CameraMode::BIRDS_EYE_FROM_OPPOSITE_TOUCH_LINE)
415414
ssl->g->setViewpoint(0, (cfg->Field_Width()+cfg->Field_Margin()*2.0f)/2.0f,3,270,-45,0);
416-
else if (cammode==4)
415+
else if (cammode==CameraMode::BIRDS_EYE_FROM_BLUE)
417416
ssl->g->setViewpoint(-(cfg->Field_Length()+cfg->Field_Margin()*2.0f)/2.0f,0,3,0,-45,0);
418-
else if (cammode==5)
417+
else if (cammode==CameraMode::BIRDS_EYE_FROM_YELLOW)
419418
ssl->g->setViewpoint((cfg->Field_Length()+cfg->Field_Margin()*2.0f)/2.0f,0,3,180,-45,0);
420419
}
421420

@@ -547,13 +546,13 @@ void GLWidget::moveBallHere()
547546

548547
void GLWidget::lockCameraToRobot()
549548
{
550-
cammode = -1;
549+
cammode = CameraMode::LOCK_TO_ROBOT;
551550
lockedIndex = ssl->robotIndex(Current_robot,Current_team);//clicked_robot;
552551
}
553552

554553
void GLWidget::lockCameraToBall()
555554
{
556-
cammode = -2;
555+
cammode = CameraMode::LOCK_TO_BALL;
557556
}
558557

559558
void GLWidget::moveRobotHere()

Diff for: src/graphics.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -181,22 +181,22 @@ void CGraphics::wrapCameraAngles()
181181
}
182182
}
183183

184-
void CGraphics::cameraMotion (int mode, int deltax, int deltay)
184+
void CGraphics::cameraMotion (CameraMotionMode mode, int deltax, int deltay)
185185
{
186186
if (graphicDisabled) return;
187187
dReal side = 0.01f * dReal(deltax);
188-
dReal fwd = (mode==4) ? (0.01f * dReal(deltay)) : 0.0f;
188+
dReal fwd = (mode==CameraMotionMode::ROTATE_VIEW_POINT) ? (0.01f * dReal(deltay)) : 0.0f;
189189
dReal s = (dReal) sin (view_hpr[0]*M_PI/180.0f);
190190
dReal c = (dReal) cos (view_hpr[0]*M_PI/180.0f);
191191

192-
if (mode==1) {
192+
if (mode==CameraMotionMode::ROTATE_VIEW_POINT) {
193193
view_hpr[0] += dReal (deltax) * 0.5f;
194194
view_hpr[1] += dReal (deltay) * 0.5f;
195195
}
196196
else {
197197
view_xyz[0] += -s*side + c*fwd;
198198
view_xyz[1] += c*side + s*fwd;
199-
if (mode==2 || mode==5) view_xyz[2] += 0.01f * dReal(deltay);
199+
if (mode==CameraMotionMode::MOVE_POSITION_FREELY) view_xyz[2] += 0.01f * dReal(deltay);
200200
}
201201
wrapCameraAngles();
202202
}

0 commit comments

Comments
 (0)