Files
adventureland/js/pixi-display/v4/pixi-display.js
T
2023-10-15 13:06:58 +03:00

459 lines
17 KiB
JavaScript

PIXI.DISPLAY_FLAG = {
AUTO_CHILDREN: 0,
AUTO_CONTAINER: 1,
AUTO_OBJECT: 2,
MANUAL_CONTAINER: 3
};
var WebGLRenderer = PIXI.WebGLRenderer;
var CanvasRenderer = PIXI.CanvasRenderer;
Object.assign(PIXI.Container.prototype, {
displayList: null,
displayChildren: null,
displayParent: null,
updateTransform: function () {
if (!this.visible) {
return;
}
this.containerUpdateTransform();
if (this.displayList) {
this.displayList.update(this);
}
},
renderCanvas: function (renderer) {
if (!this.visible) {
this.displayOrder = 0;
return;
}
this.displayOrder = renderer.incDisplayOrder();
if (this.worldAlpha <= 0 || !this.renderable) {
return;
}
if (this.displayList) {
this.displayList.renderCanvas(this, renderer);
return;
}
this.containerRenderCanvas(renderer);
},
renderWebGL: function (renderer) {
if (!this.visible) {
this.displayOrder = 0;
return;
}
this.displayOrder = renderer.incDisplayOrder();
if (this.worldAlpha <= 0 || !this.renderable) {
return;
}
if (this.displayList) {
this.displayList.renderWebGL(this, renderer);
return;
}
this.containerRenderWebGL(renderer);
},
containerRenderWebGL: PIXI.Container.prototype.renderWebGL,
containerRenderCanvas: PIXI.Container.prototype.renderCanvas
});
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var pixi_display;
(function (pixi_display) {
var utils = PIXI.utils;
var DisplayGroup = (function (_super) {
__extends(DisplayGroup, _super);
function DisplayGroup(zIndex, sorting) {
_super.call(this);
this.currentIndex = 0;
this.zIndex = 0;
this.enableSort = false;
this.computedChildren = [];
this.currentDisplayList = null;
this.currentIndex = 0;
this.zIndex = zIndex || 0;
this.enableSort = !!sorting;
if (typeof sorting === 'function') {
this.on('add', sorting);
}
}
DisplayGroup.compareZOrder = function (a, b) {
if (a.zOrder < b.zOrder) {
return 1;
}
if (a.zOrder > b.zOrder) {
return -1;
}
return a.updateOrder - b.updateOrder;
};
;
DisplayGroup.prototype.clear = function () {
var list = this.computedChildren;
for (var i = 0; i < list.length; i++) {
var children = list[i].displayChildren;
if (children && children.length > 0) {
for (var j = 0; j < children.length; j++) {
children[j].displayParent = null;
}
children.length = 0;
}
list[i].displayParent = null;
}
list.length = 0;
this.currentDisplayList = null;
this.currentIndex = 0;
};
;
DisplayGroup.prototype.add = function (displayObject) {
displayObject.displayOrder = this.computedChildren.length;
this.emit('add', displayObject);
this.computedChildren.push(displayObject);
};
;
DisplayGroup.prototype.update = function () {
this.emit('update');
if (this.enableSort && this.computedChildren.length > 1) {
this.computedChildren.sort(DisplayGroup.compareZOrder);
}
};
;
DisplayGroup.prototype.renderWebGL = function (parentContainer, renderer) {
var list = this.computedChildren;
for (var j = 0; j < list.length; j++) {
var container = list[j];
if (container.displayFlag) {
container.renderWebGL(renderer);
}
else {
container.displayOrder = renderer.incDisplayOrder();
container._renderWebGL(renderer);
var children = container.displayChildren;
if (children && children.length) {
for (var k = 0; k < children.length; k++) {
var child = children[k];
child.displayOrder = renderer.incDisplayOrder();
if (child.displayFlag) {
child.renderWebGL(renderer);
}
else {
child._renderWebGL(renderer);
}
}
}
}
}
};
;
DisplayGroup.prototype.renderCanvas = function (parentContainer, renderer) {
var list = this.computedChildren;
for (var j = 0; j < list.length; j++) {
var container = list[j];
if (container.displayFlag) {
container.renderCanvas(renderer);
}
else {
container.displayOrder = renderer.incDisplayOrder();
container._renderCanvas(renderer);
var children = container.displayChildren;
if (children && children.length) {
for (var k = 0; k < children.length; k++) {
var child = children[k];
child.displayOrder = renderer.incDisplayOrder();
if (child.displayFlag) {
child.renderCanvas(renderer);
}
else {
child._renderCanvas(renderer);
}
}
}
}
}
};
;
return DisplayGroup;
}(utils.EventEmitter));
pixi_display.DisplayGroup = DisplayGroup;
})(pixi_display || (pixi_display = {}));
var pixi_display;
(function (pixi_display) {
var utils = PIXI.utils;
var DisplayList = (function (_super) {
__extends(DisplayList, _super);
function DisplayList() {
_super.call(this);
this.container = null;
this.totalElements = 0;
this.displayGroups = [];
this.defaultDisplayGroup = new pixi_display.DisplayGroup(0, false);
}
DisplayList.prototype.clear = function () {
var list = this.displayGroups;
for (var i = 0; i < list.length; i++) {
list[i].clear();
}
list.length = 0;
this.totalElements = 0;
this.container = null;
};
;
DisplayList.prototype.destroy = function () {
this.clear();
};
;
DisplayList.compareZIndex = function (a, b) {
if (a.zIndex !== b.zIndex) {
return a.zIndex - b.zIndex;
}
return a.currentIndex - b.currentIndex;
};
;
DisplayList.prototype._addRecursive = function (displayObject, parent) {
var container = displayObject;
if (!container.visible || !container.renderable) {
return;
}
var groups = this.displayGroups;
var group = parent.displayGroup;
container.updateOrder = this.totalElements++;
if (container.displayGroup) {
group = container.displayGroup;
if (!group.currentDisplayList) {
group.currentDisplayList = this;
group.currentIndex = groups.length;
groups.push(group);
}
group.add(container);
container.displayParent = container;
}
else {
container.displayParent = parent;
if (!parent.displayChildren) {
parent.displayChildren = [];
}
parent.displayChildren.push(container);
}
if (container.displayFlag !== PIXI.DISPLAY_FLAG.MANUAL_CONTAINER) {
var children = container.children;
if (children && children.length > 0) {
if (container._mask || container._filters && container._filters.length || container.displayList) {
container.displayFlag = PIXI.DISPLAY_FLAG.AUTO_CONTAINER;
}
else {
container.displayFlag = PIXI.DISPLAY_FLAG.AUTO_CHILDREN;
for (var i = 0; i < children.length; i++) {
this._addRecursive(children[i], container.displayParent);
}
}
}
else {
container.displayFlag = PIXI.DISPLAY_FLAG.AUTO_OBJECT;
}
}
};
;
DisplayList.prototype.update = function (parentContainer) {
this.clear();
var tempGroup = parentContainer.displayGroup;
this.displayGroups.push(this.defaultDisplayGroup);
this.defaultDisplayGroup.add(parentContainer);
this.container = parentContainer;
var children = parentContainer.children;
var i = 0;
for (i = 0; i < children.length; i++) {
this._addRecursive(children[i], parentContainer);
}
var groups = this.displayGroups;
groups.sort(DisplayList.compareZIndex);
for (i = 0; i < groups.length; i++) {
groups[i].currentIndex = i;
groups[i].update();
}
this.emit('afterUpdate');
};
;
DisplayList.prototype.renderWebGL = function (parentContainer, renderer) {
parentContainer.displayFlag = PIXI.DISPLAY_FLAG.AUTO_CHILDREN;
var groups = this.displayGroups;
for (var i = 0; i < groups.length; i++) {
var group = groups[i];
group.renderWebGL(parentContainer, renderer);
}
};
;
DisplayList.prototype.renderCanvas = function (parentContainer, renderer) {
var groups = this.displayGroups;
for (var i = 0; i < groups.length; i++) {
var group = groups[i];
group.renderCanvas(parentContainer, renderer);
}
};
;
return DisplayList;
}(utils.EventEmitter));
pixi_display.DisplayList = DisplayList;
})(pixi_display || (pixi_display = {}));
Object.assign(PIXI.DisplayObject.prototype, {
displayGroup: null,
displayFlag: PIXI.DISPLAY_FLAG.AUTO_CHILDREN,
displayParent: null,
zOrder: 0,
updateOrder: 0,
displayOrder: 0
});
var pixi_display;
(function (pixi_display) {
var InteractionManager = PIXI.interaction.InteractionManager;
Object.assign(InteractionManager.prototype, {
_queue: [[], []],
_displayProcessInteractive: function (point, displayObject, hitTestOrder, interactive) {
if (!displayObject || !displayObject.visible) {
return 0;
}
var hit = 0, interactiveParent = interactive = displayObject.interactive || interactive;
if (displayObject.hitArea) {
interactiveParent = false;
}
var mask = displayObject._mask;
if (hitTestOrder < Infinity && mask) {
if (!mask.containsPoint(point)) {
hitTestOrder = Infinity;
}
}
if (hitTestOrder < Infinity && displayObject.filterArea) {
if (!displayObject.filterArea.contains(point.x, point.y)) {
hitTestOrder = Infinity;
}
}
var children = displayObject.children;
if (displayObject.interactiveChildren && children) {
for (var i = children.length - 1; i >= 0; i--) {
var child = children[i];
var hitChild = this._displayProcessInteractive(point, child, hitTestOrder, interactiveParent);
if (hitChild) {
if (!child.parent) {
continue;
}
hit = hitChild;
hitTestOrder = hitChild;
}
}
}
if (interactive) {
if (hitTestOrder < displayObject.displayOrder) {
if (displayObject.hitArea) {
displayObject.worldTransform.applyInverse(point, this._tempPoint);
if (displayObject.hitArea.contains(this._tempPoint.x, this._tempPoint.y)) {
hit = displayObject.displayOrder;
}
}
else if (displayObject.containsPoint) {
if (displayObject.containsPoint(point)) {
hit = displayObject.displayOrder;
}
}
}
if (displayObject.interactive) {
this._queueAdd(displayObject, hit);
}
}
return hit;
},
processInteractive: function (strangeStuff, displayObject, func, hitTest, interactive) {
var interactionEvent = null;
var point = null;
if (strangeStuff.data &&
strangeStuff.data.global) {
interactionEvent = strangeStuff;
point = interactionEvent.data.global;
}
else {
point = strangeStuff;
}
this._startInteractionProcess();
this._displayProcessInteractive(point, displayObject, hitTest ? 0 : Infinity, false);
this._finishInteractionProcess(interactionEvent, func);
},
_startInteractionProcess: function () {
this._eventDisplayOrder = 1;
if (!this._queue) {
this._queue = [[], []];
}
this._queue[0].length = 0;
this._queue[1].length = 0;
},
_queueAdd: function (displayObject, order) {
var queue = this._queue;
if (order < this._eventDisplayOrder) {
queue[0].push(displayObject);
}
else {
if (order > this._eventDisplayOrder) {
this._eventDisplayOrder = order;
var q = queue[1];
for (var i = 0; i < q.length; i++) {
queue[0].push(q[i]);
}
queue[1].length = 0;
}
queue[1].push(displayObject);
}
},
_finishInteractionProcess: function (event, func) {
var queue = this._queue;
var q = queue[0];
var i = 0;
for (; i < q.length; i++) {
if (event) {
func(event, q[i], false);
}
else {
func(q[i], false);
}
}
q = queue[1];
for (i = 0; i < q.length; i++) {
if (event) {
if (!event.target) {
event.target = q[i];
}
func(event, q[i], true);
}
else {
func(q[i], true);
}
}
}
});
})(pixi_display || (pixi_display = {}));
Object.assign(WebGLRenderer.prototype, {
_lastDisplayOrder: 0,
incDisplayOrder: function () {
return ++this._lastDisplayOrder;
},
_oldRender: WebGLRenderer.prototype.render,
render: function (displayObject, renderTexture, clear, transform, skipUpdateTransform) {
if (!renderTexture) {
this._lastDisplayOrder = 0;
}
this._oldRender(displayObject, renderTexture, clear, transform, skipUpdateTransform);
}
});
Object.assign(CanvasRenderer.prototype, {
_lastDisplayOrder: 0,
incDisplayOrder: function () {
return ++this._lastDisplayOrder;
},
_oldRender: CanvasRenderer.prototype.render,
render: function (displayObject, renderTexture, clear, transform, skipUpdateTransform) {
if (!renderTexture) {
this._lastDisplayOrder = 0;
}
this._oldRender(displayObject, renderTexture, clear, transform, skipUpdateTransform);
}
});
Object.assign(PIXI, {
display: pixi_display,
DisplayGroup: pixi_display.DisplayGroup,
DisplayList: pixi_display.DisplayList
});
//# sourceMappingURL=pixi-display.js.map