From edf14e07f9f1db66cb75f10af54551034171725e Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Tue, 26 Jun 2012 21:42:57 +0200 Subject: [PATCH] Now yes, we have views. --- src/gacela.scm | 24 ++++++++++++------------ src/video.scm | 8 ++++---- src/views.scm | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 16 deletions(-) create mode 100644 src/views.scm diff --git a/src/gacela.scm b/src/gacela.scm index 6719f82..8fa9f52 100644 --- a/src/gacela.scm +++ b/src/gacela.scm @@ -50,8 +50,8 @@ define-mob lambda-mob define-checking-mobs) - #:re-export ;(translate - ( get-frame-time + #:re-export (translate + get-frame-time 3d-mode?)) @@ -350,20 +350,20 @@ (lambda (key . args) #f)) (draw-views (cdr views))))) -(define-macro (define-view name content) - `(begin - (hash-set! active-views ',name (lambda () (glmatrix-block ,content))) - ',name)) +;; (define-macro (define-view name content) +;; `(begin +;; (hash-set! active-views ',name (lambda () (glmatrix-block ,content))) +;; ',name)) ;;; Views Primitives -(define-macro (translate x y view-or-z . view) - (let* ((z (if (null? view) 0 view-or-z)) - (view (if (null? view) view-or-z (car view)))) - `(begin - (gltranslate ,x ,y ,z) - ,view))) +;(define-macro (translate x y view-or-z . view) +; (let* ((z (if (null? view) 0 view-or-z)) +; (view (if (null? view) view-or-z (car view)))) +; `(begin +; (gltranslate ,x ,y ,z) +; ,view))) (module-map (lambda (sym var) diff --git a/src/video.scm b/src/video.scm index d3fbdfb..e58fab9 100644 --- a/src/video.scm +++ b/src/video.scm @@ -58,8 +58,8 @@ draw-rectangle draw-square draw-cube - gltranslate - glrotate + translate + rotate to-origin add-light set-camera @@ -374,10 +374,10 @@ (glNormal3f -1 0 0) (draw-quad (list -size -size size) (list -size -size -size) (list -size size -size) (list -size size size) #:texture (or texture-6 texture) #:color (or color-6 color))))) -(define* (gltranslate x y #:optional (z 0)) +(define* (translate x y #:optional (z 0)) (glTranslatef x y z)) -(define* (glrotate #:rest rot) +(define* (rotate #:rest rot) (cond ((3d-mode?) (apply 3d-rotate rot)) (else diff --git a/src/views.scm b/src/views.scm new file mode 100644 index 0000000..4f35b56 --- /dev/null +++ b/src/views.scm @@ -0,0 +1,35 @@ +;;; Gacela, a GNU Guile extension for fast games development +;;; Copyright (C) 2009 by Javier Sancho Fernandez +;;; +;;; This program is free software: you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation, either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see . + + +(define-module (gacela draw) + #:use-module (gacela gacela) + #:use-module ((gacela video) #:renamer (symbol-prefix-proc 'video:)) + #:use-module ((gacela gl) #:select (glPushMatrix glPopMatrix)) + #:use-module (ice-9 optargs)) + +(define-macro (define-view name content) + `(begin + (hash-set! active-views ',name (lambda () (video:glmatrix-block ,content))) + ',name)) + +(define (square . params) + (define-view tmp (apply video:draw-square params))) + +(module-map (lambda (sym var) + (if (not (eq? sym '%module-public-interface)) + (module-export! (current-module) (list sym)))) + (current-module)) -- 2.39.5