This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
neofx-zoomedit/Room.cpp

46 lines
1.2 KiB
C++

#include "Room.h"
#include "LevelEdge.h"
const Room& Room::operator=(const Room &room) {
vertices.clear();
edges.clear();
name = room.name;
height = room.height;
vertices = room.vertices;
for(std::vector<Edge>::const_iterator edge = room.edges.begin(); edge != room.edges.end(); edge++) {
LevelVertex v1(this, edge->getVertex1().getId(), this);
LevelVertex v2(this, edge->getVertex2().getId(), this);
edges.push_back(Edge(v1, v2));
}
return room;
}
std::vector<SharedPtr<LevelObject> > Room::getChildren() {
std::vector<SharedPtr<LevelObject> > children;
for(size_t i = 0; i < vertices.size(); i++) {
if(vertices[i]->isDirect())
children.push_back(SharedPtr<LevelObject>(new LevelVertex(this, i, this)));
}
for(size_t i = 0; i < edges.size(); i++)
children.push_back(SharedPtr<LevelObject>(new LevelEdge(this, i, this)));
return children;
}
void Room::rotate(Vertex m, float a) {
float s = sinf(a);
float c = cosf(a);
for(std::vector<SharedPtr<RoomVertex> >::iterator v = vertices.begin(); v != vertices.end(); v++) {
**v -= m;
(*v)->setLocation(c*(**v)->getX() - s*(**v)->getY(), c*(**v)->getY() + s*(**v)->getX());
**v += m;
}
}