* refactor: 编辑器/运行时架构拆分与构建系统升级 * feat(core): 层级系统重构与UI变换矩阵修复 * refactor: 移除 ecs-components 聚合包并修复跨包组件查找问题 * fix(physics): 修复跨包组件类引用问题 * feat: 统一运行时架构与浏览器运行支持 * feat(asset): 实现浏览器运行时资产加载系统 * fix: 修复文档、CodeQL安全问题和CI类型检查错误 * fix: 修复文档、CodeQL安全问题和CI类型检查错误 * fix: 修复文档、CodeQL安全问题、CI类型检查和测试错误 * test: 补齐核心模块测试用例,修复CI构建配置 * fix: 修复测试用例中的类型错误和断言问题 * fix: 修复 turbo build:npm 任务的依赖顺序问题 * fix: 修复 CI 构建错误并优化构建性能
166 lines
4.6 KiB
TypeScript
166 lines
4.6 KiB
TypeScript
/**
|
|
* @esengine/ui - ECS-based UI System
|
|
*
|
|
* 基于 ECS 架构的 UI 系统,支持 WebGL 渲染
|
|
* ECS-based UI system with WebGL rendering support
|
|
*
|
|
* @example
|
|
* ```typescript
|
|
* import {
|
|
* UIBuilder,
|
|
* UILayoutSystem,
|
|
* UIInputSystem,
|
|
* UIAnimationSystem,
|
|
* // ECS Render Systems
|
|
* UIRectRenderSystem,
|
|
* UITextRenderSystem,
|
|
* UIButtonRenderSystem,
|
|
* UIProgressBarRenderSystem,
|
|
* UISliderRenderSystem,
|
|
* UIScrollViewRenderSystem,
|
|
* getUIRenderCollector
|
|
* } from '@esengine/ui';
|
|
*
|
|
* // 创建 UI Scene
|
|
* const uiScene = world.createScene('ui');
|
|
*
|
|
* // 添加 UI 系统(按 updateOrder 自动排序)
|
|
* // Add UI systems (auto-sorted by updateOrder)
|
|
* uiScene.addSystem(new UILayoutSystem()); // Layout first
|
|
* uiScene.addSystem(new UIInputSystem()); // Input handling
|
|
* uiScene.addSystem(new UIAnimationSystem()); // Animation
|
|
*
|
|
* // 添加渲染系统(每个组件类型一个系统)
|
|
* // Add render systems (one per component type)
|
|
* uiScene.addSystem(new UIRectRenderSystem()); // Basic rectangles (order: 100)
|
|
* uiScene.addSystem(new UIProgressBarRenderSystem());// Progress bars (order: 110)
|
|
* uiScene.addSystem(new UISliderRenderSystem()); // Sliders (order: 111)
|
|
* uiScene.addSystem(new UIScrollViewRenderSystem()); // Scroll views (order: 112)
|
|
* uiScene.addSystem(new UIButtonRenderSystem()); // Buttons (order: 113)
|
|
* uiScene.addSystem(new UITextRenderSystem()); // Text (order: 120)
|
|
*
|
|
* // 在渲染前清除收集器
|
|
* // Clear collector before render
|
|
* getUIRenderCollector().clear();
|
|
*
|
|
* // 使用 UIBuilder 创建元素
|
|
* const ui = new UIBuilder(uiScene);
|
|
*
|
|
* const button = ui.button({
|
|
* x: 100, y: 100,
|
|
* width: 120, height: 40,
|
|
* label: 'Click Me',
|
|
* onClick: () => console.log('Clicked!')
|
|
* });
|
|
*
|
|
* const progressBar = ui.progressBar({
|
|
* x: 100, y: 160,
|
|
* width: 200, height: 20,
|
|
* value: 75,
|
|
* maxValue: 100
|
|
* });
|
|
* ```
|
|
*/
|
|
|
|
// Components - Core
|
|
export {
|
|
UITransformComponent,
|
|
AnchorPreset
|
|
} from './components/UITransformComponent';
|
|
|
|
export {
|
|
UIRenderComponent,
|
|
UIRenderType,
|
|
type UIBorderStyle,
|
|
type UIShadowStyle
|
|
} from './components/UIRenderComponent';
|
|
|
|
export {
|
|
UIInteractableComponent,
|
|
type UICursorType
|
|
} from './components/UIInteractableComponent';
|
|
|
|
export {
|
|
UITextComponent,
|
|
type UITextAlign,
|
|
type UITextVerticalAlign,
|
|
type UITextOverflow,
|
|
type UIFontWeight
|
|
} from './components/UITextComponent';
|
|
|
|
export {
|
|
UILayoutComponent,
|
|
UILayoutType,
|
|
UIJustifyContent,
|
|
UIAlignItems,
|
|
type UIPadding
|
|
} from './components/UILayoutComponent';
|
|
|
|
// Components - Widgets
|
|
export {
|
|
UIButtonComponent,
|
|
type UIButtonStyle,
|
|
type UIButtonDisplayMode
|
|
} from './components/widgets/UIButtonComponent';
|
|
|
|
export {
|
|
UIProgressBarComponent,
|
|
UIProgressDirection,
|
|
UIProgressFillMode
|
|
} from './components/widgets/UIProgressBarComponent';
|
|
|
|
export {
|
|
UISliderComponent,
|
|
UISliderOrientation
|
|
} from './components/widgets/UISliderComponent';
|
|
|
|
export {
|
|
UIScrollViewComponent,
|
|
UIScrollbarVisibility
|
|
} from './components/widgets/UIScrollViewComponent';
|
|
|
|
// Systems - Core
|
|
export { UILayoutSystem } from './systems/UILayoutSystem';
|
|
export { UIInputSystem, MouseButton, type UIInputEvent } from './systems/UIInputSystem';
|
|
export { UIAnimationSystem, Easing, type EasingFunction, type EasingName } from './systems/UIAnimationSystem';
|
|
export { UIRenderDataProvider, type IRenderDataProvider, type IUIRenderDataProvider } from './systems/UIRenderDataProvider';
|
|
|
|
// Systems - Render (ECS-compliant render systems)
|
|
export {
|
|
// Collector
|
|
UIRenderCollector,
|
|
getUIRenderCollector,
|
|
resetUIRenderCollector,
|
|
invalidateUIRenderCaches,
|
|
type UIRenderPrimitive,
|
|
type ProviderRenderData,
|
|
// Render systems
|
|
UIRenderBeginSystem,
|
|
UIRectRenderSystem,
|
|
UITextRenderSystem,
|
|
UIButtonRenderSystem,
|
|
UIProgressBarRenderSystem,
|
|
UISliderRenderSystem,
|
|
UIScrollViewRenderSystem
|
|
} from './systems/render';
|
|
|
|
// Rendering
|
|
export { WebGLUIRenderer } from './rendering/WebGLUIRenderer';
|
|
export { TextRenderer, type TextMeasurement, type TextRenderOptions } from './rendering/TextRenderer';
|
|
|
|
// Builder API
|
|
export {
|
|
UIBuilder,
|
|
type UIBaseConfig,
|
|
type UIButtonConfig,
|
|
type UITextConfig,
|
|
type UIImageConfig,
|
|
type UIProgressBarConfig,
|
|
type UISliderConfig,
|
|
type UIPanelConfig,
|
|
type UIScrollViewConfig
|
|
} from './UIBuilder';
|
|
|
|
// Runtime module and plugin
|
|
export { UIRuntimeModule, UIPlugin, type UISystemContext } from './UIRuntimeModule';
|