From 7ac1913bade14a25561df609cf097e5bad781e1e Mon Sep 17 00:00:00 2001 From: "chenmo.gl" Date: Tue, 12 May 2026 17:40:20 +0800 Subject: [PATCH] refactor(ui): move UIBatchSorter from core to ui UIBatchSorter is only used by UICanvas; keeping it in core forced a cross-package export plus a ts-ignore at the UICanvas import site for an @internal symbol. Move it next to its sole consumer in the ui package and add RenderElement to core's RenderPipeline barrel so ui can type the sort input. Utils._quickSort stays @internal; the new call site carries a single ts-ignore acknowledging the reuse. --- packages/core/src/RenderPipeline/index.ts | 2 +- .../src/RenderPipeline => ui/src/component}/UIBatchSorter.ts | 5 ++--- packages/ui/src/component/UICanvas.ts | 5 ++--- tests/src/{core => ui}/UIBatchSorter.test.ts | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) rename packages/{core/src/RenderPipeline => ui/src/component}/UIBatchSorter.ts (97%) rename tests/src/{core => ui}/UIBatchSorter.test.ts (98%) diff --git a/packages/core/src/RenderPipeline/index.ts b/packages/core/src/RenderPipeline/index.ts index ddfa25bf5..61855cbae 100644 --- a/packages/core/src/RenderPipeline/index.ts +++ b/packages/core/src/RenderPipeline/index.ts @@ -1,6 +1,6 @@ export { BasicRenderPipeline, RenderQueueFlags } from "./BasicRenderPipeline"; export { VertexMergeBatcher } from "./VertexMergeBatcher"; -export { UIBatchSorter } from "./UIBatchSorter"; export { Blitter } from "./Blitter"; +export { RenderElement } from "./RenderElement"; export { RenderQueue } from "./RenderQueue"; export { PipelineStage } from "./enums/PipelineStage"; diff --git a/packages/core/src/RenderPipeline/UIBatchSorter.ts b/packages/ui/src/component/UIBatchSorter.ts similarity index 97% rename from packages/core/src/RenderPipeline/UIBatchSorter.ts rename to packages/ui/src/component/UIBatchSorter.ts index 26f6da8f9..0a7897a41 100644 --- a/packages/core/src/RenderPipeline/UIBatchSorter.ts +++ b/packages/ui/src/component/UIBatchSorter.ts @@ -1,6 +1,4 @@ -import { BoundingBox, Matrix } from "@galacean/engine-math"; -import { Utils } from "../Utils"; -import { RenderElement } from "./RenderElement"; +import { BoundingBox, Matrix, RenderElement, Utils } from "@galacean/engine"; /** * @internal @@ -118,6 +116,7 @@ export class UIBatchSorter { } } + // @ts-ignore — Utils._quickSort is @internal Utils._quickSort(entries, 0, count, UIBatchSorter._compareEntries); for (let i = 0; i < count; i++) elements[i] = entries[i].element; } diff --git a/packages/ui/src/component/UICanvas.ts b/packages/ui/src/component/UICanvas.ts index 3a11eaefb..cf3d74328 100644 --- a/packages/ui/src/component/UICanvas.ts +++ b/packages/ui/src/component/UICanvas.ts @@ -16,11 +16,10 @@ import { assignmentClone, deepClone, dependentComponents, - ignoreClone, - // @ts-ignore — internal API - UIBatchSorter + ignoreClone } from "@galacean/engine"; import { Utils } from "../Utils"; +import { UIBatchSorter } from "./UIBatchSorter"; import { CanvasRenderMode } from "../enums/CanvasRenderMode"; import { ResolutionAdaptationMode } from "../enums/ResolutionAdaptationMode"; import { UIHitResult } from "../input/UIHitResult"; diff --git a/tests/src/core/UIBatchSorter.test.ts b/tests/src/ui/UIBatchSorter.test.ts similarity index 98% rename from tests/src/core/UIBatchSorter.test.ts rename to tests/src/ui/UIBatchSorter.test.ts index d2703dec9..a5cd3b9b7 100644 --- a/tests/src/core/UIBatchSorter.test.ts +++ b/tests/src/ui/UIBatchSorter.test.ts @@ -1,4 +1,4 @@ -import { UIBatchSorter } from "@galacean/engine-core"; +import { UIBatchSorter } from "@galacean/engine-ui/src/component/UIBatchSorter"; import { BoundingBox, Matrix, Quaternion, Vector3 } from "@galacean/engine-math"; import { describe, expect, it } from "vitest";