use std::path::PathBuf;
use crate::core::engine::rendering::renderer::types::RenderPreset;
#[derive(Debug, Clone)]
pub struct EngineConfig {
pub width: usize,
pub height: usize,
pub output_path: PathBuf,
pub render_preset: RenderPreset,
}
impl EngineConfig {
fn default_output_path(file_name: &str) -> PathBuf {
#[cfg(target_os = "android")]
{
let mut path = std::env::temp_dir();
path.push("enginerenderer-output");
path.push(file_name);
return path;
}
#[allow(unreachable_code)]
PathBuf::from("output").join(file_name)
}
pub fn ultra_hd_cpu() -> Self {
Self {
width: 2560,
height: 1440,
output_path: Self::default_output_path("render_output.ppm"),
render_preset: RenderPreset::UltraHdCpu,
}
}
pub fn production_reference() -> Self {
Self {
width: 3840,
height: 2160,
output_path: Self::default_output_path("render_output.ppm"),
render_preset: RenderPreset::ProductionReference,
}
}
pub fn realtime_preview() -> Self {
Self {
width: 1280,
height: 720,
output_path: Self::default_output_path("realtime_preview.ppm"),
render_preset: RenderPreset::AnimationFast,
}
}
pub fn test_minimal() -> Self {
Self {
width: 80,
height: 45,
output_path: Self::default_output_path("render_test.ppm"),
render_preset: RenderPreset::PreviewCpu,
}
}
pub fn aspect_ratio(&self) -> f64 {
self.width as f64 / self.height as f64
}
}
impl Default for EngineConfig {
fn default() -> Self {
Self::ultra_hd_cpu()
}
}