1 ;;; guile-irrlicht --- FFI bindings for Irrlicht Engine
2 ;;; Copyright (C) 2020 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 (define-module (irrlicht irr)
22 #:use-module (oop goops)
23 #:use-module (irrlicht base)
24 #:use-module (irrlicht foreign))
28 (define-class <reference-counted> (<irrlicht-base>)
29 (irr-class #:init-value "IReferenceCounted"))
31 (define-method (drop! (obj <reference-counted>))
32 (let ((drop (get-irrlicht-proc "drop" obj)))
35 (export <reference-counted> drop!)
39 (define-class <event> (<irrlicht-base>)
40 (irr-class #:init-value "SEvent"))
42 (define-method (get-event-gui-caller (event <event>))
43 (let ((SGUIEvent_Caller (get-irrlicht-proc "SGUIEvent_Caller" event)))
44 (remember-wrapped (SGUIEvent_Caller event))))
46 (define-method (get-event-gui-type (event <event>))
47 (let ((SGUIEvent_EventType (get-irrlicht-proc "SGUIEvent_EventType" event)))
48 (SGUIEvent_EventType event)))
50 (define-method (get-event-key (event <event>))
51 (let ((SKeyInput_Key (get-irrlicht-proc "SKeyInput_Key" event)))
52 (SKeyInput_Key event)))
54 (define-method (get-event-key-pressed (event <event>))
55 (let ((SKeyInput_PressedDown (get-irrlicht-proc "SKeyInput_PressedDown" event)))
56 (SKeyInput_PressedDown event)))
58 (define-method (get-event-type (event <event>))
59 (let ((EventType (get-irrlicht-proc "EventType" event)))
62 (export <event> get-event-gui-caller get-event-gui-type get-event-key get-event-key-pressed
67 (define-class <event-receiver> (<irrlicht-base>)
68 (irr-class #:init-value "IEventReceiver"))
70 (define (make-event-receiver proc-on-event)
71 (let ((IEventReceiver_make (get-irrlicht-proc "IEventReceiver_make")))
72 (IEventReceiver_make proc-on-event)))
74 (export <event-receiver> make-event-receiver)
78 (define-class <key-map> (<irrlicht-base>)
79 (irr-class #:init-value "SKeyMap"))
85 (define-class <timer> (<reference-counted>)
86 (irr-class #:init-value "ITimer"))
88 (define-method (get-time (timer <timer>))
89 (let ((getTime (get-irrlicht-proc "getTime" timer)))
92 (export <timer> get-time)