<?xml version="1.0"?>
<paste-with-annotations>
  <paste>
    <number>
      <integer>52876</integer>
    </number>
    <user>
      <string>baggles</string>
    </user>
    <title>
      <string>closuresclosuresclosures</string>
    </title>
    <contents>
      <string>(let ((current-craft (make-model-uri :pathname #P&quot;crafts/crafts.lisp&quot; :model-name &quot;ray&quot;))
              (draw-layers (list 1)))
          (make-vbox ()
           (make-hbox (:column-widths '((:expand . 400)
                                        (:expand . 100)))
             (make-osd-viewport (:width 400 :height 300)
               (gl:with-projection-matrix
                   ((glu:perspective *fov* (float 4/3) (float 1/16) 16.0))
                 (gl:with-push-attrib (gl:+depth-buffer-bit+)
                   (gl:enable gl:+depth-test+)
                   (gl:with-push-matrix
                     (gl:load-identity)
                     (gl:translate-f 0 0 -8)
                     (gl:rotate-f 45 -1 0 0)
                     (gl:rotate-f (* (glfw:get-time) 15) 0 0 1)
                     (let ((*draw-layers* draw-layers))
                       (draw (get-model current-craft)))))))
             (let ((model-uris (remove-if #'(lambda (model-uri) (slot-boundp (get-model model-uri) 'matrix))
                                          (load-model-file #P&quot;crafts/crafts.lisp&quot;))))
               (make-instance
                'osd-container
                :row-heights (make-list (length model-uris) :initial-element '(:expand . 10))
                :contents
                (mapcar #'(lambda (model-uri) 
                            (list
                             (make-button () (model-uri-model-name model-uri)
                               (setf current-craft model-uri))))
                        model-uris))))
           (flet ((toggle-layer (osd-element layer)
                    (let ((style (if (find layer draw-layers)
                                     (progn (setf draw-layers (delete layer draw-layers))
                                            :button)
                                     (progn (push layer draw-layers)
                                            :depressed-button))))
                      (set-osd-element-style osd-element style))))
             (macrolet ((layer-toggle (layer)
                          `(let (button)
                             (setf button (make-button (:style (if (find ,layer draw-layers)
                                                                   :depressed-button
                                                                   :button))
                                              ,(format nil &quot;~a&quot; layer)
                                            (toggle-layer button ,layer)))))) 
              (make-hbox ()
                (make-label &quot;Draw Layers&quot;)
                (layer-toggle 1)
                (layer-toggle 2))))))


;; makes this: http://wvr.me.uk/picture/16116?width=808</string>
    </contents>
    <universal-time>
      <integer>3407241197</integer>
    </universal-time>
    <channel>
      <string>#lispcafe</string>
    </channel>
    <colorization-mode>
      <string></string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <null/>
    </is-unicode>
  </paste>
</paste-with-annotations>