pub struct PhysicsEditor {Show 25 fields
pub rigid_bodies: HashMap<u64, RigidBodyInspector>,
pub constraints: HashMap<u64, Constraint>,
pub joint_editor: JointEditor,
pub cloth_sims: HashMap<u64, ClothSimulation>,
pub fluid_sims: HashMap<u64, FluidSimulation>,
pub fracture_systems: HashMap<u64, VoronoiFracture>,
pub ragdoll_editor: RagdollEditor,
pub vehicles: HashMap<u64, VehiclePhysics>,
pub collision_shapes: HashMap<u64, CollisionShapeEditor>,
pub material_library: HashMap<String, PhysicsMaterial>,
pub contact_visualizer: ContactVisualizer,
pub broad_phase: BroadPhase,
pub world_settings: PhysicsWorldSettings,
pub debug_overlay: PhysicsDebugOverlay,
pub next_id: u64,
pub selected_body: Option<u64>,
pub selected_constraint: Option<u64>,
pub simulation_running: bool,
pub accumulated_time: f32,
pub simulation_time: f32,
pub step_count: u64,
pub history: VecDeque<PhysicsSnapshot>,
pub max_history: usize,
pub undo_stack: VecDeque<PhysicsEditorCommand>,
pub redo_stack: VecDeque<PhysicsEditorCommand>,
}Fields§
§rigid_bodies: HashMap<u64, RigidBodyInspector>§constraints: HashMap<u64, Constraint>§joint_editor: JointEditor§cloth_sims: HashMap<u64, ClothSimulation>§fluid_sims: HashMap<u64, FluidSimulation>§fracture_systems: HashMap<u64, VoronoiFracture>§ragdoll_editor: RagdollEditor§vehicles: HashMap<u64, VehiclePhysics>§collision_shapes: HashMap<u64, CollisionShapeEditor>§material_library: HashMap<String, PhysicsMaterial>§contact_visualizer: ContactVisualizer§broad_phase: BroadPhase§world_settings: PhysicsWorldSettings§debug_overlay: PhysicsDebugOverlay§next_id: u64§selected_body: Option<u64>§selected_constraint: Option<u64>§simulation_running: bool§accumulated_time: f32§simulation_time: f32§step_count: u64§history: VecDeque<PhysicsSnapshot>§max_history: usize§undo_stack: VecDeque<PhysicsEditorCommand>§redo_stack: VecDeque<PhysicsEditorCommand>Implementations§
Source§impl PhysicsEditor
impl PhysicsEditor
pub fn new() -> Self
pub fn alloc_id(&mut self) -> u64
pub fn add_rigid_body(&mut self, name: &str) -> u64
pub fn remove_rigid_body(&mut self, id: u64)
pub fn add_constraint(&mut self, constraint: Constraint) -> u64
pub fn add_cloth(&mut self, w: usize, h: usize, cell_size: f32) -> u64
pub fn add_fluid(&mut self, kernel_radius: f32, rest_density: f32) -> u64
pub fn add_fracture_system( &mut self, bounds_min: Vec3, bounds_max: Vec3, num_cells: usize, seed: u64, ) -> u64
pub fn add_vehicle(&mut self, mass: f32, wheelbase: f32, track: f32) -> u64
pub fn add_collision_shape(&mut self, shape_type: CollisionShapeType) -> u64
Sourcepub fn update_broadphase(&mut self)
pub fn update_broadphase(&mut self)
Update all broad-phase AABBs
Sourcepub fn broad_phase_query(&self) -> Vec<(u64, u64)>
pub fn broad_phase_query(&self) -> Vec<(u64, u64)>
Detect overlapping pairs
pub fn play(&mut self)
pub fn pause(&mut self)
pub fn reset(&mut self)
Sourcepub fn body_info_string(&self, id: u64) -> String
pub fn body_info_string(&self, id: u64) -> String
Get body info string for UI display
Sourcepub fn create_demo_scene(&mut self)
pub fn create_demo_scene(&mut self)
Create a standard scene with floor + stacked boxes
Sourcepub fn raycast(
&self,
ray_origin: Vec3,
ray_dir: Vec3,
max_dist: f32,
) -> Option<(u64, f32, Vec3)>
pub fn raycast( &self, ray_origin: Vec3, ray_dir: Vec3, max_dist: f32, ) -> Option<(u64, f32, Vec3)>
Raycast against all rigid bodies (simplified AABB test)
pub fn select_body_at_ray( &mut self, ray_origin: Vec3, ray_dir: Vec3, ) -> Option<u64>
pub fn generate_all_debug_lines(&self) -> Vec<(Vec3, Vec3, Vec4)>
Sourcepub fn export_description(&self) -> String
pub fn export_description(&self) -> String
Export physics world to a simple text description
Sourcepub fn apply_explosion(&mut self, center: Vec3, force: f32, radius: f32)
pub fn apply_explosion(&mut self, center: Vec3, force: f32, radius: f32)
Force-based explosion at a point
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PhysicsEditor
impl RefUnwindSafe for PhysicsEditor
impl Send for PhysicsEditor
impl Sync for PhysicsEditor
impl Unpin for PhysicsEditor
impl UnsafeUnpin for PhysicsEditor
impl UnwindSafe for PhysicsEditor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.