zoomedit:

* Connected TopView to RenderArea
This commit is contained in:
neoraider 2008-04-15 01:04:02 +00:00
parent 7df8aa74c6
commit 85e58bd658
11 changed files with 131 additions and 54 deletions

View file

@ -18,28 +18,29 @@
*/
#include "TopView.h"
#include "../Data/Level.h"
#include "../Data/Room.h"
#include "../Data/Triangle.h"
#include <cmath>
#include <Data/Level.h>
#include <Data/Room.h>
#include <Data/Triangle.h>
#include <GL/gl.h>
namespace ZoomEdit {
namespace View {
void TopView::renderRoom(Data::Room *room) {
const std::list<Data::Triangle*> &triangles = room->getTriangles();
std::list<Data::Triangle*> floor;
const std::list<Data::Triangle*> &floor = room->getFloorTriangles();
for(std::list<Data::Triangle*>::const_iterator t = triangles.begin(); t != triangles.end(); ++t) {
Data::Vector v1 = (*t)->getVertex(1) - (*t)->getVertex(0);
Data::Vector v2 = (*t)->getVertex(2) - (*t)->getVertex(0);
Data::Vector n = (v1 % v2);
n.normalize();
if(n*Data::Vector(0, 1, 0) > std::cos(45))
floor.push_back(*t);
glColor4f(0.0f, 0.7f, 1.0f, 0.3f);
glBegin(GL_TRIANGLES);
for(std::list<Data::Triangle*>::const_iterator t = floor.begin(); t != floor.end(); ++t) {
for(int i = 0; i < 3; ++i) {
const Data::Vertex &v = (*t)->getVertex(i);
glVertex2f(v.getX(), v.getZ());
}
}
glEnd();
}
void TopView::render() {

View file

@ -25,6 +25,7 @@
namespace ZoomEdit {
namespace Data {
class Level;
class Room;
}
@ -32,12 +33,17 @@ namespace View {
class TopView : public View {
private:
Data::Level *level;
void renderRoom(Data::Room *room);
public:
TopView(Data::Level *level0 = 0) : View(level0) {}
TopView(Data::Level *level0 = 0) : level(level0) {}
void render();
Data::Level* getLevel() {return level;}
void setLevel(Data::Level *level0) {level = level0;}
virtual void render();
};
}

View file

@ -21,24 +21,12 @@
#define ZOOMEDIT_VIEW_H_
namespace ZoomEdit {
namespace Data {
class Level;
}
namespace View {
class View {
protected:
Data::Level *level;
public:
View(Data::Level *level0) : level(level0) {}
virtual ~View() {}
virtual Data::Level* getLevel() {return level;}
virtual void setLevel(Data::Level *level0) {level = level0;}
virtual void render() = 0;
};