summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/rooms/clipper.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/rooms/clipper.js')
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/clipper.js22
1 files changed, 21 insertions, 1 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/clipper.js b/public/assets/javascripts/rectangles/engine/rooms/clipper.js
index 365ae8c..d67f6ad 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/clipper.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/clipper.js
@@ -52,7 +52,7 @@
base.reset_rects()
base.clip_rects()
- base.cull_rects()
+ base.cull_rects_iterative()
Rooms.regions = sort.rects_by_position(regions)
}
@@ -131,6 +131,26 @@
return regions
}
+ // Find overlapping regions and dedupe the smaller ones
+ base.cull_rects_iterative = function(){
+ regions = sort.rects_by_area( regions )
+
+ var region_i, region_j, i, j, _len
+
+ for (i = 0, _len = regions.length; i < _len-1; i++) {
+ region_i = regions[i]
+ for (j = i+1; j < _len; j++) {
+ region_j = regions[j]
+ if (region_j.dupe) continue;
+ if (region_i.overlaps(region_j)) {
+ region_i.dupe = true
+ }
+ }
+ }
+
+ return regions
+ }
+
return base
}