Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import {Ticker} from '@pixi/ticker';
import {Viewport} from 'pixi-viewport';
import {DisplayContainer} from './DisplayContainer';
import {SceneManager} from './SceneManager';
export function createViewport(
worldWidth: number,
worldHeight: number,
): Viewport {
const viewport = new Viewport({
screenWidth: window.innerWidth,
screenHeight: window.innerHeight,
worldWidth: worldWidth,
worldHeight: worldHeight,
ticker: Ticker.shared,
interaction: SceneManager.app.renderer.plugins.interaction, // the interaction module is important for wheel to work properly when renderer.view is placed or scaled
});
viewport.clamp({
left: false, // whether to clamp to the left and at what value
right: false, // whether to clamp to the right and at what value
top: false, // whether to clamp to the top and at what value
bottom: false, // whether to clamp to the bottom and at what value
direction: 'all', // (all, x, or y) using clamps of [0, viewport.worldWidth / viewport.worldHeight]; replaces left / right / top / bottom if set
underflow: 'center', // where to place world if too small for screen (e.g., top - right, center, none, bottomleft)
});
viewport.clampZoom({
maxScale: 1.2,
minScale: 0.8,
});
viewport.moveCenter(worldWidth / 2, worldHeight / 2);
return viewport;
}
export function setViewportFollow(
viewport: Viewport,
target: DisplayContainer,
): void {
viewport
.wheel({
center: target.position,
})
.pinch({
center: target.position,
})
.follow(target);
}
|