Paste number 52876: closuresclosuresclosures

Paste number 52876: closuresclosuresclosures
Pasted by: baggles
7 months, 2 weeks ago
#lispcafe | Context in IRC logs
Paste contents:
Raw Source | XML | Display As
(let ((current-craft (make-model-uri :pathname #P"crafts/crafts.lisp" :model-name "ray"))
              (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"crafts/crafts.lisp")
)
)
)

               (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 "~a" layer)
                                            (toggle-layer button ,layer)
)
)
)
)
)

              (make-hbox ()
                (make-label "Draw Layers")
                (layer-toggle 1)
                (layer-toggle 2)
)
)
)
)
)



;; makes this: http://wvr.me.uk/picture/16116?width=808

This paste has no annotations.

Colorize as:
Show Line Numbers

Ads absolutely not by Google

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.