From 4eb7b8f04ad278d49d632d62030b5fe648e3b97a Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Sun, 2 Feb 2020 18:36:47 +0100 Subject: [PATCH] WIP: SMaterial and vertices --- irrlicht/bindings/core.scm | 6 ++-- irrlicht/bindings/video.scm | 60 +++++++++++++++++++++++++++++++++++-- irrlicht/core.scm | 6 ++++ irrlicht/video.scm | 3 +- 4 files changed, 68 insertions(+), 7 deletions(-) diff --git a/irrlicht/bindings/core.scm b/irrlicht/bindings/core.scm index 59b05af..140506b 100644 --- a/irrlicht/bindings/core.scm +++ b/irrlicht/bindings/core.scm @@ -51,7 +51,7 @@ (make-c-struct vector3df data)) ;; aabbox3df struct -(define-wrapped-pointer-type aabbox3df +(define-wrapped-pointer-type aabbox3df-type aabbox3df? pointer->aabbox3df aabbox3df->pointer (lambda (box port) @@ -60,12 +60,12 @@ (export aabbox3df->pointer) -(define aabbox3df-type +(define-public aabbox3df (list vector3df vector3df)) (define-public (make-aabbox3df) (pointer->aabbox3df - (make-c-struct aabbox3df-type '((0 0 0) (0 0 0))))) + (make-c-struct aabbox3df '((0 0 0) (0 0 0))))) (define-foreign aabbox3d-add-internal-point void "irr_core_aabbox3d_addInternalPoint" (list '* '*)) diff --git a/irrlicht/bindings/video.scm b/irrlicht/bindings/video.scm index 7816686..0bdf0f0 100644 --- a/irrlicht/bindings/video.scm +++ b/irrlicht/bindings/video.scm @@ -79,7 +79,7 @@ '* "irr_video_getName" (list '*)) ;; s3dvertex struct -(define-wrapped-pointer-type s3dvertex +(define-wrapped-pointer-type s3dvertex-type s3dvertex? pointer->s3dvertex s3dvertex->pointer (lambda (vertex port) @@ -88,7 +88,7 @@ (export s3dvertex->pointer) -(define s3dvertex-type +(define-public s3dvertex (list ffi-core:vector3df ffi-core:vector3df scolor @@ -96,4 +96,58 @@ (define-public (make-s3dvertex position normal color t-coords) (pointer->s3dvertex - (make-c-struct s3dvertex-type (list position normal color t-coords)))) + (make-c-struct s3dvertex (list position normal color t-coords)))) + +(define-public (vertex-position vertex) + (let ((data (parse-c-struct (s3dvertex->pointer vertex) s3dvertex))) + (car data))) + +;; smateriallayer struct +(define-public smateriallayer + (list '* uint8 uint8 uint8 uint8 uint8 int8 '* '*)) + +;; smaterial struct +(define-wrapped-pointer-type smaterial-type + smaterial? + pointer->smaterial smaterial->pointer + (lambda (material port) + (format port "#" + (pointer-address (smaterial->pointer material))))) + +(export smaterial->pointer) + +(define-public smaterial + (list smateriallayer smateriallayer smateriallayer smateriallayer ; textureLayer[4] + uint32 ; materialType + scolor ; ambientColor + scolor ; diffuseColor + scolor ; emissiveColor + scolor ; specularColor + float ; shininess + float ; materialTypeParam + float ; materialTypeParam2 + float ; thickness + uint8 ; zBuffer + uint8 ; antiAliasing + (bit-field-group + (uint8 4) ; colorMask:4 + (uint8 3) ; colorMaterial:3 + (uint32 4) ; blendOperation:4 + (uint8 3) ; polygonOffsetFactor:3 + (uint32 1) ; polygonOffsetDirection:1 + (uint8 1) ; wireframe:1 + (uint8 1) ; pointCloud:1 + (uint8 1) ; gouraudShading:1 + (uint8 1) ; lighting:1 + (uint8 1) ; zWriteEnable:1 + (uint8 1) ; backfaceCulling:1 + (uint8 1) ; frontfaceCulling:1 + (uint8 1) ; fogEnable:1 + (uint8 1) ; normalizeNormals:1 + (uint8 1) ; useMipMaps:1 + ))) + +;; (define-public (make-material #:key +;; (wireframe #f) +;; (lighting #t)) +;; material) diff --git a/irrlicht/core.scm b/irrlicht/core.scm index 1fa5497..7bc6208 100644 --- a/irrlicht/core.scm +++ b/irrlicht/core.scm @@ -20,4 +20,10 @@ (define-module (irrlicht core) #:use-module ((irrlicht bindings core) #:prefix ffi-core:) + #:export (aabbox3d-reset!) #:re-export ((ffi-core:make-aabbox3df . make-aabbox3df))) + +(define (aabbox3d-reset! box init-value) + (ffi-core:aabbox3d-reset + (ffi-core:aabbox3df->pointer box) + (ffi-core:vector3df->pointer init-value))) diff --git a/irrlicht/video.scm b/irrlicht/video.scm index 36ea0ec..b0f48d9 100644 --- a/irrlicht/video.scm +++ b/irrlicht/video.scm @@ -28,7 +28,8 @@ get-fps get-texture get-video-driver-name) - #:re-export ((ffi-video:make-s3dvertex . make-s3dvertex))) + #:re-export ((ffi-video:make-s3dvertex . make-s3dvertex) + (ffi-video:vertex-position . vertex-position))) (define* (begin-scene driver #:key -- 2.39.2