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

feat(editor): laying with no ground under the cursor takes the height of the ground around

- with nothing under the cursor the height is the mean of the ground found on the nearest ring around the point, 10 to 400 m out, plus the depth of the ballast, instead of 0; the ray of the cursor meets that height
- the ground under the cursor is looked for up to the height of the camera, not only 50 m over the last point
This commit is contained in:
maj00r
2026-10-11 12:32:03 +02:00
parent 0f3004a64c
commit 2beae15390
2 changed files with 44 additions and 5 deletions

View File

@@ -1146,6 +1146,8 @@ class editor_mode : public application_mode, private editor_track::observer
glm::dvec3 cursor_level(double const Height) const;
glm::dvec3 cursor_terrain(double const Height);
double bed_height(glm::dvec3 const &Point, glm::dvec2 const &Direction, TTrack const *Style) const;
double nearby_ground(glm::dvec3 const &Point) const;
static std::pair<double, double> trackbed(TTrack const *Style);
std::vector<double> bed_heights(std::vector<glm::dvec3> const &Points, std::vector<glm::dvec2> const &Directions, TTrack const *Style) const;
void follow_ground(std::vector<segment_data> &Pieces, double const Height0, double const Grade0, double const Height1, double const Grade1, TTrack const *Style) const;
glm::dvec3 lay_bed(glm::dvec3 const &Point);