import { Box3, OrthographicCamera, PerspectiveCamera, Vector3 } from 'three';
import { CADFiler } from '../DatabaseServices/CADFiler';
import { Orbit } from '../Geometry/Orbit';
export declare const ViewNearMinSize = 0.01;
export declare enum CameraType {
    OrthographicCamera = 1,
    PerspectiveCamera = 2
}
type Camera = OrthographicCamera | PerspectiveCamera;
/**
 *
 * 相机的控制.
 * ->切换相机
 * ->设置视口大小
 * ->旋转和移动相机.
 */
export declare class CameraUpdate {
    private _CurCamera;
    private _CameraArray;
    private _Width;
    private _Height;
    private _ViewHeight;
    private _Target;
    private _Direction;
    private _Orbit;
    private _Near;
    DisableRotate: boolean;
    constructor();
    get Orbit(): Orbit;
    get Aspect(): number;
    get Target(): Vector3;
    set Target(value: Vector3);
    get Camera(): Camera;
    get ViewHeight(): number;
    set ViewHeight(height: number);
    get Direction(): Vector3;
    SetSize(width: number, height: number): void;
    get Width(): number;
    get Height(): number;
    get Fov(): number;
    set Fov(fov: number);
    get Near(): number;
    set Near(value: number);
    /**
     * 平移相机.
     * @param {Vector3} mouseMove
     */
    Pan(mouseMove: Vector3): void;
    Rotate(mouseMove: Vector3, target: Vector3): void;
    UpdateCameraMatrix(): void;
    Zoom(scale: number, scaleCenter?: Vector3): void;
    ZoomExtentsBox3(box3: Box3): void;
    /**
     * 设置相机的观察向量.
     * @param {Vector3} dir 方向向量,这个向量传入后会被更改为单位向量
     */
    LookAt(dir: Vector3): void;
    LookAtEvent(dir: Vector3): void;
    UpdateUp(): void;
    /**
     * 根据视口大小,设置相机视口范围.
     */
    Update(): void;
    ZoomEvent(): void;
    set CameraType(type: CameraType);
    get CameraType(): CameraType;
    SwitchCamera(): void;
    ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
    CopyFrom(camer: CameraUpdate): void;
}
export {};
//# sourceMappingURL=CameraUpdate.d.ts.map