mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-02 22:06:21 +01:00
feat(editor): the track laid on the terrain gets its grade line from the profile solver
In place of a line bent every ten metres to keep within 0.1 m of every bump, the grades and the vertical curves are fitted to the ground the way the profile fits them. Where the formation is made in the terrain model the line keeps to the radius of the norms and cuts and fills; over the ground left as it is it bends as sharply as it has to. The joints keep the height and the grade of the track joined, no grade is capped and no piece is under 5 m.
This commit is contained in:
@@ -640,6 +640,20 @@ bool editor_mode::nmt_ahead(double const X, double const Z, double &Height) cons
|
||||
return true;
|
||||
}
|
||||
|
||||
bool editor_mode::nmt_formed(std::vector<glm::dvec2> const &Points) const
|
||||
{
|
||||
auto const &state{m_nmt_state};
|
||||
if (false == state.shape || false == m_nmt.placed() || false == m_streamer.active())
|
||||
return false;
|
||||
bool foreign{false};
|
||||
if (nmt_terrain_offset(Points, foreign).has_value())
|
||||
return true;
|
||||
if (foreign)
|
||||
return false;
|
||||
double height;
|
||||
return std::all_of(Points.begin(), Points.end(), [&](glm::dvec2 const &Point) { return false == m_streamer.height_at(Point.x, Point.y, height) && nmt_ahead(Point.x, Point.y, height); });
|
||||
}
|
||||
|
||||
editor_mode::nmt_chunk editor_mode::add_chunk_from_nmt(heightmap::chunk_key const &Key, std::optional<double> const Offset)
|
||||
{
|
||||
auto const low{heightmap::chunk_corner(Key)};
|
||||
|
||||
Reference in New Issue
Block a user