(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)
(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 '* '*))
'* "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)
(export s3dvertex->pointer)
-(define s3dvertex-type
+(define-public s3dvertex
(list ffi-core:vector3df
ffi-core:vector3df
scolor
(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 "#<smaterial ~x>"
+ (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)
(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)))