/* * 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::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; }