;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/game/game-h.gc")
(defenum pov-camera-flag
  :bitfield #t
  :type int32
  (notify-of-abort 0)
  (allow-abort 1)
  (inherit-orientation 2))

(declare-type pov-camera process-drawable)

(define-extern pov-camera-init-by-other
  (function vector skeleton-group string pov-camera-flag process-drawable pair none :behavior pov-camera)) ;; TODO - not confirmed -- sunken-elevator

;; DECOMP BEGINS

;; The pov-camera is used to move the camera around for the not-quite-cutscenes.
;; for example, the introduction to orbs in geyser, or the camera that shows you where the steps to fire canyon
;; are.
(deftype pov-camera (process-drawable)
  ((cspace-array        cspace-array :overlay-at root)
   (flags               pov-camera-flag)
   (debounce-start-time time-frame)
   (notify-handle       handle)
   (anim-name           string)
   (command-list        pair)
   (mask-to-clear       process-mask)
   (music-volume-movie  float)
   (sfx-volume-movie    float))
  (:state-methods
   pov-camera-abort
   pov-camera-done-playing
   pov-camera-playing
   pov-camera-start-playing
   pov-camera-startup)
  (:methods
   (check-for-abort (_type_) symbol)
   (target-grabbed? (_type_) symbol)
   (pre-startup-callback (_type_) none)
   (target-released? (_type_) symbol)
   (set-stack-size! (_type_) none)))
