1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::shared::PostEffectType;
/// Params for starting the engine.
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
#[serde(default)]
pub struct EngineParams {
/// Width of the video feed. Must be a multiple of 4.
pub video_res_width: u32,
/// Height of the video feed. Must be a multiple of 4.
pub video_res_height: u32,
/// Frames per second of the video feed.
pub fps: u32,
/// If true, engine will render video frames as fast as it can.
pub unlocked_framerate: bool,
/// Engine Post effects (such as SSAO)
pub post_effect: Option<PostEffectType>,
/// If true, will start a webrtc connection.
pub webrtc: bool,
/// An optional identifier for a pool of engine instances.
/// The 'default' pool is used when none is specified.
#[serde(skip_serializing_if = "Option::is_none")]
pub pool: Option<String>,
/// If true, will show the grid at the start of the session.
pub show_grid: bool,
/// If given, when the session ends, the modeling commands sent during
/// the session will be written out to this filename.
/// For debugging.
pub replay: Option<String>,
}
impl Default for EngineParams {
fn default() -> Self {
Self {
video_res_width: 1280,
video_res_height: 720,
fps: 60,
unlocked_framerate: false,
post_effect: None,
webrtc: true,
pool: None,
show_grid: false,
replay: None,
}
}
}
impl EngineParams {
/// Returns a default EngineParams with the grid enabled.
/// This is primarily useful for engine testing.
pub fn default_with_grid() -> Self {
Self {
show_grid: true,
..Self::default()
}
}
}