Skip to main content

fbx_dom/objects/
global_settings.rs

1//! Eager copy of [`crate::GlobalSettings`] accessors (axes, units, time span, frame rate) for
2//! [`crate::OwnedDocument`] without holding a full [`crate::Document`].
3
4use crate::FrameRate;
5use crate::GlobalSettings;
6
7#[derive(Debug, Clone, PartialEq)]
8pub struct OwnedGlobalSettings {
9    pub up_axis: i32,
10    pub up_axis_sign: i32,
11    pub front_axis: i32,
12    pub front_axis_sign: i32,
13    pub coord_axis: i32,
14    pub coord_axis_sign: i32,
15    pub original_up_axis: i32,
16    pub original_up_axis_sign: i32,
17    pub unit_scale_factor: f32,
18    pub original_unit_scale_factor: f32,
19    pub ambient_color: [f32; 3],
20    pub default_camera: String,
21    pub time_span_start: u64,
22    pub time_span_stop: u64,
23    pub custom_frame_rate: f32,
24    pub frame_rate: FrameRate,
25}
26
27impl Default for OwnedGlobalSettings {
28    fn default() -> Self {
29        Self {
30            up_axis: 1,
31            up_axis_sign: 1,
32            front_axis: 2,
33            front_axis_sign: 1,
34            coord_axis: 0,
35            coord_axis_sign: 1,
36            original_up_axis: -1,
37            original_up_axis_sign: 1,
38            unit_scale_factor: 1.0,
39            original_unit_scale_factor: 1.0,
40            ambient_color: [0.0, 0.0, 0.0],
41            default_camera: "".to_string(),
42            time_span_start: 0,
43            time_span_stop: 0,
44            custom_frame_rate: -1.0,
45            frame_rate: FrameRate::Default,
46        }
47    }
48}
49
50impl<'a> From<GlobalSettings<'a>> for OwnedGlobalSettings {
51    fn from(global_settings: GlobalSettings<'a>) -> Self {
52        Self {
53            up_axis: global_settings.up_axis(),
54            up_axis_sign: global_settings.up_axis_sign(),
55            front_axis: global_settings.front_axis(),
56            front_axis_sign: global_settings.front_axis_sign(),
57            coord_axis: global_settings.coord_axis(),
58            coord_axis_sign: global_settings.coord_axis_sign(),
59            original_up_axis: global_settings.original_up_axis(),
60            original_up_axis_sign: global_settings.original_up_axis_sign(),
61            unit_scale_factor: global_settings.unit_scale_factor(),
62            original_unit_scale_factor: global_settings.original_unit_scale_factor(),
63            ambient_color: global_settings.ambient_color(),
64            default_camera: global_settings.default_camera(),
65            time_span_start: global_settings.time_span_start(),
66            time_span_stop: global_settings.time_span_stop(),
67            custom_frame_rate: global_settings.custom_frame_rate(),
68            frame_rate: global_settings.frame_rate(),
69        }
70    }
71}