diff options
| author | LLLL Colonq <llll@colonq> | 2026-07-31 05:00:49 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2026-07-31 05:00:49 -0400 |
| commit | ea5332e4a1a035e888709bee278fcafb182f7922 (patch) | |
| tree | 7e1520391e7f04fa3df425fd9ed02008f748cdfd /2026/games_submissions/crm148/view.js | |
| parent | 3ec03ba57474aa4320cb7901980b55706adbc111 (diff) | |
Update
Diffstat (limited to '2026/games_submissions/crm148/view.js')
| -rw-r--r-- | 2026/games_submissions/crm148/view.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/2026/games_submissions/crm148/view.js b/2026/games_submissions/crm148/view.js new file mode 100644 index 0000000..1d2fb5c --- /dev/null +++ b/2026/games_submissions/crm148/view.js @@ -0,0 +1,32 @@ + +import Vec2 from './vec2.js'; + +class View { + center = Vec2.zero(); + zoom = 1.0; + + // Convert game coordinate to canvas coordinate + project(vec2) { + return new Vec2( + (gameCanvas.width / 2) + ((vec2.x - this.center.x) * this.zoom), + (gameCanvas.height / 2) - ((vec2.y - this.center.y) * this.zoom)); + } + // Covert canvas coordinate to game coordinate + unproject(vec2) { + return new Vec2( + this.center.x + (vec2.x - (gameCanvas.width / 2)) / this.zoom, + this.center.y - (vec2.y - (gameCanvas.height/2)) / this.zoom); + } +} + +function globalView() { + return gView; +} + +var gView = new View(); +window.view = gView; + +export { + View, + globalView, +} |
