X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;ds=sidebyside;f=irrlicht%2Fscene.scm;h=2f2aa50c2a070b7e1a5831e70cd5220dbe7daa38;hb=5f5b7536e4f044eb617925db8d4df9b02be3ba7d;hp=8c622efec9c19512e6479a7f1651357bc2a3d5b0;hpb=eaa186435f0c641c53841d8d15581525bd542249;p=guile-irrlicht.git diff --git a/irrlicht/scene.scm b/irrlicht/scene.scm index 8c622ef..2f2aa50 100644 --- a/irrlicht/scene.scm +++ b/irrlicht/scene.scm @@ -24,14 +24,17 @@ #:use-module ((irrlicht bindings core) #:prefix ffi-core:) #:use-module ((irrlicht bindings scene) #:prefix ffi-scene:) #:use-module ((irrlicht bindings video) #:prefix ffi-video:) + #:use-module (irrlicht util) #:export (add-animated-mesh-scene-node - add-camera-scene-node + add-camera-scene-node! add-camera-scene-node-fps! - add-octree-scene-node-am + add-custom-scene-node! + add-octree-scene-node get-mesh + get-root-scene-node scene-draw-all - set-material-flag-am! - set-material-texture-am! + set-material-flag! + set-material-texture! set-md2-animation! set-position!)) @@ -51,23 +54,23 @@ (make-c-struct ffi-core:vector3df position) (make-c-struct ffi-core:vector3df rotation) (make-c-struct ffi-core:vector3df scale) - (if also-add-if-mesh-pointer-zero 1 0)))) + (bool->integer also-add-if-mesh-pointer-zero)))) (if (null-pointer? node) #f node))) -(define* (add-camera-scene-node scene-manager - #:key - (parent %null-pointer) - (position '(0 0 0)) - (lookat '(0 0 100)) - (id -1) - (make-active #t)) +(define* (add-camera-scene-node! scene-manager + #:key + (parent %null-pointer) + (position '(0 0 0)) + (lookat '(0 0 100)) + (id -1) + (make-active #t)) (let ((camera (ffi-scene:add-camera-scene-node scene-manager parent (make-c-struct ffi-core:vector3df position) (make-c-struct ffi-core:vector3df lookat) id - (if make-active 1 0)))) + (bool->integer make-active)))) (if (null-pointer? camera) #f camera))) (define* (add-camera-scene-node-fps! scene-manager @@ -90,33 +93,46 @@ id key-map-array key-map-size - (if no-vertical-movement 1 0) + (bool->integer no-vertical-movement) jump-speed - (if invert-mouse 1 0) - (if make-active 1 0))) + (bool->integer invert-mouse) + (bool->integer make-active))) -(define* (add-octree-scene-node-am scene-manager mesh - #:key - (parent %null-pointer) - (id -1) - (minimal-polys-per-node 512) - (also-add-if-mesh-pointer-zero #f)) - (ffi-scene:add-octree-scene-node-am +(define (add-custom-scene-node! parent + scene-manager + id + custom-render) + (ffi-scene:add-custom-scene-node + parent + scene-manager + id + (procedure->pointer void custom-render '()))) + +(define* (add-octree-scene-node scene-manager mesh + #:key + (parent %null-pointer) + (id -1) + (minimal-polys-per-node 512) + (also-add-if-mesh-pointer-zero #f)) + (ffi-scene:add-octree-scene-node scene-manager mesh parent id minimal-polys-per-node - (if also-add-if-mesh-pointer-zero 1 0))) + (bool->integer also-add-if-mesh-pointer-zero))) (define (get-mesh scene-manager filename) (let ((mesh (ffi-scene:get-mesh scene-manager (string->pointer filename)))) (if (null-pointer? mesh) #f mesh))) +(define (get-root-scene-node scene-manager) + (ffi-scene:get-root-scene-node scene-manager)) + (define (scene-draw-all scene-manager) (ffi-scene:draw-all scene-manager)) -(define (set-material-flag-am! node flag newvalue) +(define (set-material-flag! node flag newvalue) (let ((material-flag (match flag ('wireframe ffi-video:EMF_WIREFRAME) @@ -139,13 +155,13 @@ ('use-mip-maps ffi-video:EMF_USE_MIP_MAPS) ('blend-operation ffi-video:EMF_BLEND_OPERATION) ('polygon-offset ffi-video:EMF_POLYGON_OFFSET)))) - (ffi-scene:set-material-flag-am + (ffi-scene:set-material-flag node material-flag - (if newvalue 1 0)))) + (bool->integer newvalue)))) -(define (set-material-texture-am! node texture-layer texture) - (ffi-scene:set-material-texture-am node texture-layer texture)) +(define (set-material-texture! node texture-layer texture) + (ffi-scene:set-material-texture node texture-layer texture)) (define (set-md2-animation! node anim) (let ((animation-type