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

///|
#external
pub type Uniform

///|
#module("@mizchi/three-mbt/render-extra")
pub extern "js" fn Uniform::Uniform(value : Double) -> Uniform = "uniform"

///|
#module("@mizchi/three-mbt/render-extra")
pub extern "js" fn Uniform::from_vector2(value : Vector2) -> Uniform = "uniform"

///|
#module("@mizchi/three-mbt/render-extra")
pub extern "js" fn Uniform::from_vector3(value : Vector3) -> Uniform = "uniform"

///|
#module("@mizchi/three-mbt/render-extra")
pub extern "js" fn Uniform::from_vector4(value : Vector4) -> Uniform = "uniform"

///|
#module("@mizchi/three-mbt/render-extra")
pub extern "js" fn Uniform::from_color(value : Color) -> Uniform = "uniform"

///|
#module("@mizchi/three-mbt/render-extra")
pub extern "js" fn Uniform::from_matrix3(value : Matrix3) -> Uniform = "uniform"

///|
#module("@mizchi/three-mbt/render-extra")
pub extern "js" fn Uniform::from_matrix4(value : Matrix4) -> Uniform = "uniform"

///|
pub extern "js" fn Uniform::clone(self : Uniform) -> Uniform =
  #| (self) => self.clone()

///|
extern "js" fn Uniform::ffi_float_value(self : Uniform) -> Nullable[Double] =
  #| (self) => typeof self.value==="number"?self.value:null

///|
pub fn Uniform::float_value(self : Uniform) -> Double? {
  self.ffi_float_value().to_option()
}

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

///|
extern "js" fn Uniform::ffi_vector2_value(self : Uniform) -> Nullable[Vector2] =
  #| (self) => self.value?.isVector2?self.value:null

///|
pub fn Uniform::vector2_value(self : Uniform) -> Vector2? {
  self.ffi_vector2_value().to_option()
}

///|
pub extern "js" fn Uniform::set_vector2(
  self : Uniform,
  value : Vector2,
) -> Unit =
  #| (self, value) => { self.value=value; }

///|
extern "js" fn Uniform::ffi_vector3_value(self : Uniform) -> Nullable[Vector3] =
  #| (self) => self.value?.isVector3?self.value:null

///|
pub fn Uniform::vector3_value(self : Uniform) -> Vector3? {
  self.ffi_vector3_value().to_option()
}

///|
pub extern "js" fn Uniform::set_vector3(
  self : Uniform,
  value : Vector3,
) -> Unit =
  #| (self, value) => { self.value=value; }

///|
extern "js" fn Uniform::ffi_vector4_value(self : Uniform) -> Nullable[Vector4] =
  #| (self) => self.value?.isVector4?self.value:null

///|
pub fn Uniform::vector4_value(self : Uniform) -> Vector4? {
  self.ffi_vector4_value().to_option()
}

///|
pub extern "js" fn Uniform::set_vector4(
  self : Uniform,
  value : Vector4,
) -> Unit =
  #| (self, value) => { self.value=value; }

///|
extern "js" fn Uniform::ffi_color_value(self : Uniform) -> Nullable[Color] =
  #| (self) => self.value?.isColor?self.value:null

///|
pub fn Uniform::color_value(self : Uniform) -> Color? {
  self.ffi_color_value().to_option()
}

///|
pub extern "js" fn Uniform::set_color(self : Uniform, value : Color) -> Unit =
  #| (self, value) => { self.value=value; }

///|
extern "js" fn Uniform::ffi_matrix3_value(self : Uniform) -> Nullable[Matrix3] =
  #| (self) => self.value?.isMatrix3?self.value:null

///|
pub fn Uniform::matrix3_value(self : Uniform) -> Matrix3? {
  self.ffi_matrix3_value().to_option()
}

///|
pub extern "js" fn Uniform::set_matrix3(
  self : Uniform,
  value : Matrix3,
) -> Unit =
  #| (self, value) => { self.value=value; }

///|
extern "js" fn Uniform::ffi_matrix4_value(self : Uniform) -> Nullable[Matrix4] =
  #| (self) => self.value?.isMatrix4?self.value:null

///|
pub fn Uniform::matrix4_value(self : Uniform) -> Matrix4? {
  self.ffi_matrix4_value().to_option()
}

///|
pub extern "js" fn Uniform::set_matrix4(
  self : Uniform,
  value : Matrix4,
) -> Unit =
  #| (self, value) => { self.value=value; }