soonspacejs
Version:
soonspacejs 2.x
133 lines (132 loc) • 5.43 kB
TypeScript
/// <reference types="stats.js" />
import { Mesh, Clock, Scene, PerspectiveCamera, WebGLRenderer, PMREMGenerator, Vector3, AnimationMixer, Raycaster, Intersection, AnimationClip, Texture, Material, OrthographicCamera } from 'three';
import { EffectComposer } from 'postprocessing';
import Stats from 'three/examples/jsm/libs/stats.module.js';
import { Sky } from 'three/examples/jsm/objects/Sky.js';
import { AnimationOperate } from '@three3d/animation';
import Scener from './Scener';
import { CSS2DRenderer, CSS3DRenderer } from '../Renderer';
import RendererManager from './RendererManager';
import CameraManager from './CameraManager';
import EffectManager from './EffectManager';
import Bvh from './Bvh';
import Controls from '../Controls';
import { Model } from '../Library';
import { IColorSpace, SkyOptions, IColor, OffsetPoint, Position, ViewportOptions, ViewportState, ModelAnimationFindFunc, SignalsState, ToneMappingOptions, SSAOOptions, BloomOptions, IntersectsOptions, EnvironmentOptions } from '../Interface';
import EventHandler from './EventHandler';
import Info from './Info';
import { ViewHelper } from './ViewHelper';
import { ObjectsCache } from '../Cache';
export declare const innerRenderState: {
needsUpdate: boolean;
};
declare class Viewport {
readonly options: ViewportOptions;
readonly signals: SignalsState;
readonly cache: ObjectsCache;
clock: Clock;
raycaster: Raycaster;
scene: Scene;
sky: Sky | null;
state: ViewportState;
scener: Scener;
rendererManager: RendererManager;
container: HTMLElement;
interactiveContainer: HTMLElement;
renderer: WebGLRenderer;
rendererCSS2D: CSS2DRenderer;
rendererCSS3D: CSS3DRenderer;
pmremGenerator: PMREMGenerator;
info: Info;
stats: Stats;
cameraManager: CameraManager;
camera: PerspectiveCamera | OrthographicCamera;
controls: Controls;
effectManager: EffectManager;
effectComposer: EffectComposer;
bvh: Bvh;
mixer: AnimationMixer;
clipsSet: Set<AnimationClip>;
viewHelper: ViewHelper;
eventHandler: EventHandler;
/**
* render 前回调(每帧执行)
*/
postUpdate: Map<string | number, (time: number) => void>;
/**
* render 后回调
*/
postRender: Map<string | number, () => void>;
private _loop;
resizeObserver: ResizeObserver;
constructor(options: ViewportOptions, signals: SignalsState, cache: ObjectsCache);
_initInfo(): void;
_initStats(): void;
setAutoInstancing(enabled: boolean): void;
/**
***************************** post-processing ***************************
*/
setBloom(options?: BloomOptions): void;
setSSAO(options?: SSAOOptions): void;
/**
***************************** renderer ***************************
*/
setColorSpace(colorSpace: IColorSpace): void;
setToneMapping(options?: ToneMappingOptions): void;
/**
***************************** background ***************************
*/
setSphereSkyBackground(imgUrl: string): Promise<void>;
setSkyBackground(dirPath: string, fileNames?: string[]): Promise<void>;
setBackgroundColor(color: IColor): void;
setBackgroundColorAlpha(color: IColor, alpha?: number): void;
setBackgroundImage(imgUrl: string): Promise<void>;
setSky(options?: SkyOptions): Sky | undefined;
closeSky(): boolean;
screenshot(): Promise<Blob | null>;
/**
***************************** environment ***************************
*/
setEnvironment(options?: EnvironmentOptions): Promise<Texture>;
/**
***************************** modelAnimation ***************************
*/
playModelAnimation(model: Model, animation: number | AnimationClip | ModelAnimationFindFunc): AnimationOperate | undefined;
stopModelAnimation(model: Model, animation: number | AnimationClip | ModelAnimationFindFunc): void;
/**
***************************** render ***************************
*/
render(fn?: () => unknown): Promise<number>;
/**
* 触发渲染(兼容 soongis)
* @param count
*/
triggerRender(count?: number): void;
/**
* 暂停渲染
* @param pause
*/
setPauseRender(pause?: boolean): Promise<number | undefined>;
/**
* effect passes
*/
_passesObserver(): void;
/**
* 每帧都会被执行
* @param time
* @returns
*/
autoRender(): void;
animate(time: number): void;
getOffsetByPosition(position: Position): {
left: number;
top: number;
};
getPositionByOffset(offset: OffsetPoint, z?: number, scalar?: number): Vector3;
getIntersects(event: MouseEvent | TouchEvent | OffsetPoint, objects?: import("three").Object3D<import("three").Object3DEventMap>[], options?: IntersectsOptions): Intersection<import("three").Object3D<import("three").Object3DEventMap>>[];
rayClash(startPoint?: Vector3, dir?: Vector3, objects?: Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, Material | Material[], import("three").Object3DEventMap>[]): Intersection<import("three").Object3D<import("three").Object3DEventMap>>[];
clearSignals(): void;
dispose(): void;
_signalsEventListenr(): void;
}
export default Viewport;