;;;; protocol.lisp (in-package #:wheelwork) (defgeneric boot (app) (:documentation "Specialized for each subclass of APPLICATION. Responsble for setting the app up once the system resoruces are avaialble.")) (defgeneric shutdown (app) (:documentation "Specialzied for each subclass of APPLICATION. Called just before cleanup.") (:method ((any t)) nil)) (defgeneric cleanup (thing) (:documentation "Clean up applications, textures, and other foreign resources. Called after shutodown.") (:method ((any t)) nil)) (defgeneric render (thing) (:documentation "Renders thing for visual display.")) (defgeneric model-matrix (thing) (:documentation "Returns the model matrix for THING, representing its position, scale, and orientation in the scene")) (defgeneric ensure-loaded (asset) (:documentation "Ensures that the asset is loaded into memory and ready for use. Returns the asset.")) (defgeneric width (thing) (:documentation "Returns the effective width, in screen coordinates, of the object in question")) (defgeneric (setf width) (new-width thing) (:documentation "Sets the effective width of thing to new-width.")) (defgeneric height (thing) (:documentation "Returns effective height, in screen coordinates, of the object in question.")) (defgeneric (setf height) (new-height thing) (:documentation "sets the effective height of thing to new-height")) (defgeneric rotation (thing) (:documentation "Rotational angle of thing in radians about its center.")) (defgeneric (setf rotation) (newval thing)) (defgeneric x (thing) (:documentation "X position of the bottom left corner in scaled coordinates")) (defgeneric (setf x) (newval thing)) (defgeneric y (thing) (:documentation "Y position of bottom left corner in scaled coordinates")) (defgeneric (setf y) (newval thing)) (defgeneric scale-x (thing) (:documentation "Horizontal scale factor")) (defgeneric (setf scale-x) (newvval thing)) (defgeneric scale-y (thing) (:documentation "Vertical Scale Vactor")) (defgeneric (setf scale-y) (newval thing)) (defgeneric get-rect (affine) (:documentation "Returns a list of vectors representing the path of the smallest rectangle that encloses the affine-unit. The rectangle is scaled and rotated. These vectors have been made using 3D-VECTORS:VEC"))