sdfsdfs
This commit is contained in:
112
node_modules/pixi.js/lib/scene/container/utils/updateRenderGroupTransforms.mjs
generated
vendored
Normal file
112
node_modules/pixi.js/lib/scene/container/utils/updateRenderGroupTransforms.mjs
generated
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
import { Container, UPDATE_VISIBLE, UPDATE_COLOR, UPDATE_BLEND } from '../Container.mjs';
|
||||
import { clearList } from './clearList.mjs';
|
||||
import { mixColors } from './mixColors.mjs';
|
||||
|
||||
"use strict";
|
||||
const tempContainer = new Container();
|
||||
const UPDATE_BLEND_COLOR_VISIBLE = UPDATE_VISIBLE | UPDATE_COLOR | UPDATE_BLEND;
|
||||
function updateRenderGroupTransforms(renderGroup, updateChildRenderGroups = false) {
|
||||
updateRenderGroupTransform(renderGroup);
|
||||
const childrenToUpdate = renderGroup.childrenToUpdate;
|
||||
const updateTick = renderGroup.updateTick++;
|
||||
for (const j in childrenToUpdate) {
|
||||
const renderGroupDepth = Number(j);
|
||||
const childrenAtDepth = childrenToUpdate[j];
|
||||
const list = childrenAtDepth.list;
|
||||
const index = childrenAtDepth.index;
|
||||
for (let i = 0; i < index; i++) {
|
||||
const child = list[i];
|
||||
if (child.parentRenderGroup === renderGroup && child.relativeRenderGroupDepth === renderGroupDepth) {
|
||||
updateTransformAndChildren(child, updateTick, 0);
|
||||
}
|
||||
}
|
||||
clearList(list, index);
|
||||
childrenAtDepth.index = 0;
|
||||
}
|
||||
if (updateChildRenderGroups) {
|
||||
for (let i = 0; i < renderGroup.renderGroupChildren.length; i++) {
|
||||
updateRenderGroupTransforms(renderGroup.renderGroupChildren[i], updateChildRenderGroups);
|
||||
}
|
||||
}
|
||||
}
|
||||
function updateRenderGroupTransform(renderGroup) {
|
||||
const root = renderGroup.root;
|
||||
let worldAlpha;
|
||||
if (renderGroup.renderGroupParent) {
|
||||
const renderGroupParent = renderGroup.renderGroupParent;
|
||||
renderGroup.worldTransform.appendFrom(
|
||||
root.relativeGroupTransform,
|
||||
renderGroupParent.worldTransform
|
||||
);
|
||||
renderGroup.worldColor = mixColors(
|
||||
root.groupColor,
|
||||
renderGroupParent.worldColor
|
||||
);
|
||||
worldAlpha = root.groupAlpha * renderGroupParent.worldAlpha;
|
||||
} else {
|
||||
renderGroup.worldTransform.copyFrom(root.localTransform);
|
||||
renderGroup.worldColor = root.localColor;
|
||||
worldAlpha = root.localAlpha;
|
||||
}
|
||||
worldAlpha = worldAlpha < 0 ? 0 : worldAlpha > 1 ? 1 : worldAlpha;
|
||||
renderGroup.worldAlpha = worldAlpha;
|
||||
renderGroup.worldColorAlpha = renderGroup.worldColor + ((worldAlpha * 255 | 0) << 24);
|
||||
}
|
||||
function updateTransformAndChildren(container, updateTick, updateFlags) {
|
||||
if (updateTick === container.updateTick)
|
||||
return;
|
||||
container.updateTick = updateTick;
|
||||
container.didChange = false;
|
||||
const localTransform = container.localTransform;
|
||||
container.updateLocalTransform();
|
||||
const parent = container.parent;
|
||||
if (parent && !parent.renderGroup) {
|
||||
updateFlags = updateFlags | container._updateFlags;
|
||||
container.relativeGroupTransform.appendFrom(
|
||||
localTransform,
|
||||
parent.relativeGroupTransform
|
||||
);
|
||||
if (updateFlags & UPDATE_BLEND_COLOR_VISIBLE) {
|
||||
updateColorBlendVisibility(container, parent, updateFlags);
|
||||
}
|
||||
} else {
|
||||
updateFlags = container._updateFlags;
|
||||
container.relativeGroupTransform.copyFrom(localTransform);
|
||||
if (updateFlags & UPDATE_BLEND_COLOR_VISIBLE) {
|
||||
updateColorBlendVisibility(container, tempContainer, updateFlags);
|
||||
}
|
||||
}
|
||||
if (!container.renderGroup) {
|
||||
const children = container.children;
|
||||
const length = children.length;
|
||||
for (let i = 0; i < length; i++) {
|
||||
updateTransformAndChildren(children[i], updateTick, updateFlags);
|
||||
}
|
||||
const renderGroup = container.parentRenderGroup;
|
||||
if (container.renderPipeId && !renderGroup.structureDidChange) {
|
||||
renderGroup.updateRenderable(container);
|
||||
}
|
||||
}
|
||||
}
|
||||
function updateColorBlendVisibility(container, parent, updateFlags) {
|
||||
if (updateFlags & UPDATE_COLOR) {
|
||||
container.groupColor = mixColors(
|
||||
container.localColor,
|
||||
parent.groupColor
|
||||
);
|
||||
let groupAlpha = container.localAlpha * parent.groupAlpha;
|
||||
groupAlpha = groupAlpha < 0 ? 0 : groupAlpha > 1 ? 1 : groupAlpha;
|
||||
container.groupAlpha = groupAlpha;
|
||||
container.groupColorAlpha = container.groupColor + ((groupAlpha * 255 | 0) << 24);
|
||||
}
|
||||
if (updateFlags & UPDATE_BLEND) {
|
||||
container.groupBlendMode = container.localBlendMode === "inherit" ? parent.groupBlendMode : container.localBlendMode;
|
||||
}
|
||||
if (updateFlags & UPDATE_VISIBLE) {
|
||||
container.globalDisplayStatus = container.localDisplayStatus & parent.globalDisplayStatus;
|
||||
}
|
||||
container._updateFlags = 0;
|
||||
}
|
||||
|
||||
export { updateRenderGroupTransform, updateRenderGroupTransforms, updateTransformAndChildren };
|
||||
//# sourceMappingURL=updateRenderGroupTransforms.mjs.map
|
Reference in New Issue
Block a user