diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-12-14 13:54:34 +0100 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-12-14 13:54:34 +0100 |
commit | ff7b7c8838f55dc0f2e76f903630f1d3d2941d5a (patch) | |
tree | 2c2f053b84251c9216a851a26edac4bc17c607bb /Game.cpp | |
parent | da66d49b8a7bcc808df201bee5c7cb787b6f30b7 (diff) | |
download | zoom++-ff7b7c8838f55dc0f2e76f903630f1d3d2941d5a.tar zoom++-ff7b7c8838f55dc0f2e76f903630f1d3d2941d5a.zip |
Added everything... -.-
Diffstat (limited to 'Game.cpp')
-rw-r--r-- | Game.cpp | 47 |
1 files changed, 29 insertions, 18 deletions
@@ -19,6 +19,7 @@ #include "Game.h" #include "BSPTree.h" +#include "Level.h" #include "Triangle.h" #include "gl.h" @@ -26,8 +27,9 @@ namespace Zoom { Game::Game(bool multisample) : angle(0) { glClearColor(0.0, 0.0, 0.0, 1.0); - //glEnable(GL_DEPTH_TEST); - //glDepthFunc(GL_LEQUAL); + glClearDepth(1.0); + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LEQUAL); //glEnable(GL_BLEND); //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -37,43 +39,52 @@ Game::Game(bool multisample) : angle(0) { glEnable(GL_MULTISAMPLE_ARB); #endif - /*glEnable(GL_LIGHTING); - static const float light[] = {1, 1, 1, 0}; + glShadeModel(GL_SMOOTH); + + glEnable(GL_LIGHTING); + static const float light[] = {0, 0, 0, 1}; static const float lightColor[] = {1, 1, 1, 1}; glLightfv(GL_LIGHT0, GL_POSITION, light); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor); - glEnable(GL_LIGHT0);*/ + glEnable(GL_LIGHT0); + + glEnable(GL_COLOR_MATERIAL); + glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); - //glEnable(GL_CULL_FACE); - //glFrontFace(GL_CCW); + glEnable(GL_CULL_FACE); + glFrontFace(GL_CCW); glLoadIdentity(); - glTranslatef(0, 0, -5); + + loadLevel("level.xml"); +} + +bool Game::loadLevel(const std::string &name) { + level = Level::loadLevel(name); + + return level; } void Game::run(int delta) { - angle += delta*0.2; + angle += delta*0.01; if(angle >= 360) angle -= 360; } void Game::render() { - std::list<Triangle> triangles; - - triangles.push_back(Triangle(vmml::vec3f(-1, -1, 0), vmml::vec3f(1, -1, 0), vmml::vec3f(1, 1, 0), vmml::vec3f(0, 1, 0))); - triangles.push_back(Triangle(vmml::vec3f(-1, -1, 0), vmml::vec3f(-1, 1, 0), vmml::vec3f(1, 1, 0), vmml::vec3f(0, 1, 0))); - triangles.push_back(Triangle(vmml::vec3f(-1, -1, -1), vmml::vec3f(1, -1, -1), vmml::vec3f(1, 1, -1), vmml::vec3f(0, 0, 1))); - triangles.push_back(Triangle(vmml::vec3f(-1, -1, -1), vmml::vec3f(-1, 1, -1), vmml::vec3f(1, 1, -1), vmml::vec3f(0, 0, 1))); + std::list<BSPTree::TriangleRecord> triangles; - BSPTree tree(triangles); + triangles.insert(triangles.end(), level->getRooms().front().walls.begin(), level->getRooms().front().walls.end()); - glClear(GL_COLOR_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glRotatef(angle, 1, 2, 1); + //glRotatef(3*angle, 0, -1, 2); + //glRotatef(5*angle, 2, -1, 0); - renderer.render(tree); + renderer.render(triangles); glPopMatrix(); } |