feat(fairygui): FairyGUI 完整集成 (#314)
* feat(fairygui): FairyGUI ECS 集成核心架构 实现 FairyGUI 的 ECS 原生集成,完全替代旧 UI 系统: 核心类: - GObject: UI 对象基类,支持变换、可见性、关联、齿轮 - GComponent: 容器组件,管理子对象和控制器 - GRoot: 根容器,管理焦点、弹窗、输入分发 - GGroup: 组容器,支持水平/垂直布局 抽象层: - DisplayObject: 显示对象基类 - EventDispatcher: 事件分发 - Timer: 计时器 - Stage: 舞台,管理输入和缩放 布局系统: - Relations: 约束关联管理 - RelationItem: 24 种关联类型 基础设施: - Controller: 状态控制器 - Transition: 过渡动画 - ScrollPane: 滚动面板 - UIPackage: 包管理 - ByteBuffer: 二进制解析 * refactor(ui): 删除旧 UI 系统,使用 FairyGUI 替代 * feat(fairygui): 实现 UI 控件 - 添加显示类:Image、TextField、Graph - 添加基础控件:GImage、GTextField、GGraph - 添加交互控件:GButton、GProgressBar、GSlider - 更新 IRenderCollector 支持 Graph 渲染 - 扩展 Controller 添加 selectedPageId - 添加 STATE_CHANGED 事件类型 * feat(fairygui): 现代化架构重构 - 增强 EventDispatcher 支持类型安全、优先级和传播控制 - 添加 PropertyBinding 响应式属性绑定系统 - 添加 ServiceContainer 依赖注入容器 - 添加 UIConfig 全局配置系统 - 添加 UIObjectFactory 对象工厂 - 实现 RenderBridge 渲染桥接层 - 实现 Canvas2DBackend 作为默认渲染后端 - 扩展 IRenderCollector 支持更多图元类型 * feat(fairygui): 九宫格渲染和资源加载修复 - 修复 FGUIUpdateSystem 支持路径和 GUID 两种加载方式 - 修复 GTextInput 同时设置 _displayObject 和 _textField - 实现九宫格渲染展开为 9 个子图元 - 添加 sourceWidth/sourceHeight 用于九宫格计算 - 添加 DOMTextRenderer 文本渲染层(临时方案) * fix(fairygui): 修复 GGraph 颜色读取 * feat(fairygui): 虚拟节点 Inspector 和文本渲染支持 * fix(fairygui): 编辑器状态刷新和遗留引用修复 - 修复切换 FGUI 包后组件列表未刷新问题 - 修复切换组件后 viewport 未清理旧内容问题 - 修复虚拟节点在包加载后未刷新问题 - 重构为事件驱动架构,移除轮询机制 - 修复 @esengine/ui 遗留引用,统一使用 @esengine/fairygui * fix: 移除 tsconfig 中的 @esengine/ui 引用
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
"@esengine/ecs-framework-math",
|
||||
"@esengine/engine-core",
|
||||
"@esengine/sprite",
|
||||
"@esengine/ui",
|
||||
"@esengine/fairygui",
|
||||
"@esengine/audio",
|
||||
"@esengine/camera",
|
||||
"@esengine/particle",
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"@esengine/engine-core": "workspace:*",
|
||||
"@esengine/ecs-framework-math": "workspace:*",
|
||||
"@esengine/sprite": "workspace:*",
|
||||
"@esengine/ui": "workspace:*",
|
||||
"@esengine/fairygui": "workspace:*",
|
||||
"@esengine/audio": "workspace:*",
|
||||
"@esengine/camera": "workspace:*",
|
||||
"@esengine/particle": "workspace:*",
|
||||
|
||||
@@ -39,10 +39,123 @@ export * from '@esengine/engine-core';
|
||||
export * from '@esengine/sprite';
|
||||
|
||||
// ============================================================================
|
||||
// UI System (@esengine/ui)
|
||||
// UI 系统
|
||||
// FairyGUI System (@esengine/fairygui)
|
||||
// FairyGUI 系统
|
||||
// Note: Selective exports to avoid conflicts with ecs-framework and math
|
||||
// ============================================================================
|
||||
export * from '@esengine/ui';
|
||||
export {
|
||||
// ECS Integration
|
||||
FGUIComponent,
|
||||
FGUIRenderSystem,
|
||||
getFGUIRenderSystem,
|
||||
setFGUIRenderSystem,
|
||||
FGUIRuntimeModule,
|
||||
FGUIPlugin,
|
||||
// Core
|
||||
GObject,
|
||||
GComponent,
|
||||
GRoot,
|
||||
GGroup,
|
||||
Controller,
|
||||
Transition,
|
||||
UIConfig,
|
||||
getUIConfig,
|
||||
setUIConfig,
|
||||
UIObjectFactory,
|
||||
GObjectPool,
|
||||
DragDropManager,
|
||||
EScaleMode,
|
||||
EAlignMode,
|
||||
// Widgets
|
||||
GImage,
|
||||
GTextField,
|
||||
GGraph,
|
||||
GButton,
|
||||
GProgressBar,
|
||||
GSlider,
|
||||
GLoader,
|
||||
GList,
|
||||
GTextInput,
|
||||
EKeyboardType,
|
||||
PopupMenu,
|
||||
Window,
|
||||
// Package
|
||||
UIPackage,
|
||||
PackageItem,
|
||||
// Events
|
||||
EventDispatcher,
|
||||
FGUIEvents,
|
||||
// Render
|
||||
RenderCollector,
|
||||
RenderBridge,
|
||||
Canvas2DBackend,
|
||||
FGUIRenderDataProvider,
|
||||
createFGUIRenderDataProvider,
|
||||
// Tween
|
||||
GTween,
|
||||
GTweener,
|
||||
TweenManager,
|
||||
TweenValue,
|
||||
evaluateEase,
|
||||
// Asset
|
||||
FUIAssetLoader,
|
||||
fuiAssetLoader,
|
||||
// Field Types
|
||||
EButtonMode,
|
||||
EAutoSizeType,
|
||||
EAlignType,
|
||||
EVertAlignType,
|
||||
ELoaderFillType,
|
||||
EListLayoutType,
|
||||
EListSelectionMode,
|
||||
EOverflowType,
|
||||
EPackageItemType,
|
||||
EObjectType,
|
||||
EProgressTitleType,
|
||||
EScrollBarDisplayType,
|
||||
EScrollType,
|
||||
EFlipType,
|
||||
EChildrenRenderOrder,
|
||||
EGroupLayoutType,
|
||||
EPopupDirection,
|
||||
ERelationType,
|
||||
EFillMethod,
|
||||
EFillOrigin,
|
||||
EObjectPropID,
|
||||
EGearType,
|
||||
EEaseType,
|
||||
EBlendMode,
|
||||
ETransitionActionType,
|
||||
EGraphType,
|
||||
} from '@esengine/fairygui';
|
||||
|
||||
// Re-export conflicting types with FGUI prefix
|
||||
export {
|
||||
Timer as FGUITimer,
|
||||
Stage as FGUIStage,
|
||||
ServiceContainer as FGUIServiceContainer,
|
||||
Point as FGUIPoint,
|
||||
Rectangle as FGUIRectangle,
|
||||
} from '@esengine/fairygui';
|
||||
|
||||
export type {
|
||||
// FairyGUI types
|
||||
IFGUIComponentData,
|
||||
RenderSubmitCallback,
|
||||
ItemRenderer,
|
||||
ItemProvider,
|
||||
IUISource,
|
||||
TypedEventListener,
|
||||
EventListener,
|
||||
FGUIEventType,
|
||||
IEventContext,
|
||||
IInputEventData,
|
||||
IFUIAsset,
|
||||
IEngineRenderData,
|
||||
IFGUIRenderDataProvider,
|
||||
TextureResolverFn,
|
||||
TweenCallback,
|
||||
} from '@esengine/fairygui';
|
||||
|
||||
// ============================================================================
|
||||
// Audio System (@esengine/audio)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
{ "path": "../engine-core" },
|
||||
{ "path": "../math" },
|
||||
{ "path": "../sprite" },
|
||||
{ "path": "../ui" },
|
||||
{ "path": "../fairygui" },
|
||||
{ "path": "../audio" },
|
||||
{ "path": "../camera" },
|
||||
{ "path": "../particle" },
|
||||
|
||||
Reference in New Issue
Block a user