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

///|
#external
pub type AnimationMixer

///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn AnimationMixer::AnimationMixer(
  root : Object3D,
) -> AnimationMixer = "animationMixer"

///|
pub extern "js" fn AnimationMixer::time_scale(self : AnimationMixer) -> Double =
  #| (self) => self.timeScale

///|
pub extern "js" fn AnimationMixer::set_time_scale(
  self : AnimationMixer,
  value : Double,
) -> Unit =
  #| (self, value) => { self.timeScale = value; }

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

///|
pub extern "js" fn AnimationMixer::clip_action(
  self : AnimationMixer,
  clip : AnimationClip,
) -> AnimationAction =
  #| (self, clip) => self.clipAction(clip)

///|
pub extern "js" fn AnimationMixer::update(
  self : AnimationMixer,
  delta_seconds : Double,
) -> AnimationMixer =
  #| (self, delta_seconds) => self.update(delta_seconds)

///|
pub extern "js" fn AnimationMixer::set_time(
  self : AnimationMixer,
  time : Double,
) -> AnimationMixer =
  #| (self, time) => self.setTime(time)

///|
pub extern "js" fn AnimationMixer::stop_all_action(
  self : AnimationMixer,
) -> AnimationMixer =
  #| (self) => self.stopAllAction()

///|
pub extern "js" fn AnimationMixer::uncache_root(
  self : AnimationMixer,
  root : Object3D,
) -> Unit =
  #| (self, root) => self.uncacheRoot(root)

///|
pub extern "js" fn AnimationMixer::uncache_clip(
  self : AnimationMixer,
  clip : AnimationClip,
) -> Unit =
  #| (self, clip) => self.uncacheClip(clip)

///|
pub extern "js" fn AnimationMixer::stats(
  self : AnimationMixer,
) -> AnimationMixerStats =
  #| (self) => self.stats

///|
extern "js" fn AnimationMixer::ffi_existing_action(
  self : AnimationMixer,
  clip : AnimationClip,
) -> Nullable[AnimationAction] =
  #| (self, clip) => self.existingAction(clip)

///|
pub fn AnimationMixer::existing_action(
  self : AnimationMixer,
  clip : AnimationClip,
) -> AnimationAction? {
  self.ffi_existing_action(clip).to_option()
}

///|
extern "js" fn AnimationMixer::ffi_existing_action_for_root(
  self : AnimationMixer,
  clip : AnimationClip,
  root : Object3D,
) -> Nullable[AnimationAction] =
  #| (self, clip, root) => self.existingAction(clip, root)

///|
pub fn AnimationMixer::existing_action_for_root(
  self : AnimationMixer,
  clip : AnimationClip,
  root : Object3D,
) -> AnimationAction? {
  self.ffi_existing_action_for_root(clip, root).to_option()
}

///|
pub extern "js" fn AnimationMixer::get_root(self : AnimationMixer) -> Object3D =
  #| (self) => self.getRoot()

///|
pub extern "js" fn AnimationMixer::uncache_action(
  self : AnimationMixer,
  clip : AnimationClip,
) -> Unit =
  #| (self, clip) => self.uncacheAction(clip)

///|
pub extern "js" fn AnimationMixer::clip_action_for_root(
  self : AnimationMixer,
  clip : AnimationClip,
  root : Object3D,
  blend_mode : AnimationBlendMode,
) -> AnimationAction =
  #| (self, clip, root, blend_mode) => self.clipAction(clip, root, blend_mode)

///|
pub extern "js" fn AnimationMixer::uncache_action_for_root(
  self : AnimationMixer,
  clip : AnimationClip,
  root : Object3D,
) -> Unit =
  #| (self, clip, root) => self.uncacheAction(clip, root)