collect excludables per room

This commit is contained in:
Laura Klünder 2016-12-19 20:23:44 +01:00
parent 782fd9138f
commit 84301dc719
2 changed files with 15 additions and 3 deletions

View file

@ -284,14 +284,22 @@ class GraphLevel():
def collect_arealocation_points(self):
self.arealocation_points = {}
for room in self.rooms:
room.excludables = []
for name, arealocation in self._built_arealocations.items():
mpl_area = shapely_to_mpl(arealocation)
rooms = [room for room in self.rooms
if any(room.mpl_clear.intersects_path(exterior, filled=True) for exterior in mpl_area.exteriors)]
possible_points = tuple(point for point in sum((room._built_points for room in rooms), []) if point.room)
self.arealocation_points[name] = tuple(point.i for point in possible_points
if mpl_area.contains_point(point.xy))
points = tuple(point for point in possible_points if mpl_area.contains_point(point.xy))
self.arealocation_points[name] = tuple(point.i for point in points)
if name in self._built_excludables:
for room in set(point.room for point in points):
room.excludables.append(name)
# Drawing
ctype_colors = {

View file

@ -28,6 +28,7 @@ class GraphRoom():
self.room_transfer_points = None
self.distances = np.zeros((1, ))
self.ctypes = None
self.excludables = None
def serialize(self):
return (
@ -37,12 +38,14 @@ class GraphRoom():
self.room_transfer_points,
self.distances,
self.ctypes,
self.excludables,
)
@classmethod
def unserialize(cls, level, data):
room = cls(level)
room.mpl_clear, areas, room.points, room.room_transfer_points, room.distances, room.ctypes = data
(room.mpl_clear, areas, room.points, room.room_transfer_points,
room.distances, room.ctypes, room.edcludables) = data
room.areas = tuple(GraphArea(room, *area) for area in areas)
return room
@ -212,6 +215,7 @@ class GraphRoom():
self.areas = tuple(self.areas)
self.points = tuple(point.i for point in self._built_points)
self.room_transfer_points = tuple(i for i in self.points if i in self.level.room_transfer_points)
self.excludables = tuple(self.excludables)
mapping = {point.i: i for i, point in enumerate(self._built_points)}