mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 03:29:19 +02:00
EU7 scenery format and models streaming
This commit is contained in:
@@ -638,6 +638,24 @@ bool global_settings::ConfigParseSimulation(cParser& Parser, const std::string&
|
||||
return true;
|
||||
}
|
||||
|
||||
if (token == "eu7.pack.stream.workers.percent")
|
||||
{
|
||||
ParseOneClamped(Parser, eu7_pack_stream_workers_percent, 1, 100);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (token == "eu7.auto.bake")
|
||||
{
|
||||
ParseOne(Parser, eu7_auto_bake, 1, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (token == "eu7.bake.threads")
|
||||
{
|
||||
ParseOneClamped(Parser, eu7_bake_threads, 0, 64);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (token == "inactivepause")
|
||||
{
|
||||
ParseOne(Parser, bInactivePause);
|
||||
@@ -1588,6 +1606,9 @@ global_settings::export_as_text( std::ostream &Output ) const {
|
||||
export_as_text( Output, "latitude", fLatitudeDeg );
|
||||
export_as_text( Output, "convertmodels", iConvertModels );
|
||||
export_as_text( Output, "file.binary.terrain", file_binary_terrain );
|
||||
export_as_text( Output, "eu7.pack.stream.workers.percent", eu7_pack_stream_workers_percent );
|
||||
export_as_text( Output, "eu7.auto.bake", eu7_auto_bake );
|
||||
export_as_text( Output, "eu7.bake.threads", eu7_bake_threads );
|
||||
export_as_text( Output, "inactivepause", bInactivePause );
|
||||
export_as_text( Output, "slowmotion", iSlowMotionMask );
|
||||
export_as_text( Output, "hideconsole", bHideConsole );
|
||||
|
||||
@@ -82,6 +82,9 @@ struct global_settings {
|
||||
int iConvertIndexRange{ 1000 }; // range of duplicate vertex scan
|
||||
bool file_binary_terrain{ true }; // enable binary terrain (de)serialization
|
||||
bool file_binary_terrain_state{true};
|
||||
int eu7_pack_stream_workers_percent{ 40 }; // EU7 PACK async loader thread pool size (% of CPU threads)
|
||||
bool eu7_auto_bake{ true }; // przy ladowaniu mapy: bake SCM→EU7 gdy brak lub nieaktualny .eu7
|
||||
int eu7_bake_threads{ 0 }; // watki bake (0 = auto = hardware_concurrency)
|
||||
// logs
|
||||
bool priorityLoadText3D{false}; // ladowanie T3D priorytetowo
|
||||
int iWriteLogEnabled{ 3 }; // maska bitowa: 1-zapis do pliku, 2-okienko, 4-nazwy torów
|
||||
|
||||
@@ -12,6 +12,18 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include "utilities/Logs.h"
|
||||
|
||||
#include "scene/scenenodegroups.h"
|
||||
#include "scene/eu7/eu7_loader.h"
|
||||
#include "utilities/Globals.h"
|
||||
#include "utilities/utilities.h"
|
||||
|
||||
namespace scene {
|
||||
class basic_region;
|
||||
}
|
||||
namespace simulation {
|
||||
class state_manager;
|
||||
extern scene::basic_region *Region;
|
||||
extern state_manager State;
|
||||
}
|
||||
|
||||
/*
|
||||
MaSzyna EU07 locomotive simulator parser
|
||||
@@ -326,9 +338,39 @@ void cParser::startIncludeFromParser(cParser& srcParser, bool ToLower, std::stri
|
||||
return;
|
||||
}
|
||||
|
||||
const bool isTerrain = contains(includefile, "_ter.scm");
|
||||
const bool isTerrain =
|
||||
contains( includefile, "_ter.scm" ) || contains( includefile, "_ter.eu7" ) ||
|
||||
includefile.ends_with( ".eu7" );
|
||||
auto const eu7path {
|
||||
scene::eu7::include_eu7_path( mPath, mFile, includefile ) };
|
||||
auto const resolved_include {
|
||||
scene::eu7::resolve_parser_include_path( mPath, mFile, includefile ) };
|
||||
if ( scene::eu7::is_module_loaded( eu7path ) ) {
|
||||
readParameters( srcParser );
|
||||
return;
|
||||
}
|
||||
if ( scene::eu7::should_use_binary_module( resolved_include ) && simulation::Region != nullptr ) {
|
||||
if ( isTerrain && true == Global.file_binary_terrain ) {
|
||||
if ( scene::eu7::probe_terrain_file( eu7path ) ) {
|
||||
if ( scene::eu7::load_terrain( *simulation::Region, eu7path ) ) {
|
||||
Global.file_binary_terrain_state = true;
|
||||
WriteLog( "EU7 terrain loaded, ignoring: " + includefile );
|
||||
readParameters( srcParser );
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( simulation::State.load_eu7_module( eu7path ) ) {
|
||||
WriteLog( "EU7 module loaded, ignoring: " + includefile );
|
||||
readParameters( srcParser );
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if ( scene::eu7::probe_file( eu7path ) ) {
|
||||
WriteLog( "EU7: przestarzaly .eu7, fallback SCM: " + includefile );
|
||||
}
|
||||
if (isTerrain && true == Global.file_binary_terrain_state) {
|
||||
WriteLog("SBT found, ignoring: " + includefile);
|
||||
WriteLog("Binary terrain present, ignoring: " + includefile);
|
||||
readParameters(srcParser); // preserve original side-effect: still consume parameters
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user