#![allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum UsdRenderMode {
WireFrame,
Shaded,
ShadedWire,
Points,
}
#[derive(Debug, Clone)]
pub struct UsdPreviewConfig {
pub render_mode: UsdRenderMode,
pub show_proxy_geometry: bool,
pub frame: f64,
}
impl Default for UsdPreviewConfig {
fn default() -> Self {
UsdPreviewConfig {
render_mode: UsdRenderMode::Shaded,
show_proxy_geometry: true,
frame: 0.0,
}
}
}
#[derive(Debug, Clone)]
pub struct UsdPreviewView {
pub config: UsdPreviewConfig,
pub stage_path: String,
pub enabled: bool,
}
pub fn new_usd_preview_view() -> UsdPreviewView {
UsdPreviewView {
config: UsdPreviewConfig::default(),
stage_path: String::new(),
enabled: true,
}
}
pub fn upv_set_stage(v: &mut UsdPreviewView, path: &str) {
v.stage_path = path.to_string();
}
pub fn upv_set_frame(v: &mut UsdPreviewView, frame: f64) {
v.config.frame = frame;
}
pub fn upv_set_render_mode(v: &mut UsdPreviewView, mode: UsdRenderMode) {
v.config.render_mode = mode;
}
pub fn upv_has_stage(v: &UsdPreviewView) -> bool {
!v.stage_path.is_empty()
}
pub fn upv_to_json(v: &UsdPreviewView) -> String {
format!(
r#"{{"stage_path":"{}","frame":{:.2},"enabled":{}}}"#,
v.stage_path, v.config.frame, v.enabled
)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_no_stage() {
let v = new_usd_preview_view();
assert!(!upv_has_stage(&v) );
}
#[test]
fn set_stage_makes_has_stage_true() {
let mut v = new_usd_preview_view();
upv_set_stage(&mut v, "scene.usd");
assert!(upv_has_stage(&v) );
}
#[test]
fn set_frame() {
let mut v = new_usd_preview_view();
upv_set_frame(&mut v, 42.0);
assert!((v.config.frame - 42.0).abs() < 1e-9 );
}
#[test]
fn set_render_mode_wireframe() {
let mut v = new_usd_preview_view();
upv_set_render_mode(&mut v, UsdRenderMode::WireFrame);
assert_eq!(
v.config.render_mode,
UsdRenderMode::WireFrame
);
}
#[test]
fn default_render_mode_shaded() {
let v = new_usd_preview_view();
assert_eq!(
v.config.render_mode,
UsdRenderMode::Shaded
);
}
#[test]
fn json_has_stage_path() {
let mut v = new_usd_preview_view();
upv_set_stage(&mut v, "test.usda");
assert!(upv_to_json(&v).contains("test.usda") );
}
#[test]
fn enabled_default() {
let v = new_usd_preview_view();
assert!(v.enabled );
}
#[test]
fn proxy_geometry_default_true() {
let v = new_usd_preview_view();
assert!(v.config.show_proxy_geometry );
}
}