@turbox3d/renderer-pixi
Version:
Large-scale declarative 2d graphic ui framework based on pixi
97 lines (96 loc) • 3.88 kB
TypeScript
import { CoordinateController, InteractiveConfig, InteractiveType, SceneEvent, ViewEntity } from '@turbox3d/event-manager';
import { BaseScene, BaseSceneProps, ComponentProps, SceneType, ViewportInfo } from '@turbox3d/renderer-core';
import { Vec2, Vec3 } from '@turbox3d/shared';
import * as PIXI from 'pixi.js';
export declare const Scene2DSymbol: unique symbol;
export interface Scene2DProps extends BaseSceneProps {
/**
* 根视图容器参数(在一个 renderer 中渲染多个子视图并互相隔离时使用)
*/
viewport?: ViewportInfo;
/**
* 2d 相机的尺寸(x是宽度、y是高度)单位:毫米
*/
camera2dSize?: Vec2;
/** resizeFramebuffer */
resizeFramebuffer?: boolean;
}
export declare class Scene2D extends BaseScene<PIXI.Application, PIXI.ICanvas, never, never, never, PIXI.Container, PIXI.DisplayObject, PIXI.Sprite> {
defaultSceneViewType: symbol;
sceneType: SceneType;
private timer;
private offsetCenter;
private brt?;
private rt?;
private originalResizeFramebufferFunction;
constructor(props: Exclude<ComponentProps<Scene2DProps>, ViewEntity>);
createView(): PIXI.Container<PIXI.DisplayObject>;
getViewInfo(): {
position: {
x: number;
y: number;
};
scale: {
x: number;
y: number;
};
visible: boolean;
};
setViewPosition(position: Partial<Vec3>): void;
setViewScale(scale: Partial<Vec3>): void;
setViewVisible(visible: boolean): void;
setViewportPosition(position: Partial<Vec3>): void;
setViewportScale(scale: Partial<Vec3>): void;
setViewportVisible(visible: boolean): void;
addRootViewContainer(app: PIXI.Application): void;
createViewport(): void;
getViewport(): PIXI.Sprite | undefined;
getViewportInfo(): {
position: {
x: number;
y: number;
};
scale: {
x: number;
y: number;
};
visible: boolean;
width: number;
height: number;
} | undefined;
createApp(): PIXI.Application<PIXI.ICanvas>;
updateCameraTarget(): void;
updateCameraPosition(): void;
/**
* 修复 PIXI bug,改写 resizeFramebuffer,解决 pixi frame buffer 只能由大变小但不能由小变大 resize 的问题
* 因为修复此 bug 会导致性能问题,所以只在必要的时候使用,通过参数控制改写的内容
*/
private fixResizeFramebufferBug;
private isWebGL;
destroyRendererInteraction(app: PIXI.Application): void;
addChildView(view: PIXI.DisplayObject): void;
getCanvasView(app: PIXI.Application): {
width: number;
height: number;
renderer: PIXI.ICanvas;
};
unmountCanvas(): void;
mountCanvas(): void;
getHitTargetOriginal(): (point: Vec2, container: PIXI.Container, configMap: Map<PIXI.DisplayObject, InteractiveConfig>, interactiveType: InteractiveType) => {
originalTarget: PIXI.DisplayObject;
target: PIXI.DisplayObject | undefined;
};
updateCursor: (app: PIXI.Application, cursor: string) => void;
createCoordinateController(app: PIXI.Application): CoordinateController;
resizeStage: (app: PIXI.Application) => void;
setBackGroundImage(app: PIXI.Application): void;
initSkyBox(): void;
updateResolution(app: PIXI.Application): void;
resizeViewport(app: PIXI.Application): void;
destroyApp(app: PIXI.Application): void;
removeAppChildrenView(app: PIXI.Application): void;
/** 获取截图 */
getScreenShot(sx?: number, sy?: number, w?: number, h?: number, fileType?: string, quality?: number, isBase64?: boolean): Promise<string | Blob>;
canvasScaleImpl(event: SceneEvent): void;
canvasDragImpl(event: SceneEvent, type: 'start' | 'move' | 'end'): void;
}