// Generated by scripts/generate.mjs from bindings/api.mjs. Do not edit.

///|
#external
pub type SimplifyModifier

///|
#module("@mizchi/three-mbt/modeling")
pub extern "js" fn SimplifyModifier::SimplifyModifier() -> SimplifyModifier = "simplifyModifier"

///|
extern "js" fn SimplifyModifier::ffi_modify(
  self : SimplifyModifier,
  geometry : BufferGeometry,
  vertices_to_remove : Int,
) -> JsResult[BufferGeometry] =
  #| (self, geometry, vertices_to_remove) => { try { return { ok: true, value: (() => self.modify(geometry, vertices_to_remove))() }; } catch (error) { return { ok: false, error: String(error) }; } }

///|
pub fn SimplifyModifier::modify(
  self : SimplifyModifier,
  geometry : BufferGeometry,
  vertices_to_remove : Int,
) -> BufferGeometry raise ModelingError {
  match self.ffi_modify(geometry, vertices_to_remove).into_result() {
    Ok(value) => value
    Err(message) => raise ModelingError(message)
  }
}