17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-25 00:57:36 +02:00

feat(editor): ballast and rails blending lengths apart, as sliders

This commit is contained in:
2026-10-21 23:51:43 +02:00
parent 925f5910bb
commit 173fe2ec3c
8 changed files with 138 additions and 43 deletions

View File

@@ -3035,9 +3035,13 @@ void write_ending(std::ostream &Text, TTrack const &Style)
Text << "sleepermodel " << Style.m_sleeper_frequency << ' ' << Style.m_sleeper_model_name << ' ' << (Style.m_sleeper_skin_name.empty() ? std::string{"none"} : Style.m_sleeper_skin_name) << ' ' << Style.m_sleeper_offset.x << ' ' << Style.m_sleeper_offset.y << ' ' << Style.m_sleeper_offset.z << ' ' << Style.m_sleeper_ballast_z << ' ';
if (false == Style.m_timber_model_name.empty())
Text << "timbermodel " << Style.m_timber_model_name << ' ' << (Style.m_timber_skin_name.empty() ? std::string{"none"} : Style.m_timber_skin_name) << ' ';
for (std::size_t end = 0; end < Style.m_blend.size(); ++end)
if (Style.m_blend[end] != track_blend::default_length)
Text << "blend " << end + 1 << ' ' << Style.m_blend[end] << ' ';
for (auto const kind : {track_blend::kind::rails, track_blend::kind::ballast})
{
auto const &lengths{Style.m_blend[static_cast<int>(kind)]};
for (std::size_t end = 0; end < lengths.size(); ++end)
if (lengths[end] != track_blend::default_length)
Text << (kind == track_blend::kind::rails ? "blendrails " : "blendballast ") << end + 1 << ' ' << lengths[end] << ' ';
}
Text << "endtrack\n";
}

View File

@@ -71,7 +71,8 @@ class editor_track
float sleeper_ballast{0.f};
std::string timber_model;
std::string timber_skin;
std::array<float, 3> blend{track_blend::default_length, track_blend::default_length, track_blend::default_length};
std::array<std::array<float, 3>, 2> blend{{{track_blend::default_length, track_blend::default_length, track_blend::default_length},
{track_blend::default_length, track_blend::default_length, track_blend::default_length}}};
std::pair<std::string, int> rail_profile;
std::array<std::vector<std::pair<std::string, basic_event *>>, 6> events;
std::string name;