diff options
author | Constantin Riß <constantin.riss@dre.de> | 2010-03-01 23:30:40 +0100 |
---|---|---|
committer | Constantin Riß <constantin.riss@dre.de> | 2010-03-01 23:30:40 +0100 |
commit | 070051b8759806873267cff46ceb2be7d6a3262f (patch) | |
tree | a19b03e51847d3dee10514e456a4c7921b306b3e /Engine.cpp | |
download | headshot-070051b8759806873267cff46ceb2be7d6a3262f.tar headshot-070051b8759806873267cff46ceb2be7d6a3262f.zip |
initial commit
Diffstat (limited to 'Engine.cpp')
-rw-r--r-- | Engine.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Engine.cpp b/Engine.cpp new file mode 100644 index 0000000..20de3e6 --- /dev/null +++ b/Engine.cpp @@ -0,0 +1,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; + +} |