import { Size } from '@smoovy/utils'; import { Framebuffer, FramebufferConfig } from './framebuffer'; import { Model } from './model'; export interface CameraOrthographicConfig { type: 'orthographic'; left: number; right: number; bottom: number; top: number; } export type CameraConfig = (CameraOrthographicConfig | { type: 'perspective'; }) & { near: number; fov: number; far: number; posZ: number; name: string; active: boolean; fbo: boolean | Partial; scopes: (string | number)[]; order: number; }; export declare class Camera extends Model { private gl; readonly name: string; readonly size: Size; readonly view: Size; readonly fbo?: Framebuffer; private _projection; private _worldView; private _viewScale; private _order; private config; constructor(gl: WebGLRenderingContext, config?: Partial, view?: Partial); get projection(): Float32Array; get worldView(): Float32Array; get order(): number; get type(): "orthographic" | "perspective"; pw(width: number): number; ph(height: number): number; cw(width: number): number; ch(height: number): number; cx(x: number, z?: number): number; cy(y: number, z?: number): number; bind(): void; unbind(): void; resize(width?: number, height?: number): void; set viewScale(scale: number); updateProjection(): void; protected modelHasUpdated(): void; }