sdfsdfs
This commit is contained in:
180
node_modules/pixi.js/lib/scene/container/RenderGroup.mjs
generated
vendored
Normal file
180
node_modules/pixi.js/lib/scene/container/RenderGroup.mjs
generated
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
import { Matrix } from '../../maths/matrix/Matrix.mjs';
|
||||
import { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet.mjs';
|
||||
|
||||
"use strict";
|
||||
class RenderGroup {
|
||||
constructor() {
|
||||
this.renderPipeId = "renderGroup";
|
||||
this.root = null;
|
||||
this.canBundle = false;
|
||||
this.renderGroupParent = null;
|
||||
this.renderGroupChildren = [];
|
||||
this.worldTransform = new Matrix();
|
||||
this.worldColorAlpha = 4294967295;
|
||||
this.worldColor = 16777215;
|
||||
this.worldAlpha = 1;
|
||||
// these updates are transform changes..
|
||||
this.childrenToUpdate = /* @__PURE__ */ Object.create(null);
|
||||
this.updateTick = 0;
|
||||
// these update are renderable changes..
|
||||
this.childrenRenderablesToUpdate = { list: [], index: 0 };
|
||||
// other
|
||||
this.structureDidChange = true;
|
||||
this.instructionSet = new InstructionSet();
|
||||
this._onRenderContainers = [];
|
||||
}
|
||||
init(root) {
|
||||
this.root = root;
|
||||
if (root._onRender)
|
||||
this.addOnRender(root);
|
||||
root.didChange = true;
|
||||
const children = root.children;
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
this.addChild(children[i]);
|
||||
}
|
||||
}
|
||||
reset() {
|
||||
this.renderGroupChildren.length = 0;
|
||||
for (const i in this.childrenToUpdate) {
|
||||
const childrenAtDepth = this.childrenToUpdate[i];
|
||||
childrenAtDepth.list.fill(null);
|
||||
childrenAtDepth.index = 0;
|
||||
}
|
||||
this.childrenRenderablesToUpdate.index = 0;
|
||||
this.childrenRenderablesToUpdate.list.fill(null);
|
||||
this.root = null;
|
||||
this.updateTick = 0;
|
||||
this.structureDidChange = true;
|
||||
this._onRenderContainers.length = 0;
|
||||
this.renderGroupParent = null;
|
||||
}
|
||||
get localTransform() {
|
||||
return this.root.localTransform;
|
||||
}
|
||||
addRenderGroupChild(renderGroupChild) {
|
||||
if (renderGroupChild.renderGroupParent) {
|
||||
renderGroupChild.renderGroupParent._removeRenderGroupChild(renderGroupChild);
|
||||
}
|
||||
renderGroupChild.renderGroupParent = this;
|
||||
this.renderGroupChildren.push(renderGroupChild);
|
||||
}
|
||||
_removeRenderGroupChild(renderGroupChild) {
|
||||
const index = this.renderGroupChildren.indexOf(renderGroupChild);
|
||||
if (index > -1) {
|
||||
this.renderGroupChildren.splice(index, 1);
|
||||
}
|
||||
renderGroupChild.renderGroupParent = null;
|
||||
}
|
||||
addChild(child) {
|
||||
this.structureDidChange = true;
|
||||
child.parentRenderGroup = this;
|
||||
child.updateTick = -1;
|
||||
if (child.parent === this.root) {
|
||||
child.relativeRenderGroupDepth = 1;
|
||||
} else {
|
||||
child.relativeRenderGroupDepth = child.parent.relativeRenderGroupDepth + 1;
|
||||
}
|
||||
child.didChange = true;
|
||||
this.onChildUpdate(child);
|
||||
if (child.renderGroup) {
|
||||
this.addRenderGroupChild(child.renderGroup);
|
||||
return;
|
||||
}
|
||||
if (child._onRender)
|
||||
this.addOnRender(child);
|
||||
const children = child.children;
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
this.addChild(children[i]);
|
||||
}
|
||||
}
|
||||
removeChild(child) {
|
||||
this.structureDidChange = true;
|
||||
if (child._onRender) {
|
||||
if (!child.renderGroup) {
|
||||
this.removeOnRender(child);
|
||||
}
|
||||
}
|
||||
child.parentRenderGroup = null;
|
||||
if (child.renderGroup) {
|
||||
this._removeRenderGroupChild(child.renderGroup);
|
||||
return;
|
||||
}
|
||||
const children = child.children;
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
this.removeChild(children[i]);
|
||||
}
|
||||
}
|
||||
removeChildren(children) {
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
this.removeChild(children[i]);
|
||||
}
|
||||
}
|
||||
onChildUpdate(child) {
|
||||
let childrenToUpdate = this.childrenToUpdate[child.relativeRenderGroupDepth];
|
||||
if (!childrenToUpdate) {
|
||||
childrenToUpdate = this.childrenToUpdate[child.relativeRenderGroupDepth] = {
|
||||
index: 0,
|
||||
list: []
|
||||
};
|
||||
}
|
||||
childrenToUpdate.list[childrenToUpdate.index++] = child;
|
||||
}
|
||||
// SHOULD THIS BE HERE?
|
||||
updateRenderable(container) {
|
||||
if (container.globalDisplayStatus < 7)
|
||||
return;
|
||||
container.didViewUpdate = false;
|
||||
this.instructionSet.renderPipes[container.renderPipeId].updateRenderable(container);
|
||||
}
|
||||
onChildViewUpdate(child) {
|
||||
this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++] = child;
|
||||
}
|
||||
get isRenderable() {
|
||||
return this.root.localDisplayStatus === 7 && this.worldAlpha > 0;
|
||||
}
|
||||
/**
|
||||
* adding a container to the onRender list will make sure the user function
|
||||
* passed in to the user defined 'onRender` callBack
|
||||
* @param container - the container to add to the onRender list
|
||||
*/
|
||||
addOnRender(container) {
|
||||
this._onRenderContainers.push(container);
|
||||
}
|
||||
removeOnRender(container) {
|
||||
this._onRenderContainers.splice(this._onRenderContainers.indexOf(container), 1);
|
||||
}
|
||||
runOnRender() {
|
||||
for (let i = 0; i < this._onRenderContainers.length; i++) {
|
||||
this._onRenderContainers[i]._onRender();
|
||||
}
|
||||
}
|
||||
destroy() {
|
||||
this.renderGroupParent = null;
|
||||
this.root = null;
|
||||
this.childrenRenderablesToUpdate = null;
|
||||
this.childrenToUpdate = null;
|
||||
this.renderGroupChildren = null;
|
||||
this._onRenderContainers = null;
|
||||
this.instructionSet = null;
|
||||
}
|
||||
getChildren(out = []) {
|
||||
const children = this.root.children;
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
this._getChildren(children[i], out);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
_getChildren(container, out = []) {
|
||||
out.push(container);
|
||||
if (container.renderGroup)
|
||||
return out;
|
||||
const children = container.children;
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
this._getChildren(children[i], out);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
}
|
||||
|
||||
export { RenderGroup };
|
||||
//# sourceMappingURL=RenderGroup.mjs.map
|
Reference in New Issue
Block a user