anchor.diff:          :ptr (newtoncreatecapsule
                 wptr (float radius-0) (float radius-1) (float height) 0 m4))))))
   
  -(defun make-cylinder-geometry (world &key (radius-0 1s0) (radius-1 1s0)
  -                                       (height 4s0)
  -                                       (offset-matrix4 (m4:identity)))
  +(defn make-cylinder-geometry ((world world)
  +                              &key
  +                              (radius-0 single-float 1f0)
  +                              (radius-1 single-float 1f0)
  +                              (height single-float 4f0)
  +                              (offset-matrix4 (simple-array single-float (16)) (m4:identity)))
  +    cylinder-geometry
     "Create a cylinder primitive for collision."
  +  (declare (optimize (speed 3) (safety 1) (debug 1)))
     (let ((wptr (%world-ptr world)))
       (with-foreign-array (m4 offset-matrix4 '(:array :float 16))
         (%init-data
  
positive.code:         :ptr (newtoncreatebox
                wptr (v:x dimensions) (v:y dimensions) (v:z dimensions) 0 m4))))))
  
  (defun make-sphere-geometry (world &key (radius 1s0)
                                       (offset-matrix4 (m4:identity)))
    "Create a generalized ellipsoid primitive.. Sphere collision are
     generalized ellipsoids, the application can create many different kind
     of objects by just playing with dimensions of the radius. for example
     to make a sphere set all tree radius to the same value, to make a
     ellipse of revolution just set two of the tree radius to the same
     value."
    (let ((wptr (%world-ptr world)))
      (with-foreign-array (m4 offset-matrix4 '(:array :float 16))
        (%init-data
         (%make-sphere
          :ptr (newtoncreatesphere wptr (float radius) 0 m4))))))
  
  (defun make-cone-geometry (world &key (radius 1s0) (height 1s0)
                                     (offset-matrix4 (m4:identity)))
    "Create a cone primitive for collision."
    (let ((wptr (%world-ptr world)))
      (with-foreign-array (m4 offset-matrix4 '(:array :float 16))
        (%init-data
         (%make-cone
          :ptr (newtoncreatecone wptr (float radius) (float height) 0  m4))))))
  
  (defun make-capsule-geometry (world &key (radius-0 1s0) (radius-1 1s0)
                                        (height (* 2 (max radius-1 radius-0)))
                                        (offset-matrix4 (m4:identity)))
    "Create a capsule primitive for collision. the capsule height must
     equal of larger than the sum of the cap radius. If this is not the
     case the height will be clamped the 2 * radius."
    (let ((wptr (%world-ptr world)))
      (with-foreign-array (m4 offset-matrix4 '(:array :float 16))
        (%init-data
  
negative.code:    unnecessarily the material count, and therefore the project
     complexity. The Null collision is a collision object that satisfy all
     this conditions without having to change the engine philosophy."
    (declare (optimize (speed 3) (safety 1) (debug 1)))
    (let ((wptr (%world-ptr world)))
      (%init-data
       (%make-null
        :ptr (newtoncreatenull wptr)))))
  
  (defn make-box-geometry
      ((world world)
       &key
       (dimensions (simple-array single-float (3)) (v! 1f0 1f0 1f0))
       (offset-matrix4 (simple-array single-float (16)) (m4:identity)))
      box-geometry
    "Create a box primitive for collision."
    (let ((wptr (%world-ptr world)))
      (with-foreign-array (m4 offset-matrix4 '(:array :float 16))
  