pub struct PhysicsWorld {Show 27 fields
pub weather: Weather,
pub integrator: Integrator,
pub solver: ConstraintSolver,
pub spatial_hash: SpatialHash,
pub collision_events: Vec<CollisionEvent>,
pub trigger_events: Vec<TriggerEvent>,
pub fracture_events: Vec<FractureEvent>,
pub fracture_cache: PreFracturedCache,
pub joints: Vec<Joint>,
pub joint_solver: JointSolver,
pub gravity_fields: Vec<GravityField>,
pub fluid_zones: Vec<FluidZone>,
pub accumulator: f32,
pub render_alpha: f32,
pub metrics: PhysicsMetrics,
pub entities: Vec<Entity>,
pub rigid_bodies: Vec<RigidBody>,
pub transforms: Vec<Transform>,
pub velocities: Vec<Velocity>,
pub colliders: Vec<Collider>,
pub entity_index_map: HashMap<u32, usize>,
pub is_paused: bool,
pub step_once: bool,
pub rewind_requested: bool,
pub history: VecDeque<PhysicsStateSnapshot>,
pub max_history_frames: usize,
pub watchlist: HashSet<Entity>,
/* private fields */
}Expand description
Main physics world that manages all physics simulation
Fields§
§weather: Weather§integrator: Integrator§solver: ConstraintSolver§spatial_hash: SpatialHash§collision_events: Vec<CollisionEvent>§trigger_events: Vec<TriggerEvent>§fracture_events: Vec<FractureEvent>§fracture_cache: PreFracturedCache§joints: Vec<Joint>§joint_solver: JointSolver§gravity_fields: Vec<GravityField>§fluid_zones: Vec<FluidZone>§accumulator: f32§render_alpha: f32§metrics: PhysicsMetrics§entities: Vec<Entity>§rigid_bodies: Vec<RigidBody>§transforms: Vec<Transform>§velocities: Vec<Velocity>§colliders: Vec<Collider>§entity_index_map: HashMap<u32, usize>§is_paused: bool§step_once: bool§rewind_requested: bool§history: VecDeque<PhysicsStateSnapshot>§max_history_frames: usize§watchlist: HashSet<Entity>Implementations§
Source§impl PhysicsWorld
impl PhysicsWorld
pub fn new() -> PhysicsWorld
pub fn with_gravity(self, gravity: Vec3) -> PhysicsWorld
pub fn enable_gpu_compute(&mut self)
pub fn with_cell_size(self, cell_size: f32) -> PhysicsWorld
pub fn add_body( &mut self, entity: Entity, rb: RigidBody, t: Transform, v: Velocity, c: Collider, )
pub fn clear_bodies(&mut self)
pub fn sync_bodies<'a>( &mut self, incoming_bodies: impl Iterator<Item = &'a (Entity, RigidBody, Transform, Velocity, Collider)>, )
pub fn remove_body_at(&mut self, idx: usize)
Sourcepub fn step(&mut self, dt: f32) -> Result<(), GizmoError>
pub fn step(&mut self, dt: f32) -> Result<(), GizmoError>
Ana fizik adımı — sabit 120Hz sub-stepping ile Render dt’yi (değişken) sabit iç fizik dt’ye dönüştürür.
Sourcepub fn collision_events(&self) -> &[CollisionEvent]
pub fn collision_events(&self) -> &[CollisionEvent]
Get collision events from last step
Sourcepub fn trigger_events(&self) -> &[TriggerEvent]
pub fn trigger_events(&self) -> &[TriggerEvent]
Get trigger events from last step
Sourcepub fn apply_impulse(
&self,
rb: &RigidBody,
transform: &Transform,
vel: &mut Velocity,
impulse: Vec3,
point: Vec3,
)
pub fn apply_impulse( &self, rb: &RigidBody, transform: &Transform, vel: &mut Velocity, impulse: Vec3, point: Vec3, )
Apply an impulse to a body at a point
Sourcepub fn apply_force(
&self,
rb: &RigidBody,
vel: &mut Velocity,
force: Vec3,
dt: f32,
)
pub fn apply_force( &self, rb: &RigidBody, vel: &mut Velocity, force: Vec3, dt: f32, )
Apply a force to a body
Sourcepub fn raycast(&self, ray: &Ray, max_distance: f32) -> Option<RaycastHit>
pub fn raycast(&self, ray: &Ray, max_distance: f32) -> Option<RaycastHit>
Perform a raycast against all bodies
Sourcepub fn raycast_all(&self, ray: &Ray, max_distance: f32) -> Vec<RaycastHit>
pub fn raycast_all(&self, ray: &Ray, max_distance: f32) -> Vec<RaycastHit>
Perform a raycast and return all hits
Sourcepub fn trigger_snapshot(&self, reason: &str)
pub fn trigger_snapshot(&self, reason: &str)
Telemetry and Debugging: Create a JSON snapshot of the physical world state
Sourcepub fn calculate_total_energy(&self) -> f32
pub fn calculate_total_energy(&self) -> f32
Calculate total kinetic and potential energy of the simulation
Trait Implementations§
Source§impl Default for PhysicsWorld
impl Default for PhysicsWorld
Source§fn default() -> PhysicsWorld
fn default() -> PhysicsWorld
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for PhysicsWorld
impl<'de> Deserialize<'de> for PhysicsWorld
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<PhysicsWorld, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<PhysicsWorld, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Serialize for PhysicsWorld
impl Serialize for PhysicsWorld
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations§
impl Freeze for PhysicsWorld
impl RefUnwindSafe for PhysicsWorld
impl Send for PhysicsWorld
impl Sync for PhysicsWorld
impl Unpin for PhysicsWorld
impl UnsafeUnpin for PhysicsWorld
impl UnwindSafe for PhysicsWorld
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
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().