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

///|
#external
pub type PointsMaterial

///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn PointsMaterial::PointsMaterial(
  color : Int,
  size : Double,
) -> PointsMaterial = "pointsMaterial"

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

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

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

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

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

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

///|
pub extern "js" fn PointsMaterial::size(self : PointsMaterial) -> Double =
  #| (self) => self.size

///|
pub extern "js" fn PointsMaterial::set_size(
  self : PointsMaterial,
  value : Double,
) -> Unit =
  #| (self, value) => { self.size = value; }

///|
pub extern "js" fn PointsMaterial::size_attenuation(
  self : PointsMaterial,
) -> Bool =
  #| (self) => self.sizeAttenuation

///|
pub extern "js" fn PointsMaterial::set_size_attenuation(
  self : PointsMaterial,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.sizeAttenuation = value; }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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