17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-17 07:29:20 +02:00

Add -editor startup so the exe comes up straight in the editor

The editor was reachable only from the driver mode with F11, which meant
loading a scenario and starting the whole simulation first. With -editor
the scenario loader hands over to the editor instead of the driver, so
physics, AI and timetables never run - only the loaded world is there to
be worked on.

Without -s the scenery from eu07.ini is used, falling back to pusta.scn
when the ini names none. F11 quits instead of popping the mode, since the
editor is now the bottom of the mode stack and popping it would leave the
rest of the frame reading an empty one. Editor entry forces free-fly even
with no vehicle to leave.
This commit is contained in:
maj00r
2026-07-31 18:45:05 +02:00
committed by maj00r
parent a083269867
commit 94b01c8ca3
4 changed files with 31 additions and 4 deletions

View File

@@ -1140,14 +1140,26 @@ int eu07_application::init_settings(int Argc, char *Argv[])
Global.local_start_vehicle = ToLower(Argv[++i]);
}
}
else if (token == "-editor")
{
Global.editor_startup = true;
}
else
{
std::cout << "usage: " << std::string(Argv[0]) << " [-s sceneryfilepath]"
<< " [-v vehiclename]" << std::endl;
<< " [-v vehiclename]"
<< " [-editor]" << std::endl;
return -1;
}
}
if (Global.editor_startup && Global.SceneryFile.empty())
{
// edytor potrzebuje wczytanego świata, ale niekoniecznie czegokolwiek w nim - pusta sceneria daje
// sam region, oświetlenie i zegar, bez taboru i rozkładów
Global.SceneryFile = "pusta.scn";
}
return 0;
}

View File

@@ -1362,8 +1362,11 @@ void editor_mode::enter()
Camera.m_owner = nullptr;
Camera.LookAt = vehicle->GetPosition();
Camera.RaLook(); // single camera reposition
FreeFlyModeFlag = true;
}
// edytor pracuje wyłącznie kamerą swobodną. Przy starcie prosto do edytora nie ma pojazdu, z
// którego można by wysiąść, a flagę i tak trzeba podnieść - inaczej kamera zostaje w trybie
// kabinowym, nie mając kabiny
FreeFlyModeFlag = true;
}
Global.ControlPicking = true;
@@ -1455,7 +1458,12 @@ void editor_mode::on_key(int const Key, int const Scancode, int const Action, in
if (!Global.ctrlState && !Global.shiftState)
{
Application.pop_mode();
// przy starcie do edytora nie ma trybu, do którego można wrócić - zdjęcie ostatniego trybu
// zostawiłoby pusty stos, z którego reszta klatki nadal by czytała
if (Global.editor_startup)
Application.queue_quit(true);
else
Application.pop_mode();
}
else if (Global.ctrlState && Global.shiftState)
{

View File

@@ -60,7 +60,12 @@ bool scenarioloader_mode::update() {
// TODO: implement and use next mode cue
Application.pop_mode();
Application.push_mode( eu07_application::mode::driver );
// przy starcie do edytora symulacja w ogóle nie rusza: nie ma trybu prowadzenia pod spodem, więc nie
// liczy się fizyki, AI ani rozkładów - zostaje sam wczytany świat do obrabiania
Application.push_mode(
Global.editor_startup ?
eu07_application::mode::editor :
eu07_application::mode::driver );
return true;
}

View File

@@ -77,6 +77,8 @@ struct global_settings {
std::string szTexturesDDS{ ".dds" }; // lista tekstur od DDS
std::string szDefaultExt{ szTexturesDDS };
std::string SceneryFile;
// uruchomienie prosto do edytora, z pominięciem symulacji; edytor jest wtedy trybem podstawowym
bool editor_startup{ false };
std::string local_start_vehicle{ "EU07-424" };
int iConvertModels{ 0 }; // tworzenie plików binarnych
int iConvertIndexRange{ 1000 }; // range of duplicate vertex scan