16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-17 23:39:18 +02:00

Merge pull request #26 from MaSzyna-EU07/sbt-include

Sbt include
This commit is contained in:
2025-10-20 22:58:16 +02:00
committed by GitHub
3 changed files with 33 additions and 3 deletions

View File

@@ -37,6 +37,7 @@ struct scratch_data {
struct binary_data {
bool terrain{ false };
bool terrain_included{false};
} binary;
struct location_data {
@@ -59,6 +60,8 @@ struct scratch_data {
} trainset;
std::string name;
std::string terrain_name;
bool initialized { false };
bool time_initialized { false };
};

View File

@@ -58,12 +58,12 @@ state_serializer::deserialize_begin( std::string const &Scenariofile ) {
if (false != state->scratchpad.binary.terrain)
{
Global.file_binary_terrain_state = true;
WriteLog("SBT present");
WriteLog("Default SBT present");
}
else
{
Global.file_binary_terrain_state = false;
WriteLog("SBT absent");
WriteLog("Default SBT absent");
}
scene::Groups.create();
@@ -98,6 +98,7 @@ state_serializer::deserialize_begin( std::string const &Scenariofile ) {
{ "test", &state_serializer::deserialize_test },
{ "time", &state_serializer::deserialize_time },
{ "trainset", &state_serializer::deserialize_trainset },
{ "terrain", &state_serializer::deserialize_terrain },
{ "endtrainset", &state_serializer::deserialize_endtrainset } };
for( auto &function : functionlist ) {
@@ -361,7 +362,11 @@ state_serializer::deserialize_firstinit( cParser &Input, scene::scratch_data &Sc
if( true == Scratchpad.binary.terrain ) {
// at this stage it should be safe to import terrain from the binary scene file
// TBD: postpone loading furter and only load required blocks during the simulation?
Region->deserialize( Scratchpad.name );
if (false == Scratchpad.binary.terrain_included)
{
Region->deserialize(Scratchpad.name);
}
}
simulation::Paths.InitTracks();
@@ -734,6 +739,27 @@ state_serializer::deserialize_trainset( cParser &Input, scene::scratch_data &Scr
>> Scratchpad.trainset.velocity;
}
void
state_serializer::deserialize_terrain(cParser &Input, scene::scratch_data &Scratchpad)
{
std::string line;
Input.getTokens(1);
Input >> line;
if ((true == Global.file_binary_terrain) && (true == ends_with(line, ".sbt")))
{
Scratchpad.binary.terrain = Region->is_scene(line);
Global.file_binary_terrain_state = true;
Scratchpad.binary.terrain_included = true;
Scratchpad.terrain_name = line;
WriteLog("Included SBT file: " + line);
Region->deserialize(Scratchpad.terrain_name);
}
skip_until(Input, "endterrain");
}
void
state_serializer::deserialize_endtrainset( cParser &Input, scene::scratch_data &Scratchpad ) {

View File

@@ -70,6 +70,7 @@ private:
void deserialize_test( cParser &Input, scene::scratch_data &Scratchpad );
void deserialize_time( cParser &Input, scene::scratch_data &Scratchpad );
void deserialize_trainset( cParser &Input, scene::scratch_data &Scratchpad );
void deserialize_terrain( cParser &Input, scene::scratch_data &Scratchpad );
void deserialize_endtrainset( cParser &Input, scene::scratch_data &Scratchpad );
TTrack * deserialize_path( cParser &Input, scene::scratch_data &Scratchpad, scene::node_data const &Nodedata );
TTraction * deserialize_traction( cParser &Input, scene::scratch_data &Scratchpad, scene::node_data const &Nodedata );