Skip to content

Commit be55e9c

Browse files
committed
Update camera controllers and editor files
1 parent 906fbe8 commit be55e9c

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

src/controllers.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,18 @@ class PointerController {
279279
if (typeof e.wheelDeltaX === 'number' && e.wheelDeltaX !== 0) {
280280
return e.wheelDeltaX % 120 === 0;
281281
}
282-
// Last-resort fallback for browsers without wheelDelta*.
282+
// Fallback for browsers where wheelDelta* is unavailable or 0.
283+
// delta{X,Y} values: physical wheels produce near-integer values
284+
// (e.g. 100, 125) even with smoothing applied. Trackpads produce
285+
// continuously varying fractional values on both axes.
283286
const { deltaX, deltaY } = event;
284287
if (deltaX !== 0 && deltaY !== 0) {
285288
return false;
286289
}
287-
return Number.isInteger(deltaX) && Number.isInteger(deltaY);
290+
// Check if delta values are close to integers (within 1% of 1.0).
291+
// Smooth scrolling / DPI scaling can add slight fractional offsets.
292+
const isNearInteger = (v: number) => Math.abs(v % 1) < 0.01 || Math.abs(v % 1) > 0.99;
293+
return (deltaX === 0 || isNearInteger(deltaX)) && (deltaY === 0 || isNearInteger(deltaY));
288294
};
289295

290296
const wheel = (event: WheelEvent) => {

0 commit comments

Comments
 (0)