summaryrefslogtreecommitdiffstats
path: root/Engine.cpp
diff options
context:
space:
mode:
authorConstantin Riß <constantin.riss@dre.de>2010-03-01 23:30:40 +0100
committerConstantin Riß <constantin.riss@dre.de>2010-03-01 23:30:40 +0100
commit070051b8759806873267cff46ceb2be7d6a3262f (patch)
treea19b03e51847d3dee10514e456a4c7921b306b3e /Engine.cpp
downloadheadshot-070051b8759806873267cff46ceb2be7d6a3262f.tar
headshot-070051b8759806873267cff46ceb2be7d6a3262f.zip
initial commit
Diffstat (limited to 'Engine.cpp')
-rw-r--r--Engine.cpp76
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;
+
+}