sdfsdfs
This commit is contained in:
90
node_modules/pixi.js/lib/scene/container/RenderGroupSystem.js
generated
vendored
Normal file
90
node_modules/pixi.js/lib/scene/container/RenderGroupSystem.js
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
'use strict';
|
||||
|
||||
var Extensions = require('../../extensions/Extensions.js');
|
||||
var Matrix = require('../../maths/matrix/Matrix.js');
|
||||
var buildInstructions = require('./utils/buildInstructions.js');
|
||||
var clearList = require('./utils/clearList.js');
|
||||
var collectRenderGroups = require('./utils/collectRenderGroups.js');
|
||||
var executeInstructions = require('./utils/executeInstructions.js');
|
||||
var updateRenderGroupTransforms = require('./utils/updateRenderGroupTransforms.js');
|
||||
var validateRenderables = require('./utils/validateRenderables.js');
|
||||
|
||||
"use strict";
|
||||
const tempMatrix = new Matrix.Matrix();
|
||||
class RenderGroupSystem {
|
||||
constructor(renderer) {
|
||||
this._renderer = renderer;
|
||||
}
|
||||
render({ container, transform }) {
|
||||
container.isRenderGroup = true;
|
||||
const parent = container.parent;
|
||||
const renderGroupParent = container.renderGroup.renderGroupParent;
|
||||
container.parent = null;
|
||||
container.renderGroup.renderGroupParent = null;
|
||||
const renderer = this._renderer;
|
||||
const renderGroups = collectRenderGroups.collectRenderGroups(container.renderGroup, []);
|
||||
let originalLocalTransform = tempMatrix;
|
||||
if (transform) {
|
||||
originalLocalTransform = originalLocalTransform.copyFrom(container.renderGroup.localTransform);
|
||||
container.renderGroup.localTransform.copyFrom(transform);
|
||||
}
|
||||
const renderPipes = renderer.renderPipes;
|
||||
for (let i = 0; i < renderGroups.length; i++) {
|
||||
const renderGroup = renderGroups[i];
|
||||
renderGroup.runOnRender();
|
||||
renderGroup.instructionSet.renderPipes = renderPipes;
|
||||
if (!renderGroup.structureDidChange) {
|
||||
validateRenderables.validateRenderables(renderGroup, renderPipes);
|
||||
} else {
|
||||
clearList.clearList(renderGroup.childrenRenderablesToUpdate.list, 0);
|
||||
}
|
||||
updateRenderGroupTransforms.updateRenderGroupTransforms(renderGroup);
|
||||
if (renderGroup.structureDidChange) {
|
||||
renderGroup.structureDidChange = false;
|
||||
buildInstructions.buildInstructions(renderGroup, renderer);
|
||||
} else {
|
||||
updateRenderables(renderGroup);
|
||||
}
|
||||
renderGroup.childrenRenderablesToUpdate.index = 0;
|
||||
renderer.renderPipes.batch.upload(renderGroup.instructionSet);
|
||||
}
|
||||
renderer.globalUniforms.start({
|
||||
worldTransformMatrix: transform ? container.renderGroup.localTransform : container.renderGroup.worldTransform,
|
||||
worldColor: container.renderGroup.worldColorAlpha
|
||||
});
|
||||
executeInstructions.executeInstructions(container.renderGroup, renderPipes);
|
||||
if (renderPipes.uniformBatch) {
|
||||
renderPipes.uniformBatch.renderEnd();
|
||||
}
|
||||
if (transform) {
|
||||
container.renderGroup.localTransform.copyFrom(originalLocalTransform);
|
||||
}
|
||||
container.parent = parent;
|
||||
container.renderGroup.renderGroupParent = renderGroupParent;
|
||||
}
|
||||
destroy() {
|
||||
this._renderer = null;
|
||||
}
|
||||
}
|
||||
/** @ignore */
|
||||
RenderGroupSystem.extension = {
|
||||
type: [
|
||||
Extensions.ExtensionType.WebGLSystem,
|
||||
Extensions.ExtensionType.WebGPUSystem,
|
||||
Extensions.ExtensionType.CanvasSystem
|
||||
],
|
||||
name: "renderGroup"
|
||||
};
|
||||
function updateRenderables(renderGroup) {
|
||||
const { list, index } = renderGroup.childrenRenderablesToUpdate;
|
||||
for (let i = 0; i < index; i++) {
|
||||
const container = list[i];
|
||||
if (container.didViewUpdate) {
|
||||
renderGroup.updateRenderable(container);
|
||||
}
|
||||
}
|
||||
clearList.clearList(list, index);
|
||||
}
|
||||
|
||||
exports.RenderGroupSystem = RenderGroupSystem;
|
||||
//# sourceMappingURL=RenderGroupSystem.js.map
|
Reference in New Issue
Block a user