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

///|
#external
pub type MeshBasicMaterial

///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn MeshBasicMaterial::MeshBasicMaterial(
  color : Int,
) -> MeshBasicMaterial = "meshBasicMaterial"

///|
pub fn MeshBasicMaterial::as_material(self : MeshBasicMaterial) -> Material = "%identity"

///|
pub extern "js" fn MeshBasicMaterial::color(self : MeshBasicMaterial) -> Color =
  #| (self) => self.color

///|
extern "js" fn MeshBasicMaterial::ffi_map(
  self : MeshBasicMaterial,
) -> Nullable[Texture] =
  #| (self) => self.map

///|
pub fn MeshBasicMaterial::map(self : MeshBasicMaterial) -> Texture? {
  self.ffi_map().to_option()
}

///|
extern "js" fn MeshBasicMaterial::ffi_set_map(
  self : MeshBasicMaterial,
  value : Nullable[Texture],
) -> Unit =
  #| (self, value) => { self.map = value; }

///|
pub fn MeshBasicMaterial::set_map(
  self : MeshBasicMaterial,
  value : Texture?,
) -> Unit {
  self.ffi_set_map(Nullable::from_option(value))
}

///|
pub extern "js" fn MeshBasicMaterial::wireframe(
  self : MeshBasicMaterial,
) -> Bool =
  #| (self) => self.wireframe

///|
pub extern "js" fn MeshBasicMaterial::set_wireframe(
  self : MeshBasicMaterial,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.wireframe = value; }

///|
extern "js" fn MeshBasicMaterial::ffi_light_map(
  self : MeshBasicMaterial,
) -> Nullable[Texture] =
  #| (self) => self.lightMap

///|
pub fn MeshBasicMaterial::light_map(self : MeshBasicMaterial) -> Texture? {
  self.ffi_light_map().to_option()
}

///|
extern "js" fn MeshBasicMaterial::ffi_set_light_map(
  self : MeshBasicMaterial,
  value : Nullable[Texture],
) -> Unit =
  #| (self, value) => { self.lightMap = value; }

///|
pub fn MeshBasicMaterial::set_light_map(
  self : MeshBasicMaterial,
  value : Texture?,
) -> Unit {
  self.ffi_set_light_map(Nullable::from_option(value))
}

///|
extern "js" fn MeshBasicMaterial::ffi_ao_map(
  self : MeshBasicMaterial,
) -> Nullable[Texture] =
  #| (self) => self.aoMap

///|
pub fn MeshBasicMaterial::ao_map(self : MeshBasicMaterial) -> Texture? {
  self.ffi_ao_map().to_option()
}

///|
extern "js" fn MeshBasicMaterial::ffi_set_ao_map(
  self : MeshBasicMaterial,
  value : Nullable[Texture],
) -> Unit =
  #| (self, value) => { self.aoMap = value; }

///|
pub fn MeshBasicMaterial::set_ao_map(
  self : MeshBasicMaterial,
  value : Texture?,
) -> Unit {
  self.ffi_set_ao_map(Nullable::from_option(value))
}

///|
extern "js" fn MeshBasicMaterial::ffi_specular_map(
  self : MeshBasicMaterial,
) -> Nullable[Texture] =
  #| (self) => self.specularMap

///|
pub fn MeshBasicMaterial::specular_map(self : MeshBasicMaterial) -> Texture? {
  self.ffi_specular_map().to_option()
}

///|
extern "js" fn MeshBasicMaterial::ffi_set_specular_map(
  self : MeshBasicMaterial,
  value : Nullable[Texture],
) -> Unit =
  #| (self, value) => { self.specularMap = value; }

///|
pub fn MeshBasicMaterial::set_specular_map(
  self : MeshBasicMaterial,
  value : Texture?,
) -> Unit {
  self.ffi_set_specular_map(Nullable::from_option(value))
}

///|
extern "js" fn MeshBasicMaterial::ffi_alpha_map(
  self : MeshBasicMaterial,
) -> Nullable[Texture] =
  #| (self) => self.alphaMap

///|
pub fn MeshBasicMaterial::alpha_map(self : MeshBasicMaterial) -> Texture? {
  self.ffi_alpha_map().to_option()
}

///|
extern "js" fn MeshBasicMaterial::ffi_set_alpha_map(
  self : MeshBasicMaterial,
  value : Nullable[Texture],
) -> Unit =
  #| (self, value) => { self.alphaMap = value; }

///|
pub fn MeshBasicMaterial::set_alpha_map(
  self : MeshBasicMaterial,
  value : Texture?,
) -> Unit {
  self.ffi_set_alpha_map(Nullable::from_option(value))
}

///|
extern "js" fn MeshBasicMaterial::ffi_env_map(
  self : MeshBasicMaterial,
) -> Nullable[Texture] =
  #| (self) => self.envMap

///|
pub fn MeshBasicMaterial::env_map(self : MeshBasicMaterial) -> Texture? {
  self.ffi_env_map().to_option()
}

///|
extern "js" fn MeshBasicMaterial::ffi_set_env_map(
  self : MeshBasicMaterial,
  value : Nullable[Texture],
) -> Unit =
  #| (self, value) => { self.envMap = value; }

///|
pub fn MeshBasicMaterial::set_env_map(
  self : MeshBasicMaterial,
  value : Texture?,
) -> Unit {
  self.ffi_set_env_map(Nullable::from_option(value))
}

///|
pub extern "js" fn MeshBasicMaterial::light_map_intensity(
  self : MeshBasicMaterial,
) -> Double =
  #| (self) => self.lightMapIntensity

///|
pub extern "js" fn MeshBasicMaterial::set_light_map_intensity(
  self : MeshBasicMaterial,
  value : Double,
) -> Unit =
  #| (self, value) => { self.lightMapIntensity = value; }

///|
pub extern "js" fn MeshBasicMaterial::ao_map_intensity(
  self : MeshBasicMaterial,
) -> Double =
  #| (self) => self.aoMapIntensity

///|
pub extern "js" fn MeshBasicMaterial::set_ao_map_intensity(
  self : MeshBasicMaterial,
  value : Double,
) -> Unit =
  #| (self, value) => { self.aoMapIntensity = value; }

///|
pub extern "js" fn MeshBasicMaterial::reflectivity(
  self : MeshBasicMaterial,
) -> Double =
  #| (self) => self.reflectivity

///|
pub extern "js" fn MeshBasicMaterial::set_reflectivity(
  self : MeshBasicMaterial,
  value : Double,
) -> Unit =
  #| (self, value) => { self.reflectivity = value; }

///|
pub extern "js" fn MeshBasicMaterial::refraction_ratio(
  self : MeshBasicMaterial,
) -> Double =
  #| (self) => self.refractionRatio

///|
pub extern "js" fn MeshBasicMaterial::set_refraction_ratio(
  self : MeshBasicMaterial,
  value : Double,
) -> Unit =
  #| (self, value) => { self.refractionRatio = value; }

///|
pub extern "js" fn MeshBasicMaterial::wireframe_linewidth(
  self : MeshBasicMaterial,
) -> Double =
  #| (self) => self.wireframeLinewidth

///|
pub extern "js" fn MeshBasicMaterial::set_wireframe_linewidth(
  self : MeshBasicMaterial,
  value : Double,
) -> Unit =
  #| (self, value) => { self.wireframeLinewidth = value; }

///|
pub extern "js" fn MeshBasicMaterial::env_map_rotation(
  self : MeshBasicMaterial,
) -> Euler =
  #| (self) => self.envMapRotation

///|
pub extern "js" fn MeshBasicMaterial::combine(
  self : MeshBasicMaterial,
) -> CombineOperation =
  #| (self) => self.combine

///|
pub extern "js" fn MeshBasicMaterial::set_combine(
  self : MeshBasicMaterial,
  value : CombineOperation,
) -> Unit =
  #| (self, value) => { self.combine = value; }

///|
pub extern "js" fn MeshBasicMaterial::fog(self : MeshBasicMaterial) -> Bool =
  #| (self) => self.fog

///|
pub extern "js" fn MeshBasicMaterial::set_fog(
  self : MeshBasicMaterial,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.fog = value; }

///|
pub extern "js" fn MeshBasicMaterial::id(self : MeshBasicMaterial) -> Int =
  #| (self) => self.id

///|
pub extern "js" fn MeshBasicMaterial::kind(self : MeshBasicMaterial) -> String =
  #| (self) => self.type

///|
pub extern "js" fn MeshBasicMaterial::name(self : MeshBasicMaterial) -> String =
  #| (self) => self.name

///|
pub extern "js" fn MeshBasicMaterial::set_name(
  self : MeshBasicMaterial,
  value : String,
) -> Unit =
  #| (self, value) => { self.name = value; }

///|
pub extern "js" fn MeshBasicMaterial::opacity(
  self : MeshBasicMaterial,
) -> Double =
  #| (self) => self.opacity

///|
pub extern "js" fn MeshBasicMaterial::set_opacity(
  self : MeshBasicMaterial,
  value : Double,
) -> Unit =
  #| (self, value) => { self.opacity = value; }

///|
pub extern "js" fn MeshBasicMaterial::transparent(
  self : MeshBasicMaterial,
) -> Bool =
  #| (self) => self.transparent

///|
pub extern "js" fn MeshBasicMaterial::set_transparent(
  self : MeshBasicMaterial,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.transparent = value; }

///|
pub extern "js" fn MeshBasicMaterial::visible(self : MeshBasicMaterial) -> Bool =
  #| (self) => self.visible

///|
pub extern "js" fn MeshBasicMaterial::set_visible(
  self : MeshBasicMaterial,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.visible = value; }

///|
pub extern "js" fn MeshBasicMaterial::depth_test(
  self : MeshBasicMaterial,
) -> Bool =
  #| (self) => self.depthTest

///|
pub extern "js" fn MeshBasicMaterial::set_depth_test(
  self : MeshBasicMaterial,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.depthTest = value; }

///|
pub extern "js" fn MeshBasicMaterial::depth_write(
  self : MeshBasicMaterial,
) -> Bool =
  #| (self) => self.depthWrite

///|
pub extern "js" fn MeshBasicMaterial::set_depth_write(
  self : MeshBasicMaterial,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.depthWrite = value; }

///|
pub extern "js" fn MeshBasicMaterial::dispose(self : MeshBasicMaterial) -> Unit =
  #| (self) => self.dispose()

///|
pub extern "js" fn MeshBasicMaterial::mark_needs_update(
  self : MeshBasicMaterial,
) -> Unit =
  #| (self) => { self.needsUpdate = true; }