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

///|
#external
pub type EdgeSplitModifier

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

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

///|
pub fn EdgeSplitModifier::modify(
  self : EdgeSplitModifier,
  geometry : BufferGeometry,
  cutoff_angle : Double,
  keep_normals : Bool,
) -> BufferGeometry raise ModelingError {
  match self.ffi_modify(geometry, cutoff_angle, keep_normals).into_result() {
    Ok(value) => value
    Err(message) => raise ModelingError(message)
  }
}