| | |
| | | |
| | | }) |
| | | return options; |
| | | } |
| | | |
| | | /** |
| | | * // |
| | | let sprite = mapContainer.children[0]; |
| | | let bounds = sprite.getBounds(); |
| | | console.log(bounds, sprite.getLocalBounds()); |
| | | console.log(sprite.position); |
| | | |
| | | console.log('-'); |
| | | |
| | | console.log(mapContainer.scale, mapContainer.position); |
| | | |
| | | console.log('==========='); |
| | | |
| | | |
| | | return; |
| | | */ |
| | | |
| | | export const adaptScreen = () => { |
| | | if (!mapContainer || !app) { |
| | | return; |
| | | } |
| | | if (mapContainer.children.length === 0) { |
| | | return; |
| | | } |
| | | mapContainer.scale.set(1); |
| | | mapContainer.position.set(0, 0); |
| | | |
| | | let minX, maxX, minY, maxY; |
| | | for (let sprite of mapContainer.children) { |
| | | if (sprite?.data?.uuid) { |
| | | let bounds = sprite.getBounds(); |
| | | minX = minX !== undefined ? Math.min(minX, bounds.x) : bounds.x; |
| | | minY = minY !== undefined ? Math.min(minY, bounds.y) : bounds.y; |
| | | maxX = maxX !== undefined ? Math.max(maxX, bounds.x + bounds.width) : bounds.x + bounds.width; |
| | | maxY = maxY !== undefined ? Math.max(maxY, bounds.y + bounds.height) : bounds.y + bounds.height; |
| | | } |
| | | } |
| | | |
| | | let newScale = Math.min( |
| | | app.renderer.width / (maxX - minX) * 0.8, |
| | | app.renderer.height / (maxY - minY) * 0.8 |
| | | ); |
| | | |
| | | let centerPoint = { |
| | | x: (minX + maxX) / 2 * mapContainer.scale.x, |
| | | y: (minY + maxY) / 2 * mapContainer.scale.y |
| | | }; |
| | | |
| | | new TWEEDLE.Tween(mapContainer.scale).easing(TWEEDLE.Easing.Quadratic.Out) |
| | | .to({ |
| | | x: newScale, |
| | | y: newScale |
| | | }, 200).start(); |
| | | |
| | | new TWEEDLE.Tween(mapContainer.position).easing(TWEEDLE.Easing.Quadratic.Out) |
| | | .to({ |
| | | x: app.renderer.width / 2 - centerPoint.x * newScale, |
| | | y: app.renderer.height / 2 - centerPoint.y * newScale |
| | | }, 200).start(); |
| | | } |