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

///|
#external
pub type Box2

///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn Box2::Box2() -> Box2 = "box2"

///|
pub extern "js" fn Box2::min(self : Box2) -> Vector2 =
  #| (self) => self.min

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

///|
pub extern "js" fn Box2::max(self : Box2) -> Vector2 =
  #| (self) => self.max

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

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

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

///|
pub extern "js" fn Box2::equals(self : Box2, other : Box2) -> Bool =
  #| (self, other) => self.equals(other)

///|
pub extern "js" fn Box2::set(self : Box2, min : Vector2, max : Vector2) -> Box2 =
  #| (self, min, max) => self.set(min, max)

///|
pub extern "js" fn Box2::set_from_points(
  self : Box2,
  points : FixedArray[Vector2],
) -> Box2 =
  #| (self, points) => self.setFromPoints(points)

///|
pub extern "js" fn Box2::set_from_center_and_size(
  self : Box2,
  center : Vector2,
  size : Vector2,
) -> Box2 =
  #| (self, center, size) => self.setFromCenterAndSize(center, size)

///|
pub extern "js" fn Box2::make_empty(self : Box2) -> Box2 =
  #| (self) => self.makeEmpty()

///|
pub extern "js" fn Box2::is_empty(self : Box2) -> Bool =
  #| (self) => self.isEmpty()

///|
pub extern "js" fn Box2::get_center(self : Box2, target : Vector2) -> Vector2 =
  #| (self, target) => self.getCenter(target)

///|
pub extern "js" fn Box2::get_size(self : Box2, target : Vector2) -> Vector2 =
  #| (self, target) => self.getSize(target)

///|
pub extern "js" fn Box2::expand_by_point(self : Box2, point : Vector2) -> Box2 =
  #| (self, point) => self.expandByPoint(point)

///|
pub extern "js" fn Box2::expand_by_vector(
  self : Box2,
  vector : Vector2,
) -> Box2 =
  #| (self, vector) => self.expandByVector(vector)

///|
pub extern "js" fn Box2::expand_by_scalar(self : Box2, scalar : Double) -> Box2 =
  #| (self, scalar) => self.expandByScalar(scalar)

///|
pub extern "js" fn Box2::contains_point(self : Box2, point : Vector2) -> Bool =
  #| (self, point) => self.containsPoint(point)

///|
pub extern "js" fn Box2::contains_box(self : Box2, box : Box2) -> Bool =
  #| (self, box) => self.containsBox(box)

///|
pub extern "js" fn Box2::intersects_box(self : Box2, box : Box2) -> Bool =
  #| (self, box) => self.intersectsBox(box)

///|
pub extern "js" fn Box2::get_parameter(
  self : Box2,
  point : Vector2,
  target : Vector2,
) -> Vector2 =
  #| (self, point, target) => self.getParameter(point, target)

///|
pub extern "js" fn Box2::clamp_point(
  self : Box2,
  point : Vector2,
  target : Vector2,
) -> Vector2 =
  #| (self, point, target) => self.clampPoint(point, target)

///|
pub extern "js" fn Box2::distance_to_point(
  self : Box2,
  point : Vector2,
) -> Double =
  #| (self, point) => self.distanceToPoint(point)

///|
pub extern "js" fn Box2::intersect(self : Box2, box : Box2) -> Box2 =
  #| (self, box) => self.intersect(box)

///|
pub extern "js" fn Box2::union(self : Box2, box : Box2) -> Box2 =
  #| (self, box) => self.union(box)

///|
pub extern "js" fn Box2::translate(self : Box2, offset : Vector2) -> Box2 =
  #| (self, offset) => self.translate(offset)