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

///|
#external
pub type GLTFExporterPlugin

///|
#module("@mizchi/three-mbt/gltf-plugins")
pub extern "js" fn GLTFExporterPlugin::GLTFExporterPlugin() -> GLTFExporterPlugin = "gLTFExporterPlugin"

///|
pub extern "js" fn GLTFExporterPlugin::set_write_node(
  self : GLTFExporterPlugin,
  callback : (Object3D, GLTFDefinition) -> Unit,
) -> Unit =
  #| (self, callback) => { self.writeNode=callback; }

///|
pub extern "js" fn GLTFExporterPlugin::set_write_mesh(
  self : GLTFExporterPlugin,
  callback : (Mesh, GLTFDefinition) -> Unit,
) -> Unit =
  #| (self, callback) => { self.writeMesh=callback; }

///|
pub extern "js" fn GLTFExporterPlugin::set_write_texture(
  self : GLTFExporterPlugin,
  callback : (Texture, GLTFDefinition) -> Unit,
) -> Unit =
  #| (self, callback) => { self.writeTexture=callback; }

///|
pub extern "js" fn GLTFExporterPlugin::set_write_material(
  self : GLTFExporterPlugin,
  callback : (Material, GLTFDefinition) -> Unit,
) -> Unit =
  #| (self, callback) => { self.writeMaterialAsync=callback; }

///|
pub extern "js" fn GLTFExporterPlugin::set_write_material_async(
  self : GLTFExporterPlugin,
  callback : (Material, GLTFDefinition) -> @js_async.Promise[Unit],
) -> Unit =
  #| (self, callback) => { self.writeMaterialAsync=callback; }

///|
pub extern "js" fn GLTFExporterPlugin::set_before_parse(
  self : GLTFExporterPlugin,
  callback : (FixedArray[Object3D]) -> Unit,
) -> Unit =
  #| (self, callback) => { self.beforeParse=input=>callback(Array.isArray(input)?input.slice():[input]); }

///|
pub extern "js" fn GLTFExporterPlugin::set_after_parse(
  self : GLTFExporterPlugin,
  callback : (FixedArray[Object3D]) -> Unit,
) -> Unit =
  #| (self, callback) => { self.afterParse=input=>callback(Array.isArray(input)?input.slice():[input]); }