collect excludables per room
This commit is contained in:
parent
782fd9138f
commit
84301dc719
2 changed files with 15 additions and 3 deletions
|
@ -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 = {
|
||||
|
|
|
@ -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)}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue