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;
}
|