]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - examples/01-hello-world.scm
Quit regular expressions
[guile-irrlicht.git] / examples / 01-hello-world.scm
index 4029b7ec23a15c16c577ea99607460cd7d83b769..38f54a3b9355f51caef4e0fc0f442f67db93b79e 100644 (file)
 ;;; http://irrlicht.sourceforge.net/docu/example001.html
 
 
-(use-modules (irrlicht))
+(use-modules (irrlicht)
+             (oop goops))
+
+(define (media-path file)
+  (let ((current-path (dirname (current-filename))))
+    (string-join (list current-path "media" file) file-name-separator-string)))
 
 ;; start up the engine
 (define device
   (create-device
-   #:device-type 'software
-   #:window-size '(640 480)))
-(when (not device)
-  (exit #f))
+   EDT-SOFTWARE
+   (make <dimension2du> #:args '(640 480))))
 
-(set-window-caption! device "Hello World! - Irrlicht Engine Demo")
+(set-window-caption device "Hello World! - Irrlicht Engine Demo")
 
 (define driver (get-video-driver device))
 (define scene-manager (get-scene-manager device))
 (define gui-env (get-gui-environment device))
 
 ;; static text
-(add-static-text!
+(add-static-text
  gui-env
  "Hello World! This is the Irrlicht Software renderer!"
'(10 10 260 22)
- #:border #t)
(make <recti> #:args '(10 10 260 22))
+ #t)
 
 ;; load a Quake2 model
-(define mesh (get-mesh scene-manager "media/sydney.md2"))
-(when (is-empty? mesh)
-  (drop! device)
-  (exit #f))
-
-(define node (add-animated-mesh-scene-node! scene-manager mesh))
-(when node
-  (set-material-flag! node 'lighting #f)
-  (set-md2-animation! node 'stand)
-  (set-material-texture! node 0 (get-texture driver "media/sydney.bmp")))
+(define mesh (get-mesh scene-manager (media-path "sydney.md2")))
+(define node (add-animated-mesh-scene-node scene-manager mesh))
+(set-material-flag node EMF-LIGHTING #f)
+(set-md2-animation node EMAT-STAND)
+(set-material-texture node 0 (get-texture driver (media-path "sydney.bmp")))
 
 ;; place camera
-(add-camera-scene-node! scene-manager #:position '(0 30 -40) #:lookat '(0 5 0))
+(let ((position (make <vector3df> #:args '(0 30 -40)))
+      (lookat (make <vector3df> #:args '(0 5 0))))
+  (add-camera-scene-node scene-manager node position lookat))
 
 ;; draw everything
-(while (run device)
-  (begin-scene driver #:color '(255 100 101 140))
-  (draw-all scene-manager)
-  (draw-all gui-env)
-  (end-scene driver))
+(let ((back-buffer #t)
+      (z-buffer #t)
+      (color (make <color> #:args '(255 100 101 140))))
+  (while (run device)
+    (begin-scene driver back-buffer z-buffer color)
+    (draw-all scene-manager)
+    (draw-all gui-env)
+    (end-scene driver)))
 
 ;; delete device
-(drop! device)
+(drop device)
 (exit #t)