From 38161572b42034b6dcdf1b5a0cf2b06857cfafdc Mon Sep 17 00:00:00 2001 From: maj00r Date: Sat, 3 Oct 2026 01:58:53 +0200 Subject: [PATCH] fix(editor): switches follow cant on curves --- application/editormodetrack.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/application/editormodetrack.cpp b/application/editormodetrack.cpp index faa11777..e8adfae1 100644 --- a/application/editormodetrack.cpp +++ b/application/editormodetrack.cpp @@ -3670,7 +3670,9 @@ std::vector editor_mode::curved_switch_paths(editor_track::switch_ glm::dvec2 const across{glm::dvec2{-along.y, along.x} * static_cast(Side)}; Tangent = glm::normalize(along * Localtangent.y + across * Localtangent.x); auto const planar{glm::dvec2{sample.position.x, sample.position.z} + across * Local.x}; - return glm::dvec3{planar.x, sample.position.y + Local.y, planar.y}; + auto const cant{glm::radians(static_cast(sample.roll) * Direction)}; + auto const cone{-Local.x * Side * std::tan(cant)}; + return glm::dvec3{planar.x, sample.position.y + Local.y + cone, planar.y}; }; auto const hermite = [](glm::dvec3 const &Start, glm::dvec2 const &Startdirection, glm::dvec3 const &End, glm::dvec2 const &Enddirection) { auto const handle{glm::distance(glm::dvec2{Start.x, Start.z}, glm::dvec2{End.x, End.z}) / 3.0};