#:use-module (system foreign)
#:use-module (irrlicht base)
#:export (get-irrlicht-proc
- null-object?))
+ null-object?
+ remember-wrapped
+ mem-wrapped))
;; We use a hash table to store foreign irrlicht methods related with their
;; classes
proc))))
(define (null-object? object)
- (eq? (irr-pointer object) %null-pointer))
+ (null-pointer? (irr-pointer object)))
+
+;; Table for storing foreign irrlicht wrapped objects by its pointer address
+;; We can recover them later, when we have an address without knowing its type, like in
+;; events case
+(define wrapped-obj-table (make-hash-table))
+
+(define (remember-wrapped object)
+ (or (hash-ref wrapped-obj-table
+ (pointer-address (irr-pointer object)))
+ object))
+
+(define (mem-wrapped object)
+ (hash-set! wrapped-obj-table
+ (pointer-address (irr-pointer object))
+ object)
+ object)