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

///|
#external
pub type SelectionBox

///|
#module("@mizchi/three-mbt/modeling-edit")
pub extern "js" fn SelectionBox::SelectionBox(
  camera : Camera,
  scene : Scene,
  depth : Double,
) -> SelectionBox = "selectionBox"

///|
pub extern "js" fn SelectionBox::camera(self : SelectionBox) -> Camera =
  #| (self) => self.camera

///|
pub extern "js" fn SelectionBox::set_camera(
  self : SelectionBox,
  value : Camera,
) -> Unit =
  #| (self, value) => { self.camera = value; }

///|
pub extern "js" fn SelectionBox::scene(self : SelectionBox) -> Scene =
  #| (self) => self.scene

///|
pub extern "js" fn SelectionBox::set_scene(
  self : SelectionBox,
  value : Scene,
) -> Unit =
  #| (self, value) => { self.scene = value; }

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

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

///|
pub extern "js" fn SelectionBox::start_point(self : SelectionBox) -> Vector3 =
  #| (self) => self.startPoint

///|
pub extern "js" fn SelectionBox::end_point(self : SelectionBox) -> Vector3 =
  #| (self) => self.endPoint

///|
pub extern "js" fn SelectionBox::select(
  self : SelectionBox,
  start : Vector3,
  end : Vector3,
) -> FixedArray[Object3D] =
  #| (self, start, end) => self.select(start, end).slice()

///|
pub extern "js" fn SelectionBox::collection(
  self : SelectionBox,
) -> FixedArray[Object3D] =
  #| (self) => self.collection.slice()

///|
pub extern "js" fn SelectionBox::instance_ids(
  self : SelectionBox,
  mesh : InstancedMesh,
) -> FixedArray[Int] =
  #| (self, mesh) => (self.instances[mesh.uuid] ?? []).slice()

///|
pub extern "js" fn SelectionBox::batch_ids(
  self : SelectionBox,
  mesh : BatchedMesh,
) -> FixedArray[BatchedInstanceId] =
  #| (self, mesh) => (self.batches[mesh.uuid] ?? []).slice()