]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - irrlicht/foreign.scm
Cast to the proper wrapped object when a gui event is raised
[guile-irrlicht.git] / irrlicht / foreign.scm
index 9b55633accaf17ad17cdd39077f3cf93896032e9..96cec83bd0dd04c9dfca6a5c5c5757cf07992337 100644 (file)
@@ -22,7 +22,9 @@
   #: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)