Migrate 32 engine definitions into validated startup-loaded TOML files and separate configuration and snapshots from scenario assembly. Add camera-based stereo propagation from shared pipe geometry, preserve exhaust character, tune carburetor mixtures and idle, use ignition cuts for carb engines, and support returning to the scenario menu. Validation: full Windows build and all 14 CTest checks passed.
29 lines
1.0 KiB
C++
29 lines
1.0 KiB
C++
#pragma once
|
|
#include "FluidSim/EngineConfig.hpp"
|
|
#include "FluidSim/Silencer.hpp"
|
|
#include "FluidSim/TwoStrokeConfig.hpp"
|
|
#include <filesystem>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
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<ScenarioExample> 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<ScenarioExample>& scenario_examples();
|
|
const ScenarioExample& scenario_example(const std::string& id);
|
|
const ScenarioExample& preset_engine_definition(FourStrokePreset preset);
|
|
}
|