summaryrefslogtreecommitdiffstats
path: root/src/mmscene.cpp
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2016-01-11 13:53:16 +0100
committerStefan Suhren <suhren.stefan@fh-swf.de>2016-01-11 14:20:43 +0100
commitecc979df941362a650302ea4e2ca65ff10bbfbe3 (patch)
treebe96f3da274487724ca219f3440df6f58494423f /src/mmscene.cpp
parent20ec14cd2b10319352ed6f4c0c4ad2bc6df5d81a (diff)
downloadMultimedia-ecc979df941362a650302ea4e2ca65ff10bbfbe3.tar.gz
Multimedia-ecc979df941362a650302ea4e2ca65ff10bbfbe3.zip
Add multiple tokens
Diffstat (limited to 'src/mmscene.cpp')
-rw-r--r--src/mmscene.cpp87
1 files changed, 72 insertions, 15 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()