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

///|
#external
pub type MTLMaterialCreator

///|
extern "js" fn MTLMaterialCreator::ffi_preload(
  self : MTLMaterialCreator,
) -> JsResult[Unit] =
  #| (self) => { try { return { ok: true, value: (() => self.preload())() }; } catch (error) { return { ok: false, error: String(error) }; } }

///|
pub fn MTLMaterialCreator::preload(
  self : MTLMaterialCreator,
) -> Unit raise LoadError {
  match self.ffi_preload().into_result() {
    Ok(value) => value
    Err(message) => raise LoadError(message)
  }
}

///|
extern "js" fn MTLMaterialCreator::ffi_create(
  self : MTLMaterialCreator,
  name : String,
) -> JsResult[Material] =
  #| (self, name) => { try { return { ok: true, value: (() => self.create(name))() }; } catch (error) { return { ok: false, error: String(error) }; } }

///|
pub fn MTLMaterialCreator::create(
  self : MTLMaterialCreator,
  name : String,
) -> Material raise LoadError {
  match self.ffi_create(name).into_result() {
    Ok(value) => value
    Err(message) => raise LoadError(message)
  }
}

///|
extern "js" fn MTLMaterialCreator::ffi_materials(
  self : MTLMaterialCreator,
) -> JsResult[FixedArray[Material]] =
  #| (self) => { try { return { ok: true, value: (() => self.getAsArray())() }; } catch (error) { return { ok: false, error: String(error) }; } }

///|
pub fn MTLMaterialCreator::materials(
  self : MTLMaterialCreator,
) -> FixedArray[Material] raise LoadError {
  match self.ffi_materials().into_result() {
    Ok(value) => value
    Err(message) => raise LoadError(message)
  }
}

///|
pub extern "js" fn MTLMaterialCreator::set_cross_origin(
  self : MTLMaterialCreator,
  value : String,
) -> MTLMaterialCreator =
  #| (self, value) => self.setCrossOrigin(value)

///|
pub extern "js" fn MTLMaterialCreator::set_manager(
  self : MTLMaterialCreator,
  manager : LoadingManager,
) -> Unit =
  #| (self, manager) => self.setManager(manager)