UNPKG

xl-pano

Version:

一个基于 Typescript 的,同时支持立方体和球体场景的轻量开源库。

106 lines (105 loc) 2.85 kB
import { WebGLRenderingContextWithProgram } from "../types/index"; import Scene from "./interface/Scene"; declare type SceneChangeCallback = (scene: Scene, index: number) => void; declare type ListenerType = 'sceneChange'; declare type ListenerCallback = SceneChangeCallback; /** * 容器 * */ export default class Pano { /** * @static {WebGLProgram} CubeGLProgram 立方体 WebGL 程序对象 * */ static CubeGLProgram: WebGLProgram; /** * @static {WebGLProgram} SphereGLProgram 球体 WebGL 程序对象 * */ static SphereGLProgram: WebGLProgram; /** * 初始化着色器程序 * */ initShader(): void; /** * @property {HTMLElement} container 容器 * */ container: HTMLElement; /** * @property {HTMLCanvasElement} canvas canvas节点 * */ canvas: HTMLCanvasElement; /** * @property {WebGLRenderingContextWithProgram} gl WebGL绘制上下文 * */ gl: WebGLRenderingContextWithProgram; /** * @property {Scene[]} scenes 场景列表 * */ scenes: Scene[]; /** * @property {number} sceneIndex 当前场景 * */ sceneIndex: number; /** * 是否已经渲染 * */ rendered: boolean; /** * 设置样式 * */ setStyle(): void; /** * container 尺寸变化监听,重新渲染 * */ onContainerResize(): void; /** * @constructor * @param {string} containerId 容器节点id * @param {boolean} debug 是否开启debug * */ constructor(containerId: string, debug?: boolean); /** * 场景变化的回调函数 * */ sceneChangeCallbacks: SceneChangeCallback[]; /** * 添加回调函数 * @param {ListenerType} type 监听类型,预定义好的 * @param {ListenerCallback} callback 回调函数 * */ addListener(type: ListenerType, callback: ListenerCallback): void; /** * 添加回调函数 * @param {ListenerType} type 监听类型,预定义好的 * @param {ListenerCallback} callback 回调函数 * */ removeListener(type: ListenerType, callback: ListenerCallback): void; /** * 移除所有监听 * */ removeAllListeners(): void; /** * 添加场景 * @param {Scene} scene 场景 * */ addScene(scene: Scene): void; /** * 切换场景 * @param {number} sceneIndex 切换后的场景 * */ switchScene: (sceneIndex: number) => void; /** * 渲染当前 Scene 到 canvas * */ render(): void; /** * 获取当前场景索引 * @return {Scene} 当前场景 * */ getCurrentScene(): Scene; /** * 设置当前场景 * @param {Scene | number} scene 场景实例,或者场景索引 * */ setScene(scene: Scene | number): void; } export {};