Skip to content

Commit

Permalink
first test...but won't load now.
Browse files Browse the repository at this point in the history
  • Loading branch information
BradWBeer committed Apr 2, 2017
1 parent 515f91e commit 227ee6b
Show file tree
Hide file tree
Showing 7 changed files with 149 additions and 19 deletions.
44 changes: 32 additions & 12 deletions autowrap.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,35 @@


(c-include "/usr/local/include/chipmunk/chipmunk.h"
:spec-path '(cl-chipmunk spec)
:definition-package :%chip
;;:exclude-sources (".*.h")
:include-sources ("chipmunk/cpVect.h"
"chipmunk/cpBB.h"
"chipmunk/cpSpace.h"
"chipmunk/cpSpatialIndex.h"
"chipmunk/cpBody.h"
"chipmunk/cpShape.h"
"chipmunk/cpPolyShape.h"
"chipmunk/cpArbiter.h"
"chipmunk/constraints/cpConstraint.h"))
:spec-path '(cl-chipmunk spec)
:definition-package :%chip
;;:exclude-sources (".*.h")
:exclude-definitions ("cpSpaceDebugColor"
"cpSpaceDebugDrawCircleImpl"
"cpSpaceDebugDrawSegmentImpl"
"cpSpaceDebugDrawFatSegmentImpl"
"cpSpaceDebugDrawPolygonImpl"
"cpSpaceDebugDrawDotImpl"
"cpSpaceDebugColor"
"cpSpaceDebugDrawFlags"
"cpSpaceDebugDrawOptions"
"cpSpaceDebugDrawCircleImpl"
"cpSpaceDebugDrawSegmentImpl"
"cpSpaceDebugDrawFatSegmentImpl"
"cpSpaceDebugDrawPolygonImpl"
"cpSpaceDebugDrawDotImpl"
"cpSpaceDebugDrawFlags"
"cpSpaceDebugColor"
"cpSpaceDebugDrawColorForShapeImpl"
"cpSpaceDebugColor"
"cpSpaceDebugColor"
"cpSpaceDebugDraw")
:include-sources ("chipmunk/cpVect.h"
"chipmunk/cpBB.h"
"chipmunk/cpSpace.h"
"chipmunk/cpSpatialIndex.h"
"chipmunk/cpBody.h"
"chipmunk/cpShape.h"
"chipmunk/cpPolyShape.h"
"chipmunk/cpArbiter.h"
"chipmunk/constraints/cpConstraint.h"))
24 changes: 24 additions & 0 deletions body.lisp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
(in-package :cl-chipmunk)

(defun cp-body-new (mass moment)
(%chip:cp-body-new (df mass) (df moment)))

(defun cp-body-free (shape)
(%chip:cp-body-free shape))

(defun cp-body-set-position (body pos)
(with-set-vect (v pos)
(%chip:cp-body-set-position body v)))

(defun cp-body-get-position (body)
(with-returned-vect (ret)
(%chip:cp-body-get-position ret body)))


(defun cp-body-set-velocity (body velocity)
(with-set-vect (v velocity)
(%chip:cp-body-set-velocity body v)))

(defun cp-body-get-velocity (body)
(with-returned-vect (ret)
(%chip:cp-body-get-velocity ret body)))
4 changes: 3 additions & 1 deletion cl-chipmunk.asd
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,6 @@
(:module spec
:components ((:static-file "chipmunk.h")))
(:file "utils")
(:file "space")))
(:file "space")
(:file "body")
(:file "shape")))
23 changes: 23 additions & 0 deletions packages.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,33 @@

#:cp-space-init
#:cp-space-new
#:cp-space-free
#:cp-space-get-static-body
#:cp-space-get-gravity
#:cp-space-set-gravity
#:cp-space-get-collision-slop
#:cp-space-set-collision-slop
#:cp-space-get-iterations
#:cp-space-set-iterations
#:cp-space-get-collision-bias
#:cp-space-set-collision-bias
#:cp-space-get-damping
#:cp-space-set-damping
#:cp-space-add-shape
#:cp-space-step

#:cp-segment-shape-new
#:cp-shape-set-friction
#:cp-shape-get-friction
#:cp-Moment-For-Circle
#:cp-circle-shape-new
#:cp-shape-free

#:cp-body-new
#:cp-body-free
#:cp-space-add-body
#:cp-body-get-position
#:cp-body-set-position
#:cp-body-get-velocity
#:cp-body-set-velocity
))
31 changes: 31 additions & 0 deletions shape.lisp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
(in-package :cl-chipmunk)

(defun cp-segment-shape-new (body a b radius)
(plus-c:c-with ((aa %chipmunk:cp-vect)
(bb %chipmunk:cp-vect))
(lisp->cp-vect aa a)
(lisp->cp-vect bb b)
(%chip:cp-segment-shape-new body aa bb (coerce radius 'double-float))))

(defun cp-shape-free (shape)
(%chip:cp-shape-free shape))

(defun cp-shape-set-friction (shape friction)
(%chip:cp-shape-set-friction shape (df friction)))

(defun cp-shape-get-friction (shape)
(%chip:cp-shape-get-friction shape))

(defun cp-Moment-For-Circle (m r1 r2 &optional (offset (rtg-math:v! 0 0)))
(with-vect (v)
(lisp->cp-vect v offset)
(%chip:cp-moment-for-circle (df m)
(df r1)
(df r2)
v)))

(defun cp-circle-shape-new (body radius &optional offset)
(unless offset
(setf offset (rtg-math:v! 0 0)))
(with-set-vect (v offset)
(%chip:cp-circle-shape-new body (df radius) v)))
28 changes: 26 additions & 2 deletions space.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
(with-float-traps-masked
(%chip:cp-space-new)))


(defun cp-space-free (space)
(%chip:cp-space-free space))

(defun cp-space-get-gravity (space)
(with-returned-vect (ret)
Expand All @@ -23,7 +24,7 @@
(defun cp-space-set-collision-slop (space slop)
(%chip:cp-space-set-collision-slop
space
(coerce slop 'double-float)))
(df slop)))

(defun cp-space-get-iterations (space)
(%chip:cp-space-get-iterations space))
Expand All @@ -33,3 +34,26 @@

(defun cp-space-get-static-body (space)
(%chip:cp-space-get-static-body space))

(defun cp-space-get-collision-bias (cspace)
(%chip:cp-space-get-collision-bias cspace))

(defun cp-space-set-collision-bias (cspace bias)
(%chip:cp-space-set-collision-bias cspace
(df bias)))

(defun cp-space-get-damping (cspace)
(%chip:cp-space-get-damping cspace))

(defun cp-space-set-damping (cspace bias)
(%chip:cp-space-set-damping cspace
(df bias)))

(defun cp-space-add-shape (space shape)
(%chip:cp-space-add-shape space shape))

(defun cp-space-add-body (space body)
(%chip:cp-space-add-body space body))

(defun cp-space-step (space time)
(%chip:cp-space-step space (df time)))
14 changes: 10 additions & 4 deletions utils.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,34 @@
`(,@masking
,@body)))

(defmacro df (x)
`(coerce ,x 'double-float))

(defmacro cp-vect->lisp (x)
(let ((var (gensym)))
`(let ((,var ,x))
(rtg-math:v! (plus-c:c-ref ,var %chip:cp-vect :x)
(plus-c:c-ref ,var %chip:cp-vect :y)))))
(rtg-math:v! (%chip:cp-vect.x ,var)
(%chip:cp-vect.y ,var)))))


(defmacro lisp->cp-vect (c-vect vect)
(let ((cvar (gensym))
(lvar (gensym)))
`(let ((,cvar ,c-vect)
(,lvar ,vect))
(setf (plus-c:c-ref ,cvar %chip:cp-vect :x) (coerce (elt ,lvar 0) 'double-float)
(plus-c:c-ref ,cvar %chip:cp-vect :y) (coerce (elt ,lvar 1) 'double-float))
(setf (%chip:cp-vect.x ,cvar) (df (elt ,lvar 0))
(%chip:cp-vect.y ,cvar) (df (elt ,lvar 1)))
,lvar)))


(defmacro with-vect ((name) &body body)
`(plus-c:c-with ((,name %chipmunk:cp-vect))
,@body))

(defmacro with-set-vect ((name value) &body body)
`(with-vect (,name)
(lisp->cp-vect ,name ,value)
,@body))

(defmacro with-returned-vect ((name) &body body)
`(plus-c:c-with ((,name %chipmunk:cp-vect))
Expand Down

0 comments on commit 227ee6b

Please sign in to comment.