#include "DisplayClass.h" DisplayClass::Renderer DisplayClass::render; DisplayClass::DisplayClass(int x, int y, int z) : angle(0) { // Temparray temp(20, x, y, z); // triangles=temp.getTriangles(); this->x=x; this->y=y; this->z=z; //tree = new BSPTree(triangles); } DisplayClass::~DisplayClass() { //delete tree; } void DisplayClass::renderScene(unsigned long delta, std::bitset<256>& keys) { angle += delta*0.005; if(angle >= 360) angle -= 360; static bool on = true; static float angle2 =5; if (angle2 <= 10 && on){angle2 += 0.5;} else if (angle2 >=0 && !on){angle2 -= 0.5;} else if (angle2 >=10)on=false; else if (angle2 <=0)on=true; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // keyhandler(keys); glLoadIdentity(); // Clean up matrix glTranslatef(0.0, -2.0, -12.0); // Then set up transformation glRotatef(angle2, 1.0, 0.0, 0.0); glRotatef(angle, 0.0, 1.0, 0.0); // glRotatef(angle*2, 1.0, 0.0, 0.0); // glRotatef(angle*3, 1.0, 0.5, 0.0); // glRotatef(-angle*5, 1.0, 1.0, 0.0); // static Temparray temp(20, x, y, z); static House house(20, x, y, z, 100, 400, 53.55, 0.82, 2.82, 0.0047, 40, 45, 1900, 3, 11500); triangles=house.getTriangles(); house.controller(); //// temp.calcTemp(); //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); for(std::list::iterator t = triangles.begin(); t != triangles.end(); ++t) { render(*t); } glEnd(); glFlush(); } void DisplayClass::keyhandler(std::bitset<256>& keys){ static float abstand = 0; if(keys.any()) { glLoadIdentity(); static float rotm[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}; char h = '2'; if(keys.test(50)) glRotatef(3, 1, 0, 0); h = '4'; if(keys.test(52)) glRotatef(-3, 0, 1, 0); h = '6'; if(keys.test(54)) glRotatef(3, 0, 1, 0); h = '8'; if(keys.test(56)) glRotatef(-3, 1, 0, 0); h = '+'; if(keys.test(43)) abstand -= 0.2; h = '-'; if(keys.test(45)) abstand += 0.2; glMultMatrixf(rotm); glGetFloatv(GL_MODELVIEW_MATRIX, rotm); glLoadIdentity(); glTranslatef(0, 0, abstand); glMultMatrixf(rotm); // glutPostRedisplay(); } }