]> git.jsancho.org Git - guile-irrlicht.git/commitdiff
add-file-archive! get-file-system get-name
authorJavier Sancho <jsf@jsancho.org>
Thu, 14 May 2020 07:10:39 +0000 (09:10 +0200)
committerJavier Sancho <jsf@jsancho.org>
Thu, 14 May 2020 07:10:39 +0000 (09:10 +0200)
irrlicht.scm
irrlicht/device.scm
irrlicht/foreign.scm
irrlicht/io.scm
irrlicht/video.scm
src/video-driver.cpp

index a51b60c6a21b8efb960b052985daa9974f6e5689..c1e52c2c50d04f3a7f257e740e18758eb5f5eea2 100644 (file)
   #:use-module (irrlicht base)
   #:use-module (irrlicht device)
   #:use-module (irrlicht gui)
   #:use-module (irrlicht base)
   #:use-module (irrlicht device)
   #:use-module (irrlicht gui)
+  #:use-module (irrlicht io)
   #:use-module (irrlicht irr)
   #:use-module (irrlicht scene)
   #:use-module (irrlicht video)
   #:duplicates (merge-generics)
   #:re-export (add-animated-mesh-scene-node!
                add-camera-scene-node!
   #:use-module (irrlicht irr)
   #:use-module (irrlicht scene)
   #:use-module (irrlicht video)
   #:duplicates (merge-generics)
   #:re-export (add-animated-mesh-scene-node!
                add-camera-scene-node!
+               add-file-archive!
                add-static-text!
                begin-scene
                create-device
                drop!
                end-scene
                add-static-text!
                begin-scene
                create-device
                drop!
                end-scene
+               get-file-system
                get-gui-environment
                get-mesh
                get-gui-environment
                get-mesh
+               get-name
                get-scene-manager
                get-texture
                get-video-driver
                get-scene-manager
                get-texture
                get-video-driver
index 97e2bbab2d207f3ffb23dfb1350464cc00e3ce2e..6e9dfcc8cf0c0a1a7d0f05d7855873710ba5b604 100644 (file)
@@ -22,6 +22,7 @@
   #:use-module (oop goops)
   #:use-module (irrlicht base)
   #:use-module (irrlicht foreign)
   #:use-module (oop goops)
   #:use-module (irrlicht base)
   #:use-module (irrlicht foreign)
+  #:use-module (irrlicht io)
   #:use-module (irrlicht irr)
   #:use-module (irrlicht gui)
   #:use-module (irrlicht scene)
   #:use-module (irrlicht irr)
   #:use-module (irrlicht gui)
   #:use-module (irrlicht scene)
      vsync
      receiver)))
 
      vsync
      receiver)))
 
+(define-method (get-file-system (device <irrlicht-device>))
+  (let ((getFileSystem (get-irrlicht-proc "getFileSystem" device)))
+    (make <file-system>
+      #:irr-pointer (getFileSystem device))))
+
 (define-method (get-gui-environment (device <irrlicht-device>))
   (let ((getGUIEnvironment (get-irrlicht-proc "getGUIEnvironment" device)))
     (make <gui-environment>
 (define-method (get-gui-environment (device <irrlicht-device>))
   (let ((getGUIEnvironment (get-irrlicht-proc "getGUIEnvironment" device)))
     (make <gui-environment>
@@ -76,5 +82,5 @@
   ((get-irrlicht-proc "setWindowCaption" device)
    device text))
 
   ((get-irrlicht-proc "setWindowCaption" device)
    device text))
 
-(export create-device get-gui-environment get-scene-manager get-video-driver run
+(export create-device get-file-system get-gui-environment get-scene-manager get-video-driver run
         set-window-caption!)
         set-window-caption!)
index f6e203622f55db18eae8907fce38f3c26533c4dd..aaac04ff08bf812382dbf8c407780f73c90fd503 100644 (file)
@@ -28,6 +28,8 @@
 (define remote-proc-table (make-hash-table))
 
 (define (get-irrlicht-proc proc-name . objects)
 (define remote-proc-table (make-hash-table))
 
 (define (get-irrlicht-proc proc-name . objects)
+  (format #t "Objects: ~a ~a~%" objects irr-class)
+  (format #t "Classes: ~a~%" (map irr-class objects))
   (let* ((name (if (null? objects)
                    proc-name
                    (let ((classes (map irr-class objects)))
   (let* ((name (if (null? objects)
                    proc-name
                    (let ((classes (map irr-class objects)))
index 0229ac32316b68e7a26c784da7da1a931152f837..1e94c5d23fd774668b28156d189051a186018d48 100644 (file)
@@ -20,6 +20,7 @@
 
 (define-module (irrlicht io)
   #:use-module (oop goops)
 
 (define-module (irrlicht io)
   #:use-module (oop goops)
+  #:use-module (ice-9 optargs)
   #:use-module (irrlicht foreign)
   #:use-module (irrlicht irr))
 
   #:use-module (irrlicht foreign)
   #:use-module (irrlicht irr))
 
   (irr-class #:init-value "IAttributeExchangingObject" #:getter irr-class))
 
 (export <attribute-exchanging-object>)
   (irr-class #:init-value "IAttributeExchangingObject" #:getter irr-class))
 
 (export <attribute-exchanging-object>)
+
+
+;;IFileArchive
+(define-class <file-archive> (<reference-counted>)
+  (irr-class #:init-value "IFileArchive" #:getter irr-class))
+
+(export <file-archive>)
+
+
+;;IFileSystem
+(define-class <file-system> (<reference-counted>)
+  (irr-class #:init-value "IFileSystem" #:getter irr-class))
+
+(define-method (add-file-archive! (file-system <file-system>) filename . rest)
+  (let-keywords rest #f
+        ((ignore-case #t)
+         (ignore-paths #t)
+         (archive-type 'unknown)
+         (password "")
+         (ret-archive (make <file-archive>)))
+    (let ((addFileArchive (get-irrlicht-proc "addFileArchive" file-system)))
+      (addFileArchive
+       file-system filename ignore-case ignore-paths archive-type password ret-archive))))
+
+(export <file-system> add-file-archive!)
index ee1f767fd9e541bedcd41d13acc4023e494fb48a..5659276c57bd432f90fc69c5926af973b0c28265 100644 (file)
   ((get-irrlicht-proc "endScene" video-driver)
    video-driver))
 
   ((get-irrlicht-proc "endScene" video-driver)
    video-driver))
 
+(define-method (get-name (video-driver <video-driver>))
+  (let ((getName (get-irrlicht-proc "getName" video-driver)))
+    (getName video-driver)))
+
 (define-method (get-texture (video-driver <video-driver>) filename)
   (make <texture>
     #:irr-pointer
 (define-method (get-texture (video-driver <video-driver>) filename)
   (make <texture>
     #:irr-pointer
@@ -62,4 +66,4 @@
      video-driver
      filename)))
 
      video-driver
      filename)))
 
-(export <video-driver> begin-scene end-scene get-texture)
+(export <video-driver> begin-scene end-scene get-name get-texture)
index 45e8358e9a60ed294ba1cf390651f9d15e6d2458..dd663e745d75e45b8d4c695d21e66baaa76c4a41 100644 (file)
@@ -28,6 +28,7 @@
 #include "rect.h"
 #include "vertex3d.h"
 #include "video-driver.h"
 #include "rect.h"
 #include "vertex3d.h"
 #include "video-driver.h"
+#include "wchar.h"
 #include "wrapped.h"
 
 using namespace irr;
 #include "wrapped.h"
 
 using namespace irr;
@@ -114,6 +115,13 @@ IVideoDriver_getFPS (SCM video_driver)
   return scm_from_int32 (driver->getFPS ());
 }
 
   return scm_from_int32 (driver->getFPS ());
 }
 
+SCM
+IVideoDriver_getName (SCM video_driver)
+{
+  video::IVideoDriver* driver = (video::IVideoDriver*) scm_to_irr_pointer (video_driver);
+  return scm_from_wide_char_string (driver->getName ());
+}
+
 SCM
 IVideoDriver_getTexture (SCM video_driver,
                          SCM filename)
 SCM
 IVideoDriver_getTexture (SCM video_driver,
                          SCM filename)
@@ -152,6 +160,7 @@ init_video_driver (void)
                 IVideoDriver_drawVertexPrimitiveList);
   DEFINE_GSUBR ("IVideoDriver_endScene", 1, 0, 0, IVideoDriver_endScene);
   DEFINE_GSUBR ("IVideoDriver_getFPS", 1, 0, 0, IVideoDriver_getFPS);
                 IVideoDriver_drawVertexPrimitiveList);
   DEFINE_GSUBR ("IVideoDriver_endScene", 1, 0, 0, IVideoDriver_endScene);
   DEFINE_GSUBR ("IVideoDriver_getFPS", 1, 0, 0, IVideoDriver_getFPS);
+  DEFINE_GSUBR ("IVideoDriver_getName", 1, 0, 0, IVideoDriver_getName);
   DEFINE_GSUBR ("IVideoDriver_getTexture", 2, 0, 0, IVideoDriver_getTexture);
   DEFINE_GSUBR ("IVideoDriver_setMaterial", 2, 0, 0, IVideoDriver_setMaterial);
   DEFINE_GSUBR ("IVideoDriver_setTransform", 3, 0, 0, IVideoDriver_setTransform);
   DEFINE_GSUBR ("IVideoDriver_getTexture", 2, 0, 0, IVideoDriver_getTexture);
   DEFINE_GSUBR ("IVideoDriver_setMaterial", 2, 0, 0, IVideoDriver_setMaterial);
   DEFINE_GSUBR ("IVideoDriver_setTransform", 3, 0, 0, IVideoDriver_setTransform);