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

///|
#external
pub type InterleavedBufferAttribute

///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn InterleavedBufferAttribute::InterleavedBufferAttribute(
  data : InterleavedBuffer,
  item_size : Int,
  offset : Int,
  normalized : Bool,
) -> InterleavedBufferAttribute = "interleavedBufferAttribute"

///|
pub fn InterleavedBufferAttribute::as_buffer_attribute(
  self : InterleavedBufferAttribute,
) -> BufferAttribute = "%identity"

///|
pub extern "js" fn InterleavedBufferAttribute::data(
  self : InterleavedBufferAttribute,
) -> InterleavedBuffer =
  #| (self) => self.data

///|
pub extern "js" fn InterleavedBufferAttribute::offset(
  self : InterleavedBufferAttribute,
) -> Int =
  #| (self) => self.offset

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

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

///|
pub extern "js" fn InterleavedBufferAttribute::item_size(
  self : InterleavedBufferAttribute,
) -> Int =
  #| (self) => self.itemSize

///|
pub extern "js" fn InterleavedBufferAttribute::count(
  self : InterleavedBufferAttribute,
) -> Int =
  #| (self) => self.count

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

///|
pub extern "js" fn InterleavedBufferAttribute::set_x(
  self : InterleavedBufferAttribute,
  index : Int,
  value : Double,
) -> InterleavedBufferAttribute =
  #| (self, index, value) => self.setX(index, value)

///|
pub extern "js" fn InterleavedBufferAttribute::set_y(
  self : InterleavedBufferAttribute,
  index : Int,
  value : Double,
) -> InterleavedBufferAttribute =
  #| (self, index, value) => self.setY(index, value)

///|
pub extern "js" fn InterleavedBufferAttribute::set_z(
  self : InterleavedBufferAttribute,
  index : Int,
  value : Double,
) -> InterleavedBufferAttribute =
  #| (self, index, value) => self.setZ(index, value)

///|
pub extern "js" fn InterleavedBufferAttribute::set_w(
  self : InterleavedBufferAttribute,
  index : Int,
  value : Double,
) -> InterleavedBufferAttribute =
  #| (self, index, value) => self.setW(index, value)

///|
pub extern "js" fn InterleavedBufferAttribute::set_xy(
  self : InterleavedBufferAttribute,
  index : Int,
  x : Double,
  y : Double,
) -> InterleavedBufferAttribute =
  #| (self, index, x, y) => self.setXY(index, x, y)

///|
pub extern "js" fn InterleavedBufferAttribute::set_xyz(
  self : InterleavedBufferAttribute,
  index : Int,
  x : Double,
  y : Double,
  z : Double,
) -> InterleavedBufferAttribute =
  #| (self, index, x, y, z) => self.setXYZ(index, x, y, z)

///|
pub extern "js" fn InterleavedBufferAttribute::set_xyzw(
  self : InterleavedBufferAttribute,
  index : Int,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> InterleavedBufferAttribute =
  #| (self, index, x, y, z, w) => self.setXYZW(index, x, y, z, w)

///|
pub extern "js" fn InterleavedBufferAttribute::get_x(
  self : InterleavedBufferAttribute,
  index : Int,
) -> Double =
  #| (self, index) => self.getX(index)

///|
pub extern "js" fn InterleavedBufferAttribute::get_y(
  self : InterleavedBufferAttribute,
  index : Int,
) -> Double =
  #| (self, index) => self.getY(index)

///|
pub extern "js" fn InterleavedBufferAttribute::get_z(
  self : InterleavedBufferAttribute,
  index : Int,
) -> Double =
  #| (self, index) => self.getZ(index)

///|
pub extern "js" fn InterleavedBufferAttribute::get_w(
  self : InterleavedBufferAttribute,
  index : Int,
) -> Double =
  #| (self, index) => self.getW(index)

///|
pub extern "js" fn InterleavedBufferAttribute::get_component(
  self : InterleavedBufferAttribute,
  index : Int,
  component : Int,
) -> Double =
  #| (self, index, component) => self.getComponent(index, component)

///|
pub extern "js" fn InterleavedBufferAttribute::set_component(
  self : InterleavedBufferAttribute,
  index : Int,
  component : Int,
  value : Double,
) -> InterleavedBufferAttribute =
  #| (self, index, component, value) => self.setComponent(index, component, value)

///|
pub extern "js" fn InterleavedBufferAttribute::apply_matrix4(
  self : InterleavedBufferAttribute,
  matrix : Matrix4,
) -> InterleavedBufferAttribute =
  #| (self, matrix) => self.applyMatrix4(matrix)

///|
pub extern "js" fn InterleavedBufferAttribute::apply_normal_matrix(
  self : InterleavedBufferAttribute,
  matrix : Matrix3,
) -> InterleavedBufferAttribute =
  #| (self, matrix) => self.applyNormalMatrix(matrix)

///|
pub extern "js" fn InterleavedBufferAttribute::transform_direction(
  self : InterleavedBufferAttribute,
  matrix : Matrix4,
) -> InterleavedBufferAttribute =
  #| (self, matrix) => self.transformDirection(matrix)

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

///|
pub extern "js" fn InterleavedBufferAttribute::clone(
  self : InterleavedBufferAttribute,
) -> InterleavedBufferAttribute =
  #| (self) => self.clone({})