export class Camera2D extends Node { zoom: number; /** * @type {Viewport} */ viewport: Viewport; near: number; far: number; worldZoom: number; projectionDirty: boolean; frustum: { left: number; right: number; top: number; bottom: number; near: number; far: number; }; bounds: { left: number; right: number; top: number; bottom: number; }; viewWidth: number; viewHeight: number; cullingEnabled: boolean; _viewMatrix: any; _projectionMatrix: any; _viewProjectionMatrix: any; setBounds(bounds: any): void; /** * viewport * @param {*} width * @param {*} height */ setViewSize(width: any, height: any): void; /** * visible space in world */ _updateFrustum(): void; worldToScreen(worldX: any, worldY: any, applyViewport?: boolean): { x: any; y: any; }; screenToWorld(screenX: any, screenY: any): { x: number; y: number; }; getVisibility(x: any, y: any, width?: number, height?: number): 1 | 0 | 2; isVisible(x: any, y: any, margin?: number): boolean; /** * Check if an axis-aligned bounding box (AABB) is visible in the camera view * @param {number} worldX - Center X of the AABB in world space * @param {number} worldY - Center Y of the AABB in world space * @param {number} width - Width of the AABB * @param {number} height - Height of the AABB * @returns {boolean} True if the AABB is at least partially visible */ isAABBVisible(worldX: number, worldY: number, width: number, height: number): boolean; getVisibleBounds(): { left: number; right: number; top: number; bottom: number; width: number; height: number; }; moveLocal(dx: any, dy: any): void; moveWorld(dx: any, dy: any): void; setPosition(x: any, y: any): void; /** * Zoom with optional pivot point (world space) * Pivot allows zooming toward a specific point (like mouse position) */ zoomTo(factor: any, pivotX?: any, pivotY?: any): void; applyShake(intensity: any, decay?: number): number; } export class Viewport { constructor(x: any, y: any, width: any, height: any); x: any; y: any; width: any; height: any; scissorEnabled: boolean; contains(screenX: any, screenY: any): boolean; setScissor(enabled: any): void; shouldClip(canvasX: any, canvasY: any, margin?: number): boolean; } import { Node } from "./core.js";