;;-*-Lisp-*-
(in-package goal)

;; definition of type curve
(deftype curve (structure)
  ((cverts     (inline-array vector)  :offset-assert   0)
   (num-cverts int32                  :offset-assert   4)
   (knots      (pointer float)        :offset-assert   8)
   (num-knots  int32                  :offset-assert  12)
   (length     float                  :offset-assert  16)
   )
  :method-count-assert 9
  :size-assert         #x14
  :flag-assert         #x900000014
  )

;; definition for method 3 of type curve
(defmethod inspect curve ((obj curve))
  (format #t "[~8x] ~A~%" obj 'curve)
  (format #t "~Tcverts: #x~X~%" (-> obj cverts))
  (format #t "~Tnum-cverts: ~D~%" (-> obj num-cverts))
  (format #t "~Tknots: #x~X~%" (-> obj knots))
  (format #t "~Tnum-knots: ~D~%" (-> obj num-knots))
  (format #t "~Tlength: ~f~%" (-> obj length))
  obj
  )

;; definition of type border-plane
(deftype border-plane (basic)
  ((name   symbol         :offset-assert   4)
   (action basic          :offset-assert   8)
   (slot   int8           :offset-assert  12)
   (trans  vector :inline :offset-assert  16)
   (normal vector :inline :offset-assert  32)
   )
  :method-count-assert 11
  :size-assert         #x30
  :flag-assert         #xb00000030
  (:methods
    (debug-draw! (_type_) none 9)
    (point-past-plane? (_type_ vector) symbol 10)
    )
  )

;; definition for method 3 of type border-plane
(defmethod inspect border-plane ((obj border-plane))
  (format #t "[~8x] ~A~%" obj (-> obj type))
  (format #t "~Tname: ~A~%" (-> obj name))
  (format #t "~Taction: ~A~%" (-> obj action))
  (format #t "~Tslot: ~D~%" (-> obj slot))
  (format #t "~Ttrans: ~`vector`P~%" (-> obj trans))
  (format #t "~Tnormal: ~`vector`P~%" (-> obj normal))
  obj
  )

;; failed to figure out what this is:
0
