summaryrefslogtreecommitdiffstats
path: root/Engine.cpp
blob: 20de3e6aa39534be853a67df5650c85414eca969 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
 * Engine.cpp
 *
 *  Created on: 26.02.2010
 *      Author: constantin
 */

#include "Engine.h"

Engine::Renderer Engine::render;
const float Engine::PLAYER_SPEED = 3;

Engine::Engine(): playerPos(vmml::vec3f::ZERO), playerRotY(vmml::mat4f::IDENTITY), playerRotX(0)
{
  //tree = new BSPTree(triangles);
}
Engine::~Engine() {
  //delete tree;
}

void Engine::renderScene(unsigned long delta, const Keyset &keys)  {
  //run(delta, keys);
  static Cuboid cube(1, 1, 1, 0, 0, 0);

  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glLoadIdentity();

  glTranslatef(0.0, 0.0, -10.0); // Then set up transformation
  glRotatef(0, 1.0, 0.0, 0.0);
  glRotatef(0, 0.0, 1.0, 0.0);

  //vmml::mat4f transform, inverseTransform;
  //glGetFloatv(GL_MODELVIEW_MATRIX, transform.array);

  //transform.inverse(inverseTransform);

  //vmml::vec3f viewPoint = inverseTransform*vmml::vec3f::ZERO;

    glBegin(GL_TRIANGLES);
    //tree->visit(render, viewPoint);

      triangles = cube.getTriangles();

      for(std::list<Triangle>::iterator t = triangles.begin(); t != triangles.end(); ++t) {
        render(*t);
      }
    glEnd();
  glFlush();
}

void Engine::run(unsigned long delta, const Keyset &keys)
{
  vmml::vec3f playerMove(vmml::vec3f::ZERO);

  if(keys.test(KEY_UP)) {
    playerMove -= playerRotY*vmml::vec3f::UNIT_Z;
  }
  if(keys.test(KEY_DOWN)) {
    playerMove += playerRotY*vmml::vec3f::UNIT_Z;
  }
  if(keys.test(KEY_LEFT)) {
    playerMove -= playerRotY*vmml::vec3f::UNIT_X;
  }
  if(keys.test(KEY_RIGHT)) {
    playerMove += playerRotY*vmml::vec3f::UNIT_X;
  }

  if(playerMove == vmml::vec3f::ZERO)
    return;

  playerMove.normalize();
  playerMove *= PLAYER_SPEED*delta/1;
  playerPos += playerMove;

}