From 56ffe221c0f43f59cfa157eb2e5230ad1b25b4bf Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Wed, 18 Jun 2025 21:48:28 +0200 Subject: [PATCH] SignalBox centering, debug pointerEvents toggle +After loading a scenery, the view is now centered on its first SignalBox +Added an option in Constants to forcibly enable pointerEvents on all map layers --- src/components/map/SceneryLayer.js | 5 ++++- src/components/toolbar/FileSelect.js | 5 +++++ src/helpers/constants.js | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/map/SceneryLayer.js b/src/components/map/SceneryLayer.js index b799d7b..d7a5892 100644 --- a/src/components/map/SceneryLayer.js +++ b/src/components/map/SceneryLayer.js @@ -1,6 +1,7 @@ import React, { useContext, useMemo, memo } from "react"; import MainContext from "../../contexts/MainContext"; import SettingsContext from "../../contexts/SettingsContext"; +import Constants from "../../helpers/constants"; export default function SceneryLayer(props) { const { queueItem } = props; @@ -17,6 +18,8 @@ export default function SceneryLayer(props) { }, [scenery, category, isVisible]); if (!scenery || !isVisible) return null; + + const pointerEvents = Constants.map.forcePointerEvents || queueItem.pointerEvents || false; return ( ); } diff --git a/src/components/toolbar/FileSelect.js b/src/components/toolbar/FileSelect.js index 6eb2554..98af89a 100644 --- a/src/components/toolbar/FileSelect.js +++ b/src/components/toolbar/FileSelect.js @@ -4,9 +4,11 @@ import SceneryParser from "../../model/scenery-parser"; import { showCustomDialog } from "../../services/dialogService"; import SceneryLoadedDialog from "../scenery-loaded-dialog/SceneryLoadedDialog"; import SceneryParserLog from "../../model/scenery-parser-log"; +import { useZoomPanEmitter } from "../../hooks/useZoomPubSub"; export default function FileSelect() { const {setScenery, setIsLoading} = useContext(MainContext); + const { center } = useZoomPanEmitter(); const handleFileChange = (event) => { const file = event.target.files[0]; @@ -21,6 +23,9 @@ export default function FileSelect() { try { const scenery = SceneryParser.fromText(e.target?.result); setScenery(scenery); + + const mainSignalBoxPos = scenery.signalBoxes?.[0]?.pos || null; + if (mainSignalBoxPos) center(...mainSignalBoxPos.toSVGCoords()); } catch (error) { loadingError = error; setScenery(null); diff --git a/src/helpers/constants.js b/src/helpers/constants.js index a5dfefb..85b8126 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -2,7 +2,8 @@ const Constants = { map: { zoomSensitivity: 0.002, trackSlopeScale: 10, - trackMaxSpeedScale: 1.5 + trackMaxSpeedScale: 1.5, + pointerEvents: false }, parser: { forceAutoSwitches: false,