32 lines
1.1 KiB
Rust
32 lines
1.1 KiB
Rust
|
|
use crate::utils;
|
||
|
|
use rapier::dynamics::IslandManager;
|
||
|
|
use wasm_bindgen::prelude::*;
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub struct RawIslandManager(pub(crate) IslandManager);
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
impl RawIslandManager {
|
||
|
|
#[wasm_bindgen(constructor)]
|
||
|
|
pub fn new() -> Self {
|
||
|
|
RawIslandManager(IslandManager::new())
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Applies the given JavaScript function to the integer handle of each active rigid-body
|
||
|
|
/// managed by this island manager.
|
||
|
|
///
|
||
|
|
/// After a short time of inactivity, a rigid-body is automatically deactivated ("asleep") by
|
||
|
|
/// the physics engine in order to save computational power. A sleeping rigid-body never moves
|
||
|
|
/// unless it is moved manually by the user.
|
||
|
|
///
|
||
|
|
/// # Parameters
|
||
|
|
/// - `f(handle)`: the function to apply to the integer handle of each active rigid-body managed by this
|
||
|
|
/// set. Called as `f(collider)`.
|
||
|
|
pub fn forEachActiveRigidBodyHandle(&self, f: &js_sys::Function) {
|
||
|
|
let this = JsValue::null();
|
||
|
|
for handle in self.0.active_bodies() {
|
||
|
|
let _ = f.call1(&this, &JsValue::from(utils::flat_handle(handle.0)));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|