mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-17 06:19:19 +02:00
feat(editor): track editor driven by what the cursor is over: the outline and a label show what a click or a drag does, snapping to free ends on the screen, handles and ends dragged directly, no rotation gizmo; laying from a free end the same in every mode, straight with Shift, the curve of a switch going on past its diverging end; height 0 where there's no terrain; placed switch leaves the switch mode, double slips listed apart, a drive of the switch placed with it by the //$e switch description of its template; compound curves of any number of radii; dragged end of a straight fits the curve beside it; name of a path, followed by the memory cells and the includes taking it; turntable placed from a template described as one, tracks led out of it and the tracks around fitted to it, its positions written to the include; infrastructure bound to the path whose events read its memory cell; terrain made where the route has none and shaped to the formation under the ballast; models along the track over the selected path and on along the joined ones while dragged, rarely used settings folded; vehicles and trainsets placed on any path, switches included, facing the way the arrow shows; joined paths spread into the selection; New scenery in the File menu starts the editor again with the wizard; ortho zoom towards the cursor; scripted self tests; Polish translation
This commit is contained in:
@@ -246,6 +246,17 @@ bool parse(template_text const &Text, include_info &Info, std::string &Error)
|
||||
Info.name = document["name"].as<std::string>("");
|
||||
Info.category = document["category"].as<std::string>("");
|
||||
Info.description = document["description"].as<std::string>("");
|
||||
if (auto const drive{document["switch"]}; drive.IsDefined() && drive.IsMap())
|
||||
{
|
||||
Info.switch_hand = drive["hand"].as<std::string>("");
|
||||
Info.switch_drive = drive["drive"].as<std::string>("");
|
||||
}
|
||||
if (auto const table{document["turntable"]}; table.IsDefined() && table.IsMap())
|
||||
{
|
||||
Info.turntable_length = table["length"].as<double>(0.0);
|
||||
Info.turntable_angles = table["angles"].as<int>(0);
|
||||
Info.turntable_positions = table["positions"].as<int>(0);
|
||||
}
|
||||
if (auto const parameters{document["params"]}; parameters.IsDefined() && parameters.IsSequence())
|
||||
{
|
||||
for (auto const &entry : parameters)
|
||||
@@ -633,7 +644,7 @@ std::string compose_directive(std::string const &File, std::vector<std::string>
|
||||
return text + " end";
|
||||
}
|
||||
|
||||
std::string directive(std::string const &File, include_info const &Info, int const Parameters, glm::dvec3 const &Location, std::optional<float> Yaw)
|
||||
std::string directive(std::string const &File, include_info const &Info, int const Parameters, glm::dvec3 const &Location, std::optional<float> Yaw, std::string const &Track)
|
||||
{
|
||||
std::vector<std::string> values;
|
||||
for (auto id = 1; id <= Parameters; ++id)
|
||||
@@ -661,6 +672,10 @@ std::string directive(std::string const &File, include_info const &Info, int con
|
||||
{
|
||||
value = "0";
|
||||
}
|
||||
else if (role == "track" && false == Track.empty())
|
||||
{
|
||||
value = Track;
|
||||
}
|
||||
else if (role == "name")
|
||||
{
|
||||
// names have to be unique in the scenery. the default value, or the name of the template, makes them recognizable
|
||||
|
||||
Reference in New Issue
Block a user