From b76752e40d46f250f9ca0de9de7fdc93b8c768ad Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Sun, 1 Jun 2025 01:54:26 +0200 Subject: [PATCH] Added Vector3 class, code cleanup +Added Vector3 class and replaced all position and angle values with it to clean up the code *Minor bugfixes and code cleanup --- .../object-renderers/IsolationIdRenderer.js | 11 +-- .../map/object-renderers/RouteRenderer.js | 10 +- .../map/object-renderers/SignalRenderer.js | 8 +- .../object-renderers/SwitchNameRenderer.js | 6 +- .../object-renderers/TrackObjectRenderer.js | 8 +- .../map/object-renderers/TrackRenderer.js | 31 +++--- src/model/bezier-track.js | 50 ++++------ src/model/point-track.js | 26 ++--- src/model/route.js | 16 +--- src/model/scenery-object.js | 18 ++-- src/model/signal.js | 13 +-- src/model/standard-track.js | 48 ++++------ src/model/switch.js | 22 ++--- src/model/track-object.js | 14 +-- src/model/track.js | 24 ++--- src/model/vector3.js | 95 +++++++++++++++++++ 16 files changed, 206 insertions(+), 194 deletions(-) create mode 100644 src/model/vector3.js diff --git a/src/components/map/object-renderers/IsolationIdRenderer.js b/src/components/map/object-renderers/IsolationIdRenderer.js index 4e31799..0a9b657 100644 --- a/src/components/map/object-renderers/IsolationIdRenderer.js +++ b/src/components/map/object-renderers/IsolationIdRenderer.js @@ -1,18 +1,13 @@ export default function IsolationIdRenderer(props) { const { object } = props; - - const x1 = object.points?.x1; - const z1 = -object.points?.z1; - const x2 = object.points?.x2 ?? x1; - const z2 = -object.points?.z2 ?? z1; - const x = (x1 + x2) / 2; - const z = (z1 + z2) / 2; + const pos = object.points.start.lerp(object.points.end, 0.5); + const [x, y] = pos.toSVGCoords(); const text = object.id_isolation ?? ''; return ( { - let rot = object.ry; + let rot = object.rot.y; if (rot < 0) { rot += 360 * Math.ceil(Math.abs(rot) / 360); } else if (rot >= 360) { @@ -16,7 +14,7 @@ export default function RouteRenderer(props) { } return rot > 180; - }, [object.ry]); + }, [object.rot.y]); const upsideDownRot = upsideDown ? 90 : -90; const offY = object.track_count === 2 ? -22 : -20; @@ -24,7 +22,7 @@ export default function RouteRenderer(props) { const arrowOffset = - object.track_offset - 37.8; return ( - + - + + 0) { - d = `M${x2},${z2} A${ra} ${ra} 0 0 1 ${x1},${z1}`; + d = `M${x2},${y2} A${ra} ${ra} 0 0 1 ${x1},${y1}`; } else { - d = `M${x1},${z1} L${x2},${z2}`; + d = `M${x1},${y1} L${x2},${y2}`; } const color = Constants.map.useTrackColors ? ( - object.r === 0 ? "rgb(255, 255, 255)" : "rgb(255, 0, 255)" - ): undefined; + object.r === 0 ? "rgb(0, 255, 255)" : "rgb(0, 0, 255)" + ) : undefined; return (