diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2016-01-11 13:53:16 +0100 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2016-01-11 14:20:43 +0100 |
| commit | ecc979df941362a650302ea4e2ca65ff10bbfbe3 (patch) | |
| tree | be96f3da274487724ca219f3440df6f58494423f | |
| parent | 20ec14cd2b10319352ed6f4c0c4ad2bc6df5d81a (diff) | |
| download | Multimedia-ecc979df941362a650302ea4e2ca65ff10bbfbe3.tar.gz Multimedia-ecc979df941362a650302ea4e2ca65ff10bbfbe3.zip | |
Add multiple tokens
| -rw-r--r-- | src/mmscene.cpp | 87 | ||||
| -rw-r--r-- | src/mmscene.h | 4 |
2 files changed, 74 insertions, 17 deletions
diff --git a/src/mmscene.cpp b/src/mmscene.cpp index b38f58a..2ed9257 100644 --- a/src/mmscene.cpp +++ b/src/mmscene.cpp @@ -8,7 +8,6 @@ MMScene::MMScene(QQuickItem *parent) // Initialize with NULL m_cube = NULL; m_sphere = NULL; - m_disc = NULL; m_chessboard = NULL; // Stop rotation @@ -36,12 +35,6 @@ MMScene::~MMScene() m_sphere = NULL; } - if (m_disc != NULL) - { - delete m_disc; - m_disc = NULL; - } - if (m_chessboard != NULL) { delete m_chessboard; @@ -65,7 +58,11 @@ void MMScene::paintOnTopOfQmlScene() //drawF(5.0); //m_cube->draw(m_renderer); //m_sphere->draw(m_renderer); - m_disc->draw(m_renderer); + foreach(GLDisc *token, m_tokens) + { + token->draw(m_renderer); + } + m_chessboard->drawBoard(m_renderer); m_renderer->popMvMatrix(); } @@ -75,7 +72,7 @@ void MMScene::setupGeometry() //createCube(QVector3D(0.0, 0.0, 0.0), QVector3D(1.0, 1.0, 1.0)); //createSphere(); createChessboard(); - createDisc(); + createTokens(); //createF(5.0); //m_colorArrayEnabled = true; @@ -86,8 +83,13 @@ void MMScene::mousePressed(int x, int y) { renderer()->calculateMousePoints(&m_MouseNear, &m_mouseFar, QPoint(x, y)); renderer()->mouseIntersection(&m_lastIntersection, v_Z, 0.0, QPoint(x, y)); //get starting point - if (m_disc->isHit(m_MouseNear, m_mouseFar)) - qDebug() << "Treffer"; + for(int i = 0; i < m_tokens.size(); i++) + { + if(m_tokens[i]->isHit(m_MouseNear, m_mouseFar)) + { + qDebug() << "Token" << i << "ist getroffen!"; + } + } } void MMScene::drawTriangles() @@ -128,12 +130,67 @@ void MMScene::createSphere() m_sphere->makeSurface(&m_points, &m_indices); } -void MMScene::createDisc() +void MMScene::createTokens() { - m_disc = new GLDisc(0.5, 0.25, m_chessboard->fieldToPosition(QPoint(7, 7)), 10, GLColorRgba::clBlue, ":/textures/white_disc.jpg"); + for(int i = 0; i < 8; i+=2) + { + GLDisc *token = new GLDisc(0.5, 0.25, m_chessboard->fieldToPosition(QPoint(i, 0)), 10, GLColorRgba::clBlue, ":/textures/white_disc.jpg"); + + token->setDrawingMode(GL_TRIANGLES); + token->makeSurface(&m_points, &m_indices); + + m_tokens.append(token); + } + + for(int i = 1; i < 8; i+=2) + { + GLDisc *token = new GLDisc(0.5, 0.25, m_chessboard->fieldToPosition(QPoint(i, 1)), 10, GLColorRgba::clBlue, ":/textures/white_disc.jpg"); + + token->setDrawingMode(GL_TRIANGLES); + token->makeSurface(&m_points, &m_indices); + + m_tokens.append(token); + } + + for(int i = 0; i < 8; i+=2) + { + GLDisc *token = new GLDisc(0.5, 0.25, m_chessboard->fieldToPosition(QPoint(i, 2)), 10, GLColorRgba::clBlue, ":/textures/white_disc.jpg"); + + token->setDrawingMode(GL_TRIANGLES); + token->makeSurface(&m_points, &m_indices); + + m_tokens.append(token); + } + + for(int i = 1; i < 8; i+=2) + { + GLDisc *token = new GLDisc(0.5, 0.25, m_chessboard->fieldToPosition(QPoint(i, 5)), 10, GLColorRgba::clBlue, ":/textures/black_disc.jpg"); + + token->setDrawingMode(GL_TRIANGLES); + token->makeSurface(&m_points, &m_indices); + + m_tokens.append(token); + } - m_disc->setDrawingMode(GL_TRIANGLES); - m_disc->makeSurface(&m_points, &m_indices); + for(int i = 0; i < 8; i+=2) + { + GLDisc *token = new GLDisc(0.5, 0.25, m_chessboard->fieldToPosition(QPoint(i, 6)), 10, GLColorRgba::clBlue, ":/textures/black_disc.jpg"); + + token->setDrawingMode(GL_TRIANGLES); + token->makeSurface(&m_points, &m_indices); + + m_tokens.append(token); + } + + for(int i = 1; i < 8; i+=2) + { + GLDisc *token = new GLDisc(0.5, 0.25, m_chessboard->fieldToPosition(QPoint(i, 7)), 10, GLColorRgba::clBlue, ":/textures/black_disc.jpg"); + + token->setDrawingMode(GL_TRIANGLES); + token->makeSurface(&m_points, &m_indices); + + m_tokens.append(token); + } } void MMScene::createChessboard() diff --git a/src/mmscene.h b/src/mmscene.h index 7745206..1340f7d 100644 --- a/src/mmscene.h +++ b/src/mmscene.h @@ -59,7 +59,7 @@ protected: /** * @brief createDisc Creates a disc and appends it for drawing. */ - void createDisc(); + void createTokens(); /** * @brief createChessboard Creates a chessboard and appends it for drawing. @@ -83,7 +83,7 @@ private: GLSphere *m_sphere; - GLDisc *m_disc; + QVector<GLDisc *> m_tokens; GLChessboard *m_chessboard; |
