]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - irrlicht/video.scm
Transformation
[guile-irrlicht.git] / irrlicht / video.scm
index 1df01fe47a04d9bd251f77455fafaa90d808893c..dc61f644279cb1e90e18e4c45fc2a42065d697b2 100644 (file)
@@ -19,6 +19,7 @@
 
 
 (define-module (irrlicht video)
+  #:use-module (ice-9 match)
   #:use-module (system foreign)
   #:use-module ((irrlicht bindings core) #:prefix ffi-core:)
   #:use-module ((irrlicht bindings video) #:prefix ffi-video:)
@@ -30,6 +31,7 @@
             get-texture
             get-video-driver-name
             set-material!
+            set-transform!
             make-s3dvertex
             vertex-position
             make-material))
    driver
    (ffi-video:smaterial->pointer material)))
 
+(define (set-transform! driver state mat)
+  (let ((transform-state
+         (match state
+                ('view ffi-video:ETS_VIEW)
+                ('world ffi-video:ETS_WORLD)
+                ('projection ffi-video:ETS_PROJECTION)
+                ('texture0 ffi-video:ETS_TEXTURE_0)
+                ('texture1 ffi-video:ETS_TEXTURE_1)
+                ('texture2 ffi-video:ETS_TEXTURE_2)
+                ('texture3 ffi-video:ETS_TEXTURE_3)
+                ('texture4 ffi-video:ETS_TEXTURE_4)
+                ('texture5 ffi-video:ETS_TEXTURE_5)
+                ('texture6 ffi-video:ETS_TEXTURE_6)
+                ('texture7 ffi-video:ETS_TEXTURE_7)
+                ('count ffi-video:ETS_COUNT))))
+    (ffi-video:set-transform
+     driver
+     transform-state
+     mat)))
+
 ;; s3d vertices
 (define (make-s3dvertex position normal color t-coords)
   (ffi-video:pointer->s3dvertex