#[derive(Clone, Debug, Default)]
pub struct DevToolsState {
#[cfg(feature = "inspector")]
pub inspector: crate::TimelineInspector,
#[cfg(feature = "easing-editor")]
pub easing_editor: crate::EasingCurveEditor,
#[cfg(feature = "spring-viz")]
pub spring_visualizer: crate::SpringVisualizer,
#[cfg(feature = "recorder")]
pub recorder: crate::RecorderControls,
#[cfg(feature = "perf-monitor")]
pub performance: crate::PerformanceMonitor,
open: bool,
}
impl DevToolsState {
pub fn new() -> Self {
Self {
open: true,
..Self::default()
}
}
pub fn is_open(&self) -> bool {
self.open
}
pub fn set_open(&mut self, open: bool) {
self.open = open;
}
pub fn toggle(&mut self) {
self.open = !self.open;
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn toggles_visibility() {
let mut state = DevToolsState::new();
assert!(state.is_open());
state.toggle();
assert!(!state.is_open());
}
}