1 ;;; guile-irrlicht --- FFI bindings for Irrlicht Engine
2 ;;; Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
4 ;;; This file is part of guile-irrlicht.
6 ;;; Guile-irrlicht is free software; you can redistribute it and/or modify
7 ;;; it under the terms of the GNU Lesser General Public License as
8 ;;; published by the Free Software Foundation; either version 3 of the
9 ;;; License, or (at your option) any later version.
11 ;;; Guile-irrlicht is distributed in the hope that it will be useful, but
12 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 ;;; General Public License for more details.
16 ;;; You should have received a copy of the GNU Lesser General Public
17 ;;; License along with guile-irrlicht. If not, see
18 ;;; <http://www.gnu.org/licenses/>.
21 ;;; Irrlicht 01.HelloWorld example
22 ;;; http://irrlicht.sourceforge.net/docu/example001.html
25 (use-modules (irrlicht)
28 (define (media-path file)
29 (let ((current-path (dirname (current-filename))))
30 (string-join (list current-path "media" file) file-name-separator-string)))
32 ;; start up the engine
36 (make <dimension2du> #:args '(640 480))))
38 (set-window-caption device "Hello World! - Irrlicht Engine Demo")
40 (define driver (get-video-driver device))
41 (define scene-manager (get-scene-manager device))
42 (define gui-env (get-gui-environment device))
47 "Hello World! This is the Irrlicht Software renderer!"
48 (make <recti> #:args '(10 10 260 22))
51 ;; load a Quake2 model
52 (define mesh (get-mesh scene-manager (media-path "sydney.md2")))
53 (define node (add-animated-mesh-scene-node scene-manager mesh))
54 (set-material-flag node EMF-LIGHTING #f)
55 (set-md2-animation node EMAT-STAND)
56 (set-material-texture node 0 (get-texture driver (media-path "sydney.bmp")))
59 (let ((position (make <vector3df> #:args '(0 30 -40)))
60 (lookat (make <vector3df> #:args '(0 5 0))))
61 (add-camera-scene-node scene-manager node position lookat))
64 (let ((back-buffer #t)
66 (color (make <s-color> #:args '(255 100 101 140))))
68 (begin-scene driver back-buffer z-buffer color)
69 (draw-all scene-manager)