Files
esengine/packages/editor-core/src/Services/IPropertyRenderer.ts
YHH a3f7cc38b1 Feature/render pipeline (#232)
* refactor(engine): 重构2D渲染管线坐标系统

* feat(engine): 完善2D渲染管线和编辑器视口功能

* feat(editor): 实现Viewport变换工具系统

* feat(editor): 优化Inspector渲染性能并修复Gizmo变换工具显示

* feat(editor): 实现Run on Device移动预览功能

* feat(editor): 添加组件属性控制和依赖关系系统

* feat(editor): 实现动画预览功能和优化SpriteAnimator编辑器

* feat(editor): 修复SpriteAnimator动画预览功能并迁移CI到pnpm

* feat(editor): 修复SpriteAnimator动画预览并迁移到pnpm

* feat(editor): 修复SpriteAnimator动画预览并迁移到pnpm

* feat(editor): 修复SpriteAnimator动画预览并迁移到pnpm

* feat(editor): 修复SpriteAnimator动画预览并迁移到pnpm

* feat(ci): 迁移项目到pnpm并修复CI构建问题

* chore: 迁移CI工作流到pnpm并添加WASM构建支持

* chore: 迁移CI工作流到pnpm并添加WASM构建支持

* chore: 迁移CI工作流到pnpm并添加WASM构建支持

* chore: 迁移CI工作流到pnpm并添加WASM构建支持

* chore: 迁移CI工作流到pnpm并添加WASM构建支持

* chore: 迁移CI工作流到pnpm并添加WASM构建支持

* chore: 移除 network 相关包

* chore: 移除 network 相关包
2025-11-23 14:49:37 +08:00

31 lines
1016 B
TypeScript

import { ReactElement } from 'react';
export interface PropertyContext {
readonly name: string;
readonly path?: string[];
readonly depth?: number;
readonly readonly?: boolean;
readonly decimalPlaces?: number;
readonly expandByDefault?: boolean;
readonly parentObject?: any;
readonly metadata?: Record<string, any>;
}
export interface IPropertyRenderer<T = any> {
readonly id: string;
readonly name: string;
readonly priority?: number;
canHandle(value: any, context: PropertyContext): value is T;
render(value: T, context: PropertyContext): ReactElement;
}
export interface IPropertyRendererRegistry {
register(renderer: IPropertyRenderer): void;
unregister(rendererId: string): void;
findRenderer(value: any, context: PropertyContext): IPropertyRenderer | undefined;
render(value: any, context: PropertyContext): ReactElement | null;
getAllRenderers(): IPropertyRenderer[];
hasRenderer(value: any, context: PropertyContext): boolean;
}