]> git.jsancho.org Git - gacela.git/blobdiff - gacela_draw.lisp
(no commit message)
[gacela.git] / gacela_draw.lisp
index 4b6f58fb126ec746a7c6b0b9d995226ae29bc03e..a23c735d98947e58c1a6660030708adf420a7959 100644 (file)
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-(in-package :gacela)
+
+(eval-when (compile load eval)
+          (when (not (find-package 'gacela)) (make-package 'gacela :nicknames '(gg) :use '(lisp)))
+          (in-package 'gacela :nicknames '(gg) :use '(lisp)))
+
 
 (defmacro with-color (color &body code)
   (cond (color
 (defun draw-square (&key (size 1) texture)
   (draw-rectangle size size :texture texture))
 
-(defun draw-cube (&key size texture texture-1 texture-2 texture-3 texture-4 texture-5 texture-6)
+(defun draw-cube (&key (size 1) texture texture-1 texture-2 texture-3 texture-4 texture-5 texture-6)
   (let ((-size (neg size)))
     (progn-textures
      (glNormal3f 0 0 1)
 (defun translate (x y &optional (z 0))
   (glTranslatef x y z))
 
-(defun rotate (xrot yrot zrot)
+(defun rotate (&rest rot)
+  (cond ((3d-mode?) (apply #'3d-rotate rot))
+       (t (apply #'2d-rotate rot))))
+
+(defun 3d-rotate (xrot yrot zrot)
   (glRotatef xrot 1 0 0)
   (glRotatef yrot 0 1 0)
   (glRotatef zrot 0 0 1))
 
 (defun 2d-rotate (rot)
-  (rotate 0 0 rot))
\ No newline at end of file
+  (glRotatef rot 0 0 1))
+
+(defun to-origin ()
+  (glLoadIdentity)
+  (cond ((3d-mode?) (camera-look))))
+
+(let ((camera-eye '(0 0 0)) (camera-center '(0 0 -100)) (camera-up '(0 1 0)))
+  (defun set-camera (&key eye center up)
+    (cond (eye (setq camera-eye eye)))
+    (cond (center (setq camera-center center)))
+    (cond (up (setq camera-up up))))
+
+  (defun camera-look ()
+    (apply #'gluLookAt (concatenate 'list camera-eye camera-center camera-up))))