UNPKG

@turbox3d/renderer-core

Version:

Large-scale declarative graphic ui core renderer

114 lines (113 loc) 4.92 kB
import { InteractiveConfig, SceneEvent, ViewEntity } from '@turbox3d/event-manager'; import { SceneTool } from '@turbox3d/command-manager'; import { BaseScene } from './scene'; import { PureComponent, ComponentProps } from './component'; type CommitType = 'update' | 'create' | 'delete'; export declare abstract class BaseMesh<Props extends object, ApplicationContext, Renderer, Scene, Camera, Raycaster, Container extends DisplayObject, DisplayObject, Viewport, Point> extends PureComponent<Props> { /** 当前组件的视图对象 */ protected view: DisplayObject; /** 视图对象的类型(有相机、灯光、模型三类,默认为 model) */ protected viewType: 'camera' | 'light' | 'model'; /** 响应式的渲染任务管线 */ protected reactivePipeLine: Array<() => void>; /** 是否默认添加到场景中。默认:true */ protected autoAppendToWorld: boolean; private reactions; private interactiveTask; constructor(props?: ComponentProps<Props>); commit(type: CommitType, updateRange?: { interactive: boolean; customProps: boolean; }): void; abstract createDefaultView(): DisplayObject; /** * 提供接口用以给子组件添加 view */ abstract addChildView(view: DisplayObject): void; /** * 绘制图形图像,默认在 componentDidMount 时调用 */ protected draw(): void; /** * 设置当前 cursor 状态 * * @param cursor */ protected updateCursor(cursor: string): void; /** * 恢复默认 cursor 状态 */ protected resetCursor(): void; /** * 标记当前对象是否可点击 */ protected onClickable(): boolean; /** * 标记当前对象是否可 Hover */ protected onHoverable(): boolean; /** * 标记当前对象是否可拖拽 */ protected onDraggable(): boolean; protected onPinchable(): boolean; protected onRotatable(): boolean; protected onPressable(): boolean; protected get interactiveConfig(): InteractiveConfig; protected onClick(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onDBClick(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onRightClick(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onDragStart(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onDragMove(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onDragEnd(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onPinchStart(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onPinch(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onPinchEnd(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onRotateStart(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onRotate(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onRotateEnd(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onPress(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onPressUp(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onHoverIn(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected onHoverOut(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void; protected getViewEntity(): Partial<ViewEntity>; private _on$Click; private _on$DBClick; private _on$RightClick; private _on$DragStart; private _on$DragMove; private _on$DragEnd; private _on$PinchStart; private _on$Pinch; private _on$PinchEnd; private _on$RotateStart; private _on$Rotate; private _on$RotateEnd; private _on$Press; private _on$PressUp; private _on$HoverIn; private _on$HoverOut; /** 转发事件给CommandManager */ private forwardToCommand; /** * 将当前视图对象添加到视图中 */ private appendToWorld; /** 往场景中添加对象 */ abstract addViewToScene(scene: BaseScene<ApplicationContext, Renderer, Scene, Camera, Raycaster, Container, DisplayObject, Viewport>, view: DisplayObject): void; /** * 清除当前视图 */ abstract clearView(): void; /** * 从世界中移除当前对象 */ abstract removeFromWorld(): void; /** 设置视图是否可交互 */ abstract setViewInteractive(interactive: boolean): void; /** * 激活视图对象的交互状态,并更新交互配置 */ private applyInteractive; } export {};