#include "DisplayClass.h" DisplayClass::Renderer DisplayClass::render; DisplayClass::DisplayClass(int x0, int y0, int z0) : angleY(0), angleX(0), distance(20), x(x0), y(y0), z(z0) { //tree = new BSPTree(triangles); } DisplayClass::~DisplayClass() { //delete tree; } void DisplayClass::renderScene(unsigned long delta, const Keyset &keys) { handleKeys(delta, keys); /*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); glLoadIdentity(); // Clean up matrix glTranslatef(0.0, -distanceh, -distance); // Then set up transformation glRotatef(angleX, 1.0, 0.0, 0.0); glRotatef(angleY, 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, 300, 53.55, 0.82, 2.82, 0.0047, 40, 45, 1900, 4, 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::handleKeys(unsigned long delta, const Keyset &keys) { /*angle += delta*0.005; if(angle >= 360) angle -= 360;*/ if(keys.test(KEY_UP)) { angleX += 0.005*delta; } if(keys.test(KEY_DOWN)) { angleX -= 0.005*delta; } if(keys.test(KEY_LEFT)) { angleY += 0.005*delta; } if(keys.test(KEY_RIGHT)) { angleY -= 0.005*delta; } if(keys.test(KEY_ZOOM_IN)) { distance -= 0.005*delta; } if(keys.test(KEY_ZOOM_OUT)) { distance += 0.005*delta; } if(keys.test(KEY_TOP)) { distanceh -= 0.0005*delta; } if(keys.test(KEY_BOTTOM)) { distanceh += 0.0005*delta; } if(angleX >= 360) angleX -= 360; else if(angleX < 0) angleX += 360; if(angleY >= 360) angleY -= 360; else if(angleY < 0) angleY += 360; }