Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.32 KB | None | 0 0
  1. (defclass frame ()
  2.   ((init :accessor init
  3.           :initform (running-time))
  4.    (now :accessor now
  5.         :initform (running-time))
  6.    (before :accessor before
  7.            :initform (running-time))
  8.    (dt :accessor dt
  9.        :initform 0.05)
  10.    (accumulator :accessor accumulator
  11.                 :initform 0)
  12.    (units-per-sec :reader units-per-sec
  13.                   :initform internal-time-units-per-second)
  14.    (update-hz :reader update-hz
  15.               :initform 60)
  16.    (frames :accessor frames
  17.            :initform 0)
  18.    (interval :reader interval
  19.              :initarg :interval
  20.              :initform 5.0)))
  21.  
  22. (defgeneric step-frame (frame &optional debugp))
  23.  
  24. (defun running-time ()
  25.   (get-internal-real-time))
  26.  
  27. (defmethod step-frame ((frame frame) &optional (debugp nil))
  28.   (with-slots (init
  29.                now
  30.                before
  31.                dt
  32.                accumulator
  33.                units-per-sec
  34.                update-hz
  35.                frames
  36.                interval) frame
  37.     (setf now (running-time)
  38.           before now)
  39.     (incf frames)
  40.     (incf accumulator dt)
  41.     (let ((seconds (/ (- now init) units-per-sec)))
  42.       (when (and debugp (> seconds interval))
  43.         (format t "FPS: ~,2f~%" (/ frames (float interval)))
  44.         (setf frames 0
  45.               init (running-time))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement