#pragma once #include "FluidSim/EngineConfig.hpp" #include "FluidSim/Silencer.hpp" #include "FluidSim/TwoStrokeConfig.hpp" #include #include #include namespace fluidsim::port { struct ScenarioExample { std::string id,title,description; ScenarioKind kind{ScenarioKind::Twin}; TwoStrokeConfig two{}; ExhaustConfig exhaust{}; JunctionConfig junctions{}; EngineConfig engine{}; std::string category; int order{}; }; ScenarioExample load_engine_file(const std::filesystem::path& path); std::vector load_engine_directory(const std::filesystem::path& directory); // FLUIDSIM_ENGINE_DIR overrides discovery. Otherwise search the working directory, // beside the executable, then the source tree for developer tools. std::filesystem::path engine_directory(); const std::vector& scenario_examples(); const ScenarioExample& scenario_example(const std::string& id); const ScenarioExample& preset_engine_definition(FourStrokePreset preset); }