feat(rapier_testbed): autosave testbed configuration + add support for per-example settings (#799)
* feat(rapier_testbed): autosave testbed configuration + add support for per-example parameters * feat(rapier_testbed): also save the camera position * feat(rapier_testbed): improve ergonomics of example-specific settings * chore: cargo fmt * chore(rapier_testbed): small UI ergonomics improvement * chore(rapier_testbed): clippy fixes
This commit is contained in:
34
src_testbed/save.rs
Normal file
34
src_testbed/save.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
#[cfg(feature = "dim2")]
|
||||
use crate::camera2d::OrbitCamera;
|
||||
#[cfg(feature = "dim3")]
|
||||
use crate::camera3d::OrbitCamera;
|
||||
use crate::settings::ExampleSettings;
|
||||
use crate::testbed::{RapierSolverType, RunMode, TestbedStateFlags};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Serialize, Deserialize, PartialEq, Debug, Default, Clone)]
|
||||
pub struct SerializableTestbedState {
|
||||
pub running: RunMode,
|
||||
pub flags: TestbedStateFlags,
|
||||
pub selected_example: usize,
|
||||
pub selected_backend: usize,
|
||||
pub example_settings: ExampleSettings,
|
||||
pub solver_type: RapierSolverType,
|
||||
pub physx_use_two_friction_directions: bool,
|
||||
pub camera: OrbitCamera,
|
||||
}
|
||||
|
||||
#[cfg(feature = "dim2")]
|
||||
#[derive(Serialize, Deserialize, PartialEq, Debug, Default, Clone)]
|
||||
pub struct SerializableCameraState {
|
||||
pub zoom: f32,
|
||||
pub center: na::Point2<f32>,
|
||||
}
|
||||
|
||||
#[cfg(feature = "dim3")]
|
||||
#[derive(Serialize, Deserialize, PartialEq, Debug, Default, Clone)]
|
||||
pub struct SerializableCameraState {
|
||||
pub distance: f32,
|
||||
pub position: na::Point3<f32>,
|
||||
pub center: na::Point3<f32>,
|
||||
}
|
||||
Reference in New Issue
Block a user