UNPKG

@robotlegsjs/pixi

Version:
100 lines 3.95 kB
"use strict"; // ------------------------------------------------------------------------------ // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. // // NOTICE: You are permitted to use, modify, and distribute this file // in accordance with the terms of the license agreement accompanying it. // ------------------------------------------------------------------------------ Object.defineProperty(exports, "__esModule", { value: true }); exports.applyPixiPatch = void 0; /** * Patch PIXI to: * - emit "added"/"removed" events on stage * - implement PIXI.Container.contains method */ var pixi_js_1 = require("pixi.js"); function isConnectedToStage(stage, object) { if (object === stage) { return true; } else if (object.parent) { return isConnectedToStage(stage, object.parent); } else { return false; } } function emitAddedEvent(stage, target) { stage.emit("added", { target: target }); if (target instanceof pixi_js_1.Container) { target.children.forEach(function (child) { return emitAddedEvent(stage, child); }); } } function emitRemovedEvent(stage, target) { stage.emit("removed", { target: target }); if (target instanceof pixi_js_1.Container) { target.children.forEach(function (child) { return emitRemovedEvent(stage, child); }); } } function applyPixiPatch(stage) { var addChild = pixi_js_1.Container.prototype.addChild; var addChildAt = pixi_js_1.Container.prototype.addChildAt; var removeChild = pixi_js_1.Container.prototype.removeChild; var removeChildren = pixi_js_1.Container.prototype.removeChildren; var removeChildAt = pixi_js_1.Container.prototype.removeChildAt; pixi_js_1.Container.prototype.addChild = function patchedAddChild() { var children = []; for (var _i = 0; _i < arguments.length; _i++) { children[_i] = arguments[_i]; } for (var i = 0, len = arguments.length; i < len; i++) { var object = arguments[i]; addChild.call(this, object); if (isConnectedToStage(stage, object)) { emitAddedEvent(stage, object); } } return arguments[0]; }; pixi_js_1.Container.prototype.addChildAt = function patchedAddChildAt(child, index) { addChildAt.call(this, child, index); if (isConnectedToStage(stage, child)) { emitAddedEvent(stage, child); } return child; }; pixi_js_1.Container.prototype.removeChild = function patchedRemoveChild() { var children = []; for (var _i = 0; _i < arguments.length; _i++) { children[_i] = arguments[_i]; } for (var i = 0, len = arguments.length; i < len; i++) { var object = arguments[i]; if (isConnectedToStage(stage, object)) { emitRemovedEvent(stage, object); } removeChild.call(this, object); } return arguments[0]; }; pixi_js_1.Container.prototype.removeChildren = function patchedRemoveChildren(beginIndex, endIndex) { if (beginIndex === void 0) { beginIndex = 0; } var removedChildren = removeChildren.call(this, beginIndex, endIndex); if (isConnectedToStage(stage, this) && removedChildren.length) { for (var _i = 0, removedChildren_1 = removedChildren; _i < removedChildren_1.length; _i++) { var child = removedChildren_1[_i]; emitRemovedEvent(stage, child); } } return removedChildren; }; pixi_js_1.Container.prototype.removeChildAt = function patchedRemoveChildAt(index) { var child = removeChildAt.call(this, index); if (isConnectedToStage(stage, this) && child) { emitRemovedEvent(stage, child); } return child; }; } exports.applyPixiPatch = applyPixiPatch; //# sourceMappingURL=pixi-patch.js.map