17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-28 14:37:29 +01:00

fix(editor): the gizmo keeps the diverging path of a switch on the surface of its main path

The diverging path p3-p4 takes its heights, grades at the ends and cant from the main path p1-p2 (the cone of
its cant) after every gizmo change: grade and cant rings, moving an end and editing a control vector. The tracks
joined to it follow its ends and grades. The grade ring measures along the main path and the gizmo stands in its
middle; the start vector of the diverging path slides along the main one and turns with it.
This commit is contained in:
maj00r
2026-10-11 14:04:05 +02:00
parent 34941822ff
commit c722e4e419
5 changed files with 203 additions and 21 deletions

View File

@@ -117,6 +117,8 @@ class editor_track
// moves the joined ends to where the ends of the track are now, turning them as the track turned there
static void follow(TTrack const &Track, std::vector<joint> const &Joints);
static void follow_grade(TTrack const &Track, std::vector<joint> const &Joints);
static void conform_switch(TTrack &Track);
static double switch_station(TTrack const &Track, glm::dvec3 const &Position);
static std::vector<int> hold_controls(TTrack &Track);
static void settle_controls(TTrack &Track, std::vector<int> const &Paths);
static std::vector<std::pair<TTrack *, point_ref>> partners(TTrack &Track, point_ref const &End);