Adjust zoom settings and sync slider with mouse wheel.
- Changed default zoom from 2.5 to 6.0 (further away). - Reduced max zoom distance from 30 to 15. - Fixed slider not updating when using mouse wheel zoom.
This commit is contained in:
@@ -9,7 +9,10 @@ export const TILES = {
|
|||||||
id: 'corridor_straight',
|
id: 'corridor_straight',
|
||||||
name: 'Corridor',
|
name: 'Corridor',
|
||||||
type: TILE_TYPES.CORRIDOR,
|
type: TILE_TYPES.CORRIDOR,
|
||||||
textures: ['/assets/images/dungeon1/tiles/corridor1.png'],
|
textures: ['/assets/images/dungeon1/tiles/corridor1.png',
|
||||||
|
'/assets/images/dungeon1/tiles/corridor2.png',
|
||||||
|
'/assets/images/dungeon1/tiles/corridor3.png',
|
||||||
|
],
|
||||||
variants: {
|
variants: {
|
||||||
[DIRECTIONS.NORTH]: {
|
[DIRECTIONS.NORTH]: {
|
||||||
width: 2, height: 6,
|
width: 2, height: 6,
|
||||||
|
|||||||
@@ -7,9 +7,11 @@ export class CameraManager {
|
|||||||
|
|
||||||
// Configuration
|
// Configuration
|
||||||
// Configuration
|
// Configuration
|
||||||
this.zoomLevel = 2.5; // Orthographic zoom factor (Lower = Closer)
|
this.zoomLevel = 6.0; // Started further back as requested
|
||||||
this.aspect = window.innerWidth / window.innerHeight;
|
this.aspect = window.innerWidth / window.innerHeight;
|
||||||
|
|
||||||
|
this.onZoomChange = null;
|
||||||
|
|
||||||
// Isometric Setup: Orthographic Camera
|
// Isometric Setup: Orthographic Camera
|
||||||
this.camera = new THREE.OrthographicCamera(
|
this.camera = new THREE.OrthographicCamera(
|
||||||
-this.zoomLevel * this.aspect,
|
-this.zoomLevel * this.aspect,
|
||||||
@@ -69,9 +71,10 @@ export class CameraManager {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
// Adjust Zoom Level property
|
// Adjust Zoom Level property
|
||||||
if (e.deltaY < 0) this.zoomLevel = Math.max(3, this.zoomLevel - 1);
|
if (e.deltaY < 0) this.zoomLevel = Math.max(3, this.zoomLevel - 1);
|
||||||
else this.zoomLevel = Math.min(30, this.zoomLevel + 1);
|
else this.zoomLevel = Math.min(15, this.zoomLevel + 1);
|
||||||
|
|
||||||
this.updateProjection();
|
this.updateProjection();
|
||||||
|
if (this.onZoomChange) this.onZoomChange(this.zoomLevel);
|
||||||
}, { passive: false });
|
}, { passive: false });
|
||||||
|
|
||||||
// Pan Listeners (Middle Click)
|
// Pan Listeners (Middle Click)
|
||||||
|
|||||||
@@ -65,20 +65,26 @@ export class UIManager {
|
|||||||
|
|
||||||
const zoomSlider = document.createElement('input');
|
const zoomSlider = document.createElement('input');
|
||||||
zoomSlider.type = 'range';
|
zoomSlider.type = 'range';
|
||||||
zoomSlider.min = '2.5'; // Closest zoom
|
zoomSlider.min = '3';
|
||||||
zoomSlider.max = '30'; // Farthest zoom
|
zoomSlider.max = '15';
|
||||||
zoomSlider.value = '2.5'; // Start at closest
|
zoomSlider.value = '6';
|
||||||
zoomSlider.step = '0.5';
|
zoomSlider.step = '0.5';
|
||||||
zoomSlider.style.width = '100px';
|
zoomSlider.style.width = '100px';
|
||||||
zoomSlider.style.transform = 'rotate(-90deg)';
|
zoomSlider.style.transform = 'rotate(-90deg)';
|
||||||
zoomSlider.style.transformOrigin = 'center';
|
zoomSlider.style.transformOrigin = 'center';
|
||||||
zoomSlider.style.cursor = 'pointer';
|
zoomSlider.style.cursor = 'pointer';
|
||||||
zoomSlider.style.marginTop = '40px'; // Push slider down to make room for label
|
zoomSlider.style.marginTop = '40px';
|
||||||
|
|
||||||
// Set initial zoom to closest
|
this.zoomSlider = zoomSlider;
|
||||||
this.cameraManager.zoomLevel = 2.5;
|
|
||||||
|
// Set initial zoom
|
||||||
|
this.cameraManager.zoomLevel = 6;
|
||||||
this.cameraManager.updateProjection();
|
this.cameraManager.updateProjection();
|
||||||
|
|
||||||
|
this.cameraManager.onZoomChange = (val) => {
|
||||||
|
if (this.zoomSlider) this.zoomSlider.value = val;
|
||||||
|
};
|
||||||
|
|
||||||
zoomSlider.oninput = (e) => {
|
zoomSlider.oninput = (e) => {
|
||||||
this.cameraManager.zoomLevel = parseFloat(e.target.value);
|
this.cameraManager.zoomLevel = parseFloat(e.target.value);
|
||||||
this.cameraManager.updateProjection();
|
this.cameraManager.updateProjection();
|
||||||
|
|||||||
Reference in New Issue
Block a user