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

///|
#external
pub type Spherical

///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn Spherical::Spherical(
  radius : Double,
  phi : Double,
  theta : Double,
) -> Spherical = "spherical"

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

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

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

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

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

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

///|
pub extern "js" fn Spherical::set_from_vector3(
  self : Spherical,
  vector : Vector3,
) -> Spherical =
  #| (self, vector) => self.setFromVector3(vector)

///|
pub extern "js" fn Spherical::make_safe(self : Spherical) -> Spherical =
  #| (self) => self.makeSafe()

///|
pub extern "js" fn Spherical::set(
  self : Spherical,
  radius : Double,
  phi : Double,
  theta : Double,
) -> Spherical =
  #| (self, radius, phi, theta) => self.set(radius, phi, theta)

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

///|
pub extern "js" fn Spherical::copy(
  self : Spherical,
  other : Spherical,
) -> Spherical =
  #| (self, other) => self.copy(other)

///|
pub extern "js" fn Spherical::set_from_cartesian_coords(
  self : Spherical,
  x : Double,
  y : Double,
  z : Double,
) -> Spherical =
  #| (self, x, y, z) => self.setFromCartesianCoords(x, y, z)