/** * Camera2D - transforms world space to screen space * * Why extend Node: * - Inherits transform system (position, rotation) * - Can be child of other nodes (camera attached to vehicle) * - Participates in scene graph updates * * Common use cases: * - Follow player smoothly * - Screen shake effects * - Zoom in/out * - Split-screen (multiple cameras, multiple viewports) */ export class Camera2D extends Node { zoom: number; viewport: any; target: any; followSmoothing: number; deadzone: { x: number; y: number; }; limits: { minX: any; minY: any; maxX: any; maxY: any; }; limitSmoothing: number; shakeAmount: number; shakeDuration: number; shakeDecay: number; shakeOffset: { x: number; y: number; }; screenWidth: number; screenHeight: number; setTarget(target: any, options?: {}): void; setLimits(minX: any, minY: any, maxX: any, maxY: any): void; shake(amount: any, duration?: number): void; worldToScreen(worldX: any, worldY: any): { x: number; y: number; }; screenToWorld(screenX: any, screenY: any): { x: any; y: any; }; isVisible(worldX: any, worldY: any, margin?: number): boolean; isAABBVisible(worldX: any, worldY: any, width: any, height: any): boolean; getVisibleBounds(): { minX: any; minY: any; maxX: any; maxY: any; width: number; height: number; }; } /** * Viewport - defines a rectangular region of the screen * * why viewports exist: * - Split-screen multiplayer (2-4 cameras, each with own viewport) * - Picture-in-picture (minimap) * - UI overlays (render game to viewport, UI to full screen) * * common use case: 2-player split-screen * Player 1 viewport: (0, 0, 400, 600) * Player 2 viewport: (400, 0, 400, 600) */ export class Viewport { /** * create viewport from canvas (full screen) */ static fromCanvas(canvas: any): Viewport; constructor(x: any, y: any, width: any, height: any); x: any; y: any; width: any; height: any; /** * Check if screen point is inside viewport */ contains(screenX: any, screenY: any): boolean; /** * get aspect ratio (useful for maintaining proportions) */ getAspectRatio(): number; } /** * CameraController - common camera behaviors * * - Camera2D is low-level (transform math) * - CameraController is high-level (gameplay behaviors) * - Swap controllers for different game types */ export class CameraController extends Node { constructor(name: any, camera: any); camera: any; } /** * FollowCameraController - smooth following with lookahead * * Features: * - Smooth following * - Lookahead (camera shows more space ahead of player) * - Speed-based zoom out (see more when moving fast) */ export class FollowCameraController extends CameraController { constructor(camera: any, target: any, options?: {}); target: any; smoothing: any; lookahead: any; lookaheadSmoothing: any; currentLookahead: { x: number; y: number; }; zoomSpeed: any; minZoom: any; maxZoom: any; } /** * PlatformerCameraController - platformer-specific camera * * Features: * - Vertical lookahead (look down when falling, up when jumping) * - Horizontal smoothing (don't jitter left/right) * - Jump anticipation (camera rises slightly before player jumps) */ export class PlatformerCameraController extends CameraController { constructor(camera: any, target: any, options?: {}); target: any; horizontalSmoothing: any; verticalSmoothing: any; verticalLookahead: any; currentVerticalOffset: number; } import { Node } from './core.js';