Skip to content

Commit

Permalink
Fix the UI error issues caused by adjustments to the batching and spl…
Browse files Browse the repository at this point in the history
…itting of UI elements.
  • Loading branch information
GengineJS committed Dec 18, 2024
1 parent 0738856 commit 37df1f4
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 18 deletions.
13 changes: 8 additions & 5 deletions cocos/2d/assembler/sprite/simple.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ export const simple: IAssembler = {
},

updateWorldVerts (sprite: Sprite, chunk: StaticVBChunk) {
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const vData = chunk.vb;

const dataList: IRenderData[] = renderData.data;
Expand Down Expand Up @@ -99,7 +100,8 @@ export const simple: IAssembler = {
return;
}

const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const chunk = renderData.chunk;
if (sprite._flagChangedVersion !== sprite.node.flagChangedVersion || renderData.vertDirty) {
// const vb = chunk.vertexAccessor.getVertexBuffer(chunk.bufferId);
Expand Down Expand Up @@ -187,8 +189,8 @@ export const simple: IAssembler = {
},

updateUVs (sprite: Sprite) {
if (!sprite.spriteFrame) return;
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!sprite.spriteFrame || !renderData) return;
const vData = renderData.chunk.vb;
const uv = sprite.spriteFrame.uv;
vData[3] = uv[0];
Expand All @@ -202,7 +204,8 @@ export const simple: IAssembler = {
},

updateColor (sprite: Sprite) {
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const vData = renderData.chunk.vb;
let colorOffset = 5;
const color = sprite.color;
Expand Down
16 changes: 10 additions & 6 deletions cocos/2d/assembler/sprite/sliced.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ export const sliced: IAssembler = {
},

updateVertexData (sprite: Sprite) {
const renderData: RenderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const dataList: IRenderData[] = renderData.data;
const uiTrans = sprite.node._uiProps.uiTransformComp!;
const width = uiTrans.width;
Expand Down Expand Up @@ -151,7 +152,8 @@ export const sliced: IAssembler = {
},

fillBuffers (sprite: Sprite, renderer: IBatcher) {
const renderData: RenderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const chunk = renderData.chunk;
if (sprite._flagChangedVersion !== sprite.node.flagChangedVersion || renderData.vertDirty) {
this.updateWorldVertexData(sprite, chunk);
Expand Down Expand Up @@ -179,7 +181,8 @@ export const sliced: IAssembler = {
},

updateWorldVertexData (sprite: Sprite, chunk: StaticVBChunk) {
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const stride = renderData.floatStride;
const dataList: IRenderData[] = renderData.data;
const vData = chunk.vb;
Expand Down Expand Up @@ -209,8 +212,8 @@ export const sliced: IAssembler = {
},

updateUVs (sprite: Sprite) {
if (!sprite.spriteFrame) return;
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!sprite.spriteFrame || !renderData) return;
const vData = renderData.chunk.vb;
const stride = renderData.floatStride;
const uv = sprite.spriteFrame.uvSliced;
Expand All @@ -223,7 +226,8 @@ export const sliced: IAssembler = {
},

updateColor (sprite: Sprite) {
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const vData = renderData.chunk.vb;
const stride = renderData.floatStride;

Expand Down
21 changes: 14 additions & 7 deletions cocos/2d/assembler/sprite/tiled.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ export const tiled: IAssembler = {
},

updateRenderData (sprite: Sprite) {
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const frame = sprite.spriteFrame!;
if (!frame || !renderData) {
return;
Expand Down Expand Up @@ -140,14 +141,16 @@ export const tiled: IAssembler = {
// dirty Mark
// the real update uv is on updateWorldUVData
updateUVs (sprite: Sprite) {
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
renderData.vertDirty = true;
sprite.markForUpdateRenderData();
},

fillBuffers (sprite: Sprite, renderer: IBatcher) {
const node = sprite.node;
const renderData: RenderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const chunk = renderData.chunk;
if (chunk === null) {
// If too many vertices are requested, this will result in a chunk of null.
Expand Down Expand Up @@ -182,7 +185,8 @@ export const tiled: IAssembler = {
},

updateWorldUVData (sprite: Sprite) {
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const stride = renderData.floatStride;
const dataList: IRenderData[] = renderData.data;
const vData = renderData.chunk.vb;
Expand All @@ -195,10 +199,11 @@ export const tiled: IAssembler = {

// only for TS
updateWorldVertexAndUVData (sprite: Sprite, chunk: StaticVBChunk) {
const renderData = sprite.renderData;
if (!renderData) return;
const node = sprite.node;
node.getWorldMatrix(m);

const renderData = sprite.renderData!;
const stride = renderData.floatStride;
const dataList: IRenderData[] = renderData.data;
const vData = chunk.vb;
Expand All @@ -222,7 +227,8 @@ export const tiled: IAssembler = {

updateVerts (sprite: Sprite, sizableWidth: number, sizableHeight: number, row: number, col: number) {
const uiTrans = sprite.node._uiProps.uiTransformComp!;
const renderData: RenderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const dataList: IRenderData[] = renderData.data;
const frame = sprite.spriteFrame!;

Expand Down Expand Up @@ -494,7 +500,8 @@ export const tiled: IAssembler = {

// fill color here
updateColorLate (sprite: Sprite) {
const renderData = sprite.renderData!;
const renderData = sprite.renderData;
if (!renderData) return;
const vData = renderData.chunk.vb;
const stride = renderData.floatStride;
const vertexCount = renderData.vertexCount;
Expand Down

0 comments on commit 37df1f4

Please sign in to comment.