X-Git-Url: https://git.jsancho.org/?p=guile-irrlicht.git;a=blobdiff_plain;f=irrlicht%2Firr.scm;h=6fcd7155b4fc32baeaf294b46360c825de09cc2c;hp=f69701c278842ea306e13948f05d8dd0a7a73490;hb=002163db179e6409ea5744f1b8194b9f758054d8;hpb=37aba303eccc24a407f1b5b0af81623e47b89a22 diff --git a/irrlicht/irr.scm b/irrlicht/irr.scm index f69701c..6fcd715 100644 --- a/irrlicht/irr.scm +++ b/irrlicht/irr.scm @@ -21,64 +21,67 @@ (define-module (irrlicht irr) #:use-module (oop goops) #:use-module (irrlicht base) - #:use-module (irrlicht foreign) - #:use-module (irrlicht gui) - #:use-module (irrlicht scene) - #:use-module (irrlicht video)) + #:use-module (irrlicht foreign)) ;; IReferenceCounted -(define-class ()) +(define-class () + (irr-class #:init-value "IReferenceCounted")) -(export ) +(define-method (drop! (obj )) + (let ((drop (get-irrlicht-proc "drop" obj))) + (drop obj))) + +(export drop!) + + +;; SEvent +(define-class () + (irr-class #:init-value "SEvent")) + +(define-method (get-event-gui-caller (event )) + (let ((SGUIEvent_Caller (get-irrlicht-proc "SGUIEvent_Caller" event))) + (SGUIEvent_Caller event))) + +(define-method (get-event-key (event )) + (let ((SKeyInput_Key (get-irrlicht-proc "SKeyInput_Key" event))) + (SKeyInput_Key event))) + +(define-method (get-event-key-pressed (event )) + (let ((SKeyInput_PressedDown (get-irrlicht-proc "SKeyInput_PressedDown" event))) + (SKeyInput_PressedDown event))) + +(define-method (get-event-type (event )) + (let ((EventType (get-irrlicht-proc "EventType" event))) + (EventType event))) + +(export get-event-gui-caller get-event-key get-event-key-pressed get-event-type) ;; IEventReceiver -(define-class ()) - -(export ) - - -;; IrrlichtDevice -(define-class ()) - -(define* (create-device #:key - (device-type 'software) - (window-size '(640 480)) - (bits 16) - (fullscreen #f) - (stencilbuffer #f) - (vsync #f) - (receiver (make ))) - (if (not (is-a? receiver )) - (error - "In procedure create-device: Wrong type argument (expecting ):" - receiver)) - - (make - #:irr-pointer - (irr_createDevice - device-type - window-size - bits - fullscreen - stencilbuffer - vsync - (irr-pointer receiver)))) - -(define-method (get-gui-environment (device )) - (make - #:irr-pointer (irr_IrrlichtDevice_getGUIEnvironment (irr-pointer device)))) - -(define-method (get-scene-manager (device )) - (make - #:irr-pointer (irr_IrrlichtDevice_getSceneManager (irr-pointer device)))) - -(define-method (get-video-driver (device )) - (make - #:irr-pointer (irr_IrrlichtDevice_getVideoDriver (irr-pointer device)))) - -(define-method (set-window-caption! (device ) text) - (irr_IrrlichtDevice_setWindowCaption (irr-pointer device) text)) - -(export create-device get-gui-environment get-scene-manager get-video-driver set-window-caption!) +(define-class () + (irr-class #:init-value "IEventReceiver")) + +(define (make-event-receiver proc-on-event) + (let ((IEventReceiver_make (get-irrlicht-proc "IEventReceiver_make"))) + (IEventReceiver_make proc-on-event))) + +(export make-event-receiver) + + +;; SKeyMap +(define-class () + (irr-class #:init-value "SKeyMap")) + +(export ) + + +;; ITimer +(define-class () + (irr-class #:init-value "ITimer")) + +(define-method (get-time (timer )) + (let ((getTime (get-irrlicht-proc "getTime" timer))) + (getTime timer))) + +(export get-time)