use super::*;
impl Default for RenderConfig {
fn default() -> RenderConfig {
RenderConfig {
backend: RenderBackendType::default(),
canvas_selector: CONFIG_DEFAULT_CANVAS_SELECTOR.to_string(),
width: CONFIG_DEFAULT_CANVAS_WIDTH,
height: CONFIG_DEFAULT_CANVAS_HEIGHT,
quality: RenderQuality::default(),
antialias: CONFIG_DEFAULT_ANTIALIAS,
power_preference: GpuPowerPreference::default(),
ssaa_scale_factor: CONFIG_DEFAULT_SSAA_SCALE_FACTOR,
}
}
}
impl Default for EngineConfig {
fn default() -> EngineConfig {
EngineConfig {
render: RenderConfig::default(),
scheduler: SchedulerConfig::default(),
}
}
}
impl RenderConfig {
pub fn canvas2d<S>(canvas_selector: S, width: f64, height: f64) -> RenderConfig
where
S: AsRef<str>,
{
RenderConfig {
backend: RenderBackendType::Canvas2D,
canvas_selector: canvas_selector.as_ref().to_string(),
width,
height,
..RenderConfig::default()
}
}
pub fn webgpu<S>(canvas_selector: S, width: f64, height: f64) -> RenderConfig
where
S: AsRef<str>,
{
RenderConfig {
backend: RenderBackendType::WebGpu,
canvas_selector: canvas_selector.as_ref().to_string(),
width,
height,
..RenderConfig::default()
}
}
}
impl EngineConfig {
pub fn create(render: RenderConfig) -> EngineConfig {
EngineConfig {
render,
scheduler: SchedulerConfig::default(),
}
}
pub fn with_scheduler(mut self, scheduler: SchedulerConfig) -> EngineConfig {
self.set_scheduler(scheduler);
self
}
}
impl GpuPowerPreference {
pub fn to_web_sys_string(&self) -> &'static str {
match self {
GpuPowerPreference::LowPower => GPU_POWER_PREFERENCE_LOW_POWER,
GpuPowerPreference::HighPerformance => GPU_POWER_PREFERENCE_HIGH_PERFORMANCE,
}
}
}