UNPKG

raingame

Version:
128 lines (127 loc) 5.43 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.pixelTouchDetermination = exports.rageTouchDetermination = void 0; var StandardObject_1 = require("../StandardObject"); var SceneGroup_1 = __importDefault(require("../SceneGroup")); function rageTouchDetermination(e, renderer, scene) { var aimx = e.offsetX * renderer.devicePixelRatio; var aimy = e.offsetY * renderer.devicePixelRatio; var list = scene.children; var ctx = renderer.ctx; for (var i = list.length - 1; i >= 0; i--) { var item = list[i].target; if (item instanceof SceneGroup_1.default) { for (var i_1 = item.children.length - 1; i_1 >= 0; i_1--) { var child = item.children[i_1].target; var _a = child._position_, x = _a.x, y = _a.y; var xg = item.position.x; var yg = item.position.y; x = x + xg; y = y + yg; var width = child.width, height = child.height; var min_x = x; var max_x = x + width; var min_y = y; var max_y = y + height; if (aimx > min_x && aimx < max_x && aimy > min_y && aimy < max_y) { var eventData = { target: child, rank: list[i_1].rank, scene: scene, sceneGroup: item, point: { x: aimx, y: aimy }, ctx: ctx }; return { res: true, eventData: eventData }; } } } else if (item instanceof StandardObject_1.StandardObject) { var _b = item._position_, x = _b.x, y = _b.y; var width = item.width, height = item.height; var min_x = x; var max_x = x + width; var min_y = y; var max_y = y + height; if (aimx > min_x && aimx < max_x && aimy > min_y && aimy < max_y) { var eventData = { target: item, rank: list[i].rank, scene: scene, sceneGroup: null, point: { x: aimx, y: aimy }, ctx: ctx }; //debugger; return { res: true, eventData: eventData }; } } } //debugger; return { res: false }; } exports.rageTouchDetermination = rageTouchDetermination; function createCav(size) { var width = size.width, height = size.height; var canvas = document.createElement("canvas"); canvas.height = height; canvas.width = width; var ctx = canvas.getContext('2d'); return { canvas: canvas, ctx: ctx }; } function pixelTouchDetermination(e, renderer, scene) { var backUp = createCav(renderer.getSize()); // a canvas to compare var aimx = e.offsetX * renderer.devicePixelRatio; var aimy = e.offsetY * renderer.devicePixelRatio; var ctx = renderer.ctx; var point = ctx.getImageData(aimx, aimy, 1, 1); var children = scene.children; if (point.data[3] !== 0 && backUp.ctx) { for (var i = children.length - 1; i >= 0; i--) { var item = children[i].target; if (item instanceof SceneGroup_1.default) { for (var i_2 = item.children.length - 1; i_2 >= 0; i_2--) { var child = item.children[i_2].target; child.render(backUp.ctx, item); var comparePoint = backUp.ctx.getImageData(aimx, aimy, 1, 1); backUp.ctx.clearRect(0, 0, window.innerWidth, window.innerHeight); //clean canvas if (comparePoint.data[3] !== 0) { var eventData = { target: child, rank: children[i_2].rank, scene: scene, sceneGroup: item, point: { x: aimx, y: aimy }, ctx: ctx }; return { res: true, eventData: eventData }; } } } else if (item instanceof StandardObject_1.StandardObject) { item.render(backUp.ctx, item); var comparePoint = backUp.ctx.getImageData(aimx, aimy, 1, 1); backUp.ctx.clearRect(0, 0, window.innerWidth, window.innerHeight); //clean canvas if (comparePoint.data[3] !== 0) { var eventData = { target: item, rank: children[i].rank, scene: scene, sceneGroup: null, point: { x: aimx, y: aimy }, ctx: ctx }; return { res: true, eventData: eventData }; } } } return { res: false }; } else { return { res: false }; } } exports.pixelTouchDetermination = pixelTouchDetermination;