X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=irrlicht%2Fscene.scm;h=9626f4b33cdabe64723d1463852fd9a016492327;hb=384a8fb56d8500dc3551085191a39c9da70e221c;hp=45b2c9b4445aa69f21267e5dde15e527ee50e8e7;hpb=a56a205c111552251f341cacec237f42c54bd5d0;p=guile-irrlicht.git diff --git a/irrlicht/scene.scm b/irrlicht/scene.scm index 45b2c9b..9626f4b 100644 --- a/irrlicht/scene.scm +++ b/irrlicht/scene.scm @@ -42,6 +42,13 @@ (export ) +;; ISceneNodeAnimator +(define-class ( ) + (irr-class #:init-value "ISceneNodeAnimator")) + +(export ) + + ;; ISceneManager (define-class () (irr-class #:init-value "ISceneManager")) @@ -56,17 +63,15 @@ (rotation '(0 0 0)) (scale '(1 1 1)) (also-add-if-mesh-pointer-zero #f)) - (make - #:irr-pointer - ((get-irrlicht-proc "addAnimatedMeshSceneNode" scene-manager parent) - scene-manager - mesh - parent - id - position - rotation - scale - also-add-if-mesh-pointer-zero)))) + (let* ((addAnimatedMeshSceneNode (get-irrlicht-proc "addAnimatedMeshSceneNode" + scene-manager + parent)) + (node-pointer (addAnimatedMeshSceneNode scene-manager mesh parent id position + rotation scale also-add-if-mesh-pointer-zero))) + (cond ((null-pointer? node-pointer) + (error "In procedure add-animated-mesh-scene-node!: Scene node cannot be created")) + (else + (make #:irr-pointer node-pointer)))))) (define-method (add-camera-scene-node! (scene-manager ) . rest) (let-keywords rest #f @@ -162,11 +167,12 @@ scene-manager)) (define-method (get-mesh (scene-manager ) filename) - (make - #:irr-pointer - ((get-irrlicht-proc "getMesh" scene-manager) - scene-manager - filename))) + (let* ((getMesh (get-irrlicht-proc "getMesh" scene-manager)) + (mesh-pointer (getMesh scene-manager filename))) + (cond ((null-pointer? mesh-pointer) + (error "In procedure get-mesh: Mesh cannot be created")) + (else + (make #:irr-pointer mesh-pointer))))) (define-method (get-root-scene-node (scene-manager )) (let ((getRootSceneNode (get-irrlicht-proc "getRootSceneNode" scene-manager))) @@ -181,6 +187,14 @@ (define-class () (irr-class #:init-value "ISceneNode")) +(define-method (add-animator! (node ) (animator )) + (let ((addAnimator (get-irrlicht-proc "addAnimator" node))) + (addAnimator node animator))) + +(define-method (get-absolute-transformation (node )) + (let ((getAbsoluteTransformation (get-irrlicht-proc "getAbsoluteTransformation" node))) + (getAbsoluteTransformation node))) + (define-method (set-material-flag! (node ) flag new-value) ((get-irrlicht-proc "setMaterialFlag" node) node @@ -197,7 +211,8 @@ (let ((setPosition (get-irrlicht-proc "setPosition" node))) (setPosition node new-pos))) -(export set-material-flag! set-material-texture! set-position!) +(export add-animator! get-absolute-transformation set-material-flag! + set-material-texture! set-position!) ;; IAnimatedMeshSceneNode @@ -224,10 +239,3 @@ (irr-class #:init-value "IMeshSceneNode")) (export ) - - -;; ISceneNodeAnimator -(define-class ( ) - (irr-class #:init-value "ISceneNodeAnimator")) - -(export )