zoomedit:
* Connected TopView to RenderArea
This commit is contained in:
parent
7df8aa74c6
commit
85e58bd658
11 changed files with 131 additions and 54 deletions
|
@ -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() {
|
||||
|
|
|
@ -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();
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
Reference in a new issue