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:
@@ -32,7 +32,7 @@
|
||||
"@esengine/ecs-framework-math": "workspace:*",
|
||||
"@esengine/editor-core": "workspace:*",
|
||||
"@esengine/engine-core": "workspace:*",
|
||||
"@esengine/ui": "workspace:*",
|
||||
"@esengine/fairygui": "workspace:*",
|
||||
"@types/react": "^18.3.12",
|
||||
"@types/react-dom": "^18.3.1",
|
||||
"react": "^18.3.1",
|
||||
|
||||
@@ -272,86 +272,117 @@ export type { LucideIcon } from 'lucide-react';
|
||||
export { PluginAPI } from './PluginAPI';
|
||||
|
||||
// =============================================================================
|
||||
// UI System
|
||||
// FairyGUI System
|
||||
// =============================================================================
|
||||
export {
|
||||
// Components - Core
|
||||
UITransformComponent,
|
||||
AnchorPreset,
|
||||
UIRenderComponent,
|
||||
UIRenderType,
|
||||
UIInteractableComponent,
|
||||
UITextComponent,
|
||||
UILayoutComponent,
|
||||
UILayoutType,
|
||||
UIJustifyContent,
|
||||
UIAlignItems,
|
||||
// Components - Widgets
|
||||
UIButtonComponent,
|
||||
UIProgressBarComponent,
|
||||
UIProgressDirection,
|
||||
UIProgressFillMode,
|
||||
UISliderComponent,
|
||||
UISliderOrientation,
|
||||
UIScrollViewComponent,
|
||||
UIScrollbarVisibility,
|
||||
// Systems - Core
|
||||
UILayoutSystem,
|
||||
UIInputSystem,
|
||||
UIAnimationSystem,
|
||||
UIEasing,
|
||||
UIRenderDataProvider,
|
||||
// Systems - Render
|
||||
UIRenderCollector,
|
||||
getUIRenderCollector,
|
||||
resetUIRenderCollector,
|
||||
invalidateUIRenderCaches,
|
||||
UIRenderBeginSystem,
|
||||
UIRectRenderSystem,
|
||||
UITextRenderSystem,
|
||||
UIButtonRenderSystem,
|
||||
UIProgressBarRenderSystem,
|
||||
UISliderRenderSystem,
|
||||
UIScrollViewRenderSystem,
|
||||
// Rendering
|
||||
WebGLUIRenderer,
|
||||
TextRenderer,
|
||||
// Builder API
|
||||
UIBuilder,
|
||||
// Plugin
|
||||
UIPlugin,
|
||||
UIRuntimeModule,
|
||||
} from '@esengine/ui';
|
||||
// ECS Integration
|
||||
FGUIComponent,
|
||||
FGUIRenderSystem,
|
||||
getFGUIRenderSystem,
|
||||
setFGUIRenderSystem,
|
||||
FGUIRuntimeModule,
|
||||
FGUIPlugin,
|
||||
// Core
|
||||
GObject,
|
||||
GComponent,
|
||||
GRoot,
|
||||
GGroup,
|
||||
Controller,
|
||||
Transition,
|
||||
Timer,
|
||||
Stage,
|
||||
EScaleMode,
|
||||
EAlignMode,
|
||||
UIConfig,
|
||||
getUIConfig,
|
||||
setUIConfig,
|
||||
UIObjectFactory,
|
||||
GObjectPool,
|
||||
DragDropManager,
|
||||
// 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';
|
||||
|
||||
export type {
|
||||
// Types from UI
|
||||
UIBorderStyle,
|
||||
UIShadowStyle,
|
||||
UICursorType,
|
||||
UITextAlign,
|
||||
UITextVerticalAlign,
|
||||
UITextOverflow,
|
||||
UIFontWeight,
|
||||
UIPadding,
|
||||
UIButtonStyle,
|
||||
UIButtonDisplayMode,
|
||||
UIInputEvent,
|
||||
EasingFunction,
|
||||
EasingName,
|
||||
UIRenderPrimitive,
|
||||
ProviderRenderData as UIProviderRenderData,
|
||||
IUIRenderDataProvider,
|
||||
TextMeasurement,
|
||||
TextRenderOptions,
|
||||
UIBaseConfig,
|
||||
UIButtonConfig,
|
||||
UITextConfig,
|
||||
UIImageConfig,
|
||||
UIProgressBarConfig,
|
||||
UISliderConfig,
|
||||
UIPanelConfig,
|
||||
UIScrollViewConfig,
|
||||
} from '@esengine/ui';
|
||||
// FairyGUI types
|
||||
IFGUIComponentData,
|
||||
RenderSubmitCallback,
|
||||
ItemRenderer,
|
||||
ItemProvider,
|
||||
IUISource,
|
||||
TypedEventListener,
|
||||
EventListener,
|
||||
FGUIEventType,
|
||||
IEventContext,
|
||||
IInputEventData,
|
||||
IFUIAsset,
|
||||
IAssetLoader,
|
||||
IAssetContent,
|
||||
IAssetParseContext,
|
||||
IEngineRenderData,
|
||||
IFGUIRenderDataProvider,
|
||||
TextureResolverFn,
|
||||
TweenCallback,
|
||||
} from '@esengine/fairygui';
|
||||
|
||||
// =============================================================================
|
||||
// Plugin i18n Infrastructure
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
"include": ["src"],
|
||||
"references": [
|
||||
{ "path": "../core" },
|
||||
{ "path": "../editor-core" },
|
||||
{ "path": "../ui" }
|
||||
{ "path": "../editor-core" }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ export default defineConfig({
|
||||
'@esengine/engine-core', // TransformComponent 等核心组件
|
||||
'@esengine/ecs-components',
|
||||
'@esengine/tilemap',
|
||||
'@esengine/ui',
|
||||
'@esengine/fairygui', // FairyGUI system
|
||||
'@esengine/behavior-tree',
|
||||
'@esengine/platform-web',
|
||||
'@esengine/ecs-engine-bindgen',
|
||||
|
||||
Reference in New Issue
Block a user