+(export ai-vertex-weight?
+ ai-vertex-weight-contents
+ ai-vertex-weight-vertex-id
+ ai-vertex-weight-weight)
+
+
+;;; Functions
+
+(define (ai-import-file filename flags)
+ (wrap-ai-scene
+ (aiImportFile (string->pointer filename)
+ flags)))
+
+(define (ai-release-import scene)
+ (aiReleaseImport (unwrap-ai-scene scene)))
+
+(define* (ai-attach-predefined-log-stream type #:optional file)
+ (aiAttachLogStream
+ (aiGetPredefinedLogStream
+ type
+ (if file
+ (string->pointer file)
+ %null-pointer))))
+
+(define (ai-transform-vec-by-matrix4 vec mat)
+ (let ((cvec (parse-aiVector3D (map cdr (ai-vector3d-contents vec)) #:reverse #t))
+ (cmat (parse-aiMatrix4x4 (map cdr (ai-matrix4x4-contents mat)) #:reverse #t)))
+ (aiTransformVecByMatrix4 cvec cmat)
+ (wrap-ai-vector3d cvec)))
+
+(define (ai-multiply-matrix3 m1 m2)
+ (let ((cm1 (parse-aiMatrix3x3 (map cdr (ai-matrix3x3-contents m1)) #:reverse #t))
+ (cm2 (parse-aiMatrix3x3 (map cdr (ai-matrix3x3-contents m2)) #:reverse #t)))
+ (aiMultiplyMatrix3 cm1 cm2)
+ (wrap-ai-matrix3x3 cm1)))
+
+(define (ai-multiply-matrix4 m1 m2)
+ (let ((cm1 (parse-aiMatrix4x4 (map cdr (ai-matrix4x4-contents m1)) #:reverse #t))
+ (cm2 (parse-aiMatrix4x4 (map cdr (ai-matrix4x4-contents m2)) #:reverse #t)))
+ (aiMultiplyMatrix4 cm1 cm2)
+ (wrap-ai-matrix4x4 cm1)))
+
+(define (ai-identity-matrix3)
+ (let ((cmat (parse-aiMatrix3x3 (make-list 9 0) #:reverse #t)))
+ (aiIdentityMatrix3 cmat)
+ (wrap-ai-matrix3x3 cmat)))
+
+(define (ai-identity-matrix4)
+ (let ((cmat (parse-aiMatrix4x4 (make-list 16 0) #:reverse #t)))
+ (aiIdentityMatrix4 cmat)
+ (wrap-ai-matrix4x4 cmat)))
+
+(define (ai-transpose-matrix3 mat)
+ (let ((cmat (parse-aiMatrix3x3 (map cdr (ai-matrix3x3-contents mat)) #:reverse #t)))
+ (aiTransposeMatrix3 cmat)
+ (wrap-ai-matrix3x3 cmat)))
+
+(define (ai-transpose-matrix4 mat)
+ (let ((cmat (parse-aiMatrix4x4 (map cdr (ai-matrix4x4-contents mat)) #:reverse #t)))
+ (aiTransposeMatrix4 cmat)
+ (wrap-ai-matrix4x4 cmat)))