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

///|
#external
pub type ExtrudeOptions

///|
#module("@mizchi/three-mbt/geometry")
pub extern "js" fn ExtrudeOptions::ExtrudeOptions() -> ExtrudeOptions = "extrudeOptions"

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

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

///|
pub extern "js" fn ExtrudeOptions::bevel_thickness(
  self : ExtrudeOptions,
) -> Double =
  #| (self) => self.bevelThickness

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

///|
pub extern "js" fn ExtrudeOptions::bevel_size(self : ExtrudeOptions) -> Double =
  #| (self) => self.bevelSize

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

///|
pub extern "js" fn ExtrudeOptions::bevel_offset(
  self : ExtrudeOptions,
) -> Double =
  #| (self) => self.bevelOffset

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

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

///|
pub extern "js" fn ExtrudeOptions::set_steps(
  self : ExtrudeOptions,
  value : Int,
) -> Unit =
  #| (self, value) => { self.steps = value; }

///|
pub extern "js" fn ExtrudeOptions::bevel_segments(self : ExtrudeOptions) -> Int =
  #| (self) => self.bevelSegments

///|
pub extern "js" fn ExtrudeOptions::set_bevel_segments(
  self : ExtrudeOptions,
  value : Int,
) -> Unit =
  #| (self, value) => { self.bevelSegments = value; }

///|
pub extern "js" fn ExtrudeOptions::curve_segments(self : ExtrudeOptions) -> Int =
  #| (self) => self.curveSegments

///|
pub extern "js" fn ExtrudeOptions::set_curve_segments(
  self : ExtrudeOptions,
  value : Int,
) -> Unit =
  #| (self, value) => { self.curveSegments = value; }

///|
pub extern "js" fn ExtrudeOptions::bevel_enabled(self : ExtrudeOptions) -> Bool =
  #| (self) => self.bevelEnabled

///|
pub extern "js" fn ExtrudeOptions::set_bevel_enabled(
  self : ExtrudeOptions,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.bevelEnabled = value; }

///|
extern "js" fn ExtrudeOptions::ffi_extrude_path(
  self : ExtrudeOptions,
) -> Nullable[Curve3] =
  #| (self) => self.extrudePath

///|
pub fn ExtrudeOptions::extrude_path(self : ExtrudeOptions) -> Curve3? {
  self.ffi_extrude_path().to_option()
}

///|
extern "js" fn ExtrudeOptions::ffi_set_extrude_path(
  self : ExtrudeOptions,
  value : Nullable[Curve3],
) -> Unit =
  #| (self, value) => { if (value == null) delete self.extrudePath; else self.extrudePath = value; }

///|
pub fn ExtrudeOptions::set_extrude_path(
  self : ExtrudeOptions,
  value : Curve3?,
) -> Unit {
  self.ffi_set_extrude_path(Nullable::from_option(value))
}

///|
extern "js" fn ExtrudeOptions::ffi_uv_generator(
  self : ExtrudeOptions,
) -> Nullable[UVGenerator] =
  #| (self) => self.UVGenerator

///|
pub fn ExtrudeOptions::uv_generator(self : ExtrudeOptions) -> UVGenerator? {
  self.ffi_uv_generator().to_option()
}

///|
extern "js" fn ExtrudeOptions::ffi_set_uv_generator(
  self : ExtrudeOptions,
  value : Nullable[UVGenerator],
) -> Unit =
  #| (self, value) => { if (value == null) delete self.UVGenerator; else self.UVGenerator = value; }

///|
pub fn ExtrudeOptions::set_uv_generator(
  self : ExtrudeOptions,
  value : UVGenerator?,
) -> Unit {
  self.ffi_set_uv_generator(Nullable::from_option(value))
}