@turbox3d/renderer-core
Version:
Large-scale declarative graphic ui core renderer
114 lines (113 loc) • 4.92 kB
TypeScript
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 {};