UNPKG

phaser3-rex-plugins-fix-chun

Version:
89 lines (75 loc) 2.28 kB
import Pool from '../../../../pool.js'; const Rectangle = Phaser.Geom.Rectangle; var RectanglePool = new Pool(); class HitAreaManager { constructor() { this.hitAreas = []; } destroy() { this.clear(); } clear() { // Reuse hitArea(rectangle) later for (var i = 0, cnt = this.hitAreas.length; i < cnt; i++) { this.hitAreas[i].data = null; } RectanglePool.pushMultiple(this.hitAreas); return this; } add(x, y, width, height, data) { if (data === undefined) { data = {}; } var rectangle = RectanglePool.pop(); if (rectangle === null) { rectangle = new Rectangle(x, y, width, height); } else { rectangle.setTo(x, y, width, height); } rectangle.data = data; this.hitAreas.push(rectangle); return this; } getFirst(x, y) { for (var i = 0, cnt = this.hitAreas.length; i < cnt; i++) { var hitArea = this.hitAreas[i]; if (hitArea.contains(x, y)) { return hitArea; } } return null; } getByKey(key) { for (var i = 0, cnt = this.hitAreas.length; i < cnt; i++) { var hitArea = this.hitAreas[i]; if (hitArea.data.key === key) { return hitArea; } } return null; } drawBounds(graphics, color, parent) { if (color === undefined) { color = 0xffffff; } if (parent) { graphics .save() .translateCanvas(parent.x, parent.y) .rotateCanvas(parent.rotation) .scaleCanvas(parent.scaleX, parent.scaleY) } for (var i = 0, cnt = this.hitAreas.length; i < cnt; i++) { var hitArea = this.hitAreas[i]; graphics .lineStyle(1, color) .strokeRect(hitArea.x, hitArea.y, hitArea.width, hitArea.height); } if (parent) { graphics .restore() } return this; } } export default HitAreaManager;