Watch
1
0
Fork
You've already forked cinematic-view
0
No description
  • JavaScript 100%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-19 14:14:23 +02:00
docs Initial release 0.1.0 2026-10-02 16:38:10 +02:00
lang Initial release 0.1.0 2026-10-02 16:38:10 +02:00
scripts Fix broadcast completion and camera constraints (0.2.1) 2026-10-19 14:14:23 +02:00
.gitignore Initial release 0.1.0 2026-10-02 16:38:10 +02:00
LICENSE.txt Initial release 0.1.0 2026-10-02 16:38:10 +02:00
module.json Fix broadcast completion and camera constraints (0.2.1) 2026-10-19 14:14:23 +02:00
README.md Fix broadcast completion and camera constraints (0.2.1) 2026-10-19 14:14:23 +02:00

Cinematic View

The camera glides along with moving tokens, so you never lose the action off-screen. Also comes with macros for camera moves, for yourself or for everyone.

A fork of Aeris Cinematic View by Robin Chand, rewritten in plain JavaScript.

The camera following moving tokens on a gridless map

Click the preview for the full-quality video.

Features

  • When a token moves near your controlled tokens, the camera follows the group at the current zoom and settles once they stop.
  • Any other camera move (keyboard, right-drag, zoom, ping, combat tracker) takes over immediately.
  • Works together with Smooth Camera.

Settings

All settings are per client.

Setting Description Default
Camera Pan Scope (In Combat) Which tokens the camera follows: All, Controlled or None All
Camera Pan Scope (Out of Combat) Same, outside of combat All
Camera Pan Speed How quickly the camera catches up (0.1–10) 2
Viewport Detection Fraction How much of the screen around your tokens counts as nearby (0.1–1) 0.6
Ignore Other Players' Movement Only follow your own moves Off

Macro API

Rectangles are [x, y, width, height] in scene coordinates. Pan calls return a Promise that resolves when the local glide arrives, or with null if it was interrupted. The everyone call also starts independent glides on other clients. stop() is synchronous.

cinematicView.panToFitPositions(rects);                          // fit rectangles on screen
cinematicView.panToFitPositions(rects, { targetScale: 1 });      // ...at a fixed zoom
cinematicView.panToFitPositionsForEveryone(rects);               // same, for everyone
cinematicView.panToTargetLerpViaTicker({ x: 1000, y: 800, scale: 1.2 });
cinematicView.panToTargetScaleViaTicker({ x: 1200, y: 900 }, 2); // zoom around a point
cinematicView.stop();

Requirements

  • Foundry VTT v13+ (verified on v14)
  • socketlib

Installation

In Foundry's Add-on Modules tab, choose Install Module and paste this manifest URL:

https://someto.de/flaig/cinematic-view/releases/download/latest/module.json

This is a personal project and stays at 0.x: expect breaking changes between versions.

AI disclosure

The changes in this fork were made by AI with the help of human ideas.

License

MIT