Docs 3. Camera

Overview

This document explains how to use the Camera system in your engine. Cameras control viewport rendering, can follow targets, and support zoom functionality.

The Camera class manages viewport rendering and automatically handles camera-to-world transformation. Cameras render before world objects and support smooth target following and zooming.

Camera Properties

Name - Vector2

Position - Vector2

Size - Vector2

ViewportSize - Vector2

Zoom - float

IsFollowingTarget - bool

FollowSpeed - float

TargetObject - GameObject?

Viewport - ViewportComponent

Layer - int

Creating a Camera

Basic camera

var camera = new Camera("MainCamera", 
    new Vector2(0, 0),  // Position
    new Vector2(800, 600)  // Size
);

Camera with Auto-Follow

var camera = new Camera("PlayerCamera", new Vector2(0, 0), new Vector2(800, 600))
    .Follow(playerGameObject);

Camera with Custom Zoom

var camera = new Camera("MainCamera", new Vector2(0, 0), new Vector2(800, 600))
    .SetZoom(2.0f);  // 200% zoom

Usage Examples

Main Camera Following Player

var player = new GameObject("Player", new Vector2(400, 300), new Vector2(50, 50));
var camera = new Camera("MainCamera", new Vector2(0, 0), new Vector2(800, 600))
    .Follow(player)
    .SetZoom(1.0f);

workspace.Add(camera);
workspace.Add(player);

Multiple Cameras

// Main camera (follows player)
var mainCamera = new Camera("MainCamera", new Vector2(0, 0), new Vector2(800, 600))
    .Follow(player);

// Minimap camera (static, no following)
var minimapCamera = new Camera("Minimap", new Vector2(850, 20), new Vector2(200, 100))
    .SetZoom(0.3f);

// Camera follows player but at reduced zoom
var followCamera = new Camera("Follow", new Vector2(0, 0), new Vector2(800, 600))
    .Follow(player)
    .SetZoom(0.7f)
    .SetFollowSpeed(12.0f);

workspace.Add(mainCamera);
workspace.Add(minimapCamera);
workspace.Add(followCamera);

Camera with Custom Viewport Component

// If you have custom viewport components
var customViewport = new MyCustomViewport();
camera.Viewport = customViewport;

// Note: This requires implementing ViewportComponent interface

Rendering Order

• World Objects (Layer = 0-100+)

• UI Elements (Layer = 2+)

• Main Camera Render (Layer = 0) - Renders viewport

The camera renders last after UI and world objects, but its viewport component appears in front.

Camera Lifecycle

• Created - Camera instantiated with properties

• Added to Workspace - Automatically becomes MainCamera if first camera

• Updated - Update(deltaTime) called, applies follow target smoothing

• Rendered - Render() called, renders viewport component

• Removed - Camera removed from workspace, MainCamera cleared if applicable

© 2026 CoreScript Engine. Documentation licensed under MIT.