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

///|
#external
pub type WebGLRenderTarget

///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn WebGLRenderTarget::WebGLRenderTarget(
  width : Int,
  height : Int,
) -> WebGLRenderTarget = "webGLRenderTarget"

///|
pub extern "js" fn WebGLRenderTarget::texture(
  self : WebGLRenderTarget,
) -> Texture =
  #| (self) => self.texture

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

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

///|
pub extern "js" fn WebGLRenderTarget::set_size(
  self : WebGLRenderTarget,
  width : Int,
  height : Int,
) -> Unit =
  #| (self, width, height) => self.setSize(width, height)

///|
pub extern "js" fn WebGLRenderTarget::dispose(self : WebGLRenderTarget) -> Unit =
  #| (self) => self.dispose()

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

///|
pub extern "js" fn WebGLRenderTarget::set_samples(
  self : WebGLRenderTarget,
  value : Int,
) -> Unit =
  #| (self, value) => { self.samples = value; }

///|
pub extern "js" fn WebGLRenderTarget::depth_buffer(
  self : WebGLRenderTarget,
) -> Bool =
  #| (self) => self.depthBuffer

///|
pub extern "js" fn WebGLRenderTarget::set_depth_buffer(
  self : WebGLRenderTarget,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.depthBuffer = value; }

///|
pub extern "js" fn WebGLRenderTarget::stencil_buffer(
  self : WebGLRenderTarget,
) -> Bool =
  #| (self) => self.stencilBuffer

///|
pub extern "js" fn WebGLRenderTarget::set_stencil_buffer(
  self : WebGLRenderTarget,
  value : Bool,
) -> Unit =
  #| (self, value) => { self.stencilBuffer = value; }

///|
pub extern "js" fn WebGLRenderTarget::textures(
  self : WebGLRenderTarget,
) -> FixedArray[Texture] =
  #| (self) => self.textures.slice()

///|
extern "js" fn WebGLRenderTarget::ffi_depth_texture(
  self : WebGLRenderTarget,
) -> Nullable[DepthTexture] =
  #| (self) => self.depthTexture

///|
pub fn WebGLRenderTarget::depth_texture(
  self : WebGLRenderTarget,
) -> DepthTexture? {
  self.ffi_depth_texture().to_option()
}

///|
extern "js" fn WebGLRenderTarget::ffi_set_depth_texture(
  self : WebGLRenderTarget,
  value : Nullable[DepthTexture],
) -> Unit =
  #| (self, value) => { self.depthTexture = value; }

///|
pub fn WebGLRenderTarget::set_depth_texture(
  self : WebGLRenderTarget,
  value : DepthTexture?,
) -> Unit {
  self.ffi_set_depth_texture(Nullable::from_option(value))
}