diff --git a/package-lock.json b/package-lock.json index 114691d..54dbce7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@starweb-libs/engine", - "version": "0.0.6", + "version": "0.0.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@starweb-libs/engine", - "version": "0.0.6", + "version": "0.0.7", "license": "MIT", "devDependencies": { "tsdown": "^0.22.0", diff --git a/package.json b/package.json index 1901fe0..8a75f5f 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,24 @@ "name": "@starweb-libs/engine", "description": "A lightweight 2D game engine for the browser", "author": "Mason L'Etoile", - "version": "0.0.6", + "version": "0.0.7", "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/starweb-libs/engine.git" }, "homepage": "https://github.com/starweb-libs/engine#readme", - "bugs": { "url": "https://github.com/starweb-libs/engine/issues" }, - "keywords": ["game-engine", "canvas", "2d", "typescript", "browser", "starweb"], + "bugs": { + "url": "https://github.com/starweb-libs/engine/issues" + }, + "keywords": [ + "game-engine", + "canvas", + "2d", + "typescript", + "browser", + "starweb" + ], "type": "module", "devDependencies": { "typescript": "~6.0.2", @@ -20,7 +29,9 @@ "build": "tsdown", "prepare": "npm run build" }, - "files": ["dist"], + "files": [ + "dist" + ], "exports": { "./assets.js": { "types": "./dist/assets.d.mts", diff --git a/src/input/pointer.ts b/src/input/pointer.ts index d9222c4..3658a2f 100644 --- a/src/input/pointer.ts +++ b/src/input/pointer.ts @@ -90,6 +90,27 @@ export function pointerX(): number { return posX; } /** Returns the pointer's current Y position in canvas pixel coordinates. */ export function pointerY(): number { return posY; } +export interface PointerState { + /** Canvas-relative X coordinate. */ + x: number; + /** Canvas-relative Y coordinate. */ + y: number; + /** Whether the primary button was clicked during the current frame. */ + clicked: boolean; + /** Whether the primary button is currently held. */ + down: boolean; +} + +/** Returns the pointer state and canvas-relative position. */ +export function getPointer(): PointerState { + return { + x: pointerX(), + y: pointerY(), + clicked: wasPointerClicked(), + down: isPointerDown(), + }; +} + /** Advances the per-frame click and release state. Called once per frame by {@link startLoop}. */ export function clearFramePointer(): void { clickedFrame = [...clicked];